100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

时间:2019-10-11 07:10:50

相关推荐

【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

一、要求

在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份“”,接着是2个分隔符“--”,最后两位是月份,从1月份开始,每个一段时间加1个月,到12月之后又从1月开始递增,如此循环往复。例:--01

二、数码管动态显示设计思路

共阳数码管介绍参考该文章:

【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示_Backlight__的博客-CSDN博客

此处重点说明数码管的动态显示。

数码管动态显示实质上就是轮流点亮单个数码管实现多位数码管整体显示的效果。在轮流显示过程中,每位数码管点亮时间为1~2ms,由于人的视觉暂留现象以及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,人眼看到的就是一组稳定的显示数据,不会有闪烁感,显示效果和静态显示效果一样。动态显示能够节省大量的I/O端口,而且功耗更低。

三、硬件电路分析

硬件电路分析参考该文章:

【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示_Backlight__的博客-CSDN博客

数码管动态显示和静态显示硬件电路相同,所不同的就是程序中动态显示对数码管的位选端状态的控制是分时进行的,而不是同时进行控制。

四、程序

在数码管动态显示的程序编写中,需要逐个开启单个数码管所对应的位选端。为了使动态显示的8位数字显示效果达到和静态显示相同的效果,在对每个数码管进行操作后(即打开位选,设置段选)让其延时1~2ms。

#include <reg52.h>#include <intrins.h>#define uchar unsigned charuchar code table[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0xff};//共阳段码表uchar month;void delay_ms(uchar xms)//@11.0592MHz{uchar i,j;while(xms){ _nop_();_nop_();_nop_();i = 11;j = 190;do{while (--j);} while (--i);xms--;}}void HC138_select(uchar n){switch(n){case 4 :P2 = (P2 & 0x1f) | 0x80;break;case 5 :P2 = (P2 & 0x1f) | 0xa0;break;case 6 :P2 = (P2 & 0x1f) | 0xc0;break;case 7 :P2 = (P2 & 0x1f) | 0xe0;break;}} void SMG_mode(uchar channel,uchar num) //数码管选择显示通道和数字{HC138_select(6); //打开位选P0 = 0x01 << channel;HC138_select(7); //打开段选P0 = num;}void SMG_show(){//显示年份SMG_mode(0,table[2]);delay_ms(2); //此处延时不能过长SMG_mode(1,table[0]);delay_ms(2);SMG_mode(2,table[2]);delay_ms(2);SMG_mode(3,table[2]);delay_ms(2);//显示--SMG_mode(4,table[16]);delay_ms(2);SMG_mode(5,table[16]);delay_ms(2);//显示月份SMG_mode(6,table[month/10]);delay_ms(2);SMG_mode(7,table[month%10]);delay_ms(2);}void delay_SMG(uchar t) //让变化的数码管那两位显示不闪烁{while(t--){SMG_show();}}void system_init(){HC138_select(4); //关闭LEDP0 = 0xff;HC138_select(5); //关闭蜂鸣器和继电器P0 = 0x00;}void main(){system_init();while(1){SMG_show();month++; if(month > 12){month = 1;}delay_SMG(50);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。