资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机应用系统开发作业5利用串行口驱动数码管显示专业:信息对抗技术学号:1411050121姓名: 吴志飞1. 系统设计要求 设晶振频率为12MHZ,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。2.系统设计分析: 单片机的最小系统+74LS164接口芯片+两个7段共阴极LED数码管。串口工作于方式0,为移位寄存器方式,波特率为固定的fosc/12,不需要定时计数器T1做波特率发生器。拨码开关的的高低4位分别控制一个数码管,数码管要显示的数据可以用查表法。两个数码管并连接在74LS164的输出端,通过选通位来控制哪一个数码管亮。74LS164是8位边沿触发式移位寄存器,串行输入,并行输出。数据通过俩个输入端A或B之一串行输入,任一输入端可以作为高电平使能端来控制另一输入端的数据输入。俩个输入端或者连接在一起,或者把不用的一端接高电平,一定不要悬空。时钟CP每次有低变高时,数据右移一位输入到Q0。Q0是两个数据输入端的逻辑与。 图1.1 74LS164接口芯片 3系统原理图设计: 系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,拨码开关DIPSW_8,共阴极数码管7SEG-COM-CAT-GRN俩个,74LS164接口芯片一个以及开关SWITCH。原理图如1.2所示。图1.2 利用串口数据驱动数码管进行相应数码显示4.系统流程图设计:开 始 串口寄存器设置初始化P0、P1口把P1口给累加器A是否拨动开关低4位YN高低4位互换DPTR指向表首地址N判断A的值查表取数发送数据YP1是否等于SBUF结 束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,#TABLE XL: 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语言源程序:#include #define uint unsigned int #define uchar unsigned char void delay(); sbit p01=P01; sbit p00=P00; 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=P1&0X0F; /低四位 SBUF=taba; while(TI=0); TI=0; p00=1;p01=0;delay(); a=P1&0XF0 ;/高四位 a=4; SBUF=taba; 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)打开项目菜单,选择Options for targettarget 1选项,点击output一项,在Create HEX File前打上对勾。(4)编译源程序,如果有问题,则需要调试修改,若没有错误,则成功创建“数码管.HEX”文件。 图1.3 编译成功提示图7.在Proteus中进行仿真:打开Proteus软件,用左键单击单片机,在出现的对话框中,添加“数码管.HEX”文件,开始仿真,效果如下图所示。 图1.4 数码管仿真图 图1.5 数码管仿真图拨码开关的高低4位分别可以控制一个数码管,分别显示0到F,符合设计要求。8.后言:感想:经过一段时间的学习,从开始对单片机的一无所知,不感兴趣,到现在的自己编程实现实际问题。在这一过程中,随着对单片机知识的逐步深入,兴趣也越来越浓厚,自己去查资料的冲动也越来越强烈。还记得第一次张老师让我们点亮一盏灯时全班同学的一脸茫然,无从下手,但这并不能阻挡我们探索单片机,爱上单片机。现在看着自己编的程序在单片机上运行,内心的激动那是不言而喻。张老师说单片机是一门很枯燥的课程,的确如此,如果不是有兴趣作为支撑,很容易半途而废,一无所获。但是一旦入了门,什么时候想要学了,或者有时间学了,都可以很轻松的捡起来。单片机的知识浩瀚如海,而我们就像一个呱呱坠地的婴儿,只要怀着一颗好奇、探索的心不断汲取,不断充实自己,将来一定会让自己强壮无比。建议:有一个事情,我并不认同张老师的做法。檫黑板本来就是我们应该帮老师做的事情,但是,一旦檫黑板也要加分,这个事情就变了味道。那么,同学们以后遇到不给加分的老师,就是不是不帮他檫黑板呢?我建议张老师在以后的教学中,可以去掉这一加分项!期望成绩:A+
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号