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

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。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值