ICode9

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

【蓝桥杯-单片机设计与开发】3.定时器实现数码管显示

2022-01-04 11:34:55  阅读:176  来源: 互联网

标签:char 定时器 21 单片机 unsigned 蓝桥 数码管 动态显示


1.显示原理:

(1)静态显示

静态显示方式是指当显示器显示某一字符时,发光二极管的位选始终被选中。在这种显示方式下,每一个LED数码管显示器都需要一个8位的输出口进行控制。采用这种方法的缺点是,采用的IO口较多,因为单片机的IO口资源有限,通常需要扩展IO口。

(2)动态显示

动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效,选亮数码管采用动态扫描显示。
所谓动态扫描显示即利用发光二极管的余辉和人眼视觉暂留作用,使人感觉好像各位数码管同时都在显示。不过动态显示的亮度要比静态显示要差一些,不过问题不大。

2.定时器实现数码管动态扫描

延时方法实现动态显示,在延时过程中单片机不能执行其他任务,只能等待,等到延时延时时间过去之后单片机才可以执行下一步任务。
采用定时器方法实现动态扫描则可以避免这种情况,定时器好比闹钟,设定时间到就会提醒一次,只要在提醒时进行数码管扫描就可以了。

3.原理图

4.共阳数码管段码表

/***********************************************************************
第一行是从0~9
第二行是从0~9带“.”
第三行是 “-”和 灭
************************************************************************/
unsigned char code SMG[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
			  0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
			  0xbf,0xff};



5.代码实现




unsigned char POS=0;


unsigned char smgdat[8]={21,21,21,21,21,21,21,21};
unsigned char code SMG[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
			  0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
			  0xbf,0xff};



void Timer2Init(void)		//2毫秒@12.000MHz
{
	AUXR |= 0x04;		//定时器时钟1T模式
	T2L = 0x40;		//设置定时初值
	T2H = 0xA2;		//设置定时初值
	AUXR |= 0x10;		//定时器2开始计时

	/*后加的部分*/
	EA=1;
	IE2|=0x04;
}




void display(unsigned char pos,dat){

	hc138(6);P0=0x01<<pos;P2&=0x1f;
	hc138(7);P0=dat; P2&=0x1f;
}

void T2_Display()interrupt 12
{
	hc138(6);P0=0x00;
	display(POS,SMG[smgdat[POS]]);
	if(++POS==8)POS=0;
	

}



标签:char,定时器,21,单片机,unsigned,蓝桥,数码管,动态显示
来源: https://www.cnblogs.com/harper-blogs/p/15761821.html

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

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

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

ICode9版权所有