ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-07-25 17:04:27  阅读:369  来源: 互联网

标签:动态显示 数码管 unsigned delay1ms char 单片机 Proteus


单个数码管动态显示

仿真电路(软件为Proteus)

所用元件目录

1、AT89C51RC2:单片机
2、BUTTON:按键
3、CAP:电容
4、CRYSTAL:晶振
5、RES:电阻
6、7SEG-MPX1-CC(红色,共阴极数码管)

注:
1.在Proteus里数码管名称后CC表示共阴极,CA表示共阳极,在选择的时候需要注意跟你写的程序是否匹配。

步骤

对Proteus软件操作步骤:

  1. 新建工程;
  2. 添加元件;
  3. 添加电源:(正:POWER;负:GROUND);
  4. 放置元件,按电路图连接(因单个数码管引脚较近,连接时需得注意,如果不行可换个一端连接);

插入电路图

请添加图片描述
上图就是用仿真软件制作的线路原理图,此时是仿真状态截的图。

插入一段漂亮的代码片(软件为Keil)

下面展示高亮的 代码片.

#include"reg51.h"

unsigned char m[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 
                 //硬件图上我们是正极连接单片机,所以输出1才能点亮数码管
				 //0,1,2,3,4,5,6,7,8,9,这是共阴极数码管0-9的段码

void delay1ms(unsigned char c)  //c=1时,大约为1ms
{  
	unsigned char a,b;  
	for(c ;c>0;c--)  
		for(b=142;b>0;b--)  
			for(a=2;a>0;a--);  
}

void main()
{
	unsigned char i; //设定两个变量
	P2=0x00;  //在开始点亮前,初始化;
	delay1ms(100); //大约延时100ms	
	while(1)
	{										  	
		for(i=0;i<10;i++)	    //把0移到最右边需要10次
		{
			P2=m[i];   //P2口的8个引脚输出轮流输出m数组中的段码
			delay1ms(100000); 	  //延时函数有最大值,因此我设置了三个,
			delay1ms(100000); 	  //这样可以明显看到数码管的数值在滚动显示
			delay1ms(100000);	  //如果要精确的按秒显示,还是得用单片机内的定时器,这个后续会写
		}									
	}		
}

段码

显示0~9的值
共阴极数码管
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 

共阳极数码管
{0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};

标签:动态显示,数码管,unsigned,delay1ms,char,单片机,Proteus
来源: https://blog.csdn.net/void_much/article/details/119082579

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有