单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx

上传人:b****1 文档编号:14434903 上传时间:2022-10-22 格式:DOCX 页数:9 大小:17.20KB
下载 相关 举报
单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx_第1页
第1页 / 共9页
单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx_第2页
第2页 / 共9页
单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx_第3页
第3页 / 共9页
单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx_第4页
第4页 / 共9页
单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx

《单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx(9页珍藏版)》请在冰豆网上搜索。

单片机系统开发之利用串口驱动数码管显示Word文档下载推荐.docx

单片机的最小系统+74LS164接口芯片+两个7段共阴极LED

数码管。

串口工作于方式0,为移位寄存器方式,波特率为固定的fosc/12,不需要定时计数器T1做波特率发生器。

拨码开关的的高低4位分别控制一个数码管,数码管要显示

的数据可以用查表法。

两个数码管并连接在74LS164的输出端,通过选通位来控制

哪一个数码管亮。

74LS164是8位边沿触发式移位寄存器,串行输入,并行输出。

数据通过俩个输入端A或B之一串行输入,任一输入端可以作为高电平使能端来控制另一输入端的数据输入。

俩个输入端或者连接在一起,或者把不用的一端接高电平,一定不要悬空。

钟CP每次有低变高时,数据右移一位输入到Q0。

Q0是两个数据输入端的逻辑与。

3.系统原理图设计:

图1.174LS164接口芯片

系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,拨码开关DIPSW_8,共阴极数码管7SEG-COM-CAT-GRN俩个,74LS164接口芯片一个以及开关SWITCH。

原理图如1.2所示。

图1.2利用串口数据驱动数码管进行相应数码显示

4.系统流程图设计:

开始

串口寄存器设置

初始化P0、P1口

把P1口给累加器A

是否拨动开关低4位

N

Y

高低4位互换

DPTR指向表首地址

判断A的值

查表取数

发送数据

P1是否等于SBUF

结束

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

CJNEA,SBUF,READ

AJMPREAD

///////////////////////////

LOW4:

MOVA,P1

ANLA,#0FH

CJNEA,B,LOOP3

MOVDPTR,#TABLE

XL:

CLRP0.1

LOOP3:

NOP

TABLE:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB7FH,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<

reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

voiddelay();

sbitp01=P0^1;

sbitp00=P0^0;

ucharcode

tab[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X

07,

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();

0XF0;

//高四位

a>

>

=4;

p01=1;

p00=0;

}

voiddelay()//延时子程序

uintc,d;

for(c=0;

c<

400;

c++)

for(d=0;

d<

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.后言:

感想:

经过一段时间的学习,从开始对单片机的一无所知,不感兴趣,到现在的自己编程实现实际问题。

在这一过程中,随

着对单片机知识的逐步深入,兴趣也越来越浓厚,自己去查资料的冲动也越来越强烈。

还记得第一次张老师让我们点亮一盏灯时全班同学的一脸茫然,无从下手,但这并不能阻挡我们探索单片机,爱上单片机。

现在看着自己编的程序在单片机上运行,内心的激动那是不言而喻。

张老师说单片机是一门很枯燥的课程,的

确如此,如果不是有兴趣作为支撑,很容易半途而废,一无所获。

但是一旦入了门,什么时候想要学了,或者有时间学了,都可以

很轻松的捡起来。

单片机的知识浩瀚如海,而我们就像一个呱呱

坠地的婴儿,只要怀着一颗好奇、探索的心不断汲取,不断充实

自己,将来一定会让自己强壮无比。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1