单片机——数码管动态显示

这篇具有很好参考价值的文章主要介绍了单片机——数码管动态显示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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个计数周期)是通过实验调整得出的,具体的数值可以根据具体的需求和实际情况进行调整。例如,如果需要加快数码管的显示速度,可以减小时间间隔;如果需要减缓数码管的显示速度,可以增大时间间隔。同时,为了保证数码管显示的稳定性和可靠性,时间间隔也不能太小或太大,需要根据具体的硬件设备和程序实现进行适当的调整。文章来源地址https://www.toymoban.com/news/detail-514184.html

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

	 }
}

到了这里,关于单片机——数码管动态显示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【51单片机】数码管的静态与动态显示(含消影)

    数码管在现实生活里是非常常见的设备,例如 这些数字的显示都是数码管的应用。 注意 :数码管有 共阴 和 共阳 的区分。 在自己设计电路时,应当选用一种数码管时需要选用相应的译码器(共阴配共阴,共阳同理) 数码管的使用: 数码管其实就是一段一段LED构成的,51单

    2024年01月19日
    浏览(42)
  • C51单片机-共阳极数码管循环显示数字0至9,共阴极数码管循环显示5201314(动态)

    keil uVision4界面: proteus仿真界面:

    2024年02月06日
    浏览(58)
  • 单片机C语言实例:3、数码管累加与累减动态显示

    程序实例1: 程序实例2: 程序实例3: 程序实例4: 程序实例5: 程序实例6: 程序实例7: 程序实例8: 程序实例9: 程序实例10: 程序实例11:

    2024年02月09日
    浏览(42)
  • 学习笔记|小数点控制原理|数码管动态显示|段码跟位码|STC32G单片机视频开发教程(冲哥)|第十集:数码管动态显示

    上述图片引用自:51单片机初学2-数码管动态扫描 用一排端口来控制段码,需要显示哪几个就点亮哪几个段,和看电影一样,一个一个的打开,关闭,一个个的画面,组成动画。 具体的控制的流程如图所示,N表示有几个数码管! 其中需要注意每个延时不能太短,我们这边程

    2024年02月07日
    浏览(44)
  • 利用AT89C52单片机实现数码管的静态与动态显示

            资源work1和work2(完整工程文件在笔者本人主页的资源中,免费欢迎下载)分别完成下面两个任务:         1、单片机接矩阵键盘和2个静态数码管,自行设计硬件电路,利用汇编语言,要求将按键值(0~15)在数码管显示。         主要代码: ……      

    2024年02月02日
    浏览(49)
  • 【单片机】【数码管】数码管显示

      1. 数码管的显示器及其接口 单片机系统中 常用的显示器有: 发光二极管LED显示器、液晶LCD显示器、TFT液晶显示器。本文主要是关于LED显示器的说明。 LED显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5x8、8x8点阵等)。 LED数码管根据接法可以分为共阴和共

    2024年02月08日
    浏览(54)
  • 单片机——数码管显示

    LED数码管:数码管是一种简单、廉价的显示器,是由多个发光二极管封装在一起组成“ 8” 字型的器件 一位数码管 八段LED各有名字,八位 引脚定义;和下图序号相对应  阴极连接在同一个端口上——阴极连接    我们单片机上的数码管引脚连接方式是阴极连接,假使要在数

    2024年02月04日
    浏览(59)
  • 单片机数码管显示原理

    1、数码管的基本介绍 先给大家提供一张原理图看一下,如图1所示。 图1 数码管原理图 这是比较常见的数码管的原理图,我们板子上一共有6只数码管。前边有了LED小灯的学习,数码管学习就会轻松的多了。从图1能看出来,数码管共有a,b,c,d,e,f,g,dp这8个段,而实际上,这8个段

    2024年02月07日
    浏览(41)
  • 【51单片机】动态数码管

    0、前言 参考: 普中51单片机开发攻略–A2.pdf 上一章我们主要是介绍一位数码管的内部结构及控制原理。下面我们再来介 绍下多位数码管及动态显示原理的相关知识。 本章所要实现的功能是:控制动态数码管从左至右显示数字 0-7。 为了正规点,工程弄个正规文件夹: http

    2024年01月21日
    浏览(70)
  • 单片机数码管滚动显示学号

    单片机数码管滚动显示学号 在这篇文章中,我们将学习如何使用单片机控制数码管实现学号的滚动显示效果。通过这个项目,我们将展示如何编程控制数码管,以及如何使用循环和延时函数来创建滚动显示效果。下面是代码示例和详细说明。 硬件准备: 单片机开发板(如

    2024年02月03日
    浏览(120)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包