蓝桥单片机_04共阳数码管的动态显示
程序员文章站
2022-03-13 17:18:05
...
1. 题目
2. 电路图及分析
3. 代码
#include "reg52.h"
unsigned char month=1;
unsigned char SMG_duanma[18]=
{
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f
};
void Select_HC573MIR(unsigned char 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 Delay_year(unsigned int n)
{
while(n--);
}
void Display_SMGbit(unsigned char pos,unsigned char value)
{
Select_HC573MIR(6);
P0=0x01<<pos; //选择端口
Select_HC573MIR(7);
P0=value; //选择段码
}
void Display_SMGYear() //显示年份2018
{
//显示年份2018
Display_SMGbit(0,SMG_duanma[2]);
Delay_year(500);
Display_SMGbit(1,SMG_duanma[0]);
Delay_year(500);
Display_SMGbit(2,SMG_duanma[1]);
Delay_year(500);
Display_SMGbit(3,SMG_duanma[8]);
Delay_year(500);
//显示--
Display_SMGbit(4,SMG_duanma[16]);
Delay_year(500);
Display_SMGbit(5,SMG_duanma[16]);
Delay_year(500);
//显示月份
Display_SMGbit(6,SMG_duanma[month/10]);
Delay_year(500);
Display_SMGbit(7,SMG_duanma[month%10]);
Delay_year(500);
}
void Delay_month(unsigned int n)
{
while(n--){
Display_SMGYear();
}
}
void main()
{
while(1){
Display_SMGYear();
month++;
if(month>12)
month=1;
Delay_month(200);
}
}
4. 部分代码解释
void Delay_month(unsigned int n)
{
while(n--){
Display_SMGYear();
}
}
月份进行延迟时,要把显示年月的函数放进去。
Delay_month(200);
月份延迟时间要小于年份延迟时间。
5. 注
本博客是学习完B站某视频后所写,如有错误,欢迎指正;如有侵权,删除。
学习网址:https://www.bilibili.com/video/av41275873?p=4。