单片机系统开发之利用串口驱动数码管显示.docx

单片机系统开发之利用串口驱动数码管显示.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机系统开发之利用串口驱动数码管显示剖析

单片机应用系统开发作业5利用串行口驱动数码管显示专业:信息对抗技术学号:1411050121姓名:吴志飞系统设计要求设晶振频率为12MHZ,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。2.系统设计分析:单片机的最小系统+74LS164接口芯片+两个7段共阴极LED数码管。串口工作于方式0,为移位寄存器方式,波特率为固定的fosc/12,不需要定时计数器T1做波特率发生器。拨码开关的的高低4位分别控制一个数码管,数码管要显示的数据可以用查表法。两个数码管并连接在74LS164的输出端,通过选通位来控制哪一个数码管亮。74LS164是8位边沿触发式移位寄存器,串行输入,并行输出。数据通过俩个输入端A或B之一串行输入,任一输入端可以作为高电平使能端来控制另一输入端的数据输入。俩个输入端或者连接在一起,或者把不用的一端接高电平,一定不要悬空。时钟CP每次有低变高时,数据右移一位输入到Q0。Q0是两个数据输入端的逻辑与。3.系统原理图设计:系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,拨码开关DIPSW_8,共阴极数码管7SEG-COM-CAT-GRN俩个,74LS164接口芯片一个以及开关SWITCH。原理图如1.2所示。图1.2利用串口数据驱动数码管进行相应数码显示4.系统流程图设计:5.系统源程序设计:汇编源程序: ORG 0030HSTART:MOV SCON,#00H //串口工作于方式0:移位寄存器方式 MOV P1,#00HREAD: MOV P0,#0FFH MOV A,P1 MOV B,P1 ANL A,#0F0H CJNE A,B,LOW4/////////////////////////HIG4: MOV DPTR,#TABLE SWAP AXH: MOVC A,@A+DPTR MOV SBUF,A CLR P0.0 LCALL DELAY MOV A,P1 CJNE A,SBUF,READ AJMP READ///////////////////////////LOW4: MOV A,P1 ANL A,#0FH CJNE A,B,LOOP3 MOV DPTR,#TABLEXL: MOVC A,@A+DPTR MOV SBUF,A CLR P0.1 LCALL DELAY MOV A,P1 CJNE A,SBUF,READ AJMP READLOOP3:NOPTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H////////延时子程序//////////////DELAY:MOV R7,#20DELAY1:MOV R6,#40DELAY2:MOV R5,#248 DJNZ R5,$ DJNZ R6,DELAY2 DJNZ R7,DELAY1 RET ENDC语言源程序:#includereg51.h #define uint unsigned int #define uchar unsigned char void delay(); sbit p01=P0^1; sbit p00=P0^0; uchar code tab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07, 0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71}; //共阴 uchar a; void main(void) { SCON=0X00; while(1) { a=P10X0F; //低四位 SBUF=tab[a]; while(TI==0); TI=0; p00=1;p01=0;delay(); a=P10XF0 ;//高四位 a=4; SBUF=tab[a]; while(TI==0); TI=0; p01=1; p00=0; delay(); } } void delay()//延时子程序 { uint c,d; for(c=0;c400;c++) for(d=0;d400;d++) {;} }6.在keil中进行调试:(1)创建“数码管”项目,选择单片机型号为AT89C51,汇编源程序,保存为“数码管.ASM”或“数码管.C”。(2)将源程序添加到项目中。(3

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档