问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

单片机数码管动态显示实验详解

创作时间:
作者:
@小白创作中心

单片机数码管动态显示实验详解

引用
CSDN
1.
https://m.blog.csdn.net/m0_64711058/article/details/143563007

单片机数码管动态显示实验是学习单片机编程的重要实践内容之一。通过这个实验,可以掌握数码管动态扫描显示的原理和编程实现方法,同时了解软件延时程序的使用。本文将详细介绍该实验的目的、任务、原理、流程和结果分析,帮助读者更好地理解和掌握相关知识。

实验一 数码管动态显示实验

实验目的

  1. 掌握数码管动态扫描显示的原理和编程实现方法;
  2. 掌握软件延时程序的使用。

实验任务

利用数码管动态显示,设计一个两位的秒表,使用软件延时实现。

实验原理

数码管动态显示的连接方式是将所有数码管的段码a、b、c、d 、e 、f、g、dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,如图1-1所示。


图1-1 多位LED数码管动态显示原理图

所谓动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。具体过程是:当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是哪个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以只要将需要显示的数码管的位选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中每位数码管的点亮时间为2ms左右,由于人的视觉暂留现象及发光极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。

实现延时通常有两种方法:一种是硬件延时,这需要用到单片机的定时器,这种方法可以提高CPU的工作效率,也能做到精确控制时间,此方法将在实验四中再学习;另一种方法是软件延时,这种方法主要采用循环体进行。可以采用for循环以及for循环嵌套的方式达到粗略的长时间延时,利用Keil软件可以调试和观察for语句的延时时间。

电路原理图如图1-2所示。


图1-2 数码管动态显示实验电路

注释:上面的原理是课程设计给的模板,不是我写的,仅供参考,如有相同就是参考的,参考书:单片机原理与接口技术实验指导书、单片机原理与接口技术

程序流程图

图一 程序流程图

实验结果及分析总结

  1. 数码管动态显示测试结果
    该电路图根据该实验指导书绘制,使用的软件Proteus 8 Professional,如图二所示,将编写好的代码(代码详情转附录)录入到该电路,从而实现两位的秒表计数,使用软件延时实现。
    图二 电路仿真运行

  2. 编写数码管动态显示代码
    编写的代码内容是ppt课件的内容进行更改编写,课本中的i值是100,由于该实验要求是秒表计数,因此i的值改成了60的数值,j值改59。
    图三 代码编写

  3. 实验总结分析
    通过该实验学会了三点知识点:一、数码管码表的计算,共阴/共阳两种类型的数码管需要注意的内容已经知晓,并学会运用到实际的代码编写中。二、已经掌握使用软件延时的思路和方法。三、掌握数码管动态扫描显示的原理和编程实现方法、在编写代码时需要十分注意仿真电路端口连接位置。多次实践,发现错误解决错误,这是在本次实验中最大的收获。

程序附录

#include <REGX52.H>
unsigned char num[ ]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管代码表
void delay( )
{
    unsigned int a=500;
    while(a--);
}
void main( )
{
    unsigned char n,m; //定义i,j
    while(1)
    {
        m++;
        if(m>60)
            {
                m=0;
                n++;
                if(n>59)n=0;
            }
        P0=num[n/10];P2_0=0;P2_1=1;
        delay( );
        P2_0=1;P2_1=1; //消影处理
        P0=num[n%10];P2_0=1;P2_1=0;
        delay( );
        P2_0=1;P2_1=1; //消影处理
    }
}
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号