欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

蓝桥单片机_04共阳数码管的动态显示

程序员文章站 2022-03-13 17:18:05
...

1. 题目

蓝桥单片机_04共阳数码管的动态显示
2. 电路图及分析
蓝桥单片机_04共阳数码管的动态显示
蓝桥单片机_04共阳数码管的动态显示

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。