历史上的今天
返回首页

历史上的今天

今天是: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 元器件清单

元器件型号

规格参数

数量

电阻

10kΩ

1个

电阻

220kΩ

1个

电容

10nF

1个

电容

22pF

2个

晶振

11.0592MHz

1个

单片机

STC89C52

1个

VCC

5V

3个

GND

接地

3个

按键

四角直插

1个

4位LED数码管


2个

74HC573


2个

3.2.2 单片机最小系统设计

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;

……………………



推荐阅读

史海拾趣

DL Instruments LLC公司的发展小趣事

DL Instruments LLC的前身是Ithaco Corporation的精密仪器部门。在Edgar Seymour总裁的领导下,这个部门于1995年被出售给当时担任Ithaco Corporation质量总监的David Woolston先生。这一决定标志着公司从一个大型企业的一个部门,转型为一个独立的、专注于精密仪器制造的新实体——DL Instruments LLC。

Deutron Electronics Corp公司的发展小趣事

随着环保意识的日益提高,Deutron Electronics Corp也积极响应环保号召,致力于实现绿色生产和可持续发展。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还加大了对节能减排的投入,提高了资源利用效率。这些努力使得Deutron Electronics Corp在行业内树立了良好的环保形象,也为公司的长期发展奠定了坚实基础。

长园维安(CYGWAYON)公司的发展小趣事

长园维安一直注重产品质量管理。公司建立了完善的质量管理体系,通过ISO9001、TS16949等认证,确保产品质量的稳定性和可靠性。此外,长园维安还积极推行6Sigma等质量管理方法,不断提高产品质量和客户满意度。这些措施使长园维安赢得了客户的信赖和好评。

Elektron公司的发展小趣事

随着业务的不断拓展和市场的不断扩大,Elektron公司逐渐将目光投向了全球市场。公司在全球范围内设立了多个代表处和分支机构,与当地的合作伙伴建立了紧密的合作关系。通过全球化战略的实施,Elektron成功进入了焊接设备、等离子切割设备和电池服务设备的高端市场,并成为了世界市场的领导者之一。

ACI [Applied Concepts, Inc.]公司的发展小趣事

为了进一步提升市场影响力,ACI公司积极寻求与其他行业领导者的战略合作。通过与知名电子产品制造商、芯片供应商等建立紧密的合作关系,ACI得以获取更优质的资源和技术支持。这些合作不仅提升了ACI的产品质量和技术水平,还扩大了公司的市场影响力,为公司的长远发展奠定了坚实基础。

Hanghsing Enterprise Co Ltd公司的发展小趣事

随着全球电子市场的不断扩大,ACI公司开始将目光投向海外市场。公司积极实施国际化战略,通过设立海外分支机构、参加国际展会等方式拓展市场。同时,ACI还加强了与国际同行的交流与合作,共同推动电子行业的发展。通过国际化布局,ACI成功打开了海外市场的大门,为公司的发展注入了新的动力。

问答坊 | AI 解惑

PIC系列8位单片机源程序详解

PIC系列单片机的源程序是指PIC的助记符指令编写的程序(汇编语言程序)。这里将对PIC源程序的格式要求和其源程序的建立或书写作简要的介绍。     一般来说对PIC的源程序格式并没有要求统一的编写形式,用户可以根据习惯来编写,当然编写时应遵 ...…

查看全部问答>

OrCAD 10.5 安装后Layout 无法使用的问题?

最近装了个OrCAD10.5 后Capture 可以正常使用,但是Layout 老是提示出错: Lsession.exe - 致命的应用程序退出 Error code 0038.401 (Error accessing Layout Registry key, OrCADLayoutStd10.5.0\\shell\\open\\path) 这个问题要怎样解决。 装 ...…

查看全部问答>

状态机

人人共享!…

查看全部问答>

第5/15原创,事无巨细,矩阵键盘

事无巨细,矩阵键盘        停笔好几天,今天复工。今天要跟大家分享一下关于用AVR MEGA16扫描矩阵键盘的一些应用心得。拙劣之见,经不起推敲。权当抛砖引玉罢。 矩阵键盘,顾名思义,一些按键按一个矩阵的形状排列,就成了 ...…

查看全部问答>

运算放大器电路固有噪声的分析与测量

运算放大器电路固有噪声的分析与测量(第一部分) 第一部分:引言与统计数据评论 我们可将噪声定义为电子系统中任何不需要的信号。噪声会导致音频信号质量下降以及精确测量方面的错误。板级与系统级电子设计工程师希望能确定其设计方案在最差条件 ...…

查看全部问答>

调试stm32f103rbt6出错,求助

买的一块开发板,去年玩了两个月,随便怎么搞,都没有问题,今年有个项目想用这个芯片,想先在这块板子上验证一下某些功能,结果就下载进去一次程序就再也下不进去了,使用的jlink v7,已经下载进去的程序一直能够正常运行各种设置如下: ...…

查看全部问答>

【低功耗】FPGA厂商出击低功耗技术瓶颈

 在手持、移动和便携式消费电子市场快速增长的今天,用可编程逻辑器件实现系统设计的比重也在不断增加。随着半导体制造工艺技术的提升,FPGA在规模、速度、价格等方面的竞争力都得到了极大的改善,而与此同时如何有效地控制FPGA的功耗则显得越 ...…

查看全部问答>

HDVICP_H.264压缩问题

1.dsp端单独运行HDVICP测试程序,通过开发器读取本地文件进行H.264压缩,压 缩结果正确可以播放。由于测试程序读取的测试图像较小为176*144,用开发器读 取本地文件的时间还可以接受,当尝试测试2448*2048的图像压缩时,粗略计算用 开发器读取本 ...…

查看全部问答>

关于msp430g2553的io中断的问题

实验目的:按下按键(P1.3对应),LED发光二极管(对应P1.0)亮灭状态改变。     于是用如下程序,发现没有预期的效果,也不知道哪里出了问题,大家帮我看看,谢谢! #include   void main(void) { WDTCTL = WDTPW + WDT ...…

查看全部问答>

HELPER2416开发板——Fedora安装

HELPER2416开发板收到4、5天了。刚忙完手头的东西,最近终于可以腾出时间来玩HELPER2416了。 HELPER2416资料下完了。看了一下还是有点迷糊,资料不是很系统。再加上手头工具不全,订购的工具还在路上。所以先装fedora.VMware还算有点了解。 ...…

查看全部问答>