收藏 分销(赏)

基于单片机的最小专业系统设计.doc

上传人:天**** 文档编号:2862194 上传时间:2024-06-07 格式:DOC 页数:27 大小:258.04KB 下载积分:10 金币
下载 相关 举报
基于单片机的最小专业系统设计.doc_第1页
第1页 / 共27页
基于单片机的最小专业系统设计.doc_第2页
第2页 / 共27页


点击查看更多>>
资源描述
基于AT89C51单片机最小系统设计 成员:田竹、王维、袁倍明 摘要: 本次实验课题为设计一种基于AT89C51单片机最小系统。用P1口设计流水灯,用P2口和P0口分别作段选和位选设计了六位数码管静动态显示和简易电子钟,用P3口设计了一种4*4矩阵键盘,并用蜂鸣器实现了唱歌功能和键盘按下声响,用62256扩展内部RAM,还扩展并实现了LCD1602静动态显示,最后通过ADC0809和 DAC0832分别实现了A/D、D/A转换功能。 一、系统电源 用MC7805集成稳压器将输入电压转为+5V稳压给系统供电。 二、晶振(12MHZ)及复位电路 采用12MHz外部晶振,给系统提供时钟信号。并采用了按键复位电路。 三、流水灯 功能描述:让8个led灯循环闪烁 源程序: 流水灯 ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV A,#11111110B LOOP:MOV P1,A;给P1口送值 LCALL DLY RL A ;循环左移 LJMP LOOP DLY:MOV R7,#250 ;延时子程序 DLY1:MOV R6,#200 DJNZ R6,$ DJNZ R7,DLY1 RET END 四、 数码管 功能描述:数码管动态显示1~6 源程序: ORG 0000H LJMP START ORG 0100H START: MOV P0,#0 MOV P2,#0F9H SETB P0.0 LCALL DELAY CLR P0.0 MOV P2,#0C4H SETB P0.1 LCALL DELAY CLR P0.1 MOV P2,#0D0H SETB P0.2 LCALL DELAY CLR P0.2 MOV P2,#99H SETB P0.3 LCALL DELAY CLR P0.3 MOV P2,#92H SETB P0.4 LCALL DELAY CLR P0.4 MOV P2,#82H SETB P0.5 LCALL DELAY CLR P0.5 LJMP START DELAY:MOV R5,#10 D1:MOV R6,#20 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END 五、 4*4矩阵键盘和蜂鸣器 功能描述:通过按键让数码管显示0-F,按键按下时,蜂鸣器响一下。 源程序: ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV P0,#0FFH MOV B,#4 MOV P3,#0F0H;列置0,看行电平 JNB P3.4,L1 JNB P3.5,L2 JNB P3.6,L3 JNB P3.7,L4 AJMP MAIN L1: MOV R1,#0 AJMP LL1 L2: MOV R1,#1 AJMP LL1 L3: MOV R1,#2 AJMP LL1 L4: MOV R1,#3 AJMP LL1 LL1:ACALL DL10MS;消抖 MOV A,P3 XRL A,#0F0H JZ MAIN MOV P3,#0FH;行置0,看列电平 JNB P3.0,L5 JNB P3.1,L6 JNB P3.2,L7 JNB P3.3,L8 L5:MOV 20H,#0 AJMP KEY L6:MOV 20H,#1 AJMP KEY L7:MOV 20H,#2 AJMP KEY L8:MOV 20H,#3 AJMP KEY KEY:MOV A,R1;计算键值并查表赋值 MUL AB ADD A,20H MOV R2,A MOV DPTR,#TABLE MOV A,R2 MOVC A,@A+DPTR MOV P2,A CALL BEEP_BL LCALL DELAY LJMP MAIN BEEP_BL:CLR P2.7;蜂鸣器子程序 ACALL DELAY SETB P2.7 RET DELAY:MOV R5,#50;延时 D1:MOV R6,#20 D2:MOV R7,#50 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET DL10MS:MOV R7,#05H LOOP1:MOV R6,#0F9H LOOP2:NOP NOP DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET TABLE:DB 0A0H,0F9H,0C4H,0D0H,99H DB 92H,82H,0F8H,80H,90H DB 88H,83H,0A6H,0C1H,86H DB 8EH END 六、 时钟 功能描述:在数码管上实现时钟功能,并通过矩阵键盘3个键实现复位,调时,调分。 源程序: ORG 0000H LJMP 1000H ORG 001BH AJMP 0100H ORG 0100H MOV TH1,#0D8H MOV TL1,#0F0H DJNZ 69H,TT1 MOV 69H,#100 SETB 4FH TT1:RETI;中断延时 ORG 1000H MOV 30H,#1 MOV 31H,#2 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 MOV TMOD,#10H MOV TH1,#0D8H MOV TL1,#0F0H MOV IE,#88H XS0:SETB TR1 MOV 69H,#100 CLR 4FH XS00:LJMP KEYKEY;判断按键有无按下 LX1: CJNE A,#0A0H,LX2 LJMP P100 LX2: CJNE A,#0F9H,LX3 LJMP P1000 LX3: CJNE A,#0C4H,XS LJMP P10000 XS: MOV 40H,#01H MOV DPTR,#TAB MOV P0,40H MOV A,30H MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#42H MOV 40H,A MOV P0,40H MOV A,31H ADD A,#10 MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#44H MOV 40H,A MOV P0,40H MOV A,32H MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#48H MOV 40H,A MOV P0,40H MOV A,33H ADD A,#10 MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#50H MOV 40H,A MOV P0,40H MOV A,34H MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#60H MOV 40H,A MOV P0,40H MOV A,35H MOVC A,@A+DPTR MOV P2,A LCALL YS1MS MOV P2,#0FFH MOV A,#40H MOV 40H,A JNB 4FH,LLLL1 CLR 4FH LJMP JIA LLLL1:LJMP XS00 P100: MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 MOV 33H,#0 MOV 34H,#0 MOV 35H,#0 JIA: MOV R1,#14H MOV A,35H CJNE A,#9,JIA1 MOV 35H,#0 MOV A,34H CJNE A,#5,JIA10 MOV 34H,#0 P10000:MOV A,33H CJNE A,#9,JIA100 MOV 33H,#0 MOV A,32H CJNE A,#5,JIA1000 MOV 32H,#0 P1000: MOV A,31H CJNE A,#9,JIA10000 MOV 31H,#0 MOV A,30H CJNE A,#2,JIA100000 MOV 30H,#0 AJMP XS JIA100000: INC 30H AJMP XS0 JIA10000: CJNE A,#3,JIAJIA MOV A,30H CJNE A,#02,JIAJIA MOV 30H,#0 MOV 31H,#0 AJMP XS0 JIAJIA: INC 31H AJMP XS0 JIA1000:INC 32H AJMP XS0 JIA100:INC 33H AJMP XS0 JIA10: INC 34H AJMP XS0 JIA1: INC 35H AJMP XS0 RET YS1MS: MOV R6,#9H YL1: MOV R7,#19H DJNZ R7,$ DJNZ R6,YL1 RET DL10MS:MOV R7,#05H LOOP1:MOV R6,#0F9H LOOP2:NOP NOP DJNZ R6,LOOP2 DJNZ R7,LOOP1 RET DELAY:MOV R5,#50 D1:MOV R6,#20 D2:MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET ;-----------矩阵键盘----------- KEYKEY: MOV B,#4 MOV P3,#0F0H;列置0,看行电平 JNB P3.4,L1 JNB P3.5,L2 JNB P3.6,L3 JNB P3.7,L4 AJMP XS L1: MOV R1,#0 AJMP LL1 L2: MOV R1,#1 AJMP LL1 L3: MOV R1,#2 AJMP LL1 L4: MOV R1,#3 AJMP LL1 LL1:ACALL DL10MS;消抖 MOV A,P3 XRL A,#0F0H JZ LLL2 MOV P3,#0FH;行置0,看列电平 JNB P3.0,L5 JNB P3.1,L6 JNB P3.2,L7 JNB P3.3,L8 L5:JNB P3.0,L5 MOV 20H,#0 AJMP KEY L6:JNB P3.1,L6 MOV 20H,#1 AJMP KEY L7:JNB P3.2,L7 MOV 20H,#2 AJMP KEY L8:JNB P3.3,L8 MOV 20H,#3 AJMP KEY LLL2:LJMP XS KEY:MOV A,R1;计算键值并查表赋值 MUL AB ADD A,20H MOV R2,A MOV DPTR,#TABLE MOV A,R2 MOVC A,@A+DPTR ;LCALL DELAY LJMP LX1 TAB: DB 0A0H,0F9H,0C4H,0D0H,099H,092H,082H,0F8H,080H,090H DB 020H,079H,044H,050H,019H,012H,002H,078H,000H,010H TABLE:DB 0A0H,0F9H,0C4H,0D0H,99H DB 92H,82H,0F8H,80H,90H DB 88H,83H,0A6H,0C1H,86H DB 8EH END 七、1602液晶显示 功能描述:在lcd上动态逐字显示两行字符串。 源程序: RS EQU P2.7 RW EQU P2.6 E EQU P2.5 ORG 0000H LJMP MAIN ORG 0100H MAIN:ACALL DEL5MS ACALL DEL5MS ACALL DEL5MS MOV P1,#38H ACALL ENABLE1 ACALL DEL5MS MOV P1,#38H ACALL ENABLE1 ACALL DEL5MS MOV P1,38H ACALL ENABLE1 MOV P1,#00000001B ACALL ENABLE MOV P1,#00111000B ACALL ENABLE MOV P1,#00001111B ACALL ENABLE MOV P1,#00000100B ACALL ENABLE MOV P1,#8FH ACALL ENABLE MOV DPTR,#TABLE1 ACALL L1 MOV P1,#0CFH ACALL ENABLE MOV DPTR,#TABLE2 ACALL L2 SJMP $ L1:MOV R1,#00H LL1:MOV A,R1 MOVC A,@A+DPTR MOV P1,A ACALL DELXXMS ACALL WRITE_LCD INC R1 CJNE A,#00H,LL1 RET L2:MOV R1,#00H LL2:MOV A,R1 MOVC A,@A+DPTR MOV P1,A ACALL DELXXMS ACALL WRITE_LCD INC R1 CJNE A,#00H,LL1 RET WRITE_LCD: SETB RS CLR RW CLR E ACALL DELAY SETB E RET ENABLE1:CLR RS CLR RW CLR E SETB E RET ENABLE:CLR RS CLR RW CLR E ACALL DELAY SETB E RET DELAY:MOV P1,#0FFH CLR RS SETB RW CLR E NOP SETB E JB P1.7,DELAY RET DEL5MS:MOV R7,#125 DEL1:MOV R6,#18 NOP DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET DELXXMS:MOV R7,#250 DEL3:MOV R6,#250 NOP DEL4:DJNZ R6,DEL4 DJNZ R7,DEL3 RET table1:db"UHZ NAIT " table2:db"*********:QQ " END 八、外部RAM扩展 功能描述:将片内数据送到片外RAM储存,再送回片内,在数码管中显示。 源程序: ORG 0000H LJMP MAIN ORG 0100H MAIN:MOV P0,#0FFH MOV A,#0F9H MOV DPTR,#0001H MOVX @DPTR,A CLR A MOVX A,@DPTR MOV P2,A SJMP $ END 九、AD转换 功能描述:向ADC0809输入模仿信号电压,经转换后在数码管上显示电压值。 源程序: LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H CLOCK BIT P3.1 ST BIT P3.0;ALE OE BIT P3.2 EOC BIT P3.3 ORG 0000H LJMP START ORG 000BH CPL CLOCK;给0809时钟 RETI ORG 0100H START: MOV LED_0,#00H MOV LED_1,#00H MOV LED_2,#00H MOV TMOD,#02H MOV TH0,#0FEH MOV TL0,#0FEH MOV IE,#82H SETB TR0 WAIT:CLR ST SETB ST CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC MOV B,#51 DIV AB MOV LED_2,A MOV A,B MOV B,#5 DIV AB MOV LED_1,A MOV A,B MOV B,#2 MUL AB MOV LED_0,A LCALL DISP SJMP WAIT DISP:MOV P0,#00H MOV DPTR,#TABLE MOV A,LED_0 MOVC A,@A+DPTR SETB P0.2 MOV P2,A LCALL DELAY CLR P0.2 MOV A,LED_1 MOVC A,@A+DPTR SETB P0.1 MOV P2,A LCALL DELAY CLR P0.1 MOV A,LED_2 MOVC A,@A+DPTR SETB P0.0 ADD A,#80H MOV P2,A LCALL DELAY CLR P0.0 RET DELAY: MOV R6,#50 D1: MOV R7,#15 DJNZ R7,$ DJNZ R6,D1 RET TABLE:DB 0A0H,0F9H,0C4H,0D0H,99H DB 92H,82H,0F8H,80H,90H END 十、DA转换 功能描述:实现输出方波、三角波、梯形波。 源程序: 1.方波程序 ORG 0000H LJMP LOOP1 ORG 0100H;通过高低电平地变化来输出方波 LOOP1: CLR P3.6 MOV P2,#00H;向选通地址送低电平地 ACALL DELAY MOV P2,#0FFH;向选通地址送高电平 ACALL DELAY LJMP LOOP1 DELAY:MOV R1,#06H D2:MOV R2,#0FFH D1:DJNZ R2,D1 DJNZ R1,D2 RET;延时,通过变化它大小可以变化占空比 END 2.三角波: ORG 0000H LJMP STR1 ORG 0100H STR1:CLR P3.6 ;通过上升和下降来产生三角波 MOV R6,#00H ;电压随时间上升 STR2:MOV A,R6 MOV P2,A INC R6 CJNE R6,#0FFH,STR2 ;电压随时间下降 STR3:ACALL DELAY DEC R6 MOV A,R6 MOV P2,A CJNE R6,#00H,STR3 AJMP STR1 END 总结 一、流水灯 流水灯使用接口最佳使用P1口,P1口没有第二功能也不用作为地址总线,容易控制。最佳加一跳针,以便与其她功能区别开。 二、数码管 焊接时,可将各数码管段选分别连接起来,连线时,应当贴着板子布线。 p0口做位选时,要接上拉电阻,增大数码管驱动电流,或采用PNP来进行放大。放射级接电源,基极接p0口,集电极接位选。P0和P2口使用时和其她功能有重复,最佳用跳针加以控制。 三、矩阵键盘 4*4矩阵键盘消抖很核心,调用一种10ms延时,当按键放开时,数码管显示相应数字,并伴有蜂铃器响声。对键盘行列扫描时,用软件置零比用硬件置零以便。 四、电子钟 编程时,用中断定期比普通定期更为精准。由于程序自身存在一定缺陷,导致在按键进行控制时,程序会暂停并等待直至按键放开。 五、蜂鸣器 编程时,可在网上查找歌曲编写软件,将歌曲转化为相应代码,用查表进行实现唱歌功能。 七、 LCD1602 线路有点复杂,需要认真来进行线路检错,注意其引脚相应P口不被用于其她功能而分流,导致液晶不能正常显示。 在其Vee引脚接一电位器进行对比度调节。编程时,注意不要漏掉复位程序。 八、片外RAM 扩展时,可将各个P口用插槽引出,以便使用。编程时,可通过查看XDATA窗口,看相应数据有无送到指定地址。 九、AD转换 ADC0809数据输出八个引脚2-1到2-8分别接到单片机P*.7到P*.0口, 注意不要接反了。 十、DA转换 可先用LED灯检测DAC0832与否输出信号与否与编程写信号一致,若将WR1脚接地,可直接对P口送值,若将WR1脚接P3.6,可用送地址方式赋值。UA741输出口与DAC0832RFB脚之间可接电位器来调节精准度。输出时,可以采用双极性输出电路使输出电压变为正电压 十一、检测电路 编程仿真时,可单步运营看P口及其她相应寄存器有无对的赋值,硬件检测时,最佳交给此外成员仔细检查电路板看有无短接、虚焊等问题,再用万用表进行检测,如没有问题,仿真时从P口开始到功能器件逐渐用万用表检查相应值。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服