小蜜蜂单片机04—数码管的动态显示

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

题目:前面4位显示年份2018,接着2位是分隔符,最后两位是月份,从1月份开始,每隔一段时间加1个月,到12月之后又从1月开始递增,如此往复。

#include "reg52.h"
unsigned char yue =1;
unsigned char code SMG_duanma[18]=			   //code 是表格形式
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
 0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
 0xbf,0x7f};
 
void SelectHC573(unsigned char channel)
{
   switch(channel)
   {
    
	  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 DisplaySMG_Bit(unsigned char value,unsigned char pos)
{
     SelectHC573(6);
     P0 = 0x01 << pos;
     SelectHC573(7);
     p0 = value;
}
void DelaySMG(unsigned int t)
{
  while(t--);
}
void Display_Dynamic()
{
     /* 前4位数码管 */
     DisplaySMG_Bit(SMG_duanma[2],0);
     DelaySMG(500);
     DisplaySMG_Bit(SMG_duanma[0],1);
     DelaySMG(500);
     DisplaySMG_Bit(SMG_duanma[1],2);
     DelaySMG(500);
     DisplaySMG_Bit(SMG_duanma[8],3);
     DelaySMG(500);
     
     /* 2个分隔符 */
	DisplaySUM_Bit(SMG_duanma[16],4);
	DelaySMG(500);
	DisplaySUM_Bit(SMG_duanma[16],5);
	DelaySMG(500);
    
     /* 月份 */
	DisplaySUM_Bit(SMG_duanma[yue/10],6);
	DelaySMG(500);
	DisplaySUM_Bit(SMG_duanma[yue%10],7);
	DelaySMG(500);
}
 void Delay(unsigned char t)
 {
   while (t--)
   {
      	 Display_Dynamic();
   }

 }
void main()
{
 while (1)
 {
     Display_Dynamic();
     yue++
     if(yue>12)
     {
        yue=1;
     }
     Delay(100);
 }
} 

学到这节我觉得基本就要记住一些基础的代码
比如说选通道的函数SelectHC573(unsigned char channel){};
数码管控制函数DisplaySMG_Bit(unsigned char value,unsigned char pos){};
延时函数Delay(unsigned char t){};

一定要记得每次显示完要加延时函数!!!!

还有就是动态显示里有两个延时函数,其中比较特殊的是Delay,这个是用来延时月份的动态变化的,所以其函数内容是动态显示函数;

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
蓝桥杯单片机定时器小蜜蜂是一个用于学习和实践单片机编程的教学项目。根据引用,在这个项目中,按键等待是一个关键操作,需要将显示时间的模块放在循环中,并且通过定时器中断来控制操作的时间。同时,引用提到LED和数码管的P0口端口被复用,用来记录串口发送的数据和判断按键是否按下。关于蓝桥杯单片机定时器小蜜蜂的具体内容,引用提供了一份目录,其中包括了一些进阶的案例和底层驱动代码的移植与应用。 总结来说,蓝桥杯单片机定时器小蜜蜂是一个教学项目,通过学习它可以了解和练习单片机编程的一些基础和高级操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [蓝桥杯单片机-小蜜蜂老师-工厂灯光控制系统(P15代码)](https://blog.csdn.net/m0_61804419/article/details/129488234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [备战蓝桥杯单片机倒数第四天 小蜜蜂老师公众号更新内容](https://blog.csdn.net/silver321/article/details/123969400)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值