目 录 基于74LS573的LED并行显示接口 基于14495的LED并行显示接口 基于LS164的LED串行显示接口 基于反转法的键盘 LED显示接口 基于扫描法的键盘 LED显示接口 单片机控制的微型打印机系统 基于单片机实训系统设计的一个计算器 基于AD570的A/D转换系统 基于0832的D/A转换系统 RLC 测试器 波形采集系统 波形回放系统 模拟乒乓球的单片机应用系统 模拟电子琴的单片机应用系统 模拟电子音乐的单片机应用系统 模拟电报发送的单片机应用系统 步进电机控制系统 无线发射和接收的通信系统 液晶显示模块应用系统 单片机控制的语音存储重放系统 自动人体秤 DS18B20的温度实测显示系统。 水温的恒温控制系统 电子屏显示系统 一、基于74LS573的LED并行显示接口 一、设计任务:设计完成一个基于74LS573并行显示接口系统 二、设计要求:利用软件译码和74LS573将需要显示的内容显示出来,显示方式为并行显示,将0---F依次显示出来。 其中:(1)P2为送数口 (2)P3、3, P3、4 ,P3、5为控制74LS573的控制线 三、设计器材:单片机,万用表,仿真机等。 四、元件清单: 74LS573若干个、电阻若干个、LED若干个、AT89C51一片、晶震一个、电容若干个。 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成方案的提出和论证  10   完成硬件的制作  15   完成软件的设计  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理: 74LS573:8D锁存器,其中管脚1为输出控制端,只有当它为低电平是,74LS573的输出才有效,管脚11为选通控制端,高电平有效,在这里是通过P2口的低四位来控制。LED:共阴极数码显示管,通过P2口来控制573的控制端从而控制LED的状态,根据LED的共阴特性,软件译码得到要显示的内容对应的数据,通过查表送到单片机里。 八、原理图:  九、程序流程框图: 开始 初始化 选通第一个 74LS573 延时程序 N Y 十、参考程序: ORG 0000H MOV R1,#04H MOV R2,#04H MOV R3,#00H MOV A,#00H MOV P3,#0FFH LOP:MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A MOV P3,#0C7H;选通第一个74LS573 NOP MOV P3,#0FFH;关闭74LS573 INC R3 MOV A,R3 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A MOV P3,#0E7H;选通第二个573 NOP MOV P3,#0FFH;;;;;;;;;;关闭573 INC R3 MOV A,R3 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A MOV P3,#0F7H;;;;;;;;;;选通第三个573 NOP MOV P3,#0FFH;;;;;;;;关闭573 INC R3 MOV A,R3 MOV DPTR,#TAB MOVC A,@A+DPTR MOV P2,A MOV P3,#0CFH;;;;;;;选通第四个573 NOP MOV P3,#0FFH LCALL YS INC R3 MOV A,R3 DJNZ R1,LOP SJMP $ YS: MOV R0,#14H;;;;;;延时子程序 YY: MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R0,YY RET TAB:DB 40H,0F9H,0A4H,30H DB 99H,92H,82H,0F8H DB 80H,90H,08H,03H DB 46H,21H,06H,0EH END 2、基于14495的LED并行显示接口 设计任务:设计一个基于14495并行显示接口。 设计要求: 1.所显示的内容由左到右显示; 2.所显示的内容由右到左显示; 3.所显示的内容由右到左闪烁显示; 4.所显示的内容由右到左闪烁显示; 设计器材:单片机,万用表,仿真机等。 元件清单:89C51 一个,14495 四个,LED 四个,245 三个,573 一个 五、完成时间: 一周。 六、评分标准:  项目 满分  基本要求 完成任务的提出和论证  10   完成硬件的设计  15   完成软件的编程  25   完成硬件和软件的调试  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理: 利用14495芯片的功能实现并行显示将要显示的数据 八、原理图:  九、程序流程框图: 十、参考程序: ORG 0000H MOV SP,#60H MOV DPTR ,#TABLE LCALL QL;40到47单元清零 LCALL XS;40到43单元的内容 KK: LCALL JC;检测是否有按键按下 LCALL YS1 JB 01H,KK ;循环检测 MOV 41H,42H MOV 42H,43H MOV 43H,45H LCALL XS LCALL YS SJMP KK QL: MOV R0,#40H MOV R2,#08H KKO: MOV @R0,#00H INC R0 DJNZ R2,KKO RET JCO: CLR 01H MOV P1,#0F0H MOV P3,#0CFH MOV P3,#0FBH MOV A,P1 CJNE A,#0F0H,KK1 FH: SETB 01H MOV P3,#0FFH RET KK1: LCALL YS1 ;延时20MS,防抖 MOV P1,#0F0H MOV P3,#0CFH MOV P3,#0FBH MOV A,P1 MOV 50H,A MOV P1,#0FH MOV P3,#0FH MOV P3,#0FBH MOV A,P1 ORL A,50H MOV 50H,A MOV A,#00H KK4: PUSH ACC MOVC A,@A+DPTR CJNE A,50H,KK3 POP ACC KK6: MOV 45H,A MOV P3,#0FFH RET KK3: CJNE A,#0FFH,KK5 POP ACC SJMP FH KK5: POP ACC INC A SJMP KK4 XS: MOV A,40H ORL A,#0E0H LCALL XS1 MOV A,41H ORL A,#0D0H LCALL XS1 MOV A,42H ORL A,#0B0H LCALL XS1 MOV A,43H ORL A,#70H LCALL XS1 RET XS1: MOV P1,A MOV P3,#0EFH MOV P3,#0FFH ORL A,#0F0H MOV P1,A MOV P3,#0EFH MOV P3,#0FFH RET YS: MOV R7,#0AH YS0: MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R7,YS0 RET YS1: MOV TMOD,#01H MOV TH0,#0CEH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET TABLE: DB 0EEH,0DEH,0BEH,7EH DB 0EDH,0DDH,0BDH,7DH DB 0EBH,0DBH,0BB H,7BH DB 0E7H,0D7H,0B7H,77H DB 0FFH END 3、基于LS164的LED串行显示接口 一、设计任务:设计一个基于164的串行显示接口 二、设计要求:设计由芯片74LS164组成的串行显示。实现(0~F)串行显示,首先显示(0~7)的后四位再显示前四位然后整板显示。然后显示(8~F)的后四位再显示前四位然后整板显示。 三、设计器材:单片机,万用表,仿真机等。 四、元件清单:164若干个、电阻若干个、AT89C51一片、电容若干个、晶震一个。 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成方案的提出  10   完成硬件的制作  15   完成软件的编写  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理: 74LS164:它是串行输入,并行输出,其中管脚1和2为串行输入端,QA---QH为输出端,清除管脚和时钟管脚为控制管脚,当清除管脚为高电平时,时钟管脚为上升沿时,才会有输出.因此,在为了实现这个程序的要求,我们只需要将单片机中的数据送到SBUF中,再将硬件按照相应的制作好,这样就可以实现数据的传送了,然后通过查表就能得到需要显示的数据了。根据需要显示的方式的不同,我们可以编不同的程序。 八、原理图  九、程序流程图: Y N 十、参考程序: ORG 0000H MOV SP,#70H MOV IE,#0 MOV SCON,#0 XX:MOV DPTR,#TABLE MOV R1,#4 RECYCLE:MOV R0,#8 AGAIN:MOV A,#0 MOVC A,@A+DPTR MOV SBUF,A INC DPTR JNB TI,$ CLR TI DJNZ R0,AGAIN LCALL DELAYTIME DJNZ R1,RECYCLE SJMP XX DELAYTIME: MOV TMOD,#01H MOV R3,#20 EMPTR:MOV TH0,#4CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 DJNZ R3,EMPTR RET TABLE: DB 0E0H,0BEH,0B6H,66H,0,0,0,0 DB 0E0H,0BEH,0B6H,66H,0F2H,0DAH,60H,0FCH DB 8EH,9EH,7AH,9CH,0,0,0,0 DB 8EH,9EH,7AH,9CH,3EH,0EEH,0E6H,0FEH END 十一、分析总结: 该程序主要运用了74LS164芯片的串入串出的功能来实现显示的功能。并使用了延时子程序,人眼的分辨时差能力是20ms,所以我们用了延时以便人们能看得更清楚一些。而且用了延时去抖以免在按键时别的键也有抖动。 4、基于反转法的键盘 LED显示接口 一、设计任务:利用反转法设计一个键盘显示系统 二、设计要求: 当按下键盘上的某一个键时,在LED显示器上显示出所按下的键.反转法:无论被按键是处于第一列或是最后一列,均只须经过两步便能获得此键所在的行列值. 第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平有高到低所在行为按键所在行. 第二步:同第一步完全相反,将行线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在列为按键所在列. 综合一,二两步的结果,可确定按键所在行和列,从而识别出所按的键. 三、设计器材:单片机,万用表,仿真机等。 四、元件清单:按键若干个,14495若干个、74LS573若干个、74LS245若干个 五、完成时间:一周。 六、评分标准:  项目 满分  基本要求 完成任务的提出和论证  10   完成硬件的制作  15   完成软件的编程  25   完成硬件和软件的调试  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理:第一步:将行线编程为输入线,列线编程为输出线,并使输出线输出为全零电平,则行线中电平有高到低所在行为按键所在行. 第二步:同第一步完全相反,将行线编程为输入线,并使输出线输出为全零电平,则列线中电平由高到低所在列为按键所在列. 综合一,二两步的结果,可确定按键所在行和列,从而识别出所按的键. 八、 原理图(见图纸) 九、流程图 十、参考程序: ORG 0000H MOV SP,#60H MOV DPTR ,#TABLE LCALL QL;40到47单元清零 LCALL XS;40到43单元的内容 KK: LCALL JC;检测是否有按键按下 LCALL YS1 JB 01H,KK ;循环检测 MOV 40H,41H MOV 41H,42H MOV 42H,43H MOV 43H,45H LCALL XS LCALL YS SJMP KK QL: MOV R0,#40H MOV R2,#08H KKO: MOV @R0,#00H INC R0 DJNZ R2,KKO RET JCO: CLR 01H MOV P1,#0F0H MOV P3,#0CFH MOV P3,#0FBH MOV A,P1 CJNE A,#0F0H,KK1 FH: SETB 01H MOV P3,#0FFH RET KK1: LCALL YS1 ;延时20MS,防抖 MOV P1,#0F0H MOV P3,#0CFH MOV P3,#0FBH MOV A,P1 MOV 50H,A MOV P1,#0FH MOV P3,#0FH MOV P3,#0FBH MOV A,P1 ORL A,50H MOV 50H,A MOV A,#00H KK4: PUSH ACC MOVC A,@A+DPTR CJNE A,50H,KK3 POP ACC KK6: MOV 45H,A MOV P3,#0FFH RET KK3: CJNE A,#0FFH,KK5 POP ACC SJMP FH KK5: POP ACC INC A SJMP KK4 XS: MOV A,40H ORL A,#0E0H LCALL XS1 MOV A,41H ORL A,#0D0H LCALL XS1 MOV A,42H ORL A,#0B0H LCALL XS1 MOV A,43H ORL A,#70H LCALL XS1 RET XS1: MOV P1,A MOV P3,#0EFH MOV P3,#0FFH ORL A,#0F0H MOV P1,A MOV P3,#0EFH MOV P3,#0FFH RET YS: MOV R7,#0AH YS0: MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 DJNZ R7,YS0 RET YS1: MOV TMOD,#01H MOV TH0,#0CEH MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 RET TABLE: DB 0EEH,0DEH,0BEH,7EH DB 0EDH,0DDH,0BDH,7DH DB 0EBH,0DBH,0BB H,7BH DB 0E7H,0D7H,0B7H,77H DB 0FFH END 十一、分析总结: 假设3号键被按下,那么第一步即在D0---D3输出完全0,然后,读入D4---D7位,结果D4=0,而D5、D6和D7均为1,因此,第一行出现电平的变化,说明第一行有键按下;第二步让D4---D7输出完全0,然后,读入D0---D3位,结果D0=0,而D1、D2和D3均为1,因此,第四列出现电平的变化,说明第四列有键按下。综合一、二两步,即第一行和第四列按键被按下,此键即是三号键。 反转法的优点是简练,无论被按键是处于第一列或是最后一列,均只须经过两步便能获得此键所在的行  基于描法的键盘 LED显示接口 一、设计任务:设计一个基于164串行显示的键盘接口。 二、设计要求:利用164的串行功能将键盘上的值在LED上显示出来,该显示应该是串行的,即:按键从左到右串行显示。 三、设计器材:单片机,万用表,仿真机等。 四、主要元件清单: 按键:若干个、74LS164:若干个、LED:若干个、晶震一个、电容若干个、电阻若干个、AT89C51一片。 五、完成时间;一周 六、评分标准:  项目 满分  基本要求 完成方案的提出论证  10   完成硬件的制作  15   完成软件的编写  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理: 利用74LS164的串行功能将键盘上键入的键串行在LED上显示出来。在如何判别按键的键值,我们通过不断地扫描各行和各列的电平,然后根据单片机接受到的值判断出该按键的位置,从而得到该按键的值,然后显示出来。 八、原理图:(见下图)  九、程序流程图: 开始 N 有键闭合吗? Y 软件延时10MS N 有键闭合吗? Y 确定按键位置 N 闭合键释放 Y 十、参考程序: ORG 0000H MOV SP,#70H ASK: MOV P1,#0FH MOV A,P1 CJNE A,#0FH,TEST-KEY SJMP ASK ;///////////////////////////////// TEST-KEY: LCALL DELAY50 MOV P1,#0FH MOV A,P1 CJNE A,#0FH,CHECK-KEY SJMP ASK ;////////////////////////////// CHECK-KEY: MOV R3,#8FH;LINE1 LCALL FINGING JB 20H.0,LINE2 SJMP ASK LINE2:MOV R3,#4FH LCALL FINGING JB 20H.0,LINE3 SJMP ASK LINE3:MOV R3,#4FH LCALL FINGING JB 20H.0,LINE4 SJMP ASK LINE4:MOV R3,#4FH LCALL FINGING SJMP ASK ;///////////////////////////////////// FINDING: CLR 20H.0 MOV P1,R3 MOV A,P1 ANL A,#0FH CJNE A,#0FH,FINDF SETB 20H.0 RET FINDF: MOV DPTR,#TABLE-1 MOV R4,#0FFH MOV R2,A MOV A,#0F0H ANL A,R3 ORL A,R2 MOV R2,A FIND: INC DPTR INC R4 MOV A,#0 MOVC A,@A+DPTR CJNE A,#0FFH,IN MOV 30H,#0FFH RET IN: CJNE A,02H,FIND MOV 30H,R4 RET ;/////////////////////////////////// TBALE: DB 7EH,0BEH,0DEH,0EEH DB 7DH,0BDH,0DDH,0EDH DB 7BH,0BBH,0DBH,0EBH DB 77H,0B7H,0D7H,0E7H ;////////////////////////////////// DELAY50: MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET END 十一、总结 这种编程扫描法键盘是利用对键盘的行和列不断地扫描查询,然后根据查询的结果查到相应的键盘代码,通过LED显示。通过这次再次做键盘程序发现了事情并非自己想象的那么容易,因为以前做过反转法键盘,以为这次重新做应该很轻松地将他拿下,但是结果却事与愿违。由于受以前反转法思想的影响,在编程的过程中脑海里总是经常出现反转法的思想。从而我也发现了自己的弱点,即:容易形成思维定式。但是,在经过自己的努力后,改正了这个毛病。编程和调试是考验自己的毅力和智力,还有一种经验的直觉。大家都说编程和硬件都不是最难的,最难的是软硬结合,在历经与自己的习惯挑战,与自己的毅力挑战、与自己的智力挑战,最终取得了成功,这虽然不是历经大风大雨得到的成功,但是我的胜利来自于我可以改变自己,人常说:“人最大的敌人是自己”,我为战胜自己而高兴,而自豪。 单片机控制的微型打印机系统 一、设计任务:利用微型打印机打印出想要打印的东西。 二、设计要求:利用荣达MP系列汉字微型打印机针式系列打印。只需通过微机在任何汉字输入系统下,生成一个汉字文本文件,通过专用软件和电缆,便能将“长春汽车工业高等专科学校”打印出来. 三、设计器材:单片机,万用表,仿真机、微型打印机、电烙铁等。 四、元件清单: 89C51 1个 74LS573 2个 74LS244 1个 晶震 1个 电阻,若干个 电容、若干个 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成方案的提出  10   完成硬件的设计  15   完成软件的编写  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理:根据微型打印机的状态,判断打印机的忙闲状态,然后通过单片机的选通微型打印机就可以打印出在程序里面设定的文字或者其他的图形等等。 八、原理图:(见图纸) 九、程序流程框图: Y N 给打印机送数 选通控制线 N Y 十、参考程序: ORG 0000H MOV DPTR,#TAB MOV R7,#00H LOP: MOV A,R7 MOVC A,@A+DPTR ;MOV A,R3 CJNE A,#0EFH,DY SJMP LAST DY: MOV P3,#0E7H ;判断打印机的忙闲 LOOP1: SETB P1.1 JB P1.1,LOOP1 MOV P1,A MOV P3,#0D7H NOP MOV P3,#0F7H CLR P1.0 NOP NOP SETB P1.0 INC R7 SJMP LOP LAST: SJMP $ TAB: DB 01BH,38H,01H DB 0B3H,0A4H,0C6H,0FBH,0B8H,0DFH,0D7H,0A8H DB 0DH DB 01BH,38H,01H DB 0B4H,0BAH,0C6H,0BDH,0CEH,0C8H,0D2H,0D2H DB 0DH DB 01BH,38H,01H DB 0C8H,0BFH,0CCH,0D4H,0C5H,0D9H,0C0H,0D5H DB 0DH DB 01BH,38H,01H DB 0B0H,0E2H,0BCH,0BBH,0CAH,0C9H,0C3H,0ADH DB 0DH DB 01BH,38H,01H DB 0B4H,0C0H,0BDH,0C8H,0D4H,0C5H,0D3H,0C3H DB 0DH DB 01BH,38H,01H DB 0C7H,0D8H,0C3H,0A4H,0D7H,0B7H,0B7H,0C9H DB 0DH DB 01BH,38H,01H DB 0B3H,0B8H,0D7H,0A3H,0D4H,0A8H,0CDH,0C9H DB 0DH DB 0EFH END 十一、分析总结: 整个电路采用查询方式进行驱动打印。当打印机处于忙信号时,此时单片机不得向打印机送数,将继续进行查询。一旦处于空闲状态时,CPU向内部送数。当打印完一个字符后,BUSY=0,同时产生ACK信号。准备打印下一个字符。  基于单片机实训系统设计的一个计算器 设计任务: 用教学实验系统板完成一个简单的计算器。 设计要求: 1对加法要求加数和被加数分别为两位数,将显示结果在系统板上LED显示出来。 2 对减法要求减数和被减数分别为两位数,将显示结果在系统板上显示出来,并且要求结果具有正负号,LED的第二位为符号位,1代表负数,0代表正数。 3 对乘法要求乘数和被乘数分别为两位数,将结果在系统板上LED显示出来。 4 对除法要求除法为两位数,被除数为一位数,将显示结果在系统板上LED显示出来,显示的前两位为商,后两位为余数。 设计器材: 单片机,万用表,仿真机、教学系统板一套。 元件清单: 89C51 一个,14495 四个,LED 四个,245 三个,573 两个,键盘 一个,74LS04 一个 五 完成时间:一周。 评分标准:  项目 满分  基本要求 完成方案的提出和论证  10   完成硬件的制作  15   完成软件的编写  25   完成硬件和软件的成功调试  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理: 根据显示、键盘反转法实现计算器系统 八、 原理图(见图纸) 九、 流程图 十、参考程序: ORG 0000H YZ: MOV SP,#70H MOV DPTR,#JM MOV 29H,#00H LCALL QL;调清零子程序 LCALL DIS;调显示子程序 TT: LCALL CS LCALL QLJ JA: JBC 4BH,AJA; 4B加号键标志 JI: JBC 4CH,AJI1;4C减号键标志 LI: JBC 4FH,AQ CE: JBC 4DH,ACE1;4D乘号键标志 CU: JBC 4EH,ACU1;4E除号键标志 AJI1: LJMP AJI ACE1: LJMP ACE ACU1: LJMP ACU AQ: LCALL QL LCALL DIS LJMP FH AJA: MOV 56H,#0AH CLR C LCALL QL LCALL DIS LCALL CS LCALL CS CLR C MOV A,6EH ANL A,#0FH SWAP A MOV 61H,A MOV 57H,A ADD A,60H DA A PUSH ACC KKO: LCALL EQ JNB 4AH,KKO CLR C MOV 4AH,C POP ACC MOV 5AH,A MOV R5,A ANL A,#0F0H SWAP A MOV 6FH,A MOV A,R5 ANL A,#0FH MOV 6EH,6FH MOV 6FH,A LCALL DIS MOV A,60H ANL A,#0F0H SWAP A MOV R5,A MOV A,61H ANL A,#0F0H SWAP A ADD A,05H PUSH ACC SUBB A,#0AH JC FA MOV A,#01H MOV 59H,A MOV 6DH,A LCALL DIS FA: JNB AC,TY POP ACC CJNE A,#09H,TY MOV A,#01H MOV 59H,A MOV 6DH,A LCALL DIS TY: LCALL YS5S LJMP FH AJI: MOV 56H,#0BH CLR C MOV 4AH,C LCALL QL LCALL DIS LCALL CS LCALL CS CLR C MOV A,6EH ANL A,#0FH SWAP A MOV 61H,A MOV A,6FH ANL A,#0FH ORL A,61H MOV 61H,A MOV 57H,A KK1: LCALL EQ JNB 4AH,KK1 MOV R0,#60H MOV R1,#62H LCALL JH INC R0 INC R1 LCALL JH MOV A,62H CLR C SUBB A,63H JC FF LCALL FJ MOV 64H,A LJMP XJ FF: DEC A CPL A LCALL FJ MOV 64H,A MOV A,#01H MOV 59H,A MOV 6DH,A LCALL DIS MOV A,64H MOV 5AH,64H XJ: MOV 5AH,64H ANL A,#0F0H SWAP A MOV 6EH,A MOV A,64H ANL A,#0FH MOV 6FH,A LCALL DIS LCALL YS5S LCALL YS5S LJMP FH ACE: MOV 56H,#0CH CLR C LCALL QL LCALL DIS LCALL CS LCALL CS CLR C MOV A,6EH ANL A,#0FH SWAP A MOV 61H,A MOV A,6FH ANL A,#0FH ORL A,61H MOV 61H,A MOV 57H,A KK2: LCALL EQ JNB 4AH,KK2 MOV 5EH,#00H MOV 5FH,#00H MOV A,61H CJNE A,#00H,BDL MOV 5EH,#00H MOV 5FH,#00H SJMP CEX BDL: MOV R0,#62H MOV R1,#5DH LCALL JH CLR C MOV A,#00H LL: ADDC A,60H MOV 5FH,A JNC HH PUSH ACC MOV A,5EH ADD A,#01H DA A MOV 5EH,A POP ACC HH: DJNZ 5DH,LL CEX: LCALL EF5 MOV 59H,5EH MOV 5AH,5FH LCALL DIS LCALL YS5S LCALL YS5S LJMP FH ACU: MOV 56H,#0DH CLR C LCALL QL LCALL DIS LCALL CS LCALL CS CLR C MOV A,6EH ANL A,#0FH SWAP A MOV 61H,A MOV A,6FH ANL A,#0FH ORL A,61H MOV 61H,A MOV 57H,A KK3: LCALL EQ JNB 4AH,KK3 MOV R0,#60H MOV R1,#61H MOV 65H,#00H MOV A,@R0 CJNE A,#00H,NE MOV 5EH,#00H MOV 5FH,#00H LJMP CUX NE: MOV A,@R1 CJNE A,#00H,NC MOV 5EH,#00H MOV 5FH,#00H LJMP CUX NC: LCALL SX CLR C MOV A,#00H CON: ADDC A,61H DA A MOV 64H,A JC YU PUSH PSW PUSH ACC MOV R7,A MOV A,65H ADD A,#01H DA A MOV 65H,A MOV A,R7 CJNE A,60H,YU MOV 5EH,65H MOV 5FH,#00H FIS: LJMP CUX YU: PUSH PSW MOV A,60H CLR C SUBB A,07H CJNE A,61H,JJ YY: POP PSW JNC MS CON1: POP ACC POP PSW LJMP CON JJ: JC OO LJMP YY OO: MOV 5EH,65H MOV 5FH,A LCALL EF5 MOV 59H,5EH MOV 5AH,5FH LCALL DIS LJMP FH SX: MOV A,@R0 CLR C SUBB A,@R1 JNC ZC MOV 5EH,#00H MOV 5FH,@R0 CUX: LCALL EF5 MOV 59H,5EH MOV 5AH,5FH FH: LCALL DIS LCALL YS5S LCALL YS5S LJMP TT ZC: RET MS: LCALL JH65 CLR C DEC 65H MOV A,64H CLR C SUBB A,61H MOV 61H,A MOV R0,#60H MOV R1,#66H LCALL JH INC R0 INC R1 LCALL JH MOV A,66H CLR C SUBB A,67H LCALL FJ MOV 5EH,65H ANL A,#0FH MOV 5FH,A LJMP CUX QL: MOV R0,#6CH MOV R1,#04H MOV A,#00H LO: MOV @R0,A INC R0 DJNZ R1,LO RET DIS: MOV P3,#0EFH ORL 6CH,#0E0H MOV P1,6CH ANL 6CH,#0FH NOP SETB P1.4 ORL 6DH,#0D0H MOV P1,6DH ANL 6DH,#0FH NOP SETB P1.5 ORL 6EH,#0B0H MOV P1,6EH ANL 6EH,#0FH NOP SETB P1.6 ORL 6FH,#70H MOV P1,6FH ANL 6FH,#0FH NOP SETB P1.7 CLR P3.2 RET CH: MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FAH MOV A,P1 CLR C SUBB A,#0FH JC QT RET QT: LCALL YS50 MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FAH MOV A,P1 MOV R4,A CLR C SUBB A,#0FH JC QM RET QM: MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FAH MOV A,P1 ORL A,R4 MOV R4,A MOV R3,#00H MOV A,#00H SR: PUSH ACC MOVC A,@A+DPTR CJNE A,#0FFH,GOO POP ACC SJMP CH GOO: CJNE A,04H,GO1 POP ACC MOV A,R3 MOV R2,#05H SW: LCALL YS50 DJNZ R2,SW SETB C RET GO1: INC R3 POP ACC INC A SJMP SR ;**************************** QLJ: CJNE R4,#77H,Y0 SETB 4FH LCALL LI RET Y0: CJNE R4,#0BBH,Y1 SETB 4BH MOV A,6DH LCALL BJ MOV 55H,A LCALL JA Y1: CJNE R4,#7BH,Y2 SETB 4CH MOV A,6DH LCALL BJ MOV 55H,A LCALL JI Y2: CJNE R4,#0E7H,Y3 SETB 4DH MOV A,6DH LCALL BJ MOV 55H,A LCALL CE Y3: CJNE R4,#0D7H,Y4 SETB 4EH MOV A,6DH LCALL BJ MOV 55H,A LCALL CU Y4: RET EQ: CLR C LCALL CH CJNE R4,#0B7H,EQ SETB 4AH RET CS: LCALL CH JNC CS MOV 6CH,6DH MOV 6DH,6EH MOV 6EH,6FH MOV 6FH,A LCALL DIS RET JH: MOV A,@R0 ANL A,#0F0H SWAP A MOV B,#0AH MUL AB MOV B,A MOV A,@R0 ANL A,#0FH ADD A,B MOV @R1,A RET JH65: MOV A,65H ANL A,#0F0H SWAP A MOV B,#0AH MUL AB MOV B,A MOV A,65H ANL A,#0FH ADD A,B RET FJ: MOV B,#64H DIV AB MOV A,#0AH XCH A,B DIV AB SWAP A ADD A,B RET EF5: MOV A,5EH ANL A,#0F0H SWAP A MOV 6CH,A MOV A,5EH ANL A,#0FH MOV 6DH,A MOV A,5FH ANL A,#0F0H SWAP A MOV 6EH,A MOV A,5FH ANL A,#0FH MOV 6FH,A RET BJ: ANL A,#0FH SWAP A MOV 60H,A MOV A,6EH ANL A,#0FH MOV 60H,A RET JM: DB 0EEH,0DEH,0BEH,7EH DB 0EDH,0DDH,0BDH,7DH DB 0EBH,0DBH,0BBH,7BH DB 0E7H,0D7H,0B7H,77H DB 0FFH YS50: MOV TMOD,#10H MOV TH1,#4CH MOV TL1,#00H SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET YS5S: MOV R4,#0AH UOU: LCALL YS50 DJNZ R4,UOU END 十一、分析总结: 计算器主要是十进制和二进制之间的转换, 在按下键盘时,运用了防抖程序,运用该程序是为了防止当按下某一键时,对其他键的影响.运用延时程序,是由于人的视觉反映是20MS,如果没有延时人就不可能在显示器上分辨输入的数字及字母.  基于AD570的A/D转换系统 一,任务提出:设计基于单片机的数字模拟量的自动转换系统. 二,设计要求:利用A/D570设计一个能够自动转换的系统,要求将外部的模拟量转换成数字量,并且显示出来. 三,设计元件:单片机,万用表,仿真机等. 四,主要元器件清单:570一片,电阻若干个,LED若干个,电容若干个,AT89C51一片,晶震一个. 五,完成时间:一周 六,评分标准:  项目 满分  基本要求 完成方案的提出和论证  10   完成硬件的制作  15   完成软件的编写  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七,原理: AD570是10位逐次逼近式的单片集成A/D转换芯片。AD570将D/A转换电路、参考电压、时钟脉冲、比较器、逐次逼近寄存器及输出缓冲器集成器集成在一个芯片上,并有三态输出,所以很容易与微处理器接口。由于AD570片内含基准电压及时钟脉冲发生器,所以一般情况下,AD570只需接上+5V及-15V电源,加上模拟输入,发出启动转换信号,而无须任何外部电路即可实现A/D转换。 八, 原理图  九 流程图 N Y N Y 十,参考程序 ORG 0000H MOV SP,#70H ASK:SETB P3.4 JB P3.4,ASK LCALL DELAY50 JB P3.4,ASK COLLECT: SETB P3.0 CLR P3.0 SETB P3.3 JB P3.3,$ CLR P3.1 MOV A,P1 RL A CLR C MOV 30H,A SJMP ASK DELAY50: MOV TMOD,#01H MOV TH0,#5CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET END 十一, 总结分析 AD570芯片引脚及说明: DR非:当其为低电平时表示转换结束,数据有效。 B/C非:启动转换信号输入端,当其为高电平时,为转换做好准备,当其为底电平时,输出呈高阻态悬浮状态并开始转换,一旦转换结束,偏置DR非端为低电平通知CPU可将数据取走。 AIN:模拟信号输入端。 AGND:模拟地。 DGND:信号地。 BO:输入电压极性控制端,单极性输入时,该端接地,双极性输入时,该端接高电平,这就是AD570模拟输入的极性选择。 V+,V-:分别为工作电源电压输入端。 D1---D10:十位数据输出线。 对AD570的几点说明: 对于AD570的负供电电源V-一般为-15V,不象V+有一个任意选择的范围,但如果V-=12 V,AD570也可以正常工作。 AD570的数据输出特点及输入信号极性的控制 AD570芯片的数据输出寄存器的输出端直接引出芯片,并没有设置可控制的三态门电路,因此,不允许直接与CPU的数据总线相连,而必须通过I/O通道或附加的三态门电路。这一点在硬件接口设计时必须注意。 因AD570的引脚BIP OFFSET 是用来控制输入电压信号极性的。BIP OFF引脚接低电平时,输入信号为单极性输入(1----+10V),BIP OFF引脚接高电平时,输入信号为单极性输入(-5V----+5V),根据这一特点,在接口电路中就可以通过逻辑门控制BIP OFF引脚的电平,使输入信号的极性根据需要随时切换。 基于0832的D/A转换系统 设计任务: 把存储在8KBSRAM6264中的数字化模拟波形重现,原本波形采集速度为25us /点。 设计要求: 要求8KBSRAM6264中的数字量与输出的模拟量一一对应 设计器材:单片机,万用表,仿真机等。 元件清单: 89C51一个、ADC0832 一个、 573 两个 6264 一个 UA741 两个 示波器 一个 五、完成时间:一周。 六、评分标准:  项目 满分  基本要求 完成任务的提出和论证  10   完成硬件的设计  15   完成软件的编程  25   完成硬件和软件的调试  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理: DAC0832是微处理器兼容行D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制。 有两极锁存控制功能,能够实现多通道D/A的同步转换输出。 八、原理图:  九、程序流程框图: N Y 十、参考程序: ORG 0000H MOV SP,#70H SETB P3.1 CLR P2.7 AGAIN: MOV R0,#30H MOV R3,#8 ASK: SETB P3.5 JB P3.5,ASK ACALL DELAY50 JB P3.5,ASK MOV P1,@R0 SETB P3.6 CLR P3.6 INC R0 DJNZ R3,ASK SJMP AGAIN DELAY50:MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET END 十一、总结分析: DAC0832的引脚功能: DI0—7:数据输入线。 ILE:数据允许锁存信号,高电平有效。 CS非:输入寄存器选择信号,低电平有效。WR1非0为输入寄存器的写选通信号。输入寄存器的锁存信号LE1由ILE、CS非、WR1非的逻辑组合生成。当ILE电平、CS非低电平、WR1输入负脉冲时,当LE1产生正脉冲;LE1为高电平时,输入琐存器的状态随数据输入线的状态变化,LE1的负跳变将数据线上的信息锁入输入寄存器。 XFER:数据传送信号,低电平有效。WR1为DAC寄存器的写选通信号。DAC寄存器的锁存信号LE2,由XFER、WR2的逻辑组合产生。当XFER为低电平,WR2输入负脉冲,则在LE2产生正脉冲;LE2为高电平时,DAC寄存器的输出和输入寄存器的状态一致,LE2负跳变,输入寄存器的内容打入DAC寄存器。 VREF:基准电源输入引脚。 Rfb馈信号输入引脚,反馈电阻在芯片内部。 IOUT1、IOUT2:电源输出引脚。电流IOUT1与IOUT2的和为常数,IOUT1、IOUT2随DAC寄存器的内容线性变化。 VCC:电源输入引脚。 AGND:模拟信号地。 DGND:数字地。 我们选用DAC0832与8031单片机的单缓冲方式接口: 若应用系统中只有一路D/A转换或虽然是多路转换,但并不要求同步输出时,则采用单缓冲方式接口,让ILE接+5V,寄存器选择信号CS非及数据传送信号XFER都与地址选择线相连,两极寄存器的写信号都由8031的WR端控制。当地址线选通DAC0832后,只要输出WR非控制信号,DAC0832就能一步地完成数字量的输入锁存和DA转换输出。 实验注意:为实现准确地D/A转换,输出放大器的输入补偿电压必须置零,放大器补偿偏差可使DAC 的线性度降低。调零的基本目的是使DAC输出端电压尽可能接近零,当数字输入信号全为“0”时,运算放大器输出模拟信号电压应该为零伏。当不为零时,则通过调节调零电位W1,使输出电压为零或基本为零。当输入模拟电压全为“1” 时,运放输出的模拟电压信号应该为满量程输出。 10 RLC 测试器 一,任务提出:设计一个测量电阻、电容、电感的单片机应用系统。 二,设计要求:利用单片机来测量电阻、电容和电感,并且在LED上显示出来。 三、设计器材:单片机、万用表、仿真机、电烙铁。 四、主要元器件清单: 电容若干个,555定时器,两个,电阻,若干个、AT89C51一片、LED若干个,电感一个。 五、完成时间:两周 六、评分标准:  项目 满分  基本要求 完成方案的提出和论证  10   完成硬件的制作  15   完成软件的编写  10   完成硬件和软件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理: 单片机利用555定时器的震荡脉冲可以得到相应的频率,从而根据公式推算出被测电阻和电容的值,而电感的测量则是通过LC三点式震荡得到输出频率,单片机根据得到的频率,然后根据公式算出被测电感的值。最终的值通过14495自动译码显示出来。 八、原理图(见图纸) 九、程序流程图和结构图 系统结构: 被测R RC振荡 三通道 单片机 模拟 选择开关 被测C RC振荡 开关 4052 89C51 数字 被测L 电容三点式 显示 振荡 系统硬件图: 流程图 开始 初始化 键1按下否 接通测R 键2按下否 电路 接通测C电路 接收f 键3按下否 接收f N 接通测L电路 计算C 计算R 接收f 计算L 结束 十、参考程序: ORG 0000H LJMP MAIN ORG 0050H MAIN: MOV P3,#0EFH MOV P1,#00H MOV P1,#0F0H CLR 32H MA: LCALL JCX JB 32H,MAIN SJMP MA SJMP $ ;------------------ JCX: MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FAH MOV A,P1 CLR C CJNE A,#0FH,QT01 SJMP LOOP3 QT01: LCALL YS MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FAH MOV A,P1 MOV A,R4 CJNE A,#0FH,QM01 SJMP LOOP3 QM01:MOV P3,#0CFH MOV P1,#0F0H MOV P3,#0FAH MOV A,P1 ORL A,R4 MOV R4,A CJNE A,#0EEH,LOOP0 LCALL MAIN1 SJMP LOOP3 LOOP0: CJNE A,#7EH,LOOP3 SETB 32H LOOP3: RET ;------------------------ YS: MOV TMOD,#01H MOV TH0,#098H MOV TL0,#00H SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET MAIN1: LCALL XHCJ LCALL JS1 RET XHCJ: MOV TMOD,#10H MOV DPTR,#00H MOV TH1,#4CH MOV TL0,#00H MOV P3,#0D7H MOV P1,#0FFH MOV P3,#0E7H SETB P1.1 JNB P1.1,$ JB P1.1,$ SETB TR1 TTZ0: JNB P1.1,$ JB P1.1,$ INC DPTR JNB TF1,TTZ0 CLR TR1 CLR TF1 LCALL DQ01 RET JS1: LCALL RZ1 LCALL DQ0 JS: MOV R0,#33H MOV R1,#43H MOV R2,#04H CLR C MTZ0: MOV A,@R0 SUBB A,@R1 MOV @R0,A DEC R0 DEC R1 DJNZ R2,MTZ0 LCALL DXPD INC 54H LCALL JWPD JB 01H,MTZ1 LJMP JS MTZ1: LCALL KEEP2 LCALL JS2 LCALL KEEP1 LCALL XS RET ;------------------- DXPD: MOV B,#03H MOV R0,#41H MOV R1,#31H CLR 01H DPD2: CLR C MOV A,@R0 SUBB A,@R1 INC R0 INC R1 JZ DPD0 JC DPD1 SETB 01H SJMP DPD1 DPD0: DJNZ B,DPD2 DPD1: RET ;------------------ JWPD: MOV R0,#54H MOV A,@R0 CJNE A,#0AH,DPD3 MOV @R0,#00H DEC R0 INC @R0 MOV A,@R0 CJNE A,#0AH,DPD3 MOV @R0,#00H DEC R0 INC @R0 MOV A,@R0 CJNE A,#0AH,DPD3 MOV @R0,#00H DEC R0 INC @R0 MOV A,@R0 CJNE A,#0AH,DPD3 MOV @R0,#00H DEC R0 INC @R0 DPD3: RET DQ0: MOV B,#05H MOV R0,#50H Q0: MOV @R0,#00H INC R0 DJNZ B,Q0 RET ;------------ JS2: CLR C MOV R0,#54H MOV R1,#64H MOV B,#05H JF0:MOV A,#0AH SUBB A,@R1 ADD A,@R0 CJNE A,#0AH,TZ0 SJMP TZ2 TZ0: JNC TZ2 SETB C SJMP TZ1 TZ2: CLR C TZ1: DA A ANL A,#0FH MOV @R1,A DEC R0 DEC R1 DJNZ B,JF0 RET ;------------- DQ01:MOV B,#04H MOV R0,#40H Q01: MOV @R0,#00H INC R0 DJNZ B,Q01 MOV 43H,DPL MOV 42H,DPH RET RZ1: MOV R2,#04H MOV R0,#30H CH1: MOV @R0,#00H INC R0 DJNZ R2,CH1 MOV 33H,#0A7H MOV 32H,#05H MOV 31H,#08H RET KEEP1:MOV R0,#6FH MOV R1,#64H MOV B,#04H KP1: MOV A,@R1 MOV @R0,A DEC R0 DEC R1 DJNZ B,KP1 RET ;---------------- KEEP2:MOV B,#05H MOV R0,#60H KP2: MOV @R0,#00H INC R0 DJNZ B,KP2 MOV 64H,#00H MOV 63H,#00h MOV 62H,#00H RET ;---------------- XS:MOV P3,#0EFH ORL 6CH,#0FH NOP SETB P1.4 ORL 6DH,#0D0H MOV P1,6DH ANL 6DH,#0FH NOP SETB P1.6 ORL 6EH,#0FH MOV P1,6FH ANL 6FH,#0FH NOP SETB P1.7 CLR P3.2 RET END 十一、分析总结 由于使用单片机作为中央控制器和计算器件,本仪表有功能强,体积小,电路简单的特点,加上自行设计的BCD码到浮点数的转换,浮点数的运算,计频率功能等,使它可以方便地扩展其他功能,如频率计等.量程自动转换使测量仪表具有较高的智能化水平。我们设计的这种把元件参数转换成频率后的测量方法也有不足之处,主要是必须保证电路起振,并且振荡要稳定,否则会增加误差。  11 波形采集系统 设计任务:设计一个基于570和0832的单片机采集系统. 设计要求: 1、设计一个波形采集系统,能对1KHz的波形进行比较准确地采集和存储。 2、能够通过对单片机的控制采集不同的波形,三角波和正弦波以及方波. 三、设计器材: 单片机,万用表,仿真机等。 四、元件清单:570一个、0832一个、电阻若干、电容若干个、晶震一个. 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成方案的体出和论证  10   完成硬件的制作  15   完成软件的编写  10   完成软件和硬件的成功调试  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理:利用570和0832的自动数模和模数转换来完成这个实验. 八、原理图:  九、程序流程图: NO YES NO YES N Y NO 十、参考程序: ORG 0000H MOV SP,#40H COLLECT:SETB P3.4 JB P3.4,COLLECT ACALL DELAY50 JB P3.4,COLLECT LCALL CO_PRO SJMP COLLECT ;////////////////////// DELAY50:MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET CO_PRO:SETB P3.0 CLR P3.0 MOV R2,#255 MOV R3,#32 MOV DPTR,#8000H DI: SETB P3.3 JB P3.3,$ CLR P3.1 MOV A,P1 SETB P3.0 CLR P3.0 RL A MOVX @DPTR,A INC DPTR DJNZ R2,DI DJNZ R3,DI RET END 十一、分析总结: 本题的要求是把模拟波形信号连续数字量化,并存储起来。要把模拟波形信号完整地用数字描述出来,则模拟波形信号每一连续微小的变化都要用一个数字量来表示,那么对整个模拟波形信号或者其中一部分都有无穷个数字量,也只有这无穷个数字量才能把整个模拟波形信号或者其中一部分完整地描述出来。但实际上,没必要也不可能完全捕获这无限个微小变化,更没有无限的存储空间来记载无限的数字量,只需要把模拟波形信号或者其中一部分的形状基本描述出来即可。采用连续间隔多点数字采集和描述的方法即能做到。点的密度应当以复现时人眼分辨不出为前提,密度越大,对模拟波形信号的数字描述越精确,复现的效果越好。密度越大意味着描述的点越多,采样的速度越高。 基于以上思想,结合实际,本设计采用具有25us高速转换的AD570,它能对1KHz的模拟波形信号进行接近每周期40个点的采集,能很好的描述信号的形状,并且在采样过程中总让AD570处于几乎不间断的连续采样状态,保证了采样的速度和精度。同样的采样过程,对越小于1KHz的模拟波形信号采样就更多,描述得就越精确。对于采样所得的大量数据,本设计扩展8KB的外部SRAM6264以存放,即使小到4.88Hz的模拟波形信号也足以存放一个波形的数字化的描述信息。 程序设计上,以快速配合硬件对模拟波形信号捕捉为指导。从采集开始,除对按键稍作去抖延时外,马上就起动AD570采样,以求尽快尽可能地捕捉信号的起点,采样结束马上收集数据并又重起AD转换,采集的数据在等待当前AD转换完前的时间里作处理,以后的采集雷同以上,直到8KB存储全满为止,之后返回等待下一次采集。 在测试中,直接由AD570转换出来的数据并不理想,小了将一倍,这是AD570处在0~5V之间的转换状态决定的,作一个加倍处理即可;加倍处理后,还是有偏差,这是由于加倍处理的不当和芯片本身工艺引起的,得对每一个AD570作一个细致的转换数据较正。 12 波形回放系统 一、设计任务:设计完成一个模拟波形的采集、转换、存储、重放系统。 二、设计要求:1:对正弦波、方波、三角波分别采集、转换、存储,在示波器上重现。 2:要求对三个波分别选择控制,开始重放,结束重放。 3:波形采集速度为25us /点,要求误差应该尽量小。 三、设计器材:单片机,万用表,仿真机等。 四、元件清单: 89C51一个、ADC0832 一个、 573 两个 6264 一个 UA741 两个 示波器 一个 五、完成时间:一周。 六、评分标准:  项目 满分  基本要求 完成任务的提出和论证  10   完成硬件的设计  15   完成软件编程  25   完成硬件和软件的调试  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理:利用DAC0832的转换功能实现该实验。 八、原理图:  九、程序流程图: YES NO 十、参考程序: ORG 0000H MOV SP,#40H DISPLAY:SETB P3.5 JB P3.5,DISPLAY ACALL DELAY50 JB P3.5,DISPLAY LCALL DIS_PRO SJMP DISPLAY ;//////////////////////// DELAY50:MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#0 CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET ;/////////////////////// DIS_PRO:SETB P3.1 CLR P2.7 MOV R2,#0 MOV R3,#32 MOV DPTR,#0 DI: MOVX A,@DPTR INC DPTR MOV P1,A CLR P3.6 SETB P3.6 LCALL DELAYT DJNZ R2,DI DJNZ R3,DI MOV P1,#0 CLR P3.6 SETB P3.6 RET DELAYT: MOV TMOD,#01H MOV TH0,#0FFH MOV TL0,#0DEH CLR TF0 SETB TR0 JNB TF0,$ CLR TR0 CLR TF0 RET END 十一、分析总结: 本题的要求是把存在SRAM6264中的数字化模拟波形转换回模拟波形。回放数据的速度应与采集数据的速度一样,才能完好地复显原波形。基于这一点,DA转换器的速度不能低于回放数据流的速度,越快越好。本设计采用具有1us转换速度的DAC0832,能满足25us 数据转换流的速度。在程序上,紧扣25us数据流时间和DAC0832的转换时间进行操作,时间操作性较好。在转换精度上,本设计需对转换数据作调整再作转换。至于具体的调整,由于芯片的质量不同而不同。 13 模拟乒乓球的单片机应用系统 一、设计任务: 设计制作一个模拟乒乓球的单片机应用系统,控制对象为八个发光 极管。它们可以在左(右)按钮的作用下,进行左(右)循环,并且可以 显示双方的比分情况,在分数高的一方分数大于等于11,并且比分之差大于等于2的情况下,自动清零,重新开始游戏。. 二、设计要求 : (1)、用十进制数码显示双方的比分. (2)、当左(右)按钮按下后,右(左)按钮提前按下(即在第八个发光二极管亮之前按下),则左(右)方要加一分。 (3)、当左(右)按钮按下后,右(左)按钮没有按下一(即在第八个发光二极管亮的1秒内,没有按下)则左(右)放要加一分。 三、仪器、仪表:万用表、仿真机、单片机。 四、元件清单:单面印制版 一块 89C51 1片 74LS04 1片 74LS573 5个 74LS1381 1个 LED 4个 按键 2个 三极管 1个 电阻: 10K×3 3K×28 电容: 30P×2 10μF×1 喇叭: 8Ω×1 连结器:SIP4 1个 五、评分标准: 基本要求60分 硬件设计 20   软件设计 20   安装调试 20  报告40分 叙述原理 10   参考程序和硬件图 20   总结 10  内容 设计制作一个模拟乒乓球的自动控制系统,控制对象为八个发光二极管,它们可以在左(右)按钮的作用下,进行左(右)循环,并且可以显示双方的比分情况,在分数高的一方分数大于等于11,并且比分之差大于等于2的情况下,自动清零,重新开始游戏.其要求如下: (1)用十进制数码显示双方的比分. (2)当左(右)按钮按下后,右(左)按钮提前按下(即在第八个发光二极管亮之前按下),则左(右)方要加一分。 (3)当左(右)按钮按下后,右(左)按钮没有按下一(即在第八个发光二极管亮的1秒内,没有按下)则左(右)放要加一分。 功能说明:利用5个573分别控制4个LED显示和发光二极管的状态。利用138来选通573,利用P3口控制138和2个按钮,利用P1口输出发光二极管的状态,利用P2口输出LED的码。8支连续排列的发光二极管,发光二极管的依次点亮代表乒乓球的运动,再用两个按键模拟左右两个球拍,键按下代表球拍击球."左拍"按下可使发光二极管从左向右依次点亮,如同乒乓球从左向右飞来; 反之, “右拍”按下则可使发光二极管从右向左依次点亮,代表乒乓球从右向左运动.此系统可作游戏 供两人玩耍。 其游戏规则如下: (1)"乒乓球"移动速度是固定的,假定每秒移动一位(发光二极管). (2)在"乒乓球"移位一次的过程中,进行50次测试,查询接球方是否有击球动作. (3)接球方的击球动作应发生在"乒乓球"到达本方最后一位发光二极管(即点亮) 一秒钟时间之内.如接球方在次1秒钟之内按键,则接球成功,接球方得分."乒乓球"转为相反方向运动.此后,原接球方变为发球方,原发球方变为接球方。 (4)如接球方提前或滞后击球,则接球方失误,此方不得分.这时"乒乓球"熄灭, 示出双方比分,然后仍由发球方发球。 六、完成时间:一周 原理图: 参考程序: ORG 0000H PLAY: MOV 60H,#00H ;LED显示清零 0000 756100 MOV 61H,#00H 0003 756200 MOV 62H,#00H 0006 756300 MOV 63H,#00H MOV R3,#00H ;双方比分清零 0009 7C00 MOV R4,#00H 000B 75B0FF MOV P3,#0FFH MAIN: LCALL XIANSHI ;调用显示子程序 000E 1200D5 LCALL BIJIAO JNB P3.0,PLAR ;判断右边是否击球,然后乒乓球右移 JNB P3.1,PLL ;判断左边是否击球,然后乒乓球左移 SJMP MAIN ;调用比较子程序 PLL: AJMP PLAL ;跳到乒乓球左移程序 0011 75B0D7 XIANSHI: MOV P3,#0D7H MOV P1,#0FFH ;使发光二极管灭状态 0014 75B0FF MOV P3,#0FFH 0017 7400 MOV A,#00H MOV R0,#60H ;比分开始为零 0019 EB MOV A,R3 ACALL HUAN ;调用交换子程序 001A EC MOV A,R4 001B 114E ACALL HUAN 001D 90015F MOV DPTR,#AAA 0020 E560 MOV A,60H 0022 93 MOVC A,@A+DPTR 0023 75B0CF MOV P3,#0CFH 0026 F5A0 MOV P2,A ACALL YS50 ;延时程序 0028 75B0FF MOV P3,#0FFH 002B E563 MOV A,63H 002D 93 MOVC A,@A+DPTR 002E 75B0C7 MOV P3,#0C7H 0031 F5A0 MOV P2,A 0033 314A ACALL YS50 0035 75B0FF MOV P3,#0FFH 0038 E562 MOV A,62H 003A 93 MOVC A,@A+DPTR 003B F5A0 MOV P2,A 003D 75B0E7 MOV P3,#0E7H 0040 314A ACALL YS50 0042 75B0FF MOV P3,#0FFH 0045 E561 MOV A,61H 0047 93 MOVC A,@A+DPTR 0048 F5A0 MOV P2,A 004A 75B0F7 MOV P3,#0F7H 004D 22 RET 004E FF HUAN: MOV R7,A 004F 540F ANL A,#0FH 0051 F6 MOV @R0,A 0052 08 INC R0 0053 EF MOV A,R7 0054 C4 SWAP A 0055 540F ANL A,#0FH 0057 F6 MOV @R0,A 0058 08 INC R0 0059 22 RET 005A 7E07 PLAR: MOV R6,#07H 005C C3 CLR C 005D 74FF MOV A,#0FFH 005F 7D02 PLAR1: MOV R5,#02H 0061 13 RRC A 0062 F590 MOV P1,A 0064 75B0D7 MOV P3,#0D7H 0067 314A PLAR2: ACALL YS50 0069 30B113 JNB P3.1,PLAR5 006C DDF9 DJNZ R5,PLAR2 006E DEEF DJNZ R6,PLAR1 0070 13 RRC A 0071 75B0D7 MOV P3,#0D7H 0074 F590 MOV P1,A 0076 7D05 PLAR3: MOV R5,#05H 0078 314A PLAR4: ACALL YS50 007A 30B120 JNB P3.1,PLAR6 007D DDF9 DJNZ R5,PLAR4 007F 75B0D7 PLAR5: MOV P3,#0D7H 0082 7590FF MOV P1,#0FFH 0085 314A ACALL YS50 0087 75B0FF MOV P3,#0FFH 008A 0B INC R3 008B EB MOV A,R3 008C C3 CLR C 008D 2400 ADD A,#00H 008F D4 DA A 0090 F5B0 MOV P3,A 0092 75B0D7 MOV P3,#0D7H 0095 7590FF MOV P1,#0FFH 0098 75B0FF MOV P3,#0FFH Error---symbol is not defined! 009B 01FF AJMP MAIN Error---symbol is not defined! 009D 01FF PLAR6: AJMP MAIN 009F 7E07 PLAL: MOV R6,#07H 00A1 C3 CLR C 00A2 74FF MOV A,#0FFH 00A4 7D02 PLAL1: MOV R5,#02H 00A6 33 RLC A 00A7 75B0D7 MOV P3,#0D7H 00AA F590 MOV P1,A 00AC 75B0FF MOV P3,#0FFH 00AF 314A PLAL2: ACALL YS50 00B1 30B0CB JNB P3.0,PLAR5 00B4 DDF9 DJNZ R5,PLAL2 00B6 DEEC DJNZ R6,PLAL1 00B8 33 RLC A 00B9 75B0D7 MOV P3,#0D7H 00BC F590 MOV P1,A 00BE 75B0FF MOV P3,#0FFH 00C1 75B0D7 PLAL3: MOV P3,#0D7H 00C4 7590FF MOV P1,#0FFH 00C7 314A ACALL YS50 00C9 75B0FF MOV P3,#0FFH 00CC 0C INC R4 00CD EC MOV A,R4 00CE C3 CLR C 00CF 2400 ADD A,#00H Error---symbol is not defined! 00D1 01FF AJMP MAIN 00D3 015A PLAL6: AJMP PLAR 00D5 8B64 BIJIAO: MOV 64H,R3 00D7 8C65 MOV 65H,R4 00D9 EB MOV A,R3 00DA C3 CLR C 00DB B56502 CJNE A,65H,LOOP2 00DE 212A AJMP FINSH 00E0 4025 LOOP2: JC LOOP5 00E2 EB MOV A,R3 00E3 B41112 CJNE A,#11H,LOOP3 00E6 EC MOV A,R4 00E7 B41002 CJNE A,#10H,LOOP9 00EA 212A AJMP FINSH 00EC 756902 LOOP9: MOV 69H,#02H 00EF 3131 ACALL Y1S 00F1 D569F8 DJNZ 69H,LOOP9 00F4 312B ACALL QINGLING 00F6 212A AJMP FINSH 00F8 4030 LOOP3: JC FINSH 00FA 0565 INC 65H 00FC 0565 INC 65H 00FE B56500 CJNE A,65H,LOOP4 0101 4027 LOOP4: JC FINSH 0103 312B ACALL QINGLING 0105 212A AJMP FINSH 0107 EC LOOP5: MOV A,R4 0108 B41112 CJNE A,#11H,LOOP6 010B EB MOV A,R3 010C B41002 CJNE A,#10H,LOOP10 010F 212A AJMP FINSH 0111 756A04 LOOP10: MOV 6AH,#04H 0114 3131 LOOP13: ACALL Y1S 0116 D56AFB DJNZ 6AH,LOOP13 0119 312B ACALL QINGLING 011B 212A AJMP FINSH 011D LOOP6: 011D 400B JC FINSH 011F 0564 INC 64H 0121 0564 INC 64H 0123 B56400 CJNE A,64H,LOOP7 0126 4002 LOOP7: JC FINSH 0128 312B ACALL QINGLING 012A 22 FINSH: RET 012B 75B000 QINGLING:MOV P3,#00H 012E 7C00 MOV R4,#00H 0130 22 RET 0131 756614 Y1S: MOV 66H,#14H 0134 758910 MOV TMOD,#10H 0137 758D4C LOOP8: MOV TH1,#4CH 013A 758B00 MOV TL1,#00H 013D D28E SETB TR1 013F 308FFD JNB TF1,$ 0142 C28E CLR TR1 0144 C28F CLR TF1 0146 D566EE DJNZ 66H,LOOP8 0149 22 RET 014A 758901 YS50: MOV TMOD,#01H 014D 758C4C MOV TH0,#4CH 0150 758A00 MOV TL0,#00H 0153 D28C SETB TR0 0155 308DFD JNB TF0,$ 0158 C28C CLR TR0 015A C28D CLR TF0 015C 22 RET 015D 80FE SJMP $ 015F 40F9A4309992 AAA: DB 40H,0F9H,0A4H,030H,99H,92H 0165 82F88090 DB 82H,0F8H,80H,90H END 14模拟电子琴的单片机应用系统 一、设计任务:用单片机应用系统防真一个电子琴。按每一个按钮时能对应发出不同的音,并有一定的音节关系。 二、设计要求:用8个按键,按照音节的要求发出声音。 三、仪器、仪表:万用表、仿真机、单片机。 四、元件清单:89C51 1片 74LS04 1片 按键 8个 三极管 1个 电阻: 10K×9 3K×1 电容: 30P×2 10μF×1 喇叭: 8Ω×1 连结器:SIP4 1个 五、评分标准: 基本要求60分 硬件设计 20   软件设计 20   安装调试 20  报告40分 叙述原理 10   参考程序和硬件图 20   总结 10  六、完成时间:一周 七、原理: 1)蜂鸣器的发音,必须在整个周期期间,有一半的时间是HIGH,一半的时间是LOW,所以一 个周期内,控制脚要动作两次,一次将控制脚位底,另一次将控制脚位高,因此频率需要原来发音频率的两倍。 2)8051芯片有P0口,P1口,P2口,P3口四个输入输出接口。其中P1可以驱动4个TTL负载,通过与之连接的按钮来控制P1.0口,按下时发DO的音,按下一个按钮P1.1口发RE的音,以此类推P1.6口发CI的音。P1.7口用来复位。我们用P3口来控制蜂鸣器,利用定时器T0以JNB查询方式使之输出相应的频率方波。 3)电子琴是一种电子乐器,利用单片机防真电子琴则必须使其产生一定音律关系的音频脉冲,这是根据周期和频率计算出来的。 原理图: 十、程序: ORG 0000H MOV TMOD,#01H MOV DTPR,#TAB QQ: JNB P1.0,Q0 JNB P1.1,Q1 JNB P1.2,Q2 JNB P1.3,Q3 JNB P1.4,Q4 JNB P1.5,Q5 JNB P1.6,Q6 JNB P1.7,Q7 SJMP QQ Q0: MOV A,#00H AJMP Q8 Q1: MOV A,#02H AJMP Q8 Q2: MOV A,#04H AJMP Q8 Q3: MOV A,#06H AJMP Q8 Q4: MOV A,#08H AJMP Q8 Q5: MOV A,#0AH AJMP Q8 Q6: MOV A,#0CH AJMP Q8 Q7: MOV A,#0EH Q8: R0,A MOVC A,@A+DPTR MOV R1,A MOV A,R0 INC A MOVC A,@A+DPTR MOV R2,A MN: MOV TH0,R1 MOV TL0,R2 SETB TR0 JNB TF0,$ CLR TF0 CLR TR0 CPL P3.0 JNB P1.0 JNB P1.1 JNB P1.2 JNB P1.3 JNB P1.4 JNB P1.5 JNB P1.6 JNB P1.7 LJMP MN TAB:DW 0FE52H,0FE82H,0FEADH,0FEC0H DW 0FEE4H,0FF04H,0FF21H,0FF2EH END 15 模拟电子音乐的单片机应用系统 一、设计任务:设计制作一个播放电子音乐的电路。能用按钮控制电路, 分别实现播放,停止和选择歌曲的功能. 二、设计要求:用3个按键,一个为选曲按键,一个为停止按键,一个为播放按键。 并且可以选择任何一首曲目 三、仪器、仪表:万用表、仿真机、单片机。 四、元件清单:单面印制版 一块 89C51 1片 74LS04 1片 按键 3个 三极管 1个 电阻: 10K×4 3K×1 电容: 30P×2 10μF×1 喇叭: 8Ω×1 连结器:SIP4 1个 五、评分标准: 基本要求60分 硬件设计 20   软件设计 20   安装调试 20  报告40分 叙述原理 10   参考程序和硬件图 20   总结 10   六、完成时间:一周 七、原理说明: 1)选用89C51芯片的功能,它有P0口,P1口,P2口,P3口,其中P1口是8位准双向并行I/O接口,每一位都可独立设置成输入输出位,只可驱动4个TTL负载。P3口是一个全双工的串行口,用来实现单片机和其他设备之间串行数据的传送。利用89C51的P1.0口控制停止按钮, P1.1口控制开始按钮,P1.2口控制选择歌曲按钮,P3.1来控制蜂鸣器。 2)每个音符发音是因为有一定的频率在振动,而每个音符的频率是不一样的,所以首先根据每个音符的频率编好每个音符的振荡时间,在编好节拍时间,最后生成表格用程序查表。 3)蜂鸣器的发音,必须在整个周期期间,有一半的时间是HIAN,一半的时间是LOW,所以一个周期内,控制脚要动作两次,一次将控制脚位低,另一次将控制脚位高,因此频率需要原来发音频率的两倍。当震荡器使用12MHZ时,控制脚震荡周期=1000000/F/2US计时次数为1000000/F/2,TH0和TL0的载入值为65536-1000000/F/2。每一个音符,都将分解成简谱码和节拍码,简谱码就是DO-L~SI-H,节拍码就是1~16。 4)按下选择歌曲按钮,按下一次选择的是第一首歌,按下两次是第二首歌,一共有五首歌曲。然后,在按下开始按钮,就会播放出歌曲, 它们的名字是: 雨蝶,祝你平安,涛声依旧,羞答答的玫瑰静悄悄的开和茉莉花。 八、原理图: 九、程序: 0000 DO_L EQU 0 0001 DO#_L EQU 1 0002 RE_L EQU 2 0003 RE#_L EQU 3 0004 MI_L EQU 4 0005 FA_L EQU 5 0006 FA#_L EQU 6 0007 SO_L EQU 7 0008 SO#_L EQU 8 0009 LA_L EQU 9 000A LA#_L EQU 10 000B SI_L EQU 11 000C DO EQU 12 000D DO# EQU 13 000E RE EQU 14 000F RE# EQU 15 0010 MI EQU 16 0011 FA EQU 17 0012 FA# EQU 18 0013 SO EQU 19 0014 SO# EQU 20 0015 LA EQU 21 0016 LA# EQU 22 0017 SI EQU 23 0018 DO_H EQU 24 0019 DO#_H EQU 25 001A RE_H EQU 26 001B RE#_H EQU 27 001C MI_H EQU 28 001D FA_H EQU 29 001E FA#_H EQU 30 001F SO_H EQU 31 0020 SO#_H EQU 32 0021 LA_H EQU 33 0022 LA#_H EQU 34 0023 SI_H EQU 35 ;------------------主程序 ORG 0000H 0000 020020 LJMP MAIN ORG 000BH 000B 020100 LJMP TIMER ORG 0020H 0020 758170 MAIN:MOV SP,#70H 0023 75A882 MOV IE,#82H 0026 C288 CLR IT0 0028 C289 CLR IE0 002A 758901 MOV TMOD,#01H 002D 755000 MOV 50H,#00H 0030 309205 LOP: JnB P1.2,ww;SONG3记数 0033 309120 JNB P1.1,SONG1;song2开始 0036 80F8 sjmp lop 0038 120109 ww: lcall ys20 003B 2092F2 jb p1.2,lop 003E 0550 INC 50H 0040 752F10 MOV 2FH,#10H 0043 120109 SS0: LCALL YS20 0046 D52FFA DJNZ 2FH,SS0 0049 E550 mov a,50h 004B B406E2 cjne a,#06h,lop ;sjmp main 004E 755001 MOV 50H,#01H 0051 80DD SJMP LOP 0053 309067 JNB P1.0,STOP;stop停止 0056 120109 SONG1:lcall ys20 0059 2091D4 jb p1.1,lop 005C E550 MOV A,50H 005E B40102 CJNE A,#01H,ww0 0061 8019 sjmp kk 0063 B40202 ww0: CJNE A,#02H,ww1 0066 805D sjmp kk1 0068 B40302 ww1: CJNE A,#03H,ww2 006B 8061 sjmp kk2 006D B40402 ww2: CJNE A,#04H,WW3 0070 8065 SJMP KK3 0072 B40502 WW3: CJNE A,#05H,WW5 0075 8069 SJMP KK4 ;WW4: CJNE A,#06H,WW5 ; SJMP KK5 0077 755000 WW5: MOV 50H,#00H 007A 80B4 SJMP LOP 007C 900161 KK: MOV DPTR,#S1 007F START:;JNB P1.3,SONG3 007F ;JNB P1.2,SONG2 007F ;JNB P1.1,SONG1 007F 30903B JNB P1.0,STOP 0082 7400 MOV A,#00H 0084 93 MOVC A,@A+DPTR;取得简谱码 0085 F531 MOV 31H,A 0087 A3 INC DPTR 0088 7400 MOV A,#00H ;取得节拍数 008A 93 MOVC A,@A+DPTR 008B F532 MOV 32H,A 008D A3 INC DPTR 008E AE83 MOV R6,DPH 0090 AD82 MOV R5,DPL 0092 B4FF05 CJNE A,#0FFH,SING_SONG;比较是否发音 0095 C28C CLR TR0 0097 0200BD LJMP STOP ;停止计时 009A SING_SONG:;JNB P1.3,SONG3 009A ;JNB P1.2,SONG2 009A ;JNB P1.1,SONG1 009A 309020 JNB P1.0,STOP 009D 900119 MOV DPTR,#TABLE ;频率值存放开始地址 00A0 E531 MOV A,31H 00A2 23 RL A ;31地址乘以2 00A3 93 MOVC A,@A+DPTR ;取得频率值高位组 00A4 F58C MOV TH0,A ;TH0=频率值高位值 00A6 F533 MOV 33H,A 00A8 E531 MOV A,31H 00AA 23 RL A ;31地址乘以2 00AB 04 INC A ;在加1 00AC 93 MOVC A,@A+DPTR ;取得频率值低位组 00AD F58A MOV TL0,A ;TL0=频率值低位值 00AF F534 MOV 34H,A 00B1 D28C SETB TR0 ;开始计时 00B3 1200E9 HOLD: LCALL YS ;延时节拍数 00B6 8E83 MOV DPH,R6 00B8 8D82 MOV DPL,R5 00BA 02007F LJMP START 00BD C28C STOP: CLR TR0 00BF 755000 MOV 50H,#00H 00C2 020030 ljmp lop 00C5 755000 KK1: MOV 50H,#00H 00C8 90024F MOV DPTR,#S2 00CB 02007F LJMP START 00CE 755000 KK2: MOV 50H,#00H 00D1 900303 MOV DPTR,#S3 00D4 02007F LJMP START 00D7 755000 KK3: MOV 50H,#00H 00DA 900492 MOV DPTR,#S4 00DD 02007F LJMP START 00E0 755000 KK4: MOV 50H,#00H 00E3 900568 MOV DPTR,#S5 00E6 02007F LJMP START ;KK5: MOV 50H,#00H ; MOV DPTR,#S6 ; LJMP START ;---------------------------延时125MS 00E9 753678 YS: MOV 36H,#78H 00EC 7535C8 CL2: MOV 35H,#0C8H 00EF 00 CL1: NOP 00F0 00 NOP 00F1 00 NOP 00F2 D535FA DJNZ 35H,CL1 00F5 D536F4 DJNZ 36H,CL2 00F8 D532EE DJNZ 32H,YS 00FB 22 RET ORG 0100H 0100 85338C TIMER: MOV TH0,33H ;重新载入频率值高位组 0103 85348A MOV TL0,34H ;重新载入频率值低位组 ; 让蜂鸣器响 0106 B2B1 CPL P3.1 0108 32 RETI 0109 752C28 ys20: MOV 2CH,#28H 010C 752B64 YY1: MOV 2BH,#64H 010F 00 YY0: NOP 0110 00 NOP 0111 00 NOP 0112 D52BFA DJNZ 2BH,YY0 0115 D52CF4 DJNZ 2CH,YY1 0118 22 ret 0119 TABLE: 0119 F922 DB 0F9H,22H 011B F981 DB 0F9H,81H 011D F9E1 DB 0F9H,0E1H 011F FA37 DB 0FAH,37H 0121 FA8C DB 0FAH,8CH 0123 FAD7 DB 0FAH,0D7H 0125 FB23 DB 0FBH,23H 0127 FB6C DB 0FBH,6CH 0129 FBAA DB 0FBH,0AAH 012B FBE9 DB 0FBH,0E9H 012D FC24 DB 0FCH,24H 012F FC5C DB 0FCH,5CH 0131 FC8F DB 0FCH,8FH 0133 FCC1 DB 0FCH,0C1H 0135 FCEF DB 0FCH,0EFH 0137 FD1C DB 0FDH,1CH 0139 FD46 DB 0FDH,46H 013B FD6D DB 0FDH,6DH 013D FD92 DB 0FDH,92H 013F FDB5 DB 0FDH,0B5H 0141 FDD6 DB 0FDH,0D6H 0143 FDF5 DB 0FDH,0F5H 0145 FE21 DB 0FEH,21H 0147 FE2E DB 0FEH,2EH 0149 FE49 DB 0FEH,49H 014B FE61 DB 0FEH,61H 014D FE78 DB 0FEH,78H 014F FE8E DB 0FEH,8EH 0151 FEA3 DB 0FEH,0A3H 0153 FEB7 DB 0FEH,0B7H 0155 FEC9 DB 0FEH,0C9H 0157 FEDB DB 0FEH,0DBH 0159 FEEB DB 0FEH,0EBH 015B FEFB DB 0FEH,0FBH 015D FF09 DB 0FFH,09H 015F FF17 DB 0FFH,17H ;雨蝶 0161 0C020B02 S1: DB DO,02H,SI_L,02H 0165 090407020904 DB LA_L,04H,SO_L,02H,LA_L,04H,SO_L,02H 0702 016D 090209020702 DB LA_L,02H,LA_L,02H,SO_L,02H,LA_L,04H,DO,02H 09040C02 0177 0E020E020C02 DB RE,02H,RE,02H,DO,02H,,RE,04H,DO,02H 0E040C02 0181 090409040902 DB LA_L,04H,LA_L,04H,LA_L,02H,DO,02H,RE,02H 0C020E02 018B 100210021002 DB MI,02H,MI,02H,MI,02H,MI,02H,RE,02H,DO,02H 10020E020C02 0197 100210021002 DB MI,02H,MI,02H,MI,02H,MI,02H,RE,02H,DO,02H 10020E020C02 01A3 100410041004 DB MI,04H,MI,04H,MI,04H,MI,04H 1004 01AB 0C020B02 DB DO,02H,SI_L,02H 01AF 090407020904 DB LA_L,04H,SO_L,02H,LA_L,04H,SO_L,02H 0702 01B7 090209020702 DB LA_L,02H,LA_L,02H,SO_L,02H,LA_L,04H,DO,02H 09040C02 01C1 0E020E020E02 DB RE,02H,RE,02H,RE,02H,RE,02H,RE,02H,LA_L,02H,MI,02H 0E020E020902 1002 01CF 10020E040E02 DB MI,02H,RE,04H,RE,02H,DO,02H,RE,02H 0C020E02 01D9 100210021002 DB MI,02H,MI,02H,MI,02H,MI,02H,RE,02H,DO,02H 10020E020C02 01E5 100210021002 DB MI,02H,MI,02H,MI,02H,MI,02H,RE,02H,DO,02H 10020E020C02 01F1 100410041004 DB MI,04H,MI,04H,MI,04H,MI,04H 1004 01F9 140414041002 DB SO#,04H,SO#,04H,MI,02H,SO,02H,MI,02H 13021002 0203 150413021502 DB LA,04H,SO,02H,LA,02H,SO,02H,RE,02H 13020E02 020D 100410041002 DB MI,04H,MI,04H,MI,02H,SO,02H,MI,02H 13021002 0217 150213021302 DB LA,02H,SO,02H,SO,02H,LA,02H,SO,02H,RE,02H 150213020E02 0223 100410040902 DB MI,04H,MI,04H,LA_L,02H,DO,02H,LA_L,02H 0C020902 022D 10030E020E02 DB MI,03H,RE,02H,RE,02H,RE,02H,DO,02H,LA_L,02H 0E020C020902 0239 130413021302 DB SO,04H,SO,02H,SO,02H,MI,02H,RE,02H 10020E02 0243 100310021002 DB MI,03H,MI,02H,MI,02H,RE,02H,DO,02H 0E020C02 024D FFFF DB 0FFH,0FFH ;歌曲2:祝你平安 024F 100413041306 S2: DB MI,04H,SO,04H,SO,06H,MI,02H,SO,08H 10021308 0259 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,02H,DO,0AH 09020C0A 0263 100413041304 DB MI,04H,SO,04H,SO,04H,LA,02H,SO,0AH 1502130A 026D 0E0410041304 DB RE,04H,MI,04H,SO,04H,MI,02H,RE,0AH 10020E0A 0277 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,02H,MI,02H,MI,08H,DO,02H,RE,02H 090210021008 0C020E02 0287 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,04H,MI,0CH 0904100C 0291 10040E040E04 DB MI,04H,RE,04H,RE,04H,DO_L,02H,LA_L,02H,MI,04H,RE,04H,RE,08H 000209021004 0E040E08 02A1 070413021302 DB SO_L,04H,SO,02H,SO,02H,RE,04H,MI,02H,DO,0AH 0E0410020C0A 02AD 100413041306 DB MI,04H,SO,04H,SO,06H,MI,02H,SO,08H 10021308 02B7 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,02H,DO,0AH 09020C0A 02C1 100413041304 DB MI,04H,SO,04H,SO,04H,LA,02H,SO,0AH 1502130A 02CB 0E0410041304 DB RE,04H,MI,04H,SO,04H,MI,02H,RE,0AH 10020E0A 02D5 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,02H,MI,02H,MI,08H,DO,02H,RE,02H 090210021008 0C020E02 02E5 10040C040C04 DB MI,04H,DO,04H,DO,04H,LA_L,01H,MI,02H,MI,0CH 09011002100C 02F1 10040E040E04 DB MI,04H,RE,04H,RE,04H,DO_L,02H,LA_L,02H,MI,04H,RE,04H,RE,08H 000209021004 0E040E08 0301 FFFF DB 0FFH,0FFH ;涛声依旧 0303 070407040702 S3: DB SO_L,04H,SO_L,04H,SO_L,02H,LA,02H,DO,02H,RE,02H,DO,04H,LA_L,02H,DO,02H 15020C020E02 0C0409020C02 0315 0C020C020902 DB DO,02H,DO,02H,LA_L,02H,LA_L,02H,DO,04H,RE,02H,MI,02H,SO_L,02H,LA_L,02H,SO_L,04H,SO_L,04H 09020C040E02 100207020902 07040704 032B 0C040C040C02 DB DO,04H,DO,04H,DO,02H,RE,02H,MI,02H,SO,02H,MI,04H,RE,02H,DO,02H 0E0210021302 10040E020C02 033D 09020C020C02 DB LA_L,02H,DO,02H,DO,02H,DO,02H,DO,04H,LA_L,04H,SO,02H,RE,02H,MI,02H,RE,04H,RE,04H 0C020C040904 13020E021002 0E040E04 0353 130213021302 DB SO,02H,SO,02H,SO,02H,LA,04H,SO,02H,MI,04H,RE,02H,DO,02H,DO,02H,DO,02H,DO,02H 150413021004 0E020C020C02 0C020C02 0369 0E0210021002 DB RE,02H,MI,02H,MI,02H,MI,02H,RE,02H,MI,04H,SO_L,04H,LA_L,02H,DO,02H,LA_L,04H,SO_L,02H,SO_L,02H 10020E021004 070409020C02 090407020702 0381 09020C020C02 DB LA_L,02H,DO,02H,DO,02H,LA_L,02H,DO,02H,RE,04H,MI,02H,RE,04H,RE,04H,MI,02H,RE,02H,MI,02H,RE,02H,DO,02H 09020C020E04 10020E040E04 10020E021002 0E020C02 039D 070407040902 DB SO_L,04H,SO_L,04H,LA_L,02H,DO,04H,RE,02H,MI,02H,SO_L,02H,LA_L,02H,SO_L,04H,SO_L,04H 0C040E021002 070209020704 0704 03B1 130215021504 DB SO,02H,LA,02H,LA,04H,LA,04H,MI,02H,SO,02H,LA,04H,SO,02H,SO,04H,DO,02H,RE,02H 150410021302 150413021304 0C020E02 03C7 100410041002 DB MI,04H,MI,04H,MI,02H,SO,04H,LA,02H,MI,02H,RE,02H,MI,04H,MI,04H 130415021002 0E0210041004 03D9 130215021304 DB SO,02H,LA,02H,SO,04H,MI,02H,SO,02H,DO,02H,LA_L,04H,SO,02H,SO_L,04H,LA_L,02H,DO,02H 100213020C02 090413020704 09020C02 03EF 0E040E040E02 DB RE,04H,RE,04H,RE,02H,LA,04H,RE,02H,SO,02H,LA,02H,SO,04H,SO,04H 15040E021302 150213041304 0401 100213021504 DB MI,02H,SO,02H,LA,04H,SO,02H,DO,02H,RE,02H,MI,04H,RE,02H,RE,04H,SO_L,02H,SO_L,02H 13020C020E02 10040E020E04 07020702 0417 130413021002 DB SO,04H,SO,02H,MI,02H,RE,02H,MI,02H,RE,02H,DO,02H,RE,02H,DO,02H,LA_L,04H,DO,02H,RE,02H 0E0210020E02 0C020E020C02 09040C020E02 042F 10020E021004 DB MI,02H,RE,02H,MI,04H,SO,04H,RE,02H,MI,04H,RE,02H,DO,04H,SO_L,02H,SO_L,02H 13040E021004 0E020C040702 0702 0443 130213021302 DB SO,02H,SO,02H,SO,02H,SO,02H,LA,02H,SO,02H,MI,04H,SO,02H,LA,02H,SO,04H,SO,04H 130215021302 100413021502 13041304 0459 0E020E020E02 DB RE,02H,RE,02H,RE,02H,MI,02H,RE,02H,DO,02H,LA_L,04H,DO,02H,RE,02H,DO,04H,DO,02H,SO_L,02H,LA_L,02H,DO,02H 10020E020C02 09040C020E02 0C040C020702 09020C02 0475 0E020E020E02 DB RE,02H,RE,02H,RE,02H,RE,02H,RE,04H,DO,02H,LA_L,02H 0E020E040C02 0902 0483 070209020704 DB SO_L,02H,LA_L,02H,SO_L,04H,SO_L,04H 0704 048B 0704070407 DB SO_L,04H,SO_L,04H,SO_L 0490 FFFF DB 0FFH,0FFH ;羞答答的玫瑰静悄悄地开 0492 0C020C020C02 s4:DB DO,02H,DO,02H,DO,02H,SI_L,02H,LA_L,06H,MI,06H 0B0209061006 049E 0E0210020E02 DB RE,02H,MI,02H,RE,02H,LA_L,02H,RE,06H,RE,06H 09020E060E06 04AA 0B0609020702 DB SI_L,06H,LA_L,02H,SO_L,02H,SI_L,02H,SI_L,02H,DO,02H,RE,02H 0B020B020C02 0E02 04B8 10020E020C02 DB MI,02H,RE,02H,DO,02H,MI,02H,MI,06H,MI,06H 100210061006 04C4 150215061702 DB LA,02H,LA,06H,SI,02H,LA,02H,SO,02H,FA,02H,MI,02H 150213021102 1002 04D2 110213021102 DB FA,02H,SO,02H,FA,02H,MI,02H,RE,06H,RE,02H,DO,02H 10020E060E02 0C02 04E0 0B020B020B02 DB SI_L,02H,SI_L,02H,SI_L,02H,LA_L,02H,SO#_L,02H,MI_L,02H,SO#_L,02H,SI_L,02H 090208020402 08020B02 04F0 09020B020902 DB LA_L,02H,SI_L,02H,LA_L,02H,MI_L,02H,LA_L,06H,LA_L,06H 040209060906 04FC 090609060C02 DB LA_L,06H,LA_L,06H,DO,02H,RE,02H,MI,02H,SO,02H,SO,02H,RE,02H,RE,06H 0E0210021302 13020E020E06 050E 0C0207020C02 DB DO,02H,SO_L,02H,DO,02H,MI,02H,MI,06H,MI,06H 100210061006 051A 0B020B020B02 DB SI_L,02H,SI_L,02H,SI_L,02H,DO,02H,RE,06H,FA,06H 0C020E061106 0526 10020E020C02 DB MI,02H,RE,02H,DO,02H,RE,02H,MI,06H,MI,06H 0E0210061006 0532 0E0210021502 DB RE,02H,MI,02H,LA,02H,MI,02H,MI,02H,RE,02H,RE,06H 100210020E02 0E06 0540 0E020E021302 DB RE,02H,RE,02H,SO,02H,FA,02H,MI,06H 11021006 054A 0E020C020B02 DB RE,02H,DO,02H,SI_L,02H,DO,02H,RE,02H,DO,02H,RE,02H,FA,02H 0C020E020C02 0E021102 055A 100210021302 DB MI,02H,MI,02H,SO,02H,FA,02H,MI,06H,MI,06H 110210061006 0566 FFFF DB 0FFH,,0FFH ;茉莉花 0568 10020E021002 S5: DB MI,02H,RE,02H,MI,02H,SO,02H,LA,02H,SO,02H,DO_H,02H 130215021302 1802 0576 150213021002 DB LA,02H,SO,02H,MI,02H,SO,08H,LA,04H,DO_H,04H,RE_L,02H,MI_H,02H,RE_H,02H,DO_H,02H 130815041804 02021C021A02 1802 058A 1A0218021502 DB RE_H,02H,DO_H,02H,LA,02H,DO_H,02H,SO,04H,SO,02H,MI,02H,SO,02H,LA,02H 180213041302 100213021502 059C 18021A021C02 DB DO_H,02H,RE_H,02H,MI_H,02H,DO_H,02H,LA,02H,SO,02H 180215021302 05A8 13020E021002 DB SO,02H,RE,02H,MI,02H,SO,02H,MI,02H,RE,02H,DO,02H 130210020E02 0C02 05B6 09020C061002 DB LA_L,02H,DO,06H,MI,02H,RE,02H,DO,02H,RE,02H,MI,03H 0E020C020E02 1003 05C4 130215011801 DB SO,02H,LA,01H,DO_H,01H,LA,02H,SO,02H,SO,01H,MI,01H 150213021301 1001 05D2 0E0210021302 DB RE,02H,MI,02H,SO,02H,MI,02H,RE,02H,DO,02H,RE,02H 10020E020C02 0E02 05E0 09040C020E03 DB LA_L,04H,DO,02H,RE,03H,MI,02H,DO,02H,RE,02H,DO,02H 10020C020E02 0C02 05EE 09020C020902 DB LA_L,02H,DO,02H,LA_L,02H,SO_L,05H 0705 05F6 FFFF DB 0FFH,0FFH ;ys20: mov tmod,#01h ; mov th0,#0f8h ; mov tl0,#0cch ; setb tr0 ; jnb tf0,$ ; clr tf0 ; clr tr0 ; ret END 16 模拟电报发送的单片机应用系统 一、设计任务: 设计一个电报程序.对A-Z26个字母以编码的形式发送出去的系统。. 二、设计要求: 1.设“*”为1个时间单位,既让扬声器发声3个时间单位。点与点之间,点与划之间,划与划之间相隔1个时间单位,在此时间内扬声器不发声,每个字母之间相隔3个时间单位,5个字母为一组,组与组之间相隔5个时间单位。A-Z的编码如下: A*-;B**-;C-*-*;D-**;E*;F**-*;G--*;H****;I**;J*---;K-*-;L*-**;M--;N-*;O---;P*--8;Q--*;R*-*;S***;T-;U**-;;V***-;W*--;X-**-;Y-**--;Z--**。 如需发送A,即让扬声器发生1个时间单位,停止1个时间单位,在发声3个时间单位。共发送24组120个字母 2.要求以8种不同的速度发出,具体分别为50字每分钟,60字每分钟,70字每分钟,80字每分钟,90字每分钟,100字每分钟,110字每分钟,120字每分钟。具体发送速度为外不可控。按以上仿真机进行仿真。 三、仪器、仪表:仿真机、万用表、单片机。 四、元件清单: 微机 一台 555芯片  一只    晶震    一个 仿真机 一台 386芯片  一只 电解电容  一个 1K电阻 二只 10K及22K电位器各一只 1K及100K电位器各一只 10欧电阻   一只 103,104电容各四个      12微法,22微法,220微法的                 8欧扬声器一只         电解电容各一只 导线若干,按键三只等。 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成A-Z26个字母以编码形式发送 20   完成8种不同的速度发送 25   完成手动控制其启动发送及停止 15  报告 完成原理图的设计 10   完成程序的编写 20   总结 10  七、电路原理: 电路分析如图,由555芯片及电位器W1,W2,电容C1,C2 组成振荡源,调解阻值及容值使其产生音频信号,从管脚3输出 。仿真机的P1.7引脚用来控制音频振荡是否产生,仿真机复位时P1.7引脚为高电平,振荡器不振荡,当需要其发生时,由程序控制P1.7引脚为低电平。音频振荡器电路接通,处于工作状态,其音频信号驱动扬声器发声;当需要发声停止时,由程序时P1.7引脚为高电平,振荡器停止振荡。 八、原理图  九、程序框图: 主程序取数程序 开 始   设堆栈初值 MOV SP,#70H   每组字母个数 MOV 50H,#05H   置字母总个数 MOV 51H,#78H   调用速度SD子程序   置字母表格首址 MOV DPTR,#TTAB-1   调用取数QS子程序  调用延时3个单位时间子程序YS2   (50H)--1送入50H   50H=0?   重新每组字母个数赋值   各组间隔5个单位时间52H计数   调用YS1延时1个单位时间   52H—1送入52H   52H=0?   (51H)—1送入51H   51H=0?   结 束   速度程序 QS子程序入口   每次取出DPTR+1得值送入A中   调用判断子程序   RET 返回   速度程序 SD子程序入口   取P1口低3位送入A中   A加偏移量#03H进行修订   取出相应的速度送入A中   A的内容送入30H   RET 返回   判断子程序PJ入口   4判断键程序 将A的内倍暂存容加   A的内容加偏移量进行修订   取出PC变化后的内容即相应字母处理子程序入口低位送入A并压入堆栈   还原A的内容然后重新修订   取出PC再次变化后的内容即相应字母处理子 程序入口地址高位送入A并压入堆栈   RET进入相应的字母处理子程序   “嘀”子程序入口  “嘀”程序 将p1.7清零使音频振荡器震荡 并延时1个时间单位   将P1.7置1使音频振荡器停止振荡   RET返回   “哒”程序 “哒”子程序入口   将P1.7 清零使音频振荡器荡 延时3个时间单位   将P1.7置1使音频振荡器停止振荡   RET返 回   7.延时程序1 延时程序YS1入口   R4送数#0FFH   (30H)送入R0   (R0)--1送入R0   R0=0?   (R4)-1送入R4   R4=0?   RET返回   8.延时程序2 延时程序YS2入口   R1=03H计数   调用YS1子程序   (R1)-1送入R1   R1=0?   RET返回   十、参考程序: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP,#70H MOV 50H,#05H MOV 51H,#78H LCALL SD MOV DPTR,#TTAB-1 LOOP0: LCALL QS LCALL YS2 DJNZ 50H,LOOP2 MOV 50H,#05H MOV 52H,#05H LOOP1: LCALL YS1 DJNZ 52H,LOOP1 LOOP2:DJNZ 51H,LOOP0 SJMP $ QS:CLR A INC DPTR MOVC A,@A+DPTR LCALL PJ RET SD:MOV A,P1 ANL A,#07H ADD A,#03H MOVC A,@A+PC MOV 30H,A RET DB 0B2H,94H,7AH,6FH DB 62H,58H,50H,49H PJ:CLR C SUBB A,#40H RL A MOV B,A ADD A,#09H MOVC A,@A+PC PUSH ACC MOV A,B ADD A,#01H MOVC A,@A+PC PUSH ACC RET DW AA,BB,CC,DD,EE,FF DW GG,HH,II,JJ,KK,LL,MM DW NN,OO,PP,QQ,RR1,SS DW TT,UU,VV,WW,XX,YY,ZZ AA:LCALL POINT LCALL YS1 LCALL LINK RET BB:MOV R3,#03H LCALL LINK ZBB:LCALL YS1 DJNZ R3,ZBB RET CC:LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT RET DD:LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL POINT RET EE:LCALL POINT RET FF:LCALL UU LCALL YS1 LCALL POINT RET GG:LCALL LINK LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT RET HH:MOV R3,#03H LCALL POINT ZHH:LCALL YS1 LCALL POINT DJNZ R3,ZHH RET II:LCALL POINT LCALL YS1 LCALL POINT RET JJ:MOV R3,#03H LCALL POINT ZJJ:LCALL YS1 LCALL LINK DJNZ R3,ZJJ RET KK:LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK RET LL:LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL POINT RET MM:LCALL LINK LCALL YS1 LCALL LINK RET NN:LCALL LINK LCALL YS1 LCALL POINT RET OO:MOV R3,#02H ZO:LCALL LINK LCALL YS1 DJNZ R3,ZO LCALL LINK RET PP:LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT RET QQ:LCALL LINK LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK RET RR1:LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT RET SS:LCALL POINT LCALL YS1 LCALL POINT LCALL YS1 LCALL POINT RET TT:LCALL LINK RET UU:LCALL POINT LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK RET VV:MOV R3,#03H ZVV:LCALL POINT LCALL YS1 DJNZ R3,ZVV LCALL LINK RET WW:LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL LINK RET XX:LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK RET YY:LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL LINK LCALL YS1 LCALL LINK RET ZZ:LCALL LINK LCALL YS1 LCALL LINK LCALL YS1 LCALL POINT LCALL YS1 LCALL POINT LCALL YS1 RET YS1:MOV R4,#0FFH T:MOV R0,30H DJNZ R0,$ DJNZ R4,T RET YS2:MOV R1,#03H AB:LCALL YS1 DJNZ R1,AB RET POINT:CLR P1.7 LCALL YS1 SETB P1.7 RET LINK:CLR P1.7 LCALL YS2 SETB P1.7 RET TTAB:DB 41H,54H,46H,51H,4CH,56H DB 49H,4CH,4EH,42H,47H,48H DB 41H,54H,46H,57H,52H,52H DB 49H,52H,54H,42H,47H,48H DB 41H,54H,46H,57H,52H,56H DB 49H,52H,54H,42H,47H,48H DB 41H,54H,46H,57H,52H,56H DB 58H,5AH,59H,58H,51H,57H DB 41H,54H,46H,57H,52H,56H DB 49H,52H,54H,42H,47H,58H DB 52H,5AH,50H,58H,51H,57H DB 5AH,45H,4FH,49H,47H,43H DB 50H,55H,55H,49H,47H,43H DB 58H,5AH,59H,58H,51H,57H DB 50H,45H,55H,49H,47H,43H DB 58H,5AH,59H,58H,51H,57H DB 50H,45H,55H,49H,47H,43H DB 58H,58H,59H,58H,51H,57H DB 50H,45H,55H,49H,47H,43H DB 49H,52H,54H,42H,47H,48H END 十一、总结: 因为本组程序非一人编制,故对不同编织者所使用的内存单元进行人工检查,对重复使用的单元进行了协调,重新设置。并统一分配。 按下来对速度常数进行调试,发现用单重循环软件延时时,即使是设置最大的速度常数,其发送速度也大于50字母每分钟,故将单重循环改为双重循环,最后用变动常数的方法的种不同速度对应的速度常数,并将填入速度常数表格。达到实习要求。 最后,调试硬件电路,接通振荡电路时,发现扬声器发声低而难听,经示波器检测,发现其频率太高,更改大容值电容,并调节电位器得到音频振荡信号,在街上扬声器效果有所改进,但声音稍小,经加入晶体管发大电路后,效果较好。由指导老师验收通过经过三周的实习,我收获很多,不论在编程的创造思维上,还是在硬件电路的设置和搭配上,都有了一定层次的提高。由本组分工合理,责任明确,各项进步很快。在此当中指导老师给了我不少的帮助,提供了技术指导和电路元件的大力支持。当然,在此时习过程中我遇到了不少困难。在编程调试上,特别是找时间单位常数,是根据以前编制的跑表,通过联机的方法,经过近一个上午的调试,达到老师提出的8种速度要求。在电路搭配上,把以前学过的知识有巩固了一次,经过大家的集体研究,却是本组的实验电路,由于刚开始时经验不足,在输出电路中没有使用放大电路,导致扬声器声音不太令人满意,在老师指导下,放入放大电路,使音响有了很大改善。 总之,通过这次实习,我对本课程有增加一些新的认识,找到了我目前存在的不足和缺陷,我争取在以后的学习中,努力提高自己,把以后的课程学好。 17 步进电机控制系统 一、设计任务: 以单片机作为主控单元,步进电动机作为执行机构,设计制做一个位置控制系统。 设计要求: 基本要求:1 输入的脉冲数与电机旋转的角度成比例。误差≦10度/圈。 2 通过旋转机构达到对小车行走路程的控制。 发挥部分:能够通过传感检测装置实现位置的闭环控制。 三、仪器、仪表:万用表、仿真机、单片机。 四、元件清单:单面印制版 一块 89C51 1片 74LS04 1片 按键 3个 三极管 1个 电阻: 10K×4 3K×1 电容: 30P×2 10μF×1 连结器:SIP4 若干 仿真开发机、 键盘显示系统、 步进电机驱动模块、 步进电动机、 传感器 电源等。 五、评分标准: 基本要求60分 硬件设计 20   软件设计 20   安装调试 20  报告40分 叙述原理 10   参考程序和硬件图 20   总结 10   六、完成时间:两周 七、原理说明: 一) 反应式步进电动机的结构 如图1是一个三相反应式步进电动机结构图。由图可以看出反应式步进机分成转子和定子两部分。定子是由硅钢片叠成的。定子上有6个磁极(大极),每2个相对的磁极(N、S极)组成一对,共有3对。每对磁极都缠有同一绕组,也即形成一相,这样3对磁极有3个绕组,形成三相。可以得出,四相步进电动机有4对磁极、4相绕组;五相步进电动机有5对磁极、5相绕组;......依次类推。每个磁极的内表面部分布着多个小齿,他们大小相同,间距相同。 转子是由软磁材料制成的,其外表面也均匀分布着小齿,这些小齿与定子磁极上的小齿的齿距相同,形状相似。 由于小齿的齿距相同,所以不管是定子还是转子,它们的齿距角都可以由下式来计算: Qz=2pai/Z Z--转子的齿数。 反应式步进电动机运动的动力来自电磁力。在电磁力的作用下,转子被强行推动到最大磁导率(或者最小磁阻)的位置(如图2所示,定子小齿与转子小齿对齐的位置),并处于平蘅状态。对三相步进电动机来说,当某一相的磁极处于最大磁导位置时,另外两相必须处于非最大磁导位置(如图2所示,定子小齿与转子小齿不对齐的位置)。 我们把定子小齿与转子小齿对齐的状态称为对齿;把定子小齿与转子小齿不对齐的状态称为错齿。错齿的存在步进电动机能够旋转的前提条件,所以,在步进电动机的结构中必须保证有错齿存在,也就是说,当某一相处于对齿状态时,其他想必须处于错齿状态。 三相步进电动机的每一相磁极在空间上相差120度。假如当前A相处于对齿状态,以A相位置作为参考点,B相与A相相差120度,C相与A相相差240度。下面我们计算当A相处于对齿状态时,B、C两相的错齿程度。 将A相磁极中心线看成0度,在0度处的转子齿为0号齿,则在120度处的B相磁极中心线上对应的转子齿号为120/9=13.3,即B相磁极中心线处于转子第13号齿再过1/3齿距角的地方,如图3所示。这说明B相错了1/3个齿距角,也即错齿3度. 同理,与A相相差240度的C相磁极中心线上对应的齿号为240/9=26.6,即C相磁极中心线处于第26号齿再过2/3齿距的地方,如图3所示.这说明C相错齿6度. 二 )反应式步进电动机的工作原理 1 反应示步进电动机的步进原理 如果给处于错齿状态的相通电,则转子在电磁力的作用下,将向磁导率最大(或磁阻最小)的位置转动,即向趋于对齿的状态转动.步进电动机就是基于这一原理转动的. 步进电动机步进的过程也可以通过图4进一步说明.当开关KA合上时,A相绕组通电,使A相磁场建立.A相定子磁极上的齿与转子的齿形成对齿,同时,B相、C相上的齿与转子形成错齿。 将A相断电,同时将KB合上,使处于错1/3个齿距角的B相通电,并建立磁场。转子在电磁力的作用下,向与B相成对齿的位置转动。其结果是:转子转动了1/3个齿距角;B相与转子形成对齿;C相与转子错1/3个齿距角;A相与转子错2/3个齿距角。 相似地,在B相断电的同时,合开关KC给C相通电建立磁场,转子又转动了1/3个齿距角,与C相形成齿对,并且A相与转子错1/3个齿距角,B相与转子错2/3个齿距角。 当C相断电,在给A相通电时,转子又转动了1/3个齿距角,与A相形成对齿,与B、C两相形成错齿。至此,所有的状态与最初时一样,只不过转子累计转过了一个齿距。 可见,由于按A-B-C-A顺序轮流给各项绕组通电,磁场按A-B-C方向转过了360度,转子则沿相同方向转过一个齿距角。 同样,如果改变通电顺序,即按与上面相反的方向(A-B-C-A的顺序)通电,则转子的转向也改变。 如果对绕组通电一次的操作称为一拍,那么前面所述的三相反应式步进电动机的三相轮流通电就需要三拍。转子每拍走一步,转一个齿距角需要3步。 转子走一步所转过的角度称为步距角QN,可用下式计算 N--步进电动机工作拍数。 从以上分析可知,反应式步进电动机对结构的要求是: (1)定子绕组磁极的分度角(如三相的120度的240度)不能被齿距角整除,否则无法形成错齿; (2)定子绕组磁极得分度角被齿距角除后所得的余数,应是步距角的倍数,而且倍数值与相数不能有公因子,否则无法形成对齿。 三 步进电动机的特性 步进电动机的振荡和失步是一种普遍存在的现象,它影响应用系统的正常运行,因此要尽力去避免。下面对振荡和失步的原因进行分析,并给出解决方法。 1 振荡 步进电动机的振荡现象主要发生于:步进电动机工作在低频区;步进电动机工作在共振区;步进电动机突然停车时。 当步进电动机工作在低频区时,由于励磁脉冲间隔的时间长,步进电动机表现为单步运行。当励磁开始时,转子在电磁力的作用下加速转动。在到达平衡点时,电磁驱动转矩为零,但转子的转速最大,由于惯性,转子冲过平衡点。这是电磁力产生负转矩,转子在负转矩的作用下,转速逐渐为零,并开始方向转动。当转子反转过平衡点后,电磁力又产生正转矩,迫使转子又正向转动。如此下去,形成转子围绕平衡点的振荡。由于有机械摩擦和电磁阻尼的作用,这个振荡表现为衰减振荡,最终稳定在平衡点。 当步进电动机工作在共振区时,步进电动机的脉冲频率接近步进电动机的振荡频率f0或振荡频率的分频或倍频,这会使振荡加剧,严重时造成失步。步进电动机的振荡频率f0可由下式求出 式中J--转动惯性; Z--转子齿数; Tmax--最大转矩。 振荡失步的过程可描述如下:在第一个脉冲到来后,转子经历了一次振荡。当转子回摆到最大幅值时,恰好第二个买哦冲到来,转子受到的电磁转矩为负值,使转子继续回摆。接着第三个脉冲到来,转子受正电磁转矩的作用回到平衡点。这样,转子经过三个脉冲仍然回到原来位置,也就是丢了三步。 当步进电动机工作在高频区时,由于换相周期短,转子来不及反冲。同时,绕组中的电流尚未上升到稳定值,转子没有获得足够的能量,所以在这个工作区中不会产生振荡。减小步距角可以减小振荡幅值,以达到削弱振荡的目的。 2 失步 步进电动机的失步原因有2种。第一种是转子的转速慢于旋转磁场的速度,或者说慢于换相速度。例如,步进电动机在启动时,如果脉冲的频率较高,由于电动机来不及获得足够的能量,使其无法令转子跟上旋转磁场的速度,所以引起失步。因此,步进电动机有一个启动频率,超过启动频率启动时,肯定会产生失步。注意,启动频率不是一个固定值,提高电动机的转矩、减小步距角都可以提高步进电动机的启动频率。 第二种是转子的平均速度大于旋转磁场的速度。这主要发生在制动和突然转向时,转子获得过多的能量,产生严重的过冲,引起失步。 3 矩频特性 步进电动机的输出转矩与控制脉冲频率之间的关系称为矩频特性。步进电动机的输出转矩随频率升高而下降的原因可以这样解释:由于有绕组电感的影响,绕组中电流的波形如图,电流的上升需要一定的时间。以图15的驱动电路为例,电流上升时驱动电路的时间常数 式中L--绕组的电感; R--通电回路的总电阻,包括绕组线圈电阻、限流电阻R1和晶体管结电阻。 电流下降时放电回路的时间常数 式中Ra--放电回路的总电阻,包括绕组线圈电阻、耗能电阻R2和续流二极管结电阻。 由于时间常数的存在,绕组中的电流上升和下降都需要一定的时间。当脉冲频率较底时,绕组中通电的周期较长,电流的平均值较大,电动机获得的能量较高,因此能维持较高的沌局;当脉冲频率较高时,绕组中通电的周期较短,电流的平均值较小,电动机获得的能量较少,因此转矩下降。 另外,随着频率上升,转子转速升高,在定子绕组中产生的附加旋转电势使电动机受到更大的阻尼转矩,铁心的涡损也增加。这些都是使步进电动机输出转矩下降的因素。 矩频特性曲线上的凹陷可看成是步进电动机的共振区。由于共振消耗一定的能量,使转矩下降。 为了提高矩频特性的高频性能,可用如下方法。 (1)减小时间常数 由公式可以看出,增加电阻Ra可以减小时间常数;但增加Ra电回路中电流值减小,所以,为了保证通电回路中的电流不变,在增加Ra的同时,还要提高电源电压。 (2)改进工作方式 采用多相励磁的工作方式,例如,三相步进电动机的双拍、六拍方式。多相励磁工作方式使每一相通电时间长了,电动机就获得较多的能量,使高频时输出的转矩增加。 八、原理图: 九、程序: ;************************************************************************ ;说明:1、从印 ; ; 2、P1.0、P1.1、P1.2、P1.3 输出给控制电路 ; 3、步进电机为400步一圈,一步为0.9度。 ; 4、从键盘输入度数,通过程序:乘0A除09转化为步数。 ; 5、发脉冲的时间:未定 ;************************************************************************** ORG 0000H 0000 758160 MOV SP,#60H 0003 900205 MOV DPTR,#TAB 0006 7F00 MOV R7,#00H 0008 1201BB KKK: LCALL QL 000B 1200C8 LCALL XS 000E 120074 KK: LCALL JC0 0011 1201EE LCALL YS 0014 3001F7 JNB 01H,KK 0017 854140 MOV 40H,41H 001A 854241 MOV 41H,42H 001D 854342 MOV 42H,43H 0020 854743 MOV 43H,47H 0023 1200C8 LCALL XS 0026 854030 MOV 30H,40H 0029 854131 MOV 31H,41H 002C 854232 MOV 32H,42H 002F 854333 MOV 33H,43H 0032 E533 MOV A,33H ;******防止按下A,B,C,D、E,键,F键为确定启动键*** 0034 B40A03 CJNE A,#0AH,FZ1 0037 020008 LJMP KKK 003A B40B03 FZ1: CJNE A,#0BH,FZ2 003D 020008 LJMP KKK 0040 B40C03 FZ2: CJNE A,#0CH,FZ3 0043 020008 LJMP KKK 0046 B40D03 FZ3: CJNE A,#0DH,FZ4 0049 020008 LJMP KKK 004C B40E03 FZ4: CJNE A,#0EH,FZ5 004F 020008 LJMP KKK 0052 B40FB9 FZ5: CJNE A,#0FH,KK 0055 ;************************增加 0055 020063 LJMP FZ 0058 1200F2 FZW: LCALL FSMC 005B 1201EE LCALL YS 005E 1201EE LCALL YS 0061 80A5 SJMP KKK ;***********防止按下A,B,C,D键******** 0063 7832 FZ: MOV R0,#32H 0065 7E03 MOV R6,#03H 0067 E6 FZ6: MOV A,@R0 0068 B40006 CJNE A,#00H,FZW0 006B 18 DEC R0 006C DEF9 DJNZ R6,FZ6 006E 020008 LJMP KKK 0071 020058 FZW0: LJMP FZW 0074 ;********键盘检测********* 0074 D201 JC0: SETB 01H 0076 7590F0 MOV P1,#0F0H 0079 75B0CF MOV P3,#0CFH 007C 75B0FB MOV P3,#0FBH 007F E590 MOV A,P1 0081 F546 MOV 46H,A 0083 B4F006 CJNE A,#0F0H,KK1 0086 C201 FH: CLR 01H 0088 75B0FF MOV P3,#0FFH 008B 22 RET 008C 1201DB KK1: LCALL YS1 008F 7590F0 MOV P1,#0F0H 0092 75B0CF MOV P3,#0CFH 0095 75B0FB MOV P3,#0FBH 0098 E590 MOV A,P1 009A B546E9 CJNE A,46H,FH 009D 75900F MOV P1,#0FH 00A0 75B0CF MOV P3,#0CFH 00A3 75B0FB MOV P3,#0FBH 00A6 E590 MOV A,P1 00A8 4546 ORL A,46H 00AA F546 MOV 46H,A 00AC 7400 MOV A,#00H 00AE C0E0 KK4: PUSH ACC 00B0 93 MOVC A,@A+DPTR 00B1 B54608 CJNE A,46H,KK3 00B4 D0E0 POP ACC 00B6 F547 KK6: MOV 47H,A 00B8 75B0FF MOV P3,#0FFH 00BB 22 RET 00BC B4FF04 KK3: CJNE A,#0FFH,KK5 00BF D0E0 POP ACC 00C1 80C3 SJMP FH 00C3 D0E0 KK5: POP ACC 00C5 04 INC A 00C6 80E6 SJMP KK4 ;******显示程序*********** 00C8 75B0EF XS: MOV P3,#0EFH 00CB E540 MOV A,40H 00CD 44E0 ORL A,#0E0H 00CF 1200EB LCALL XS1 00D2 E541 MOV A,41H 00D4 44D0 ORL A,#0D0H 00D6 1200EB LCALL XS1 00D9 E542 MOV A,42H 00DB 44B0 ORL A,#0B0H 00DD 1200EB LCALL XS1 00E0 E543 MOV A,43H 00E2 4470 ORL A,#70H 00E4 1200EB LCALL XS1 00E7 75B0FF MOV P3,#0FFH 00EA 22 RET 00EB F590 XS1: MOV P1,A 00ED 44F0 ORL A,#0F0H 00EF F590 MOV P1,A 00F1 22 RET ;********发送脉冲************ 00F2 C083 FSMC: PUSH DPH 00F4 C082 PUSH DPL 00F6 900216 MOV DPTR,#TAB1 Error---symbol is not defined! 00F9 12FFFF LCALL TZBS;调整步数 00FC 755000 MOV 50H,#00H 00FF 755100 MOV 51H,#00H Error---illegal operand! MM0: LCALL MCXW ;发脉冲 Error---illegal operand! LCALL YS0 ; 0102 E550 MOV A,50H 0104 C3 CLR C 0105 2401 ADD A,#01H 0107 F550 MOV 50H,A 0109 5006 JNC MM1 010B E551 MOV A,51H 010D 2401 ADD A,#01H 010F F551 MOV 51H,A 0111 E550 MM1: MOV A,50H Error---symbol is not defined! 0113 B53FFF CJNE A,3FH,MM0 0116 E551 MOV A,51H Error---symbol is not defined! 0118 B53CFF CJNE A,3CH,MM0 011B 759000 MOV P1,#00H 011E 75B0FF MOV P3,#0FFH 0121 D082 POP DPL 0123 D083 POP DPH 0125 22 RET ;************脉冲相位确定********** A-AB-B-BC-C-CD-D-DA-A 0126 75B0D7 MCXW: MOV P3,#0D7H;确定脉冲相位 0129 BF0802 CJNE R7,#08H,LL0 012C 7F00 MOV R7,#00H 012E EF LL0: MOV A,R7 012F 93 MOVC A,@A+DPTR 0130 F590 MOV P1,A 0132 0F INC R7 0133 22 RET ;*********步数调整************ ;调整步数,将度数转换为步数 0134 E530 TZBS: MOV A,30H;;;变为16进制数 0136 75F00A MOV B,#0AH;;;放在34H,35H中 0139 A4 MUL AB 013A 2531 ADD A,31H 013C F534 MOV 34H,A 013E 540F ANL A,#0FH 0140 75F00A MOV B,#0AH 0143 A4 MUL AB 0144 2532 ADD A,32H 0146 F535 MOV 35H,A;; 0148 E534 MOV A,34H 014A 54F0 ANL A,#0F0H 014C C4 SWAP A 014D 75F00A MOV B,#0AH 0150 A4 MUL AB 0151 F534 MOV 34H,A 0153 E535 MOV A,35H 0155 54F0 ANL A,#0F0H 0157 C4 SWAP A 0158 2534 ADD A,34H 015A F534 MOV 34H,A 015C 540F ANL A,#0FH 015E C4 SWAP A 015F F536 MOV 36H,A 0161 E535 MOV A,35H 0163 540F ANL A,#0FH 0165 2536 ADD A,36H 0167 F535 MOV 35H,A 0169 E534 MOV A,34H 016B 54F0 ANL A,#0F0H 016D C4 SWAP A 016E F534 MOV 34H,A ;********************** 0170 E535 MOV A,35H;;;将16进制数乘以#0AH 0172 75F00A MOV B,#0AH;;;低8位放在38H中 0175 A4 MUL AB;;;;高8位放在37H中 0176 F538 MOV 38H,A 0178 85F037 MOV 37H,B 017B E534 MOV A,34H 017D 75F00A MOV B,#0AH 0180 A4 MUL AB 0181 2537 ADD A,37H 0183 F537 MOV 37H,A ;************************ 0185 E537 MOV A,37H;;;将16进制数除以#09H 0187 75F009 MOV B,#09H;;;低8位放在3fH中 018A 84 DIV AB;;;;高4位放在3CH中 018B F53C MOV 3CH,A 018D E5F0 MOV A,B 018F C4 SWAP A 0190 F539 MOV 39H,A 0192 E538 MOV A,38H 0194 54F0 ANL A,#0F0H 0196 C4 SWAP A 0197 2539 ADD A,39H 0199 75F009 MOV B,#09H 019C 84 DIV AB 019D F53D MOV 3DH,A 019F E5F0 MOV A,B 01A1 C4 SWAP A 01A2 F53A MOV 3AH,A 01A4 E538 MOV A,38H 01A6 540F ANL A,#0FH 01A8 253A ADD A,3AH 01AA 75F009 MOV B,#09H 01AD 84 DIV AB 01AE F53E MOV 3EH,A 01B0 85F03B MOV 3BH,B 01B3 E53D MOV A,3DH 01B5 C4 SWAP A 01B6 253E ADD A,3EH 01B8 F53F MOV 3FH,A 01BA 22 RET ;**********清零******************** 01BB C201 QL: CLR 01H 01BD 7830 MOV R0,#30H;清零30~~5F单元 01BF 7A30 MOV R2,#30H 01C1 7400 MOV A,#00H 01C3 F6 EE0: MOV @R0,A 01C4 08 INC R0 01C5 DAFC DJNZ R2,EE0 01C7 22 RET ;*********延时*********** 01C8 758901 YS0: MOV TMOD,#01H 01CB 758CEE MOV TH0,#0EEH 01CE 758A00 MOV TL0,#00H 01D1 D28C SETB TR0 01D3 308DFD JNB TF0,$ 01D6 C28C CLR TR0 01D8 C28D CLR TF0 01DA 22 RET 01DB 758901 YS1: MOV TMOD,#01H 01DE 758C4C MOV TH0,#4CH 01E1 758A00 MOV TL0,#00H 01E4 D28C SETB TR0 01E6 308DFD JNB TF0,$ 01E9 C28D CLR TF0 01EB C28C CLR TR0 01ED 22 RET 01EE 7C03 YS: MOV R4,#03H 01F0 758901 VV0: MOV TMOD,#01H 01F3 758C4C MOV TH0,#4CH 01F6 758A00 MOV TL0,#00H 01F9 D28C SETB TR0 01FB 308DFD JNB TF0,$ 01FE C28D CLR TF0 0200 C28C CLR TR0 0202 DCEC DJNZ R4,VV0 0204 22 RET ;键盘表格 0205 EEDEBE7E TAB: DB 0EEH,0DEH,0BEH,7EH 0209 EDDDBD7D DB 0EDH,0DDH,0BDH,7DH 020D EBDBBB7B DB 0EBH,0DBH,0BBH,7BH 0211 E7D7B777FF DB 0E7H,0D7H,0B7H,77H,0FFH ;脉冲表格 0216 01030206 TAB1: DB 01H,03H,02H,06H 021A 040C0809 DB 04H,0CH,08H,09H END 18 无线发射和接收的通信系统 一、设计任务:使用PTR2000模块设计制做一个无线发射和接收数据的无线通信系统。 二、设计要求:用2个按键,一个为发射控制按键,一个为接收控制按键, 同时可以显示发射和接收数据 三、仪器、仪表:仿真机、万用表、单片机。 四、元件清单: 单面印制版 2块 89C51 2片 74LS04 2片 按键 2个 电阻: 10K×4 3K×1 电容: 30P×2 10μF×1 74LS573:2个 连结器:若干 五、评分标准: 基本要求60分 硬件设计 20   软件设计 20   安装调试 20  报告40分 叙述原理 10   参考程序和硬件图 20   总结 10   六、完成时间:两周 七、原理: 为了实现两个单片机之间的数据的传输,我们利用单片机的串行通信端口(P3.0与P3.1)和无线通信模块来完成这个课题, 再用LED进行显示处理,使我们能直观的看到数据的传送。 1、主要芯片的功能介绍如下: ㈠PTR2000系列无线MODEM ①产品特性: 1.它是一款超小型、超低功耗、高速率19.2K无线收发器,它具有接收发射合一; 2.工作频率为国际通用的数据传送频段433MHZ; 3.FSK调制,抗干扰能力强,特别适合工业控制场合; 4.采用DDS+PLL频率稳定性极好; 5.灵敏度高,达到-105DBM; 6.最大发射功率+10DBM; 7.低工作电压(2.7V),功耗小,接收待机状态仅为3uA。; 8.具有两个频道,特别满足需要多通道工作的特殊场合; 9.工作速率最高可达20Kbit/s(也可以在较低速率下工作如9600bps; 10.超小体积约40mm*27mm*5mm; 11.可直接接CPU串口使用8031,也可以接计算机RS232接口,软件编程非常方便; 12.标准DIP引脚间距,更适合嵌入式设备。 ②引脚说明: pin1: VCC,正电源,接2.7--5.25V; pin2: CS,频道选择,CS=0选择工作频道1即433.92MHZ,CS=1选择工作频道2即434.33MHZ; pin3: DO,数据输出; pin4: DI,数据输入; pin5: GND,电源地; pin6: PWR,节能控制,PWR=1正常工作状态,PWR=0待机微功耗状态; pin7: TXEN,发射接受控制,TXEN=1时模块为发射状态,TXEN=0时模块为接收状态。 ㈡74LS573芯片 八D锁存器(三态)。当它的引脚G端为高电平,/OE为低电平时,选通74LS573芯片;当G=0时,截止。 2、主要的工作原理 ①接收端: 1.首先是呼叫程序接收端处于接收状态,等到发送端发送数X时,它接收并校验数X 如果正确就发正确信号并转到接受数据的状态,如果是错误的信号就发送错误信号并转到原始的呼叫状态。 2.而后是接收数据的状态,在接收到正确的呼叫信号以后开始接收数据,是单纯的接收数据接收一个接马上等待接收下一个,中间并没有处理数据。等接收完数据以后,开始累加和而后等待发送端发送过来的和并进行校验。如果正确就进行下一步,如果不正确就回到接收数据的状态。 3.最后是显示,如果和校验正确了以后,就接收到的数据显示出来。 ②发送端: 1.首先是在接收端已经做好准备了以后,开始发送呼叫信号,而后马上进入等待接收呼叫是否成功 的信号。如果信号正确那就转入发送数据的状态;如果信号不正确就重新返回到呼叫状态。 2.而后是发送数据的状态,在接收到正确的发送信号以后开始发送数据,只是单纯的发送数据,中间和接收一样中间没有处理数据。等待发送完毕开始计算发送数据的累加和,而后就发送和,后转入接收和是否正确的信号。如果正确就进行下一步,如果不正确就回到发送数据的状态。 3.最后和接收一样同样是把发送的数据进行显示。 八、原理图:  九、程序框图: 十、程序: ORG 0000H 0000 020050 LJMP MAIN ORG 0050H 0050 758170 MAIN: MOV SP,#70H 0053 D2B4 START: SETB P3.4 0055 00 NOP 0056 753FFF MOV 3FH,#0FFH 0059 00 J0: NOP 005A 20B4FD JB P3.4,$ 005D 1202AD LCALL YS 0060 20B4F6 JB P3.4,J0 0063 30B4FD JNB P3.4,$ 0066 053F INC 3FH 0068 7540FF J4: MOV 40H,#0FFH 006B 7541FF J3: MOV 41H,#0FFH 006E 20B40D J2: JB P3.4,J1 0071 1202AD LCALL YS 0074 20B407 JB P3.4,J1 0077 30B4FD JNB P3.4,$ 007A 053F INC 3FH 007C 80EA SJMP J4 007E 00 J1: NOP 007F 00 NOP 0080 00 NOP 0081 00 NOP 0082 00 NOP 0083 00 NOP 0084 00 NOP 0085 D541E6 DJNZ 41H,J2 0088 D540E0 DJNZ 40H,J3 008B E53F MOV A,3FH 008D B40015 CJNE A,#00H,B1 0090 753000 MOV 30H,#00H ;0TD 0093 120280 LCALL DYCJ 0096 00 NOP 0097 1202BC LCALL CHANGE 009A 00 NOP 009B 1201F9 LCALL FS 009E 00 NOP 009F 1202C5 LCALL YS1 00A2 020053 LJMP START 00A5 E53F B1: MOV A,3FH 00A7 B40115 CJNE A,#01H,B2 ;1TD 00AA 753002 MOV 30H,#02H 00AD 120280 LCALL DYCJ 00B0 00 NOP 00B1 1202BC LCALL CHANGE 00B4 00 NOP 00B5 1201F9 LCALL FS 00B8 00 NOP 00B9 1202C5 LCALL YS1 00BC 020053 LJMP START 00BF E53F B2: MOV A,3FH 00C1 B40215 CJNE A,#02H,B3 ;2TD 00C4 753004 MOV 30H,#04H 00C7 120280 LCALL DYCJ 00CA 00 NOP 00CB 1202BC LCALL CHANGE 00CE 00 NOP 00CF 1201F9 LCALL FS 00D2 00 NOP 00D3 1202C5 LCALL YS1 00D6 020053 LJMP START 00D9 E53F B3: MOV A,3FH 00DB B40315 CJNE A,#03H,B4 ;3TD 00DE 753006 MOV 30H,#06H 00E1 120280 LCALL DYCJ 00E4 00 NOP 00E5 1202BC LCALL CHANGE 00E8 00 NOP 00E9 1201F9 LCALL FS 00EC 00 NOP 00ED 1202C5 LCALL YS1 00F0 020053 LJMP START 00F3 E53F B4: MOV A,3FH 00F5 B40415 CJNE A,#04H,B5 ;4TD 00F8 753008 MOV 30H,#08H 00FB 120280 LCALL DYCJ 00FE 00 NOP 00FF 1202BC LCALL CHANGE 0102 00 NOP 0103 1201F9 LCALL FS 0106 00 NOP 0107 1202C5 LCALL YS1 010A 020053 LJMP START 010D E53F B5: MOV A,3FH 010F B40515 CJNE A,#05H,B6 ;5TD 0112 75300A MOV 30H,#0AH 0115 120280 LCALL DYCJ 0118 00 NOP 0119 1202BC LCALL CHANGE 011C 00 NOP 011D 1201F9 LCALL FS 0120 00 NOP 0121 1202C5 LCALL YS1 0124 020053 LJMP START 0127 E53F B6: MOV A,3FH 0129 B40615 CJNE A,#06H,B7 ;6TD 012C 75300C MOV 30H,#0CH 012F 120280 LCALL DYCJ 0132 00 NOP 0133 1202BC LCALL CHANGE 0136 00 NOP 0137 1201F9 LCALL FS 013A 00 NOP 013B 1202C5 LCALL YS1 013E 020053 LJMP START 0141 E53F B7: MOV A,3FH 0143 B40715 CJNE A,#07H,B8 ;7TD 0146 75300E MOV 30H,#0EH 0149 120280 LCALL DYCJ 014C 00 NOP 014D 1202BC LCALL CHANGE 0150 00 NOP 0151 1201F9 LCALL FS 0154 00 NOP 0155 1202C5 LCALL YS1 0158 020053 B9: LJMP START 015B E53F B8: MOV A,3FH ;八通道循环 015D B408F8 CJNE A,#08H,B9 0160 00 HH: NOP 0161 753000 MOV 30H,#00H 0164 120280 LCALL DYCJ 0167 00 NOP 0168 1202BC LCALL CHANGE 016B 00 NOP 016C 1201F9 LCALL FS 016F 1202C5 LCALL YS1 0172 00 NOP 0173 753002 MOV 30H,#02H 0176 120280 LCALL DYCJ 0179 00 NOP 017A 1202BC LCALL CHANGE 017D 00 NOP 017E 1201F9 LCALL FS 0181 00 NOP 0182 1202C5 LCALL YS1 0185 00 NOP 0186 753004 MOV 30H,#04H 0189 120280 LCALL DYCJ 018C 00 NOP 018D 1202BC LCALL CHANGE 0190 00 NOP 0191 1201F9 LCALL FS 0194 1202C5 LCALL YS1 0197 00 NOP 0198 753006 MOV 30H,#06H 019B 120280 LCALL DYCJ 019E 00 NOP 019F 1202BC LCALL CHANGE 01A2 00 NOP 01A3 1201F9 LCALL FS 01A6 00 NOP 01A7 1202C5 LCALL YS1 01AA 00 NOP 01AB 753008 MOV 30H,#08H 01AE 120280 LCALL DYCJ 01B1 00 NOP 01B2 1202BC LCALL CHANGE 01B5 00 NOP 01B6 1201F9 LCALL FS 01B9 1202C5 LCALL YS1 01BC 00 NOP 01BD 75300A MOV 30H,#0AH 01C0 120280 LCALL DYCJ 01C3 00 NOP 01C4 1202BC LCALL CHANGE 01C7 00 NOP 01C8 1201F9 LCALL FS 01CB 00 NOP 01CC 1202C5 LCALL YS1 01CF 00 NOP 01D0 75300C MOV 30H,#0CH 01D3 120280 LCALL DYCJ 01D6 00 NOP 01D7 1202BC LCALL CHANGE 01DA 00 NOP 01DB 1201F9 LCALL FS 01DE 1202C5 LCALL YS1 01E1 00 NOP 01E2 75300E MOV 30H,#0EH 01E5 120280 LCALL DYCJ 01E8 00 NOP 01E9 1202BC LCALL CHANGE 01EC 00 NOP 01ED 1201F9 LCALL FS 01F0 00 NOP 01F1 1202C5 LCALL YS1 01F4 020160 LJMP HH 01F7 80FE SJMP $ ;&&&&&&&&&&&&&&&&&&&&&&& 01F9 00 FS: NOP 01FA 758920 MOV TMOD,#20H 01FD 758DFD MOV TH1,#0FDH 0200 758BFD MOV TL1,#0FDH 0203 D28E SETB TR1 0205 D2B2 SETB P3.2 0207 D2B5 A2: SETB P3.5 0209 D294 SETB P1.4 020B D295 SETB P1.5 020D 00 NOP 020E 00 NOP 020F C2B5 CLR P3.5 0211 1202AD LCALL YS 0214 7830 MOV R0,#30H 0216 7C02 MOV R4,#02H 0218 758700 MOV PCON,#00H 021B 759840 AZ: MOV SCON,#40H 021E E6 MOV A,@R0 ;(开始发送 ) 021F F599 MOV SBUF,A 0221 3099FD JNB TI,$ 0224 C299 CLR TI 0226 08 INC R0 0227 20B409 JB P3.4,TG 022A 1202AD LCALL YS 022D 20B403 JB P3.4,TG 0230 020053 LJMP START 0233 DCE6 TG: DJNZ R4,AZ 0235 2530 ADD A,30H 0237 F532 MOV 32H,A 0239 C295 CLR P1.5 023B C294 CLR P1.4 023D D2B5 SETB P3.5 023F 00 NOP 0240 00 NOP 0241 C2B5 CLR P3.5 0243 1202AD LCALL YS 0246 759850 MOV SCON,#50H 0249 3098FD JNB RI,$ 024C C298 CLR RI 024E E599 MOV A,SBUF 0250 B53221 CJNE A,32H,A1 0253 D295 SETB P1.5 0255 D2B5 SETB P3.5 0257 00 NOP 0258 00 NOP 0259 C2B5 CLR P3.5 025B 1202AD LCALL YS 025E 74AA MOV A,#0AAH 0260 F599 MOV SBUF,A 0262 3099FD JNB TI,$ 0265 C299 CLR TI 0267 1202AD LCALL YS 026A D2B5 SETB P3.5 026C D294 SETB P1.4 026E 00 NOP 026F 00 NOP 0270 C2B5 CLR P3.5 0272 8008 SJMP A3 0274 1202AD A1: LCALL YS 0277 1202AD LCALL YS 027A 808B SJMP A2 027C 1202AD A3: LCALL YS 027F 22 FH: RET ;############################# 0280 00 DYCJ: NOP 0281 D2B2 SETB P3.2 0283 D2B3 SETB P3.3 0285 C2B5 CLR P3.5 0287 E530 MOV A,30H 0289 F590 MOV P1,A 028B 00 NOP 028C D2B5 SETB P3.5 028E 00 NOP 028F 00 NOP 0290 C2B5 CLR P3.5 0292 C2B2 CLR P3.2 0294 20B3FD JB P3.3,$ 0297 7590FF MOV P1,#0FFH 029A E590 MOV A,P1 029C F531 MOV 31H,A 029E D2B2 SETB P3.2 02A0 D290 SETB P1.0 02A2 D2B3 SETB P3.3 02A4 D294 SETB P1.4 02A6 D2B5 SETB P3.5 02A8 00 NOP 02A9 00 NOP 02AA C2B5 CLR P3.5 02AC 22 RET ;++++++++++++++++++++++++++= 02AD 752033 YS: MOV 20H,#33H 02B0 752144 YY1: MOV 21H,#44H 02B3 00 YY0: NOP 02B4 00 NOP 02B5 D521FB DJNZ 21H,YY0 02B8 D520F5 DJNZ 20H,YY1 02BB 22 RET ;<<<<<<<<<<<<<<<<<<<<<<<<<<<< 02BC E530 CHANGE: MOV A,30H 02BE 75F002 MOV B,#02H 02C1 84 DIV AB 02C2 F530 MOV 30H,A 02C4 22 RET ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 02C5 758901 YS1: MOV TMOD,#01H 02C8 7D20 MOV R5,#20H 02CA 758C4C DD0: MOV TH0,#4CH 02CD 758A00 MOV TL0,#00H 02D0 D28C SETB TR0 02D2 308DFD JNB TF0,$ 02D5 C28C CLR TR0 02D7 C28D CLR TF0 02D9 DDEF DJNZ R5,DD0 02DB 22 RET END 19 液晶显示模块应用系统 设计任务:设计完成一个液晶显示系统。 设计要求:能够在液晶显示块上显示文字、图形、符号等。完成以左移、右移、上移、下移的方式循环显示任意长度的文字。 仪器、仪表:单片机、仿真机、万用表等。 元件清单: 液晶显示块 1块 按钮 3个 电阻10K 2个 电容22uF 1个 5.1K 3个 完成时间:一周 六、评分标准:  项目 满分  基本要求 完成汉字字模的提取  10   完成在液晶显示模块上显示相应的内容  15   完成以上、下、左、右等方式移动  25   完成循环移动  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理: 本系统以单片机为核心,辅以12864液晶显示模块电路,构成了基于汉字库应用技术的点阵型液晶显示器。硬件结构简单,其功能主要由单片机来完成。并根据人眼的滞留时间不超过20ms,利用定时记数器T0定时控制。能够循环显示要显示的内容。 GXM—12864的电路结构特点 GXM—12864是使用HD61202作为列驱动器,同时使用HD61203作为行驱动器的液晶模块。由于HD61203不与MPU发生联系,只要提供电源就能产生行驱动信号和各种同步信号,结构比较简单。GXM—12864共有两片HD61202和一片HD61203。其显示区分为两部分(左区和右区)。因此,在写入程序时要先判断在哪个区,所写的数据是否超出当前所在区的地址范围。 GXM—12864一共有64行,128列。GXM—12864的内部结构电路如下图: 。HD61202的时序  HD61202具有能与微处理器直接接口的时序。各种信号波形对照如上图所示: 读写数据指令每执行完一次读 写操作,列地址就自动加一。必须注意的是,进行读操作之前, 必须有一次空读操作,紧接着再读才会读出所要读的单元中的数据。 程序原理图设计: HD61202共有20个引脚。/CSA,/CSB分别为 芯片片选端低电平有效。E为读写使能端其在下降沿时,数据被锁存即写入HD61202;高电平期间,数据被读出。R/W为读写选择信号端,当R/W=1时为读选通,当R/W=0时为写选通。D/I为数据,指令选择信号端,当D/I=1时为数据操作,D/I=0时为写指令或读状态。RST为复位端。DB0~DB7为数据总线。 GXM—12864液晶显示的明暗度是可调节的,主要是通过调节连接在LEDK,VEE.V0上的电位器连入电路的电阻就可以了。另外还有电源和接地端。其和单片机的连接如下图所示:  九、系统流程图: 本系统采用模块化设计。GXM—12864共64行,分为8页每页又包含8行,在编程过程当中汉字采用16*16的点阵符,英文采用8*8点阵。因此,每个汉字占2页用寄存器R0设置其值。本程序先给程序初始化再清显示RAM区,为了使程序结构简单化,在汉字库对输入的汉字生成的点阵ASM数据前添加三个数据,其分别为显示起始页 显示起始列 所写入的汉字的长度。用查表指针取得相应的数据,并把它放在寄存器中保存起来。为了便于区别还设置了一个当前的列寄存器,以实现字符的左移,右移。设置了一个行寄存器,通过加减其值实现上下移动。 本程序通过查表取得相应字符的点阵ASM数据,并根据这个数据确定查表指针应该指向哪个表确定表的地址。从显示起始列寄存器取得起始列的值,由这个值判断它在哪个区,如果它小于#40H则在左区,如果它大于#40H小于80H则在右区,大于80H则转为左区。通过定时器定时,控制字符移动的速度。由于GXM—12864共128列,64行,所以显示区一次一行只能写8个汉字。在给每个区写数据和指令代码时,首先要判断状态字的标志位是否“忙”。如果不忙则继续写指令代码或显示数据,反之,则继续读状态字。为了避免出现从复,还设置了完成标志位,通过判断标志位是否为“0”来确定其是否已经写完了。其具体流程图如下: 主程序流程图: (2) N Y N Y N Y (1) (1) N Y (2) (4) Y (2) N Y N (3) (3) Y 十、程序如下: ORG 0000H COM EQU 20H COLUMN EQU 21H MODLE EQU 22H DAT EQU 23H COLADD EQU 24H START_LINE EQU 25H COUNT EQU R5 CWADD2 EQU 0800H CRADD2 EQU 0A00H DWADD2 EQU 0900H DRADD2 EQU 0B00H CWADD3 EQU 0400H CRADD3 EQU 0600H DWADD3 EQU 0500H DRADD3 EQU 0700H DRADD2 EQU 0B00H ;/////////////////////主程序 MAIN:MOV SP,#40H LCALL INT ;///////////调初始化子程序 LCALL CLEAR ;///////////调清显示RAM区子程序 MOV COLADD,#0 OOO0: MOV DPTR,#CHAR LCALL ZHONGWEN MOV DPTR,#TABLE LCALL DISPLAY DEC COLADD MOV 27H,#20 LCALL AAL SJMP OOO0 ;/////////////////// MOVE_R:INC COLADD MOV DPTR,#CHAR LCALL ZHONGWEN MOV DPTR,#TABLE LCALL DISPLAY MOV 27H,#100 LCALL AAL DJNZ R1,MOVE_R RET MOVE_L:DEC COLADD MOV DPTR,#CHAR LCALL ZHONGWEN MOV DPTR,#TABLE LCALL DISPLAY MOV 27H,#100 LCALL AAL DJNZ R1,MOVE_L RET MOVE_UP:INC START_LINE MOV A,START_LINE MOV COM,A LCALL LI LCALL RIT MOV 27H,#250 LCALL AAL MOV A,START_LINE CJNE A,#0FFH,HH HH: JC MOVE_UP RET MOVE_DOWN:DEC START_LINE MOV A,START_LINE MOV COM,A LCALL LI LCALL RIT MOV 27H,#250 LCALL AAL MOV A,START_LINE CJNE A,#0C0H,HHF HHF: JNC MOVE_DOWN RET ;///////////////////// MOVE_WEN:DEC COLADD MOV 27H,#50 LCALL INT LCALL AAL MOV DPTR,#CHAR LCALL ZHONGWEN DJNZ R1,MOVE_WEN RET ;/////////////////////WEST_ DISPLAY DISPLAY1:INC DPTR DISPLAY:CLR A;WRITE_PAGE MOVC A,@A+DPTR ORL A,#0B8H MOV COM,A LCALL LI LCALL RIT ;////////////////////////////写起始页 CLR A;FIND_COLUMN & INC DPTR MOVC A,@A+DPTR ADD A,COLADD MOV COLUMN,A ;///////////////////////////写起始列 CLR A;FIND_MODLE INC DPTR MOVC A,@A+DPTR MOV MODLE,A ;//////////////////////////写字符总长 QQ:MOV COUNT,MODLE CLR A INC DPTR MOVC A,@A+DPTR CJNE A,#0FFH,PART1 PART1:JNC GIVE_UP CJNE A,#0FEH,PART2 PART2:JNC DISPLAY1;NEXT LINE NEXT:MOV B,MODLE PUSH DPL PUSH DPH MOV DPTR,#TAB MUL AB ADD A,DPL;//////////字符字模块首地址 MOV DPL,A MOV A,B ADDC A,DPH MOV DPH,A UU: CLR A MOVC A,@A+DPTR MOV DAT,A MOV A,COLUMN;/////////判断列地址是否超出区域范围 CJNE A,#40H,AA AA:JNC BB ;/////////未超出则继续 ORL A,#40H MOV COM,A LCALL LI LCALL LD SJMP KK BB:MOV A,COLUMN;////////超出则判在何区域 CJNE A,#80H,CC CC:JNC KK CLR C SUBB A,#40H ORL A,#40H MOV COM,A LCALL RIT LCALL RD KK:INC COLUMN INC DPTR DJNZ COUNT,UU POP DPH POP DPL SJMP QQ GIVE_UPL:POP DPH POP DPL GIVE_UP:RET ;//////////////////////////////CHARACTER DISPLAY ZHONGWEN:MOV R0,#2 ;/////////字的高度 CLR PSW.5 XXL: PUSH DPL PUSH DPH PUSH DPL PUSH DPH XX: POP DPH POP DPL CLR A MOVC A,@A+DPTR JNB PSW.5,ZZ ;/////////判完成标志位是否为“1” DEC A ZZ: ORL A,#0B8H MOV COM,A LCALL LI LCALL RIT INC DPTR CLR A MOVC A,@A+DPTR ADD A,COLADD MOV COLUMN,A INC DPTR CLR A MOVC A,@A+DPTR MOV R7,A ;/////////总字符长 JB PSW.5,AGAINE SJMP AGAIN AGAINE:INC DPTR AGAIN:CLR A INC DPTR MOVC A,@A+DPTR MOV DAT,A MOV A,COLUMN ;///////判列地址是否超出区域范围 CJNE A,#40H,D1 D1: JNC D2 ORL A,#40H ;//////未超出则继续 MOV COM,A LCALL LI LCALL LD SJMP OLE D2: CJNE A,#80H,D3 ;/////超出则判在何区域 D3: JNC OLE CLR C SUBB A,#40H ORL A,#40H MOV COM,A LCALL RIT LCALL RD OLE: INC COLUMN DJNZ R7,AGAINE SETB PSW.5 ;/////设置完成标志位 DJNZ R0,XX INC DPTR CLR A MOVC A,@A+DPTR CJNE A,#0FFH,W1 W1: JNC WANGLE INC DPTR MOV R0,#2 CLR PSW.5 SJMP XXL WANGLE:RET ;/////////////////////////;LEFT_INSTRUTION & DATA LI: PUSH DPL ;/////////片选左区 PUSH DPH MOV DPTR,#CRADD3 ;/////////设置读状态字地址 LII:MOVX A,@DPTR ;/////////读状态字 JB ACC.7,LII ;//////////判“忙”标志为“0”否,否再读 MOV DPTR,#CWADD3 ;//////////设置写指令代码地址 MOV A,COM ;//////////取指令代码 MOVX @DPTR,A ;///////////写指令代码 POP DPH POP DPL RET LD: PUSH DPL ;/////////片选左区 PUSH DPH MOV DPTR,#CRADD3 ;/////////设置读状态字地址 LDD:MOVX A,@DPTR ;/////////读状态字 JB ACC.7,LDD ;//////////判“忙”标志为“0”否,否再读 MOV DPTR,#DWADD3 ;//////////设置写显示数据地址 MOV A,DAT ;//////// 取数据 MOVX @DPTR,A ;//////////写数据 POP DPH POP DPL RET ;///////////////////////RIGHT_INSTRUTION & DATA RIT: PUSH DPL ;/////////片选右区 PUSH DPH MOV DPTR,#CRADD2 ;/////////设置读状态字地址 RII:MOVX A,@DPTR ;/////////读状态字 JB ACC.7,RII ;//////////判“忙”标志为“0”否,否再读 MOV DPTR,#CWADD2 ;//////////设置写指令代码地址 MOV A,COM ;//////////取指令代码 MOVX @DPTR,A ;///////////写指令代码 POP DPH POP DPL RET RD: PUSH DPL ;/////////片选右区 PUSH DPH MOV DPTR,#CRADD2 ;/////////设置读状态字地址 RDD:MOVX A,@DPTR ;/////////读状态字 JB ACC.7,RDD ;//////////判“忙”标志为“0”否,否再读 MOV DPTR,#DWADD2 ;//////////设置写显示数据地址 MOV A,DAT ;//////// 取数据 MOVX @DPTR,A ;//////////写数据 POP DPH POP DPL RET ;/////////////////////////ON_TIME AAL: MOV TH0,#0DCH MOV TL0,#0 SETB TR0 CLR TF0 JNB TF0,$ DJNZ 27H,AAL CLR TR0 CLR TF0 RET ;///////////////////////初始化程序 INT:MOV COM,#0C0H ;/////////////设置显示起始行 MOV START_LINE,COM LCALL LI LCALL RIT MOV COM,#3FH ;////////////开显示设置 LCALL LI LCALL RIT RET ;//////////////////////清显示RAM区程序 CLEAR:MOV R4,#00H ;/////////////////页面地址暂存器设置 CLEAR1:MOV A,R4 ORL A,#0B8H MOV COM,A ;////////////////页面地址设置 LCALL LI LCALL RIT MOV COM,#40H ;///////////////列地址设置为“0” LCALL LI LCALL RIT MOV R3,#40H ;///////////////一页清64各字节 ;///////////////////// CLEAR2:MOV DAT,#00H ;////////////////显示数据为“0” LCALL LD LCALL RD DJNZ R3,CLEAR2 ;///////////////页内字节清零循环 INC R4 CJNE R4,#08H,CLEAR1 ;/////////RAM区清零循环 RET ;////////////////////////////////// TABLE:DB 7,0,8,37H,25H,2CH,23H,2FH,2DH,25H,00H;PAGE,COLUMN_START,MODLE,DATA DB 34H,2FH,00H,2FH,35H,32H,00H,33H,23H DB 28H,2FH,2FH,2CH,01H,0FFH ;///////////////////////////////////////////////// TAB:DB 000H,000H,000H,000H,000H,000H,000H,000H;空格=00H DB 000H,000H,000H,04FH,000H,000H,000H,000H; ! =01H DB 000H,000H,007H,000H,007H,000H,000H,000H; " =02H DB 000H,014H,07FH,014H,07FH,014H,000H,000H; # =03H DB 000H,024H,02AH,07FH,02AH,012H,000H,000H; $ =04H DB 000H,023H,013H,008H,064H,062H,000H,000H; % =05H DB 000H,036H,049H,055H,022H,050H,000H,000H; & =06H DB 000H,000H,005H,003H,000H,000H,000H,000H; ' =07J DB 000H,000H,01CH,022H,041H,000H,000H,000H; ( =08H DB 000H,000H,041H,022H,01CH,000H,000H,000H; ) =09H DB 000H,014H,008H,03EH,008H,014H,000H,000H; * =0AH DB 000H,008H,008H,03EH,008H,008H,000H,000H; + =0BH DB 000H,000H,050H,030H,000H,000H,000H,000H; ; =0CH DB 000H,008H,008H,008H,008H,008H,000H,000H; - =0DH DB 000H,000H,060H,060H,000H,000H,000H,000H; . =0EH DB 000H,020H,010H,008H,004H,002H,000H,000H; / =0FH DB 000H,03EH,051H,049H,045H,03EH,000H,000H; 0 =10H DB 000H,000H,042H,07FH,040H,000H,000H,000H; 1 =11H DB 000H,042H,061H,051H,049H,046H,000H,000H; 2 =12H DB 000H,021H,041H,045H,04BH,031H,000H,000H; 3 =13H DB 000H,018H,014H,012H,07FH,010H,000H,000H; 4 =14H DB 000H,027H,045H,045H,045H,039H,000H,000H; 5 =15H DB 000H,03CH,04AH,049H,049H,030H,000H,000H; 6 =16H DB 000H,001H,001H,079H,005H,003H,000H,000H; 7 =17H DB 000H,036H,049H,049H,049H,036H,000H,000H; 8 =18H DB 000H,006H,049H,049H,029H,01EH,000H,000H; 9 =19H DB 000H,000H,036H,036H,000H,000H,000H,000H; : =1AH DB 000H,000H,056H,036H,000H,000H,000H,000H; ; =1BH DB 000H,008H,014H,022H,041H,000H,000H,000H; < =1CH DB 000H,014H,014H,014H,014H,014H,000H,000H; = =1DH DB 000H,000H,041H,022H,014H,008H,000H,000H; > =1EH DB 000H,002H,001H,051H,009H,006H,000H,000H; ? =1FH DB 000H,032H,049H,079H,041H,03EH,000H,000H; @ =20H DB 000H,07EH,011H,011H,011H,07EH,000H,000H; A =21H DB 000H,041H,07FH,049H,049H,036H,000H,000H; B =22H DB 000H,03EH,041H,041H,041H,022H,000H,000H; C =23H DB 000H,041H,07FH,041H,041H,03EH,000H,000H; D =24H DB 000H,07FH,049H,049H,049H,049H,000H,000H; E =25H DB 000H,07FH,009H,009H,009H,001H,000H,000H; F =26H DB 000H,03EH,041H,041H,049H,07AH,000H,000H; G =27H DB 000H,07FH,008H,008H,008H,07FH,000H,000H; H =28H DB 000H,000H,041H,07FH,041H,000H,000H,000H; I =29H DB 000H,020H,040H,041H,04FH,001H,000H,000H; J =2AH DB 000H,07FH,008H,014H,022H,041H,000H,000H; K =2BH DB 000H,07FH,040H,040H,040H,040H,000H,000H; L =2CH DB 000H,07FH,002H,00CH,002H,07FH,000H,000H; M =2DH DB 000H,07FH,006H,008H,030H,07FH,000H,000H; N =2EH DB 000H,03EH,041H,041H,041H,03EH,000H,000H; O =2FH DB 000H,07FH,009H,009H,009H,006H,000H,000H; P =30H DB 000H,03EH,041H,051H,021H,05EH,000H,000H; Q =31H DB 000H,07FH,009H,019H,029H,046H,000H,000H; R =32H DB 000H,026H,049H,049H,049H,032H,000H,000H; S =33H DB 000H,001H,001H,07FH,001H,001H,000H,000H; T =34H DB 000H,03FH,040H,040H,040H,03FH,000H,000H; U =35H DB 000H,01FH,020H,040H,020H,01FH,000H,000H; V =36H DB 000H,07FH,020H,018H,020H,07FH,000H,000H; W =37H DB 000H,063H,014H,008H,014H,063H,000H,000H; X =38H DB 000H,007H,008H,070H,008H,007H,000H,000H; Y =39H DB 000H,061H,051H,049H,045H,043H,000H,000H; Z =3AH DB 000H,000H,07FH,041H,041H,000H,000H,000H; [ =3BH DB 000H,002H,004H,008H,010H,020H,000H,000H; \ =3CH DB 000H,000H,041H,041H,07FH,000H,000H,000H; ] =3DH DB 000H,004H,002H,001H,002H,004H,000H,000H; ^ =3EH DB 000H,040H,040H,040H,040H,040H,000H,000H; _ =3FH DB 000H,001H,002H,004H,000H,000H,000H,000H; ` =40H DB 000H,020H,054H,054H,054H,078H,000H,000H; A =41H DB 000H,07FH,048H,044H,044H,038H,000H,000H; B =42H DB 000H,038H,044H,044H,044H,028H,000H,000H; C =43H DB 000H,038H,044H,044H,048H,07FH,000H,000H; D =44H DB 000H,038H,054H,054H,054H,018H,000H,000H; E =45H DB 000H,000H,008H,07EH,009H,002H,000H,000H; F =46H DB 000H,00CH,052H,052H,04CH,03EH,000H,000H; G =47H DB 000H,07FH,008H,004H,004H,078H,000H,000H; H =48H DB 000H,000H,044H,07DH,040H,000H,000H,000H; I =49H DB 000H,020H,040H,044H,03DH,000H,000H,000H; J =4AH DB 000H,000H,07FH,010H,028H,044H,000H,000H; K =4BH DB 000H,000H,041H,07FH,040H,000H,000H,000H; L =4CH DB 000H,07CH,004H,078H,004H,078H,000H,000H; M =4DH DB 000H,07CH,008H,004H,004H,078H,000H,000H; N =4EH DB 000H,038H,044H,044H,044H,038H,000H,000H; O =4FH DB 000H,07EH,00CH,012H,022H,00CH,000H,000H; P =50H DB 000H,00CH,012H,012H,00CH,07EH,000H,000H; Q =51H DB 000H,07CH,008H,004H,004H,008H,000H,000H; R =52H DB 000H,058H,054H,054H,054H,064H,000H,000H; S =53H DB 000H,004H,03FH,044H,040H,020H,000H,000H; T =54H DB 000H,03CH,040H,040H,03CH,040H,000H,000H; U =55H DB 000H,01CH,020H,040H,020H,01CH,000H,000H; V =56H DB 000H,03CH,040H,030H,040H,03CH,000H,000H; W =57H DB 000H,044H,028H,010H,028H,044H,000H,000H; X =58H DB 000H,01CH,0A0H,0A0H,090H,07CH,000H,000H; Y =59H DB 000H,044H,064H,054H,04CH,044H,000H,000H; Z =5AH DB 000H,000H,008H,036H,041H,000H,000H,000H; { =5BH DB 000H,000H,000H,077H,000H,000H,000H,000H; | =5CH DB 000H,000H,041H,036H,008H,000H,000H,000H; } =5DH DB 000H,002H,001H,002H,004H,002H,000H,000H; ~ =5EH DB 000H,0FFH,0FFH,0FFH,0FFH,0FFH,000H,000H; 空格=60H ;///////////////////////////////////////////////// CHAR: DB 2,0,128 ;-- 热烈欢迎评审专家 -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 0C0H,044H,062H,0C4H,034H,044H,003H,0FFH,014H,024H,062H,004H,001H,014H,008H,0A4H DB 030H,07FH,060H,0C4H,001H,084H,008H,07CH,033H,084H,064H,000H,007H,000H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 008H,000H,088H,081H,074H,041H,004H,031H,002H,0CFH,011H,009H,060H,0C9H,000H,039H DB 000H,009H,010H,001H,060H,0FCH,00AH,000H,014H,000H,033H,0FFH,060H,000H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 020H,014H,010H,024H,04CH,044H,043H,084H,043H,064H,02CH,01CH,020H,020H,010H,018H DB 00CH,00FH,003H,0E8H,006H,008H,018H,008H,030H,028H,060H,018H,020H,008H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 040H,040H,020H,041H,01FH,0CEH,020H,004H,040H,000H,047H,0FCH,042H,004H,041H,002H DB 040H,002H,05FH,0FCH,040H,004H,042H,004H,044H,004H,043H,0FCH,040H,000H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 000H,040H,000H,042H,000H,04CH,07FH,0C4H,020H,000H,011H,004H,001H,014H,001H,064H DB 001H,004H,0FFH,0FCH,001H,004H,001H,044H,001H,034H,001H,024H,001H,004H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 000H,010H,000H,00CH,000H,004H,01FH,0E4H,009H,024H,009H,024H,009H,025H,0FFH,0FEH DB 009H,024H,009H,024H,009H,024H,01FH,0E4H,000H,004H,000H,00CH,000H,004H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 000H,020H,000H,020H,000H,024H,000H,024H,001H,0A4H,001H,064H,009H,03CH,011H,027H DB 029H,024H,045H,024H,003H,0A4H,001H,024H,000H,024H,000H,020H,000H,020H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=128x16, 调整后为: 128x16 DB 000H,000H,029H,018H,029H,004H,015H,014H,014H,094H,04AH,094H,089H,0D5H,044H,0B6H DB 03FH,014H,006H,014H,009H,094H,009H,004H,010H,014H,030H,00CH,010H,004H,000H,000H DB 0FEH ;/////////////////////////////////////////////////////////////////// DB 5,0,80;PAGE,COLUMN_START,TOTAL_COLUMN/2 ;-- 来校指导! -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16 DB 020H,000H,020H,080H,010H,084H,010H,084H,008H,094H,004H,0A4H,002H,0C4H,0FFH,0FFH DB 001H,084H,002H,0C4H,004H,0B4H,008H,094H,018H,084H,030H,084H,010H,080H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16 DB 002H,008H,001H,088H,000H,068H,0FFH,0FFH,000H,028H,040H,048H,042H,000H,021H,088H DB 026H,068H,018H,009H,018H,00EH,026H,008H,061H,0A8H,0C0H,048H,040H,088H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16 DB 002H,010H,042H,010H,081H,010H,07FH,0FFH,000H,090H,000H,050H,000H,000H,07FH,0BFH DB 044H,0A4H,044H,0A4H,044H,0A2H,044H,0A2H,044H,0A2H,07FH,0B8H,000H,000H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16 DB 002H,000H,002H,000H,002H,000H,002H,03EH,006H,04AH,03AH,04AH,012H,04AH,002H,04AH DB 042H,04AH,082H,04AH,07FH,0CAH,002H,04EH,002H,040H,002H,070H,002H,000H,000H,000H ;-- -- ** 宋体, 12 ** ; 当前所选字体下一个汉字对应的点阵为: 宽度x高度=80x16, 调整后为: 80x16 DB 000H,000H,000H,000H,000H,000H,05FH,0F0H,000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H,000H DB 0FFH END 十一、说明: 该系统每一行最多能显示8个汉字,若要显示超过8个字的字符串,可把该字符串分成若干行来显示,显示完第一行之后再仅接着显示第二行。同时,除了以上的四种显示方法外,还、可以按任意方法显示。 19 单片机控制的语音存储重放系统 一、设计任务:设计完成一个基于2590语音芯片的语音录放系统。。 二、设计要求:能够分6段分别录放、复位及显示。播放时能够选择其中任意一段,并在LED上显示其段数。 三、?仪器、仪表:单片机,万用表,仿真机等。 四、元件清单:电阻:1K 10个 电容: 0.01uF 4 5.1K 7 个 0.0001uF 6个 10K 16个 9K 1个 电解电容 4个 100K 1个 按扭 10个 470K 1个 小灯 1个 5.6K 1个 共阳LED 1个 可变电阻 2个 麦克风 1个 芯片:2590 1个 10开关组 1个 89C51 1个 排线 14根 LM386 1个 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成语音系统的录音  10   完成每一段音的播放  15   完成某一段放完后,在循环播放该段  25   完成用LED显示当前播放的3  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  七、原理: 此系统要把2590录的音分为6段,因此只须要6个地址,在该系统中,我们把它平均分为6段,因此每一段的时间为15秒,每一段的开始地址分别为0000000000B,0001100100B,0011001000B,0100101100B,0110010000B,0111110100B,由于最后两位全为00,因此它的地址用8根线就可以了。我们用P3可选择地址,若想选择其中任意一段(在硬件中按下任一按纽)只须给P3口送相应的地址就可以了,在录音时若要想对任意一段录音,道理也一样。播放时,先选中要播放的段数,通过对LM386的监测,若有播放按纽按下,就开始播放。若在播放的过程中,想从头播放该段,可按下复位按纽,地址就会转到相应的起始地址,在按下播放按纽即可,若在播放的过程中想到别的段数,可按下该段的地址,在按播放按纽即可。 八、原理图如下:  九、程序框图如下: N Y N Y N N Y 十、参考程序如下: ORG 0000H MOV P3,#00H MOV P1,#79H L1: LCALL PLAY JB P2.2,L2 MOV P3,#00H MOV P1,#79H L2: LCALL PLAY JB P2.3,L3 MOV P3,#19H MOV P1,#24H L3: LCALL PLAY JB P2.4,L4 MOV P3,#32H MOV P1,#30H L4: LCALL PLAY JB P2.5,L5 MOV P3,#4BH MOV P1,#19H L5: LCALL PLAY JB P2.6,L6 MOV P3,#64H MOV P1,#12H L6: LCALL PLAY JB P2.7,L1 MOV P3,#7DH MOV P1,#02H SJMP L1 PLAY: JB P2.1,LL SETB P2.0 LCALL YS CLR P2.0 NOP NOP CLR P0.0 LCALL YS SETB P0.0 NOP NOP LL: RET YS: MOV TMOD,#10H MOV TH1,#4CH MOV TL1,#00H SETB TR1 JNB TF1,$ CLR TF1 RET END 十一、说明: 在该系统设计调试的过程中,2590的复位脉宽应达到其芯片参数的要求,即,在按下复位按纽时,应该给2590足够的高点平时间。在显示时,我们采用了软件译码,在该系统中,通过给P1口送相应的数,让其显示对应的段数。在录音时,应先按下P/R\,在按下CE\才能开始录音。 20 自动人体秤 设计任务:设计制做一个数显自动人体秤。用单片机系统实现。 设计要求:能够在LED上显示当前站在人体称上人的重量。要求误差在3斤范围之内。 仪器、仪表:单片机、仿真机、万用表等。 元件清单: 741芯片 3个 压力传感器 4个 电阻5K 8个 LED 3个 74LS04芯片 1块 电阻 1K 3个 电容 30pF 2个 573芯片 3块 89C51芯片 1块 AD570芯片 1块 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成把人体的重量在LED上显示  20   完成误差在+/-1斤之内  40  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、原理: (一)、压力传感器应用技术 在测试中压力传感器电路可将其所受的压力信号转化为相应的电信号,对于压力传感器的实用电路有很多种,其中常见的包括应变式,压阻式、电容式等实用电路。但是压力传感器转化后的输出电信号非常小,无法满足系统中模/数转换器AD570的使用要求。所以我们必须将其输出电信号进行放大处理。鉴于本系统的实际情况,我们采用差动式放大电路。 (二)、A/D570数据转换处理 由于本系统采用89C51作为CPU控制,我们知道单片机所处理的数据都是数字信号,它无法对模拟信号进行处理,所以首先我们必须对压力传感器采集来得模拟信号进行处理,将其转化为数字信号,再供89C51使用。芯片A/D570可将输入端的模拟信号转化成相应的八位二进制信号输出给89C51的P1口。 关于AD570芯片的使用我们以管脚说明为例。 AD570芯片引脚功能说明如下: DR(DATA READY):当其为低电平时表示转换结束,数据有效。 B/C(BLANK/CONVERT/CONTROL):启动转换信号输入端,当其位高电平时,为转换做好准备,当其为低电平时,输出呈高阻抗悬浮状态并开始转换,一旦转换结束,便置DR端为低电平通知CPU可以将数据取走。 AIN:模拟信号输入端。 AGND:模拟地。 DGND:数字地。 BO(BIPOLAR OFFSET CONTROL):输入电压极性控制端,单极性输入时,该端接地,双极性输入时,该端接高电平,这就是AD571模拟输入的极性选择。 V+、V-:分别为工作电源电压输入端。 D1~D10:十位数据输出线。 AD571的主要应用特性总结如下: 分辨率:AD571是10位ADC。 转换精度:<=+-1LSB(一般为+-1/2LSB)。 转换时间:15us~40us,一般典型值为25us。 输出形式:10位二进制码。 工作电源电压:可单极性或双极性供电。单极性供电为+5V和-15V。双极性输入时供电为+15V和-15V。其中:+-15V电源的电流各为10mA。+5V电源的电流为5mA。 (三)、非线形补偿 由于AD570所采集是模拟量的某时刻的数据,所以为了实现系统的准确性,必须采集几组数据,而这几组数据均是非线形出现的,所以要对其进行数据选择 并经过实际的测验,掌握其变化规律,对其进行数据补偿,一般采用经验值补偿,即对与实际相差很大的一些数据统一调出,再进行逐一补偿。具体问题具体解决。 八、原理图如下:  九、程序框图如下: 1主程序: 2、测重子程序如下: 3.显示子程序框图: 显示子程序 十、参考程序如下: ORG 0000H MOV SP, #70H MOV DPTR, #TAB ST: LCALL QL LCALL DIS LCALL YS0 GO: LCALL CE LCALL PJUN MOV A, 55H CJNE A, #00H,KK2 SJMP ST KK2: JC ST LCALL YS0 LCALL QL LCALL DIS LCALL YS0 LCALL CE LCALL PJUN MOV A, 55H CJNE A, #00H,OK3 SJMP ST OK3: JC ST LCALL CHA LCALL DIS LCALL YS0 YY: LCALL CE LCALL PJUN MOV A, 55H CJNE A, #00H,KK3 SJMP ST KK3: SJMP YY QL: MOV R0, #20H MOV R2, #50H MOV A, #00H QL0: MOV @R0, A INC R0 DJNZ R2, QL0 RET CE: MOV R0, #60H MOV R7, #10H CE0: LCALL CAIJI LCALL PAISHU MOV A, 54H MOV @R0, A INC R0 LCALL YS DJNZ R7, CE0 RET CAIJI: PUSH R0 MOV R0, #30H MOV R2, #20H CAIJI0: MOV P1, #0FFH SETB P3.2 NOP NOP CLR P3.2 JB P3.3, $ NOP MOV A, P1 SETB P3.2 MOV @R0, A INC R0 DJNZ R2, CAIJI0 POP R0 RET PAISHU: PUSH R0 PUSH R1 MOV R0, #30H MOV R1, #31H MOV 51H, #1FH HUAN1: MOV 50H, 51H BJIAO: MOV A, @R0 CLR C SUBB A, @R1 JNC HUAN0 MOV A, @R0 XCH A, @R1 MOV @R0, A HUAN0: INC R1 DJNZ 50H,BJIAO INC R0 MOV A, R0 INC A MOV R1, A DJNZ 51H,HUAN1 MOV 52H, #00H MOV 53H, #00H MOV R0, #38H MOV R2, #10H MOV A, #00H JXU0: CLR C ADD A, @R0 MOV 53H,A JNC JXU INC 52H JXU: INC R0 DJNZ R2, JXU0 MOV A, 53H ANL A, #0F0H MOV 54H,A MOV A, 52H ADD A, 54H SWAP A MOV 54H,A POP R1 POP R0 RET PJUN: MOV R0, #60H MOV R2, #10H MOV A, #00H MOV 25H, #00H MOV 26H, #00H XYC0: CLR C ADD A, @R0 MOV 26H,A JNC XYC1 INC 25H XYC1: INC R0 DJNZ R2, XYC0 MOV A, 26H ANL A, #0F0H MOV 27H,A MOV A, 25H ANL A, #0FH ADD A, 27H SWAP A MOV 27H,A MOV 55H, 27H RET CHA: MOV DPTR, #TAB0 MOV 56H, 55H CHA0: INC DPTR INC DPTR DJNZ 56H,CHA0 MOV A, #00H MOVC A, @A+DPTR MOV 22H,A MOV A, #01H MOVC A, @A+DPTR MOV 23H,A MOV A, 22H ANL A, #0FH MOV 2CH,A MOV A, 23H ANL A, #0F0H SWAP A MOV 2DH,A MOV A, 23H ANL A, #0FH MOV 2EH,A RET DIS: MOV DPTR, #TAB MOV A, 2CH MOVC A, @A+DPTR MOV P0, A MOV P2, #7FH NOP SETB P2.7 MOV A, 2DH MOVC A, @A+DPTR MOV P0, A MOV P2, #0DFH NOP SETB P2.5 MOV A, 2EH MOVC A, @A+DPTR MOV P0, A MOV P2, #0BFH NOP SETB P2.6 RET YS: MOV TMOD, #01H MOV TH0, #0DCH MOV TL0, #00H SETB TR0 JNB TF0, $ CLR TF0 CLR TR0 RET YS0: MOV R6, #1DH MOV TMOD, #01H YS00: MOV TH0, #4CH MOV TL0, #00H SETB TR0 JNB TF0, $ CLR TF0 CLR TR0 DJNZ R6, YS00 RET TAB: DB 41H, 0F5H, 19H, 91H, 0A5H, 83H, 03H, 0F1H, 01H, 81H TAB0: DB 00H, 01H, 00H, 03H, 00H, 04H, 00H, 06H, 00H, 08H, 00H, 10H, 00H, 12H, 00H, 14H DB 00H, 16H, 00H, 18H, 00H, 20H, 00H, 22H, 00H, 24H, 00H, 26H, 00H, 28H, 00H, 30H ; 1 DB 00H, 32H, 00H, 34H, 00H, 36H, 00H, 38H, 00H, 40H, 00H, 42H, 00H, 44H, 00H, 46H DB 00H, 48H, 00H, 50H, 00H, 52H, 00H, 54H, 00H, 56H, 00H, 58H, 00H, 60H, 00H, 62H ; 2 DB 00H, 64H, 00H, 66H, 00H, 69H, 00H, 71H, 00H, 73H, 00H, 75H, 00H, 77H, 00H, 79H DB 00H, 80H, 00H, 82H, 00H, 84H, 00H, 86H, 00H, 88H, 00H, 90H, 00H, 92H, 00H, 94H ; 3 DB 00H, 96H, 00H, 99H, 01H, 01H, 01H, 03H, 01H, 05H, 01H, 07H, 01H, 09H, 01H, 12H DB 01H, 14H, 01H, 16H, 01H, 18H, 01H, 20H, 01H, 21H, 01H, 23H, 01H, 25H, 01H, 27H ; 4 DB 01H, 29H, 01H, 31H, 01H, 33H, 01H, 35H, 01H, 37H, 01H, 39H, 01H, 41H, 01H, 43H DB 01H, 46H, 01H, 48H, 01H, 50H, 01H, 52H, 01H, 54H, 01H, 56H, 01H, 58H, 01H, 60H ; 5 DB 01H, 62H, 01H, 64H, 01H, 66H, 01H, 68H, 01H, 70H, 01H, 71H, 01H, 73H, 01H, 75H DB 01H, 77H, 01H, 79H, 01H, 81H, 01H, 83H, 01H, 85H, 01H, 87H, 01H, 89H, 01H, 90H ; 6 DB 01H, 92H, 01H, 93H, 01H, 95H, 01H, 97H, 01H, 98H, 02H, 00H, 02H, 02H, 02H, 03H DB 02H, 05H, 02H, 07H, 02H, 09H, 02H, 11H, 02H, 13H, 02H, 14H, 02H, 16H, 02H, 18H ; 7 DB 02H, 19H, 02H, 21H, 02H, 23H, 02H, 24H, 02H, 26H, 02H, 28H, 02H, 29H, 02H, 31H DB 02H, 33H, 02H, 34H, 02H, 36H, 02H, 37H, 02H, 38H, 02H, 40H, 02H, 41H, 02H, 43H ; 8 DB 02H, 45H, 02H, 47H, 02H, 48H, 02H, 49H, 02H, 50H, 02H, 52H, 02H, 54H, 02H, 56H DB 02H, 58H, 02H, 60H, 02H, 62H, 02H, 63H, 02H, 65H, 02H, 67H, 02H, 69H, 02H, 70H ; 9 DB 02H, 72H, 02H, 74H, 02H, 75H, 02H, 77H, 02H, 78H, 02H, 80H, 02H, 82H, 02H, 84H DB 02H, 86H, 02H, 88H, 02H, 89H, 02H, 91H, 02H, 93H, 02H, 94H, 02H, 96H, 02H, 98H SJMP $ END 十一、数字人体秤系统说明: 本系统通过压力传感器产生电信号,经过运算放大器放大,使得电信号放大到足以满足模/数转换器AD570转换的电压。然后,通过模/数转换器AD570进行模/数转换,通过CPU进行数据处理,数据补偿等。接着,通过CPU对所采集的数据进行显示。 本系统的放大电路采用差动放大电路,适用于要求精密放大的系统使用。CPU进行16组,每组32次数据采集,通过求平均值,使数据更加准确。通过对数据进行处理、补偿,产生一个接近人体体重的数值,将其显示出来。 数字人体秤适应于现代科技数字化的发展,可直接显示出结果数据。避免了人工测量和人为读数等过程所带来得人为误差,大大提高了准确性。采用灵敏度较好的压力传感器不仅可提高系统准确性,同时可提高系统的快速性。 21 DS18B20的温度实测显示系统。 设计任务: 设计一个基于DS18B20的温度实测显示系统。 二、设计要求:能够掌握DS18B20温度传感器的使用,并能够把实测的温度在LED上显示,能够完成对所在环境温度的实时监控(实时显示)。 误差小于+/-0.5度,采集时间小于5秒 三、仪器、仪表: 仿真机,单片机,万用表等。 四、元件清单: 89C51 1个 74LS573 1个 共阴LED 4个 14495 4个 DS18B20 1个 电阻: 5.2K 1个 10K 1个 电解电容 10pF 1个 普通电容 30pF 2个 晶振11.0592M 1个 五、完成时间:一周 六、评分标准:  项目 满分  基本要求 完成传感器的复位、读、写操作  10   完成把从传感器读回来的数据转换成BCD码  15   完成把传感器读回的温度值显示出来  10   完成实时显示当前的温度  25  报告 完成原理图的设计 10   完成程序的编写  20   总结  10   七、设计原理: 此系统是对一个DS18B20与89C51的应用,通过对DS18B20的复位、送数、读数、补偿的相关操作,就可以得到达到精度要求的温度值。在该系统中由于要实时监控,因此,可采用定时器1中断来实现。 八、原理图如下:  九、程序框图如下: N Y 十、参考程序如下: ORG 0000H LJMP MAIN ORG 001BH LJMP TIME1 ORG 0050H MAIN: MOV SP,#70H MOV IE,#88H MOV TMOD,#10H MOV TH1,#4CH MOV TL1,#00H MOV 60H,#100 LCALL QL LCALL XS SETB TR1 SJMP $ ;*************************** TIME1: ;中断服务子程序 DJNZ 60H,HUZD LCALL DWD LCALL ZH LCALL ZHSHI LCALL XS MOV 60H,#100 HUZD: CLR TF1 CLR TR1 MOV TH1,#4CH MOV TL1,#00H SETB TR1 RETI ;***************************** QL: MOV R0,#40H ;清零子程序 MOV R2,#08H KKO: MOV @R0,#00H INC R0 DJNZ R2,KKO RET XS: MOV A,40H ;显示子程序 ORL A,#0E0H LCALL XS1 MOV A,41H ORL A,#0D0H LCALL XS1 MOV A,42H ORL A,#0B0H LCALL XS1 MOV A,43H ORL A,#70H LCALL XS1 RET XS1: MOV P1,A MOV P3,#0EFH MOV P3,#0FFH ORL A,#0F0H MOV P1,A MOV P3,#0EFH MOV P3,#0FFH RET ;***************************************************************************** DWD: NOP ;初始化DS18B20 ACALL RSTM ;Reset pulse(复位DS18B20) MOV A,#0CCH ;0CCH,Skim ROM Command ACALL WTEM ;把指令写入DS18B20 MOV A,#4EH ;Write Scratchpad command ACALL WTEM MOV A,#0EFH ;Write one of three bytes to scratchpad----TH ACALL WTEM MOV A,#0EFH ;Write one of three bytes to scratchpad----TL ACALL WTEM MOV A,#1FH ;Write one of three bytes to scratchpad----config ACALL WTEM ;############################################################################################ TEMPER: NOP ;P3.0是DS18B20信号线连接口,信号从P3.0输入/输出 ACALL RSTM ;复位DS18B20 MOV A,#0CCH ;0CCH,DS18B20要求在访问ROM指令后才能进行其它操作 ACALL WTEM ;把指令写入DS18B20 MOV A,#44H ;让DS18B20开始温度转换 ACALL WTEM ACALL RSTM ;复位DS18B20 MOV A,#0CCH ;0CCH ACALL WTEM MOV A,#0BEH ;读实际温度命令 ACALL WTEM MOV R0,#50H ;读出的二进制数存放在50H开始的单元中,50H,51H分别放温度的LSB和MSB ACALL RTEM ;接受DS18B20输出的数据 RET ; SJMP TEMPER ;########################################################################################## ; 复位DS18B20 RSTM: CLR P3.0 ;DS18B20复位,要求信号线保持低电平的时间(480us--960us) MOV R4,#30H MOV R5,#00H DJNZ R5,$ DJNZ R4,$ SETB P3.0 MOV R5,#1EH DJNZ R5,$ JB P3.0,$ ;DS18B20复位完后给出60--240us的低电平 JNB P3.0,$ RET ;######################################################################################### ; 写数据到DS18B20 WTEM: SETB P3.0 MOV R6,#08H ;写8次,每次写一位 WTE: RRC A ;右移到进位位去 JC WTE1 ;是低,执行一种时序 CLR P3.0 ;C=0 低时,执行的时序 MOV R5,#1EH DJNZ R5,$ AJMP WDR1 WTE1: CLR P3.0 ;高时,执行的时序 MOV R5,#08H DJNZ R5,$ SETB P3.0 MOV R5,#1DH DJNZ R5,$ WDR1: SETB P3.0 ;每位数据之间要求间隔60us MOV R5,#1EH DJNZ R5,$ DJNZ R6,WTE RET ;########################################################################################## ; 从DS18B20中读数据 RTEM: SETB P3.0 MOV R7,#08H ;读出DS18B20中的8个字节的SCRATCHPAD RTE2: MOV R6,#08H ;每个字节读8位,一个字节读8次 RTE: CLR P3.0 NOP NOP SETB P3.0 MOV R5,#07H DJNZ R5,$ JB P3.0,RTE1 ;P3.0=1或0 CLR C ;是0清C RRC A ;将C的状态移进累加器 AJMP RDR1 RTE1: SETB C ;C=1 RRC A ;将C的状态移进累加器 RDR1: SETB P3.0 MOV R5,#1EH DJNZ R5,$ DJNZ R6,RTE ;读8次 DJNZ R7,NEXT SJMP NEXT1 NEXT: MOV @R0,A INC R0 CLR A SJMP RTE2 NEXT1: RET ZH: MOV A,50H ANL A,#0F0H MOV 52H,A MOV A,51H ANL A,#0FH ORL A,52H SWAP A MOV 20H,A CLR A JB 00H,L1 KK1: JB 01H,L2 KK2: JB 02H,L3 KK3: JB 03H,L4 KK4: JB 04H,L5 KK5: JB 05H,L6 KK6: JB 06H,L7 KK7: RET L1: ADD A,#01 SJMP KK1 L2: ADD A,#02 SJMP KK2 L3: ADD A,#04 SJMP KK3 L4: ADD A,#08 SJMP KK4 L5: ADD A,#16 SJMP KK5 L6: ADD A,#32 SJMP KK6 L7: ADD A,#64 SJMP KK7 ZHSHI: MOV B,#10 DIV AB MOV 42H,A MOV 43H,B RET END 十一、说明: 在该系统中,若周围环境的温度在不断的变化,由于该系统采用了5秒中断测温度的方法,因此当前LED上显示的温度并不是当前的温度值,而是5秒前的温度值,因此只有在周围环境的温度经过一段时间的变化最后达到稳定时,才能准确无误地显示当前环境的温度值。 22 水温的恒温控制系统 一、设计任务:设计制做一个用单片机控制加热水壶中水温的恒温控制系统。。 二、设计要求:用单片机和PWM控制原理实现对加热水壶中水温的控制。实现水壶中水温保持在设定值+/- 1度的范围内。 仪器、仪表: 单片机、仿真机、万用表等。 元件清单: 1.74LS573锁存器两个;2、74LS04两个;3、74LS245四个;4、18B20温度传感器一个;5、89C51 个;6、14495静态显示译码器锁存器芯片四个;7、电阻若干;8、固态继电器一个;9、74LS138译码器芯片一个;10、光耦芯片一个;11、水壶一个;12、排线若干。 五、完成时间: 六、评分标准:  项目 满分  基本要求 完成3秒温度传感器读一次温度并显示  10   完成在10分钟之内达到设定的温度值  15   完成一直保持设定的温度(在误差范围之内)  25   完成改变设定温度时,控制的水温能达到设定的温度  10  报告 完成原理图的设计 10   完成程序的编写  20   总结  10  原理: 通过单片机的P3.0读回18B20温度传感器对实际水温的数与要控制的温度进行比较;如果温度相差大于等于5度用 220伏电压进行全加热,如果温度相差小于5度进行PID调整加热,单片机通过P3.1输出控制固态继电器的通断来达到PID调整加热,从而来达到对温度的恒定控制。 原理图:(见附表) 九、程序流程图: 大于等于5 小于5度 十 、参考程序: TEMP_BIT BIT 00H LOWER4 BIT 01H TEMP_CONTROL BIT 02H ZERO_BIT BIT 03H CONTROL_BIT BIT P3.1 COUNT EQU 60H TEMP EQU 61H SETUP EQU 62H L_LAST EQU 63H LAST EQU 64H THIS EQU 65H _HIGH EQU 66H _LOW EQU 67H ORG 0000H LJMP MAIN ORG 000BH LJMP _T0 MAIN: ;****初始化 MOV SP,#70H CLR TEMP_BIT CLR LOWER4 SETB ZERO_BIT SETB P3.1 MOV L_LAST,#00H MOV LAST,#00H MOV THIS,#00H LCALL QL LCALL DIS LCALL DWD LCALL YS50 LCALL DWD LCALL ZH MOV A,TEMP MOV B,#10 DIV AB MOV 42H,A MOV 43H,B LCALL DIS X1: LCALL ST JNC X1 MOV 40H,A LCALL DIS X2: LCALL ST JNC X2 MOV 41H,A LCALL DIS ANL 40H,#0FH ANL 41H,#0FH MOV A,40H MOV B,#10 MUL AB ADD A,41H MOV SETUP,A ;************** MOV TH0,#4CH MOV TL0,#00H MOV TMOD,#01H MOV COUNT,#40 ;*****中断每2秒检测1次温度 SETB EA SETB ET0 SETB TR0 ;********************************************** ;********************************************** INIT:SJMP INIT1 INIT1:MOV A,SETUP CJNE A,#40,EE SJMP TT1 EE:JC TT SJMP TT1 TT:SUBB A,#1 TT1:CLR C CJNE A,TEMP,S LJMP ZERO ;相等就不加热 S: JC ZERO CLR C SUBB A,TEMP CJNE A,#05H,NOEQU ;****比较相差5度进入调整加热 NOEQU: ;*************************** JNC HIGHER4 MOV L_LAST,LAST MOV LAST,THIS MOV THIS,A MOV A,LAST CLR C RLC A MOV B,A MOV A,L_LAST CLR C SUBB A,B MOV B,#20 MUL AB PUSH ACC MOV A,THIS MOV B,#20 MUL AB POP B ADD A,B JB ACC.7,ZERO MOV B,A CLR C RRC A CLR C RRC A ADD A,B MOV _HIGH,A MOV A,#0 CLR C SUBB A,_HIGH MOV _LOW,A ;**********PID算法 SETB LOWER4 LJMP CONTROL CONTROL:MOV P3,#0C7H MOV P1,#08H ;**** MOV A,_HIGH CLR CONTROL_BIT CIR1: NOP NOP NOP NOP NOP DJNZ ACC,CIR1 MOV A,_LOW SETB CONTROL_BIT CIR2: NOP NOP NOP NOP NOP DJNZ ACC,CIR2 ;****调整加热 LJMP INIT HIGHER4: CLR CONTROL_BIT MOV P3,#0C5H LJMP INIT ZERO: SETB CONTROL_BIT LJMP INIT ;************************************************* ;************************************************* _T0: PUSH ACC DJNZ COUNT,HUZD LCALL DWD LCALL ZH LCALL ZHSHI LCALL DIS MOV COUNT,#40 HUZD: CLR TF0 CLR TR0 MOV TH0,#4CH MOV TL0,#00H SETB TR0 POP ACC RETI ;************************************************* DWD: NOP ;初始化DS18B20 ACALL RSTM ;Reset pulse(复位DS18B20) MOV A,#0CCH ;0CCH,Skim ROM Command ACALL WTEM ;把指令写入DS18B20 MOV A,#4EH ;Write Scratchpad command ACALL WTEM MOV A,#0EFH ;Write one of three bytes to scratchpad----TH ACALL WTEM MOV A,#0EFH ;Write one of three bytes to scratchpad----TL ACALL WTEM MOV A,#1FH ;Write one of three bytes to scratchpad----config ACALL WTEM ;############################################################################################ TEMPER: NOP ;P3.0是DS18B20信号线连接口,信号从P3.0输入/输出 ACALL RSTM ;复位DS18B20 MOV A,#0CCH ;0CCH,DS18B20要求在访问ROM指令后才能进行其它操作 ACALL WTEM ;把指令写入DS18B20 MOV A,#44H ;让DS18B20开始温度转换 ACALL WTEM ACALL RSTM ;复位DS18B20 MOV A,#0CCH ;0CCH ACALL WTEM MOV A,#0BEH ;读实际温度命令 ACALL WTEM MOV R0,#50H ;读出的二进制数存放在50H开始的单元中,50H,51H分别放温度的LSB和MSB ACALL RTEM ;接受DS18B20输出的数据 RET ;########################################################################################## ; 复位DS18B20 RSTM: CLR P3.0 ;DS18B20复位,要求信号线保持低电平的时间(480us--960us) MOV R4,#30H MOV R5,#00H DJNZ R5,$ DJNZ R4,$ SETB P3.0 MOV R5,#1EH DJNZ R5,$ JB P3.0,$ ;DS18B20复位完后,给出60--240us的低电平 JNB P3.0,$ RET ;######################################################################################### ; 写数据到DS18B20 WTEM: SETB P3.0 MOV R6,#08H ;写8次,每次写一位 WTE: RRC A ;右移到进位位去 JC WTE1 ;是低,执行一种时序 CLR P3.0 ;C=0 低时,执行的时序 MOV R5,#1EH DJNZ R5,$ AJMP WDR1 WTE1: CLR P3.0 ;高时,执行的时序 MOV R5,#08H DJNZ R5,$ SETB P3.0 MOV R5,#1DH DJNZ R5,$ WDR1: SETB P3.0 ;每位数据之间要求间隔60us MOV R5,#1EH DJNZ R5,$ DJNZ R6,WTE RET ;########################################################################################## ; 从DS18B20中读数据 RTEM: SETB P3.0 MOV R7,#08H ;读出DS18B20中的8个字节的SCRATCHPAD RTE2: MOV R6,#08H ;每个字节读8位,一个字节读8次 RTE: CLR P3.0 NOP NOP SETB P3.0 MOV R5,#07H DJNZ R5,$ JB P3.0,RTE1 ;P3.0=1或0 CLR C ;是0清C RRC A ;将C的状态移进累加器 AJMP RDR1 RTE1: SETB C ;C=1 RRC A ;将C的状态移进累加器 RDR1: SETB P3.0 MOV R5,#1EH DJNZ R5,$ DJNZ R6,RTE ;读8次 DJNZ R7,NEXT SJMP NEXT1 NEXT: MOV @R0,A INC R0 CLR A SJMP RTE2 NEXT1: RET ZH: MOV A,50H ANL A,#0F0H MOV 52H,A MOV A,51H ANL A,#0FH ORL A,52H SWAP A MOV 20H,A MOV TEMP,A CLR A JB 00H,L1 KK1: JB 01H,L2 KK2: JB 02H,L3 KK3: JB 03H,L4 KK4: JB 04H,L5 KK5: JB 05H,L6 KK6: JB 06H,L7 KK7: RET L1: ADD A,#01 SJMP KK1 L2: ADD A,#02 SJMP KK2 L3: ADD A,#04 SJMP KK3 L4: ADD A,#08 SJMP KK4 L5: ADD A,#16 SJMP KK5 L6: ADD A,#32 SJMP KK6 L7: ADD A,#64 SJMP KK7 ZHSHI: MOV B,#10 DIV AB MOV 42H,A MOV 43H,B RET ;*************************************************** QL: MOV R0,#40H ;清零子程序 MOV R2,#08H KKO: MOV @R0,#00H INC R0 DJNZ R2,KKO RET DIS: MOV A,40H ;显示子程序 ORL A,#0E0H LCALL XS1 MOV A,41H ORL A,#0D0H LCALL XS1 MOV A,42H ORL A,#0B0H LCALL XS1 MOV A,43H ORL A,#70H LCALL XS1 RET XS1: MOV P1,A MOV P3,#0EFH MOV P3,#0FFH ORL A,#0F0H MOV P1,A MOV P3,#0EFH MOV P3,#0FFH RET ST: MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FBH MOV A,P1 CLR C SUBB A,#0FH JC QT RET QT: LCALL YS50 MOV P3,#0CFH MOV P1,#0FH MOV P3,#0FBH MOV A,P1 MOV R4,A CLR C SUBB A,#0FH JC QM RET QM: MOV P3,#0CFH MOV P1,#0F0H MOV P3,#0FBH MOV A,P1 ORL A,R4 MOV R4,A MOV R3,#00H MOV A,#1CH SR: PUSH ACC MOVC A,@A+PC CJNE A,#0FFH,GO0 POP ACC SJMP ST GO0: CJNE A,04H,GO1 POP ACC MOV A,R3 MOV R2,#05H SW: LCALL YS50 DJNZ R2,SW SETB C RET GO1: INC R3 POP ACC INC A SJMP SR DB 0EEH,0DEH,0BEH,7EH DB 0EDH,0DDH,0BDH,7DH DB 0EBH,0DBH,0BBH,7BH DB 0E7H,0D7H,0B7H,77H DB 0FFH ;********************************************* YS50: ;***** ORL TMOD,#11H MOV TH1,#04CH MOV TL1,#00H SETB TR1 JNB TF1,$ CLR TF1 CLR TR1 RET ;*****延时50ms子程序 END 十一、说明: 此系统只能最大控制误差在+/-1度的超调 如果要控制精度提高此软件程序还要进 一步改进。 24 电子屏显示系统