单片机系统开发利用串口驱动数码管显示.docx
《单片机系统开发利用串口驱动数码管显示.docx》由会员分享,可在线阅读,更多相关《单片机系统开发利用串口驱动数码管显示.docx(8页珍藏版)》请在冰豆网上搜索。
单片机系统开发利用串口驱动数码管显示
单片机应用系统开发
利用串口驱动数码管显示
1.系统设计要求
设晶振频率为12MHZ,将拨码开关数据串行输入到74LS164,并行输出到2个LED数码管进行相应的数码显示。
2.系统设计分析:
单片机的最小系统+74LS164接口芯片+两个7段共阴极LED数码管。
串口工作于方式0,为移位寄存器方式,波特率为固定的fosc/12,不需要定时计数器T1做波特率发生器。
拨码开关的的高低4位分别控制一个数码管,数码管要显示的数据可以用查表法。
两个数码管并连接在74LS164的输出端,通过选通位来控制哪一个数码管亮。
74LS164是8位边沿触发式移位寄存器,串行输入,并行输出。
数据通过俩个输入端A或B之一串行输入,任一输入端可以作为高电平使能端来控制另一输入端的数据输入。
俩个输入端或者连接在一起,或者把不用的一端接高电平,一定不要悬空。
时钟CP每次有低变高时,数据右移一位输入到Q0。
Q0是两个数据输入端的逻辑与。
图1.174LS164接口芯片
3.系统原理图设计:
系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,拨码开关DIPSW_8,共阴极数码管7SEG-COM-CAT-GRN俩个,74LS164接口芯片一个以及开关SWITCH。
原理图如1.2所示。
图1.2利用串口数据驱动数码管进行相应数码显示
4.系统流程图设计:
5.系统源程序设计:
汇编源程序:
ORG0030H
START:
MOVSCON,#00H//串口工作于方式0:
移位寄存器方式
MOVP1,#00H
READ:
MOVP0,#0FFH
MOVA,P1
MOVB,P1
ANLA,#0F0H
CJNEA,B,LOW4
/////////////////////////
HIG4:
MOVDPTR,#TABLE
SWAPA
XH:
MOVCA,@A+DPTR
MOVSBUF,A
CLRP0.0
LCALLDELAY
MOVA,P1
CJNEA,SBUF,READ
AJMPREAD
///////////////////////////
LOW4:
MOVA,P1
ANLA,#0FH
CJNEA,B,LOOP3
MOVDPTR,#TABLE
XL:
MOVCA,@A+DPTR
MOVSBUF,A
CLRP0.1
LCALLDELAY
MOVA,P1
CJNEA,SBUF,READ
AJMPREAD
LOOP3:
NOP
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H
////////延时子程序//////////////
DELAY:
MOVR7,#20
DELAY1:
MOVR6,#40
DELAY2:
MOVR5,#248
DJNZR5,$
DJNZR6,DELAY2
DJNZR7,DELAY1
RET
END
C语言源程序:
#include
#defineuintunsignedint
#defineucharunsignedchar
voiddelay();
sbitp01=P0^1;
sbitp00=P0^0;
ucharcodetab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,
0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};//共阴
uchara;
voidmain(void)
{
SCON=0X00;
while
(1)
{
a=P1&0X0F;//低四位
SBUF=tab[a];
while(TI==0);
TI=0;
p00=1;
p01=0;
delay();
a=P1&0XF0;//高四位
a>>=4;
SBUF=tab[a];
while(TI==0);
TI=0;
p01=1;
p00=0;
delay();
}
}
voiddelay()//延时子程序
{
uintc,d;
for(c=0;c<400;c++)
for(d=0;d<400;d++)
{;}
}
6.在keil中进行调试:
(1)创建“数码管”项目,选择单片机型号为AT89C51,汇编源程序,保存为“数码管.ASM”或“数码管.C”。
(2)将源程序添加到项目中。
(3)打开项目菜单,选择Optionsfortarget’target1’选项,点击output一项,在CreateHEXFile前打上对勾。
(4)编译源程序,如果有问题,则需要调试修改,若没有错误,则成功创建“数码管.HEX”文件。
图1.3编译成功提示图
7.在Proteus中进行仿真:
打开Proteus软件,用左键单击单片机,在出现的对话框中,添加“数码管.HEX”文件,开始仿真,效果如下图所示。
图1.4数码管仿真图
图1.5数码管仿真图
拨码开关的高低4位分别可以控制一个数码管,分别显示0到F,符合设计要求。
8.后言:
感想:
经过一段时间的学习,从开始对单片机的一无所知,不感兴趣,到现在的自己编程实现实际问题。
在这一过程中,随着对单片机知识的逐步深入,兴趣也越来越浓厚,自己去查资料的冲动也越来越强烈。
还记得第一次张老师让我们点亮一盏灯时全班同学的一脸茫然,无从下手,但这并不能阻挡我们探索单片机,爱上单片机。
现在看着自己编的程序在单片机上运行,内心的激动那是不言而喻。
张老师说单片机是一门很枯燥的课程,的确如此,如果不是有兴趣作为支撑,很容易半途而废,一无所获。
但是一旦入了门,什么时候想要学了,或者有时间学了,都可以很轻松的捡起来。
单片机的知识浩瀚如海,而我们就像一个呱呱坠地的婴儿,只要怀着一颗好奇、探索的心不断汲取,不断充实自己,将来一定会让自己强壮无比。