数码管显示动态数字单片机报告.docx
《数码管显示动态数字单片机报告.docx》由会员分享,可在线阅读,更多相关《数码管显示动态数字单片机报告.docx(20页珍藏版)》请在冰豆网上搜索。
![数码管显示动态数字单片机报告.docx](https://file1.bdocx.com/fileroot1/2023-3/31/1697fdd2-dce0-47cc-820c-1c5b376a48fa/1697fdd2-dce0-47cc-820c-1c5b376a48fa1.gif)
数码管显示动态数字单片机报告
一、设计题目
通过51系列单片机的串行口和74ls164显示0~9十个数字。
二、设计目的
该单片机最小应用系统设计目的及要求如下:
2.1设计目的要求
1、通过本次实验,掌握单片机串行口的扩展功能;
2、通过对单片机的使用和编程,了解单片机的应用编程;
3、搭建单片机最小应用系统,进一步加深对单片机应用的理解,提高处理实际问题的能力和独立分析思考的能力;
4、掌握单片机汇编编程技术中的设计和分析方法;
5、学会使用并熟练掌握电路绘制软件Protel99SE(或DXP);
6、掌握电路图绘制及PCB图布线技巧。
2.2系统设计意义
1、在系统掌握单片机相应基础知识的前提下,熟悉单片机最小应用系统的设计方法及系统设计的基本步骤。
2、完成所需单片机最小应用系统原理图设计绘制的基础上完成系统的电路图设计。
3、完成系统所需的硬件设计制作,在提高实际动手能力的基础上进一步巩固所学知识。
4、进行题目要求功能基础上的软件程序编程,会用相应软件进行程序调试和测试工作。
5、用AT89S51,74ls164设计出题目所要求的数字显示,实现循环显示,并针对实际设计过程中软、硬件设计方面出现的问题提出相应解决办法。
6、通过单片机应用系统的设计将所学的知识融会贯通,锻炼独立设计、制作和调试单片机应用系统的能力;领会单片机应用系统的软、硬件调试方法和系统的研制开发过程,为进一步的科研实践活动打下坚实的基础。
三、系统硬件图
图1电路原理图
四、程序流程图
五、系统说明与分析
5.1系统主要组成部分
温度测量系统主要分为三个部分:
单片机最小系统,串行转并行部分,数码管显示部分。
所用主要元件有:
AT89S51,74ls164,一位七段数码管。
5.2单片机最小系统部分
5.2.1MCS-51系列单片机概述
MCS-51系列单片机是一种高性能的8位机系列,广泛应用于各种小型控制系统中,其引脚图如图所示。
本论文采用的AT89C51单片机是AMTEL公司生产的MCS-51系列的兼容产品,与MCS-51指令系统兼容,系统结构相同,CMOS工艺制造并带有非易失性Flash程序存储器。
全部支持12时钟和6时钟操作。
AT89C51包含128字节RAM、32条I/O口线、3个16位定时/计数器、6输入4优先级嵌套中断结构、1个串行I/O口(可用于多机通信I/O扩展或全双工UART以及片内振荡器和时钟电路)。
图3MCS-51系列单片机
图4MCS-51引脚图
5.2.2MCS-51系列单片机的并行I/O口
接口电路是微机必不可少的组成部分,并行输入确出接口是CPU和外部进行信息交换的主要通道。
MSC-51系列单片有4个8位并行双向I/O口P0~P3,共32根I/O线。
每一根线能独立用作输入或输出。
单片机可以外接键盘、显示器等外围设备.还可以进行系统扩展,以解决硬件资源不足问题。
4个并行口都是双向口,既可以输入又可以输出。
P0、P2口经常作外部扩展存储器时的数据、地址线,P3口除作I/O口外,每一根都有第二功能。
这4个I/O口结构基本相同,但仍存在差别。
(1)P1口是最常用的I/O口如图所示,因为不作数据地址线,其结构中没有数据地址线,也没有多路开关MUX,输出驱动电路接有上拉电阻。
P1口输入输出时与P0作I/O时相似,输出数据时.先写入锁存器,经Q端反相,再经场效应管反相输出到引脚。
输入时,先向锁存器写l,使v管截止.外部引脚信号由下方读缓冲器送入内部总线,完成读引脚操作。
P1口也可以读锁存器。
外部提升电阻将引脚拉升至高电平,但输人的低电平信号能将其拉低,不会影响低电平的输入。
图5P1口位结构
(2)P2口的位结构比P1多了一个控制转换部分如图5所示,结构与P0口基本相似,如下图所示。
P2口改P0推拉式输出驱动电路为上拉电阻式,当控制信号s为低电平,作I/O口使用时,多路开关MUX使锁存器输出端Q与输出驱动输入端接通,构成一个准双口。
此外,当外部扩展存储器时,P2口常做高8位地址线使用。
图6P2口位结构
下表中概括了单片机中使用到的并行口P1、P2功能:
表1P1、P2功能一览表
(3)P3口的位结构图如图。
P3口为双功能口,当P3口作为通用I/O口使用时,它为准双向口,且每位都可定义为输入或输出口,其工作原理同P1口类似。
图(7)P2口位结构
P3口还具有第二功能,其引脚描述如表2。
对于输出而言,此时相应位的锁存器必须输出为“1”,这样才能有效输出第二功能。
对于输入而言,无论该位是作为通用输入口还是作为第二功能输入口,相应的锁存器和选择输出功能端都应置“1”,这个工作在开机或复位时完成。
表2P3口的第二功能
P3口是一个双功能口,分为第一功能和第二功能,编程时不必事先由软件设置P3口为第一功能还是第二功能。
当CPU对P3口进行访问时,有内部硬件自动将第二功能输出线W置“1”,这时P3口作为通用I/O口;当CPU不对P3口访问时,即用第二功能输入/输出时,由内部硬件使锁存器Q为“1”。
在该试验中用到的就是单片机P3口的第二功能,利用P3^0,P3^1口的第二功能,串行口的数据接收和发送端。
5.2.3MCS-51系列单片机的工作方式和时序
单片机应用系统中,除了基本计算机系统单元电路外.还需配备完整的外围电路、以完成复位、掉电保护、提供时钟、节电等功能。
(1)时钟电路:
单片机内部有一个高增益的反相放大器,通过XTAL1和XTAL2引脚外接石英振于或陶瓷振子、微调电容组成振荡器如图13所示。
该振荡器发出的脉冲直接送入内部时钟电路。
振荡器若外接的是石英扳子,微调电容通常选择30pF;外接陶瓷娠子时选样47pF。
振荡频率范围选择1.2—12M。
MCS5-51系列单片机也可以采用外接时钟,这时XTAL2脚用来输入外部时钟信号(XTAL2脚为内部时钟电路的输入端),XTALl脚则接地如图13-b所示。
对于CHM05工艺制造的80C51单片机,则应从XTALl脚输入外部时钟信号,XTAL2脚悬空。
(a)外接石英晶体振荡电路(b)外接时钟电路
图8两种单片机时钟电路
(a)上电复位(b)按键电平复位
(c)RC放电过程(d)电平复位过程
图9单片机常用复位电路
(2)复位电路:
复位使单片机处于起始状态,并从此状态开始运行MCS5-51单片机RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振荡周期)以上的高电平。
可使单片机复位。
本论文使用的是外部复位电路,单片机在启动后要从复位状态开始运行,因此上电时要完成复位工作,称上电复位,如图14-a所示。
上电瞬间电容两端的电压不能发生突变,只RST端为高电平+5v,上电后电容通过及RC电路放电RST端电压逐渐下降,直至低电平0V,如图14-c所示。
适当选择R、C的值,使RST端的高I电平维持2个机器周期以上即可完成复位。
单片机L在运行过程中,出于本身或外并干扰的原因会导致出错。
这时可按复位键以重新开始远行,按键复位可分为按键电平复位或按健脉冲复位,如图14-b所示。
按键脉冲复位和上电平复值的原理是一样的,都是利用RC电路的放电原理,如图14-d所示。
让RST端能保持一段时间的高电平,以完成复位,按键电平复位时,按键时间也应保持在两个机器周期以上。
根据设计要求和计算简便的原则,我们选择12M的石英晶振、30PF的电容、+5V电源,最小系统如下:
图10单片机最小系统
5.3串行转并行部分
5.3.174ls164的概述
在单片机系统,有时并行口的I/O资源不够,而串行口又没有其他的作用,就可以用74LS164来扩展并行I/O口,节约单片机资源。
74LS164是一个串行输入并行输出的移位寄存器。
并带有清除端。
特别是像AT89C2051这样只有15个I/O口的IC。
IC分析:
MR清除端,为0时,输出清零
CP时钟输入端
CLEAR:
同步清除输入端(低电平有效)
A,B:
串行数据输入端
QA-QH:
并行输出端
当清除端(CLEAR)为低电平时,输出端(QA-QH)均为低电平。
串行数据输入端(A,B)可控制数据。
当A、B任意一个为低电平,则禁止新数据输入,在时钟端(CLOCK)脉冲上升沿作用下Q0为低电平。
当A、B有一个为高电平,则另一个就允许输入数据,并在CLOCK上升沿作用下决定Q0的状态。
引脚功能:
图1174LS164封装图
图12 74LS164内部逻辑图
图13真值表
H-高电平L-低电平X-任意电平↑-低到高电平跳变QA0,QB0,QH0-规定的稳态条件建立前的电平QAn,QGn-时钟最近的↑前的电平
图14时序图
表3建议操作条件
符号
参数
最小值
典型值
最大值
单位
VCC
电源电压
4.75
5
5.25
V
VIH
输入高电平电压ViH
2
-
-
V
VIL
输入低电平电压ViL
-
-
0.8
V
IOH
输出高电平电流IOH
-
-
-0.4
mA
IOL
输出低电平电流IOL
-
-
8
mA
fCLK
时钟频率fCP
0
-
25
MHz
tW
脉冲宽度
时钟
20
-
-
ns
清除
20
-
-
tSU
数据设置时间
17
-
-
ns
tH
数据保持时间
5
-
-
ns
tREL
建立时间
30
-
-
ns
TA
工作温度
0
-
70
°C
表4电气特性
符号
参数
条件
最小值
典型值
最大值
单位
VI
输入钳位电压
VCC=Min,II=-18mA
-1.5
V
VOH
输出高电平电压
VCC=Min,IOH=MaxVIL=Max,VIH=Min
2.7
3.4
-
V
VOL
输出低电平电压
VCC=Min,IOL=MaxVIL=Max,VIH=Min
-
0.35
0.5
V
IOL=4mA,VCC=Min
-
0.25
0.4
II
最大输入电压时输入电流
VCC=Max,VI=7V
-
-
0.1
mA
IIH
输入高电平电流
VCC=Max,VI=2.7V
-
-
20
mA
IIL
输入低电平电流
VCC=Max,VI=0.4V
-
-
-0.4
mA
IOS
输出短路电流
VCC=Max(Note4)
-20
-100
mA
ICC
电源电流
VCC=Max(Note5)
-
16
27
mA
表5动态特性(TA=25℃)
符号
参数
To(Output)
RL
=2kW
单位
CL=15pF
CL=50pF
最小值
最大值
最小值
最大值
fMAX
最大时钟频率
25
-
-
-
MHz
tPLH
低到高电平输出传递延迟时间
时钟输出
-
27
-
30
ns
tPHL
高到低电平输出传递延迟时间
时钟输出
-
32
-
40
ns
tPHL
传递延迟时间
时钟输出
-
36
-
45
ns
5.3.274ls164的功能
1、串行输入带锁存
2、时钟输入,串行输入带缓冲
3、异步清除
4、最高时钟频率可高达36Mhz
5、功耗:
10mW/bit
6、74系列工作温度:
0°Cto70°C
7、Vcc最高电压:
7V
8、输入最高电压:
7V
9、最大输出驱动能力:
5.4数码显示部分
5.4.1概述
七段LED数码管由8个发光二极管组成。
基中7个长条形的发光管排列成“日”字形,另一个圆点形的发光管在显示器的右下角作为显示小数点用,它能显示各种数字及部份英文字母。
LED数码管有两种不同的形式:
一种是8个发光二极管的阳极都连在一起的,称之为共阳极LED数码管;另一种是8个发光二极管的阴极都连在一起的,称之为共阴极LED数码管。
在本试验中用的是共阴极数码管。
5.4.2LED数码管引脚结构
一位七段数码管的引脚结构如下图所示:
图15数码管
图16一位七段数码管的引脚图
其中+是选择阴极和阳极端口,A,B,C,D,E,F,G,DP为字形选择端口。
左边是共阴极数码管,右边是共阳极数码管。
5.4.3LED数码管显示原理
七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表6
表6共阴极数码管的字形表
“0”
3FH
“8”
7FH
“1”
06H
“9”
6FH
“2”
5BH
“A”
77H
“3”
4FH
“b”
7CH
“4”
66H
“C”
39H
“5”
6DH
“d”
5EH
“6”
7DH
“E”
79H
“7”
07H
“F”
71H
5.4.4LED数码管的驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
所谓静态显示,就是每一个显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。
这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码。
动态扫描显示接口是单片机中应用最为广泛的一种显示方式之一。
其接口电路是把所有显示器的8个笔划段A-H同名端连在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制。
CPU向字段输出口送出字形码时,所有显示器接收到相同的字形码,但究竟那个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了。
所谓动态扫描就是指我们采用分时的方法,轮流控制各个显示器的COM端,使各个显示器轮流点亮。
在轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),尽管实际上各位显示器并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。
5.5电路板的制作
Protel99功能强大,为我们进行电子电路原理图和印制板图的设计提供了良好的操作环境。
用Protell99进行电路设计分为两大部分:
原理图的设计和电路板的设计。
原理图的设计实在SCH系统中进行的,电路原理图是印刷板电路设计的基础,只有设计好原理图才有可能进行下一步的电路板设计。
用protel99进行电路板设计的第一步是其原理图的设计。
显然,原理图决定整个电路的基本功能,也是接下来生成网表和设计印刷板电路的基础。
具体步骤如下:
(1)图面设置:
Protel99允许用户根据电路的规模设置图面的大小,按照偏好和习惯设置图面的样式。
实际上,设置图面就是设置了一个工作平面,以后的工作就要在这个平面上进行。
所以图面应该设置得足够大,为进一步工作提供一个足够大的工作空间。
(2)放置元件:
所谓放置元件就是从元件库中选取所需得元件,将其布置到图面上合适的位置,有时还要重定义元件的编号、封装。
元件的封装很重要,要根据元件的实际尺寸和实际封装来决定,要是元件没封装好,将会给以后电路板的制作带来很大的麻烦。
这些都是下一步工作的基础。
Protel99为用户提供了一个非完备的元件库,并且允许用户对这个元件库进行编辑或者新建自己的元件库。
电路板的制作过程
(1)打印:
将生成的PCB图打印到热转印纸上,需注意线不能太窄,墨要加重,否则制板时容易断线,如果在操作过程中断了线,可用电烙铁将锡带过。
(2)熨烫:
将热转印纸覆在铜板上,用电熨斗进行熨烫,关键要注意熨烫的时间,不能太久,也不能时间太短,否则,太久会把铜板烫坏,不够的话墨迹覆不上去。
(3)腐蚀:
把铜板放到三氯化铁溶液中腐蚀,需注意溶液浓度要较高,最好用热水配置,这样腐蚀更快,一般3分钟即可。
如果时间过长,需剩下的铜线也可能被腐蚀。
(4)打孔:
打孔时注意钻头尺寸,本次用的钻头大小是0.712mm的,最需注意的地方是集成块的管脚,如果打孔误差大,管座就很难插上。
(5)放置元件:
放置前应先打磨一下打孔后留下的毛刺,并均匀地涂上松香水(目的是防止铜线氧化,易于焊锡覆着焊盘,但多涂会导致焊接时焊点变黑,影响美观)。
放置元件时注意集成块的管脚,二极管和电解电容的正负,这些都是平时比较容易出错的地方。
(6)焊接:
焊接技术比较难掌握,焊锡、烙铁与焊盘的位置关系,焊锡熔化时间
长短,松香水的浓度,烙铁的温度等等,都是影响焊点美观的因素。
(7)检查:
检查是否有虚焊,集成块管脚位置是否正确,电源引线位置是否恰当等。
检查完毕就能进行调试了。
5.6系统连线说明分析
把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个数码管的a-h端口上;要求:
P0.0/AD0与a相连,P0.1/AD1与b相连,P0.2/AD2与c相连,……,P0.7/AD7与h相连。
调试过程:
1、保证电路板连接正确后,接上电源,测试最小系统是否工作;
2、观察数码管显示的值是否与当前要求显示的值相符,如果不相符,分析原因。
找出问题的所在,解决问题,知道显示正确为止。
实验过程中的问题及改进方法
1、制作电路板过程中由于焊接等原因,造成电路连接不通现象,浪费了调试时间。
2、在实际调试过过程中,由于对最小系统的而不熟悉,而导致开始时候最小系统不工作,复位电路没有反应,在同学的帮助下,找到了问题,调整了焊线,使系统显示正确了。
3、程序编制中,数码管的动态显示和码的调整是个重点,需要花费时间来调试,共阴极数码管的解法不一样,也会导致出现乱码,我在试验的开始的时候就是出现了乱码,我仔细的检查了焊线,重新写了字形码,最后显示正确了。
六、源程序
#include
unsignedcharcodetable1[]={0xfc,0x60,0xda,0xf2,0x66,
0xb6,0xbe,0xe0,0xfe,0xf6};
unsignedcharcodetable2[]={0xf6,0xfe,0xe0,0xbe,0xb6,
0x66,0xf2,0xda,0x60,0xfc};
unsignedcharx;
voiddelay1s(void)
{
unsignedchari,j,k;
for(i=100;i>0;i--)
for(j=20;j>0;j--)
for(k=248;k>0;k--);
}
voidmain()
{
while
(1)
{
for(x=0;x<10;x++)
{
P2=table1[x];
delay1s();
}
EA=1;
EX0=1;
IT0=1;
}
}
voidt0(void)interrupt0using1
{for(x=0;x<10;x++)
{
P2=table2[x];
delay1s();
}
}
七、总结
1、在设计系统过程中,学会用ProtelDXP画原理图和PCB图。
通过查阅相关的书籍,设计了电路原理图,经过仿真和反复的修改电路中元器件的参数得到了可行的电路图。
2、刚开始在电路板制做完成后进行检测,发现小系统不能正常工作,经过自己和同学的排查发现问题所在,原来是复位电路中极性电容接反所致,重新焊接后系统工作正常。
整个过程中大大的提高了动手能力。
3、接下来是最关键的步骤——电路板的调试,软硬件相结合,开始将程序烧到硬件电路中,刚开始工作比较正常,达到了题目的要求,当程序运行几个循环后,发现开始出现错误。
输出的波形比较紊乱,然后进行故障的排查,检查硬件和软件都没有问题,再进行一次调试还是不行,通过查阅数模转换芯片的资料,发现问题的所在,自己将片选信号接到地上可能导致一直工作状态,出现程序紊乱的现象。
将片选信号接到单片机的一个管脚上,通过程序来控制数模转换芯片的工作状态。
经过再一次的调试,程序运行比较稳定。
运算放大器输出正常的波形。
4、调试程序过程中,针对遇到的问题,寻找解决方法,同时学会利用C语言编制单片机程序。
5、经过学习单片机接口实验这门课,使自己对单片机有了更深入的了解,提高了自己的动手能力。
很感谢在整个课程学习中老师和师兄们的指导,以及同班同学的热心帮助。
八、参考文献
[1]孙安青.AT89S51单片机实验及实践教程[M].
[2]秦晓梅.育斌.单片机原理综合实验教程[M].辽宁:
大连理工大学出版社,2004.
[3]明荧.8051单片机基础教程[M].2003.
[4]黎文模.ProtelDXP电路设计与实例精解[M].北京:
人民邮电出版社,2006.
[5]何立民.单片机应用系统设计系统配置与接口技术.北京:
北京航空航天大学出版社,1999.
[6]张友德.单片微型机原理、应用与实验.上海:
复旦大学出版社,1994.
[7]房小翠.单片机实用系统设计技术.北京:
国防工业出版社,1993.
[8]张洪润.单片机应用技术教程.北京:
清华大学出版社,1997.
[9]莫力.Protel电路设计.北京:
国防工业出版社,2005.
[10]肖玲妮,袁增贵.Protel99SE.北京:
清华大学出版社,2003.