单片机八段数码管显示课程设计.docx
《单片机八段数码管显示课程设计.docx》由会员分享,可在线阅读,更多相关《单片机八段数码管显示课程设计.docx(15页珍藏版)》请在冰豆网上搜索。
![单片机八段数码管显示课程设计.docx](https://file1.bdocx.com/fileroot1/2023-1/7/0bc7a30b-7a80-4fa2-b41e-da325283c077/0bc7a30b-7a80-4fa2-b41e-da325283c0771.gif)
单片机八段数码管显示课程设计
目录
一.前言3
二.设计任务和要求3
2.1设计目的3
2.2设计意义4
三.总原理图及及主要模块的流程图4
3.1七段数码管的字型代码表4
3.2主要流程图7
四.实验步骤:
8
五.程序汇编代码如下9
六.程序调试过程及运行结果12
七.结论与心得16
单片机八段数码管显示课程设计
一.前言
单片微型计算机简称单片机,是典型的嵌入式微控制器(MicrocontrollerUnit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。
单片机由芯片内仅有CPU的专用处理器发展而来。
最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对体积要求严格的控制设备当中。
INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
从上世纪70年代第一批单片机问世,短短二三十年时间,单片机技术已经成为计算机技术的一个重要分支,广泛运用到工业控制、仪器、仪表、消费产品,汽车、办公自动化和通信等领域。
因此,单片机技术已经成为电子、测控、自动化、通信等许多工科专业学生的必备技能。
我用AT89C51芯片来设计一个简单的数码管显示。
此设计给出了源代码,通过仿真测试,其性能指标达到了设计要求。
关键词:
单片机,AT89C51,数码管
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
二.设计任务和要求
2.1设计目的
1.学习基本理论在实践中综合运用的初步经验,掌握模拟电路设计的基本方法、设计步骤,培养综合设计与调试能力。
2.了解AT89C51这个芯片的使用和性能指标测试方法。
3.培养实践技能,提高分析和解决实际问题的能力。
4.了解数码管动态显示的原理及了解74LS164扩展端口的方法。
2.2设计意义
为了更好地熟悉和掌握单片机的基本功能和编程,掌握数码管动态扫描显示原理及实现方法。
自我动态扫描显示电路驱动程序的编写方法。
通过课程设计,达到理论与实际应用相结合,提高学生对微机硬件结构的软件设计方法的理解,使学生能够根据实际应用,初步实现硬件及软件的设计,对硬件开发有更深层的认识,为今后打软硬件开发,打下坚实的基础。
三.总原理图及及主要模块的流程图
3.1本实验仪提供了8段码数码管LED显示电路,学生只要按地址输出相应数据,就可以实现对显示器的控制。
显示共有6位,采用动态方式显示。
8段数码管是由8155的PB0、PB1经74LS164“串转并”后输出得到。
6位位码由8155的PA0口输出,经uA2003反向驱动后,选择相应显示位。
74LS164是串行输入并行输出转换电路,串行输入的数据位由8155的PB0控制,时钟位由8155的PB1控制输出。
写程序时,只要向数据位地址输出数据,然后向时钟位地址输出一高一低两个电平就可以将数据位移到74LS164中,向显示位选通地址输出高电平就可以点亮相应的显示位。
本实验仪中数据位输出地址为0e102H,时钟位输出地址为0e102H,位选通输出地址为0e101H。
本实验涉及到了8155I0/RAM扩展芯片的工作原理以及74LS164器件的工作原理。
3.1七段数码管的字型代码表
显示字形
g
f
e
d
c
b
a
段码
0
0
1
1
1
1
1
1
3fh
1
0
0
0
0
1
1
0
06h
2
1
0
1
1
0
1
1
5bh
a
fb
g
ec
d
。
dp
3
1
0
0
1
1
1
1
4fh
4
1
1
0
0
1
1
0
66h
5
1
1
0
1
1
0
1
6dh
6
1
1
1
1
1
0
1
7dh
7
0
0
0
0
1
1
1
07h
8
1
1
1
1
1
1
1
7fh
9
1
1
0
1
1
1
1
6fh
A
1
1
1
0
1
1
1
77h
B
1
1
1
1
1
0
0
7ch
C
0
1
1
1
0
0
1
39h
D
1
0
1
1
1
1
0
5eh
E
1
1
1
1
0
0
1
79h
F
1
1
1
0
0
0
1
71h
3.2课程设计电路图如下
1.数码管电路图如下
2.8155键显模块
3.2主要流程图
1.主程序的流程图
四.实验步骤:
1、将KEIL仿真器上40芯排线一端和实验箱上51CPU板上的40芯排针连接起来,将仿真器连接的USB或串口线与PC机对应的USB或串口连接起来,打开实验箱电源。
2、进入KEIL软件界面,点击项目/打开项目
在C:
\KEIL\UV2\3000TC51配套实验例程中选择实验一,内有ASM和C51两种程序,进入ASM文件夹打开LED项目文件
进入如图所示界面
点击“调试/启动/停止调试”,进入调试界面,点击“调试/运行”可看到8段数码管交替显示0—F
五.程序汇编代码如下
主程序和子程序都存放在AT89C51单片机中。
主程序的功能是:
显示数字。
子程序的功能有:
延时。
程序代码:
Numequ70h;显示的数据
DelayTequ75h;
org0000h
ljmpStart
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
Delay:
;延时子程序
movr7,#0
DelayLoop:
djnzr7,DelayLoop
djnzr6,DelayLoop
ret
DisplayLED:
movr0,#LEDBuf
movr1,#6;共6个八段管
movr2,#00100000b;从左边开始显示
Loop:
movdptr,#OUTBIT
mova,#00h
movx@dptr,a;关所有八段管
mova,@r0
movB,#8;送164
DLP:
rlca
movr3,a
movacc.0,c
ANLA,#0FDH
movdptr,#DAT164
movx@dptr,a
movdptr,#CLK164
orla,#02h
movx@dptr,a
anla,#0fDh
movx@dptr,a
mova,r3
djnzB,DLP
movdptr,#OUTBIT
mova,r2
movx@dptr,a;显示一位八段管
movr6,#1
callDelaymova,r2;显示下一位
rra
movr2,a
incr0
djnzr1,Loop
movdptr,#OUTBIT
mova,#0
movx@dptr,a;关所有八段管
ret
Start:
movdptr,#0e100h
mova,#03h
movx@dptr,a
movsp,#40h
movNum,#0
MLoop:
incNum
mova,Num
movb,a
movr0,#LEDBuf
FillBuf:
mova,b
anla,#0fh
movdptr,#LEDMap
movca,@a+dptr;数字转换成显示码
mov@r0,a;显示在码填入显示缓冲
incr0
incb
cjner0,#LEDBuf+6,FillBuf
movDelayT,#30
DispAgain:
callDisplayLED;显示
djnzDelayT,DispAgain
ljmpMLoop
END
六.程序调试过程及运行结果
通过用Uvision按编译运行没错误后执行但不调试看到每一步执行结果运行状态的各个内存外存数据变化情况
调试菜单如图所示
寄存器状图
七.结论与心得
此次课程设计使我受益良多,在着一周的时间里我我遇到了很多困难,但是通过同学的和老师的帮主都一一解决了,在作品完成的同时我也感觉到自己对嵌入式有了更多的认识和理解,在此真诚的感谢帮助我的同学和老师。