1.头文件和定义,代码还使用了 sbit 定义来声明了两个变量 duan 和 wei,它们实际上是 P2.6 和 P2.7 端口的别名,用于控制数码管的段选和位选信号。这种方法可以使代码更具可读性,并提高代码的可维护性。定义无符号整数便于后面应用。

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a,b,c,d,e
sbit duan=P2^6;        //段选信号的锁存器控制
sbit wei=P2^7;     //位选信号的锁存器控制

2.使用一个 16 个元素的数组 table,该数组包含了 0-15 的数字在数码管中对应的段码值。

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0-F的码表

3.延时函数部分
(数码管的显示主要依靠于人的视觉暂存和数码管的余辉),前面亮灯灭灯里面提到过 单片机控制一盏灯的亮与灭程序解释

void delay(uint k){uint i,j;for(i=0;i<k;i++){for(j=0;j<113;j++){;}}}

4.利用取余操作,将要显示的数据拆分开

void culi()      //假设d=123;{a=d/100;       //a=123/100=1,其它的不要,只要1,存进变量a中b=d/10%10;    //b=123/10=12%10=2,只要2,其它的不要,存进变量b中c=d%10;        //c=123%10=3,只要3,其它的不要,存进变量c中}

5.进行位选和段选,也就是显示操作

11110111对应16进制就是0xf7, 所以设置P0口味0xf7进行位选操作,最后将百位发送给P0进行段选,然后延时,完成百位上的数据的显示。十位和个为依次类推。

void pro(){P0=0xf7;   //选择数码管 wei=1;         //选择数码管开启wei=0;        //选择数码管关闭P0=table[a]; //送段码百位duan=1;      //段位开duan=0;   //段位关delay_ms(5);//延时P0=0xef;wei=1;wei=0;P0=table[b]; //送段码十位duan=1;duan=0;delay_ms(5);P0=0xdf;wei=1;wei=0;P0=table[c]; //送段码个位duan=1;duan=0;delay_ms(5);e++;}

6.主函数部分
d是数码管要显示的数字,e在这里的作用是实现自加操作,当加至一定数量的时候,d变也会自加,于是可以看到数码管上的数字逐渐增大。主程序就是先对d进行拆分,进入循环之后,进行数码管显示(数码管显示里面包括了e自加),e自加到一定数量后d自加,e置零,d拆分,之后在while死循环中进行显示,下一个流程也是这样的。关于为什么e自加到50,代码中在pro()函数中使用e变量计数,是为了控制数码管显示的速度和循环显示的次数。每次进入pro()函数后,会将当前数码管的值显示出来,并将e的值自加1,表示等待下一次显示的时间。当e的值累计到50时,if(e==50)语句会触发执行一些特定的操作,即将变量d自加1,并调用culi()函数将d分解为百位、十位和个位数,以便在下一轮循环中显示出来。这是因为在该代码中,每50个计数周期后需要切换到下一个数字进行显示,即在一个特定的时间间隔内更新数码管的显示值,以达到流畅的显示效果。如果不进行分解操作,就无法在下一轮循环中显示下一个数字。需要注意的是,这个特定的时间间隔(50个计数周期)是通过实验调整得出的,具体的数值可以根据具体的需求和实际情况进行调整。例如,如果需要加快数码管的显示速度,可以减小时间间隔;如果需要减缓数码管的显示速度,可以增大时间间隔。同时,为了保证数码管显示的稳定性和可靠性,时间间隔也不能太小或太大,需要根据具体的硬件设备和程序实现进行适当的调整。

void main()
{  d=0;            //要显示的变量e=0;           //自加的速度标志。culi();   while(1){pro();        //数码管显示。if(e==50)    //e测试等于50就执行下面的语句。{e=0;        //e=0d++;        //d自加1culi();   //处理d,就是把d分成百位,十位,个位。}}
}

单片机——数码管动态显示相关推荐

  1. 蓝桥杯单片机数码管动态显示_单片机静态动态数码管

    单片机系统中常用的显示器有: 发光二极管LED(Light Emitting Diode)显示器.液晶LCD(Liquid Crystal Display)显示器.TFT液晶显示器等.LED显示器有两 ...

  2. STC89C52单片机 数码管动态显示

    数码管动态显示 静态与动态显示 动态显示 动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效.选亮数码管采用动态扫描显示.所谓动态扫描显示即轮流向各位数码管送出字形码和相 ...

  3. c语言数码管流动显示一个数,51单片机数码管动态显示 - 数码管动态扫描显示01234567程序(三种方案)...

    数码管动态扫描显示01234567程序二--51单片机动态显示共阳数码管01234567 原理图 c语言程序 程序如下: #include #define uint unsigned int #def ...

  4. C51单片机数码管动态显示

    数码管作为最廉价的输出设备,在各种自动化设备中有很大的应用,最简单普通的显示方式为动态刷新显示,称为假动态显示,即通过分时扫描每一位,利于人眼的视觉停留现象,造成一种静态显示的效果,如下图所示: C5 ...

  5. 蓝桥杯单片机数码管动态显示_关于蓝桥杯训练小程序 中断控制数码管显示数字的左右移动...

    /******************************************************************************************** 利用数码管在 ...

  6. 两位动态数码管电子秒表c语言,清翔电子51单片机6课动态显示数码管作业秒表...

    单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟单片机数码管电子钟 相关下载链接://download. ...

  7. 51单片机:共阴数码管动态显示(定时器+中断)

    注意"引脚号",不同的单片机,接入的I/O口可能不同.代码依据下方给出的仿真图接线进行编写. /************************** Title :数码管动态显示( ...

  8. 51单片机:数码管动态显示

    要求 51单片机,用三个7段共阴极数码管动态显示0~99,每隔0.5s刷新一次数字.用keil与Proteus联合仿真. 硬件设计 以AT89C51单片机为核心,包括74HC573锁存器,三个7段共阴 ...

  9. 蓝桥杯单片机——数码管的动态显示(4)

    一.原理分析 数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管 ...

最新文章

  1. 数码管字体属于什么字体_photoshop里这方法就能知道图片上文字使用的是什么字体...
  2. c语言中的void指针,C程序中void指针的概念
  3. php制作软件工具,开源10款热门教学相关的开源软件(教学平台和制作工具)
  4. 专栏 | 基于 Jupyter 的特征工程手册:数据预处理(三)
  5. LeetCode 1808. 好因子的最大数目(整数拆分,乘积最大)
  6. 如何判断线程池已经执行完所有任务了?
  7. 9 10次c语言上机作业答案,第十五次上机作业带答案
  8. python匿名函数使用
  9. java jquery怎么取值_jquery 取值
  10. Learning Modern 3D Graphics Programming笔记
  11. HDU2206 IP的计算【文本处理】
  12. 操作系统—死锁的避免
  13. 世界最小的QI标准无线充电接收模块,亲测不错。
  14. Ajax案例:简易的购书网页
  15. apktool下载安装
  16. zookeeper领导者选举源码分析
  17. 吉林大学软件学院期末题答案(10-16级)
  18. Apache ShardingSphere
  19. java高频面试题-设计模式
  20. iOS App 友盟授权登录后,如何获取微信unionid

热门文章

  1. Python-Pandas-利用append方法进行DataFrame数据添加
  2. h2ouve工具使用_‎证照采集星-超好用的证件照批量采集工具 v App Storu
  3. 业务模型、数据模型、面向对象模型介绍
  4. vue路由匹配实现包容性_包容性机器学习:解决模型公平问题
  5. 亚马逊跨境电商利润这么大?
  6. 10个心理学故事引出的各种效应
  7. 漫步STL-map AND set
  8. 基于ASP.NET的企业人事管理系统
  9. Android 开发过程中遇到的棘手的问题笔记(SP引起的ANR,4G网络请求慢,app启动白屏)(持续更新)
  10. 【论文理解】yolov3损失函数