单片机 课程设计实验报告文档格式.docx
《单片机 课程设计实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《单片机 课程设计实验报告文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
51单片机74HC5734位数码管汇编
1.系统设计
1.1设计要求
利用数码管动态显示技术,使用开关控制数码管的显示状态,当开关接高电平时,显示“54321”字样,当开关接低电平时,显示“NIHAO”字样。
通过简单修改程序,可以实现流水灯效果或者移动数字和字母显示的位置。
1.2系统设计方案
1.2.1系统设计思路
本设计的目的在于连续显示5个数字或者字母,显示的方法为动态显示技术,利用51单片机和数码管可以容易实现设计要求。
需要解决的问题是如何利用好单片机的I/O口和片内资源、数码管动态显示的方法、控制按键信号的方式(包括按键终端和高低电平状态监测方式)。
1.2.2设计方案对比
方案一:
采用51单片机+5个数码管
图1单片机驱动一个数码管显示电路
如图1所示,采用每个数码管接I/O口的方式,因为数码管的段选信号需要占用8个端口,所以采用这种方式,一个单片机最多也只能接4个数码管,而且无法利用端口获得按键信息,获得高低电平信号来控制显示状态,需要添加一块单片机才可以满足系统要求。
次方案成本高,资源利用率低,效率低下。
方案二:
采用51单片机+4位数码管+译码器+锁存器
图2译码器+锁存器的数码管动态显示
如图2所示,采用4位数码管,采用译码器74HC138控制数码管的位选,增强驱动能力的同时还可以节省单片机的端口,只需要3个I/O口就可以利用译码功能实现8位数码管的位选信号控制。
74HC573是锁存器,保存数码管的段选信号,直接用单片机的P0端口控制即可。
方案三:
采用51单片机+4位数码管+2个锁存器
(a)锁存器电路
(b)4位数码管电路
图3(a)、(b)锁存器动态数码显示电路
如图3所示,采用4位数码管,利用2个锁存器作为数码管的位选和段选信号,由于锁存器74HC573可以利用使能端口控制输出口的信号,只要P1口就可以控制2个锁存器,比方案二进一步提高I/O口的利用率。
方案总结:
通过三个方案的对比,发现利用方案三可以最大化利用硬件资源,而且软件实现也比较简单。
所以本设计采用方案三。
1.2.3系统工作原理
1.2.3.1数码管动态显示技术
(1)四位数码管的定义
四位数码管是一种半导体发光器件,其基本单元是发光二极管。
能显示4个数码管叫四位数码管。
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);
按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
(2)4位数码管的驱动方式
1、静态驱动也称直流驱动。
静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。
静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×
8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:
),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
2、数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"
a,b,c,d,e,f,g,dp"
的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路。
位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。
通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
1.2.3.2锁存器74HC573
1、74HC573和74LS373原理一样,8数据锁存器。
主要用于数码管、按键等等的控制。
2.高阻态:
就是输出既不是高电平,也不是低电平,而是高阻抗的状态;
在这种状态下,可以多个芯片并联输出;
但是,这些芯片中只能有一个处于非高阻态状态,否则会将芯片烧毁;
3.数据锁存:
当输入的数据消失时,在芯片的输出端,数据仍然保持。
真值表:
第四行:
当OE=1是,无论Dn、LE为何,输出端为高阻态;
第三行:
当OE=0、LE=0时,输出端保持不变;
第二行第一行:
当OE=0、LE=1时,输出端数据等于输入端数据。
2.软件设计
2.1软件设计平台
本设计采用单片机开发板HY510,硬件资源如图4所示。
图4开发板
⏹编译器:
KeilC51V8.09
⏹烧写器:
STC-ISPV4.99+CH340USB烧写器
本设计采用KeilC51进行程序的调试和编译,利用烧写器STC-ISP进行烧写。
图5STC-ISP烧写器界面
2.2程序流程图
图6主程序流程图
图7数字/字母显示子程序
(1)程序起始地址
51单片机的程序空间的0000H、0003H、000BH、0013H、001BH、0023H分别为复位、外部中断0、定时/计数器0、外部中断1、定时/计数器1和串行口的中断入口地址。
如果程序不用中断,可以让程序从0000H开始一直连续编下去。
(2)位选和段选信号的切换
利用锁存器74HC573的锁存功能,程序先将控制段选信号的锁存器的使能端打开,此时锁存器输出端等于由P1口输出的段选信号,每个数码管都能收到这个段选信号,但是由于需要动态显示,所以需要利用位选信号来决定点亮哪个数码管。
因为位选和段选信号都是由P1口送出,所以在送出位选信号给另一个锁存器之前,需要先将段选的锁存器锁住,无论P1口为什么信号,段选锁存器输出都保存不变。
然后将位选锁存器使能打开,由P1口送出位选信号,位选锁存器输出就能与P1口的信号,8个数码管就可以根据位选信号决定哪个数码管点亮。
2.3程序清单
见附录1
3.系统测试
3.1系统的性能指标
系统设计的最终效果要达到数码管动态显示,数字的显示顺序正确,显示的稳定性良好,不能出现抖动等现象。
3.2测试方法与步骤
1.利用烧写器将程序烧写到单片机开发板中;
2.打开开发板电源,观察数码管是否从左到右稳定显示数字“54321”;
3.按下开发板上的开关S20,观察数码管是否立即显示“NIHAO”,跳变过程是否快速,显示是否稳定;
4.松开按键,数码管又能重新显示“54321”;
3.3仪器设备名称、型号
设备名称
型号
单片机开发板
HY510
烧写器
CH340
烧写软件
STC-ISPV4.88
3.4测试数据、图表
图8上电显示54321
图9按住按键显示字母NIHAO
4.结论
实验结果显示,系统设计符合课程设计的要求,动态显示结果正确、稳定。
参考文献
[1]贺哲荣,甄旭.MCS-51系列单片机实用编程88例.中国电力出版社,2011.2
[2]张友德,涂时亮,赵志英.单片微型机原理、应用与实验:
A51版.复旦大学出版社,2012.3
[3]张友德,涂时亮,赵志英.单片微型机原理、应用与实验:
C51版.复旦大学出版社,2010.12
[4]赵建领,崔昭霞.精通51单片机开发技术与应用实例.电子工业出版社,2012.6
附录1
;
程序开始
ORG0000H;
复位后起始执行地址
MAIN:
JBP3.0,SKIP_DISP_NUM;
如果按键没有按下,则P3.0口的电平为高电平,调用数字显示子程序
JNBP3.0,SKIP2_DISP_CHAR;
如果按键按下,则P3.0口的电平为低电平,调用字母显示子程序
SKIP_DISP_NUM:
LCALLDISP_NUM
AJMPMAIN;
;
跳转至主程序循环
SKIP2_DISP_CHAR:
LCALLDISP_CHAR
跳转至主程序循环
############################################
延时
DELAY:
MOVR3,#20
D_LOOP1:
MOVR4,#20
DJNZR4,$
DJNZR3,D_LOOP1
RET
显示数字
DISP_NUM:
;
送5
SETBP2.0;
将P2.0都置1;
打开段选,锁存器输出等于输入
MOVP1,#0x92;
P1送段选
CLRP2.0;
将P2.0都置0;
锁住段选信号
SETBP2.1;
打开位选
MOVP1,#0x01;
P1送位选
CLRP2.1;
锁住位选
ACALLDELAY;
延时10ms
送4
打开段选
MOVP1,#0x99;
MOVP1,#0x04;
LCALLDELAY;
送3
MOVP1,#0xb0;
MOVP1,#0x02;
送2
MOVP1,#0xa4;
MOVP1,#0x08;
送1
MOVP1,#0xf9;
MOVP1,#0x10;
显示字母
DISP_CHAR:
送N