一、理论部分

共阳数码管引脚可以分为两个部分,一是段码,一个是位码。段码指的是一个数码管的7个段加dp小数点,一共8个,通过P0控制其亮灭使得数码管显示出不同效果。譬如亮afedcg表示的是6形状。位码指的多个数码管显示的时候,你要让哪个数码管显示,设定对应的公共端的值,简单讲位码指的是亮哪个数码管,其由P0控制。

通过查询原理图,可知Y7C和Y6C分别控制段码和位码,而Y7C和Y6C控制方法和LED灯相似。

由于数码管段码只给出了8个引脚,也就是说,只能同一时让八个数码管通过这8个引脚获得相同的信号,显示相同内容。那么如何让数码管显示不同内容?这就引进了动态数码管显示:我们要使用3个数码管显示123,只需要在第一个管显示完1立刻切换到下一个管让其显示2,这样不停的在三个管中显示123,又由于人的视觉暂停作用,就可以使人看到多个数码管同时显示不同内容的效果。

编写思路:P2高三位置为110->P0输出数码管位置->P2高三位置为111->P0输出显示内容

静态显示:直接调用显示

动态显示:切换不同数码管,显示不同内容,封装成函数后放进主循环不断扫描

二、程序案例

unsigned char code SMG_duanma[18]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f};//段码表,显示0~F、'-'、'.'。void Delay(unsigned int t) //延时函数
{while (t--);while (t--);
}
/*****************************************************************
*@Function:  SelecHC573    //
*@Description: 切换锁存器    //
*@Input: channel 切换的锁存器序号//
*@Output: 无//
*@Return: 无 //
*@Others: 无 //
/*****************************************************************/
void SelecHC573(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;}
}/*****************************************************************
*@Function:  DisplaySMG_Bit//
*@Description: 数码管显示    //
*@Input:   dat 数码管显示的数据(段码表)//
*          pos  数码管的位置0-7//
*@Output: 无//
*@Return: 无 //
*@Others: 无 //
/*****************************************************************/
void DisplaySMG_Bit(unsigned char dat,unsigned pos)
{SelecHC573(6);//数码管的位置P0=0x01<<pos; SelecHC573(7);//数码管的内容P0=dat;
}/*****************************************************************
*@Function:  DelaySMG    //
*@Description:  延时函数   //
*@Input: t 用于延时递减//
*@Output: 无//
*@Return: 无//
*@Others: 无//
/*****************************************************************/
void DelaySMG(unsigned int t)
{while(t--);
}void Delay(unsigned int t)
{while(t--){Display_Dynamic();//延时时放置数码管暂停显示}
}/*****************************************************************
*@Function: Display_Dynamic     //
*@Description: 切换数码管,使其显示“2018--月份”   //
*@Input: 无//
*@Output: 无//
*@Return:  //
*@Others:  //
/*****************************************************************/
void Display_Dynamic()
{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);DisplaySMG_Bit(SMG_duanma[16],4);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[16],5);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[month/10],6);DelaySMG(500);DisplaySMG_Bit(SMG_duanma[month%10],7);DelaySMG(500);
}在主函数将Display_Dynamic放置while循环不断扫描即可

通过断码表可以便捷输入内容,不用每次都计算。


感谢大家的观看

欢迎大家提出问题并指正~

[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示相关推荐

  1. 【蓝桥杯——单片机学习笔记】五.数码管显示(STC15F2K60S2)

    一.原理图 二.原理图分析 如上图,U7锁存器控制数码管的段选(即每个数字的7个短横和1个点),U6锁存器控制数码管的位选(即8个数字).具体锁存器的输出端对应数码管的哪个输入端可看上图.控制锁存器的 ...

  2. 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示

    一.要求 在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份"2022",接着是2个分隔符"--",最后两位是月份,从1 ...

  3. 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F

    一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...

  4. 【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示

    一.要求 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复. 二.数码管 1.七段数码管 七段数码管,其实内部由8个发光二极管构 ...

  5. 学习笔记——共阳数码管的静态显示

    目录 一.任务简述 二.实现方法 三.参考代码 一.任务简述 在CT107D单片机上实现8个数码管分别单独依次显示0-9,然后所有数码管同时显示0-9,以此循环. 二.实现方法 实现方法很简单,先弄清 ...

  6. 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量

    一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...

  7. 【蓝桥杯-单片机学习笔记(十二)】工厂灯光控制系统

    一.要求 在CT107D单片机综合训练平台上,设计程序,实现实时显示开机系统运行时间和按键控制灯光. 1.设计系统初始化函数,关闭蜂鸣器和继电器等无关设备. 2.设计设备检测函数,首先检测LED灯,从 ...

  8. 【单片机学习】共阳数码管的动态显示

    题目: 在8位数码管中,前面4位显示年份"2018",接着2位是分割符"-",最后两位是月份,从1月份开始,每隔一段时间加1个月,到12月之后又从1月份开始递增 ...

  9. 【蓝桥杯-单片机学习笔记(十七)】24C02原理及其读写操作

    一.24C02 24C02是一个2K Bit的串行EEPROM存储器,内部含有256个字节.在24C02里面有一个8字节的页写缓冲器.24C02支持I2C总线协议.I2C是一种双向.两线串行通信接口, ...

最新文章

  1. NDK JNI Android Studio开发与调试DEMO(三)(生成 .so 文件)
  2. JS的IE和Firefox兼容性汇编(原作:hotman_x)- -
  3. java连接Hbase数据库
  4. 多層開發注重效率的注意點
  5. mac 查看端口并终结
  6. 求解非线性方程f (x)= 0的MATLAB数值法指令介绍(solve、fzero的方法与实例)
  7. PyTorch 靠谱的模型可视化教程
  8. ES6之let能替代var吗?
  9. JSR-303 数据校验学习
  10. Vue-watch侦听器和计算属性
  11. C语言电话薄登录系统,求助 哈稀表编电话薄程序(c语言) 算法
  12. AltiumDesigner06——常见晶振封装尺寸
  13. 线性反馈移位寄存器 LFSR
  14. Latex下划线问题
  15. 【饭谈】为什么总有人劝你用mac来办公?
  16. 白嫖党最爱!java冒泡排序详解
  17. openGL绘制带纹理地球,并实现鼠标键盘控制
  18. 简单人口问题(指数增长)
  19. VUE-table表格操作列表适配屏幕缩小固定右侧fixed
  20. JAVA 俄罗斯方块联机

热门文章

  1. java的开发工具 sublime
  2. 浏览器支持HTML5+标准,可达到原生的功能体验
  3. 玩好H5熟读DOM4
  4. 电信20M光纤上传仅1M 网站80端口被屏蔽
  5. Android studio3.6 加载系统内置矢量图标icon的操作步骤
  6. 无法打开源文件 d3d.h
  7. ipv6服务器搭建网站,IPV6地址访问web项目网站配置
  8. acunetix wvs网站漏洞扫描 XSS CSOR处理
  9. 2022年推荐云计算行业研究报告投资策略产业发展前景市场行情分析(附件中为网盘链接,报告持续更新)
  10. maven创建项目tomcat部署工件失败