历史上的今天
今天是:2024年11月27日(星期三)
2019年11月27日 | 单片机8位LED数码管的静态显示课程设计说明书与仿真
2019-11-27 来源:51hei
设计单片机控制8位LED数码管的动态驱动电路,并编写程序实现在8位LED数码管上静态信息的显示。
电路方面主要包括以下3部分。
(a)设计单片机的最小系统(包括复位电路和外接的晶振电路),并确定相关元器件参数。
(b)采用动态驱动的方式,设计单片机并行端口与LED数码管的动态显示电路,包括LED数码管位选线和段选线的连线。
(c)设计LED数码管位选端(线)给电流电路。
编写单片机控制(驱动)8位LED数码管显示程序,实现数字(0—9)或简单的英文字符(A—F)的静态信息显示。显示方式和内容自定,如每隔一段时间循环显示数字0—9 或英文字符(A—F)。
下面是该仿真实验的课程设计说明书的重要内容节选(附件里面有proteus仿真工程文件+完整代码下载):
4 结果分析
4.1 程序调试与仿真
完成硬件设计和软件程序编写后,将Keil uVision4软件中编辑好的程序输出文件载入Protues软件中的单片机STC89C52,进行仿真。按照显示的结果进行程序的调试,显示的时间通过延时函数改变。调试结束后,可以验证该设计的硬件方案和软件方案的正确性。首先没有出现错误显示且显示的数字稳定清晰,说明了电路原理的合理,所选元件也是正确的;其次显示的内容也与所编程序相符合,说明软件方案也是可行的。
4.2 仿真结果
调试完成后进行仿真,仿真开始运行后8位LED数码管上依次显示数字“0”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,并循环显示。结果如图4-1,图4-2,图4-3所示,分别为显示的“0”“1”“9”三个数字。

图4-1 仿真结果

图4-2 仿真结果

图4-3 仿真结果
5 结论和总结
本次单片机课程设计历时两周,从开始的查阅资料,初步确定设计方案,到熟悉protues和keil uvison4两个应用软件,最后进行程序编写和仿真图制作。通过本次课设,我完成了8位LED数码管显示的要求,在这过程中,我掌握了单片机指令系统中c语言的基本语句以及C语言的基础知识,还有单片机与其他设备相连接输入输出接口技术。虽然过程磕磕绊绊,但在老师的课设指导和同学的帮助下,还是顺利完成了。得出结果固然重要,但是在这个过程中的收获则更为珍贵。
1 选题背景1.1 课题简介
LED数码管(LED Segment Displays)由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划,公共电极。数码管实际上是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。

图1-1 选题背景图
当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。如:显示一个“2”字,那么应当是a亮b亮g亮e亮d亮f不亮c不亮dp不亮。LED数码管有一般亮和超亮等不同之分,也有0.5寸、1寸等不同的尺寸。小尺寸数码管的显示笔画常用一个发光二极管组成,而大尺寸的数码管由二个或多个发光二极管组成,一般情况下,单个发光二极管的管压降为1.8V左右,电流不超过30mA。发光二极管的阳极连接到一起连接到电源正极的称为共阳数码管,发光二极管的阴极连接到一起连接到电源负极的称为共阴数码管。常用LED数码管显示的数字和字符是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F。1.2 指导思想
本课题需要了解LED数码管结构及字形码,熟悉LED数码管动态驱动的基本原理。设计单片机控制8位LED数码管的动态驱动电路,并编写程序实现在8位LED数码管上静态信息的显示。
2 方案论证2.1 设计原理
本课题采用动态驱动的方式,即将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。通过动态扫描轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
2.2 设计方案
2.2.1 硬件方案
硬件电路由四部分组成,即单片机最小系统,数据字符段控制电路,位选择传输电路,LED数码管显示电路。各部分实现功能及设计如下:
a)单片机最小系统包括外接时钟电路和单片机复位电路。时钟电路由一个晶振和两个小电容组成,用来产生时钟频率;复位电路由一个电阻、按键和一个电容组成,用来产生复位信号,使单片机上电的时候复位。
b)数据字符段控制电路采用一片74HC573组成,与单片机的I/O口中的P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7口相连,通过P2.6口进行数据字符段进行选择控制。(74HC573是八路输出的透明锁存器,数据的进和出没有逻辑关系,当锁存使能端LE为高时,这些器件的锁存对于数据是透明的。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。输出能直接接到CMOS,NMOS 和TTL 接口上。)
c)位选择传输电路同样采用一片74HC573组成,与单片机的I/O口中的P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7口相连,通过P2.6口进行位选择控制。
d)8位LED数码管显示屏由两个7SEG-MPX4-CC拼接而成。2.2.2 软件方案
本次设计软件方案程序使用C语言编写,主要包括循环显示数字主函数,显示函数,字符段数据的有关函数,选位控制的有关函数以及延时函数。
2.3 方案特点该方案硬件方面,字符数据段和位选控制分别用一个74HC573进行控制,74HC573实质是锁存器,能够实现“直入直出”的功能。使用一个I/O口就分别完成了字符数据与位选数据的发送。只需用74HC573的LE口进行锁存控制即可完成字符段与位选的不同数据输出,这样只需一个I/O口即可,极大节省了I/O资源。
该方案软件方面,采用C语言进行编译,相对于汇编语言它具有灵活性强,可移植性强,库函数多的特点。3 8位LED数码管显示器的静态信息显示过程设计论述3.1 系统硬件框图设计
根据确定的硬件方案设计系统硬件框图,包括为单片机提供时钟信号的晶振电路,进行复位操作的复位电路,字符段控制电路,位选传输电路,LED数码管显示电路。如图3-1所示。
图3-1 系统硬件框图(详见附件)
3.2 系统原理图设计3.2.1 整体原理图
根据系统硬件框图分为四大部分设计整体硬件图,如图3-2所示。

图3-2 原理图
电路设计需要的元器件包括电阻,电容,单片机,锁存器,LED数码管等。具体元器件规格数量见表3-1所示。[1]
表3-1 元器件清单
AT89C51单片机芯片内部有一个反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡器电路的输入端和输出端,时钟由内部和外部生成,引脚上外接定时元件,内部震荡电路产生自激振荡。系统采用的定时元件为石英晶体和电容组成的并联谐振回路。晶振频率选择11.0592MHz,电容值取22PF。元件清单见表3-1所示。具体线路连接如图3-3所示。

图3-3 单片机最小系统3.2.3 字符段控制电路设计
用一个74HC573锁存器,输入端接STC89C52的P0口,LE端接P2.6控制锁存输出。具体电路连接如图3-4所示。

图3-4 字符段控制电路3.2.4 位选传输电路设计
用一个74HC573锁存器,输入端接STC89C52的P0口,LE端接P2.7控制锁存输出。具体电路连线如图3-5所示。

图3-5 位选传输电路3.3 驱动程序
3.3.1 程序流程
程序主要有头文件,端口定义,定义所用的函数,字符函数,具体函数编写包括主函数。根据电路图原理,主体流程图如图3-6所示(详见51hei附件)。
单片机源程序如下:
#include #include #define uint unsigned int #define uchar unsigned char sbit DA=P2^6; // sbit WEI=P2^7; // uint shu=0; unsigned char code tab[] ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x00,0x5c};//共阴数码码表 unsigned char Display_Digit[]={0,0,0,0,0,0,0,0,0,0};//待显示 void Delay(uint x) { while(--x); } void delayms(uint z) //延时N ms { uint x,y; for(x=z;x>0;x--) for(y=120;y>0;y--); } //7F,BF,DF,EF, F7,FB,FD,FE void SMG_DIS(void) // { P0 = 0xFE; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xFD; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xFB; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xF7; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xEF; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xDF; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0xBF; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); P0 = 0x7F; WEI=1; WEI=0; //位控制 P0=(tab[shu]); //个位和小数点 DA=1; DA=0; //显示数据输出 delayms(3); } void main(void) { uint d=0; //整型数据 uint i=0; Display_Digit[0]=1; Display_Digit[1]=2; Display_Digit[2]=3; Display_Digit[3]=4; Display_Digit[4]=5; Display_Digit[5]=6; Display_Digit[6]=7; ……………………
史海拾趣
|
PIC系列单片机的源程序是指PIC的助记符指令编写的程序(汇编语言程序)。这里将对PIC源程序的格式要求和其源程序的建立或书写作简要的介绍。 一般来说对PIC的源程序格式并没有要求统一的编写形式,用户可以根据习惯来编写,当然编写时应遵 ...… 查看全部问答> |
|
最近装了个OrCAD10.5 后Capture 可以正常使用,但是Layout 老是提示出错: Lsession.exe - 致命的应用程序退出 Error code 0038.401 (Error accessing Layout Registry key, OrCADLayoutStd10.5.0\\shell\\open\\path) 这个问题要怎样解决。 装 ...… 查看全部问答> |
|
事无巨细,矩阵键盘 停笔好几天,今天复工。今天要跟大家分享一下关于用AVR MEGA16扫描矩阵键盘的一些应用心得。拙劣之见,经不起推敲。权当抛砖引玉罢。 矩阵键盘,顾名思义,一些按键按一个矩阵的形状排列,就成了 ...… 查看全部问答> |
|
运算放大器电路固有噪声的分析与测量(第一部分) 第一部分:引言与统计数据评论 我们可将噪声定义为电子系统中任何不需要的信号。噪声会导致音频信号质量下降以及精确测量方面的错误。板级与系统级电子设计工程师希望能确定其设计方案在最差条件 ...… 查看全部问答> |
|
买的一块开发板,去年玩了两个月,随便怎么搞,都没有问题,今年有个项目想用这个芯片,想先在这块板子上验证一下某些功能,结果就下载进去一次程序就再也下不进去了,使用的jlink v7,已经下载进去的程序一直能够正常运行各种设置如下: ...… 查看全部问答> |
|
在手持、移动和便携式消费电子市场快速增长的今天,用可编程逻辑器件实现系统设计的比重也在不断增加。随着半导体制造工艺技术的提升,FPGA在规模、速度、价格等方面的竞争力都得到了极大的改善,而与此同时如何有效地控制FPGA的功耗则显得越 ...… 查看全部问答> |
|
1.dsp端单独运行HDVICP测试程序,通过开发器读取本地文件进行H.264压缩,压 缩结果正确可以播放。由于测试程序读取的测试图像较小为176*144,用开发器读 取本地文件的时间还可以接受,当尝试测试2448*2048的图像压缩时,粗略计算用 开发器读取本 ...… 查看全部问答> |
|
实验目的:按下按键(P1.3对应),LED发光二极管(对应P1.0)亮灭状态改变。 于是用如下程序,发现没有预期的效果,也不知道哪里出了问题,大家帮我看看,谢谢! #include void main(void) { WDTCTL = WDTPW + WDT ...… 查看全部问答> |
|
HELPER2416开发板收到4、5天了。刚忙完手头的东西,最近终于可以腾出时间来玩HELPER2416了。 HELPER2416资料下完了。看了一下还是有点迷糊,资料不是很系统。再加上手头工具不全,订购的工具还在路上。所以先装fedora.VMware还算有点了解。 ...… 查看全部问答> |




