蓝桥杯单片机快速开发笔记——数码管

一、原理分析

二、思维导图

三、代码示例

#define TSMG  500   //定义动态显示中单个数码管点亮时长

void Delay_SMG(unsigned int t)  //数码管专用延时
{
	while(t--);
}

code unsigned char SMG_NoDot[] = 
{
	0xc0, //0
	0xf9, //1
	0xa4, //2
	0xb0, //3
	0x99, //4
	0x92, //5
	0x82, //6
	0xf8, //7
	0x80, //8
	0x90, //9
	0x88, //A
	0x83, //b
	0xc6, //C
	0xa1, //d
	0x86, //E
	0x8e, //F
	0xbf, //-
	0x7f  //.
};

code unsigned char SMG_Dot[] = 
{
	0x40, //0.
	0x79, //1.
	0x24, //2.
	0x30, //3.
	0x19, //4.
	0x12, //5.
	0x02, //6.
	0x78, //7.
	0x00, //8.
	0x10  //9.
};


void DisplaySMG_All(unsigned char value)                           //全部数码管静态显示
{
	Set_HC573(6, 0xff);  //使能所有数码管
	Set_HC573(7, value); //要显示的内容
}

void DisplaySMG_Bit(unsigned char pos, unsigned char value)        //单个数码管动态显示
{
	Set_HC573(6, 0x01<<pos);    //打开数码管位选
	Set_HC573(7,value);         //要显示的内容
	Delay_SMG(TSMG);
	Set_HC573(6, 0x01<<pos);    //打开数码管位选
	Set_HC573(7,0xff);          //消影
}
  1. Delay_SMG(unsigned int t)函数:

    • 这个函数用于实现数码管专用的延时,通过一个简单的循环等待来实现延时效果。
    • 参数t表示延时的时长,函数会在循环中不断减小t直到t为0,从而实现延时。
  2. SMG_NoDot[]SMG_Dot[]数组:

    • SMG_NoDot[]数组存储了不带小数点的数码管显示数据,包括0-9、A-F、负号和下标点。
    • SMG_Dot[]数组存储了带小数点的数码管显示数据,包括0.-9.。
  3. DisplaySMG_All(unsigned char value)函数:

    • 这个函数用于实现全部数码管的静态显示。
    • 首先通过Set_HC573(6, 0xff)使能所有数码管。
    • 然后通过Set_HC573(7, value)设置要显示的内容,其中value为要显示的数码管数据。
  4. DisplaySMG_Bit(unsigned char pos, unsigned char value)函数:

    • 这个函数用于实现单个数码管的动态显示。
    • 首先通过Set_HC573(6, 0x01<<pos)打开指定位置的数码管位选。
    • 然后通过Set_HC573(7, value)设置要显示的内容,其中value为要显示的数码管数据。
    • 调用Delay_SMG(TSMG)函数进行延时,控制数码管点亮时长。
    • 再次通过Set_HC573(6, 0x01<<pos)打开数码管位选,确保数码管保持点亮状态。
    • 最后通过Set_HC573(7, 0xff)消影,即将数码管内容清空,实现消隐效果。

       这段代码实现了对数码管的控制,可以实现静态显示和动态显示两种效果,通过控制HC573锁存器来控制数码管的显示内容和显示方式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木不迷茫(˵¯͒¯͒˵)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值