[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示
一、理论部分
共阳数码管引脚可以分为两个部分,一是段码,一个是位码。段码指的是一个数码管的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循环不断扫描即可
通过断码表可以便捷输入内容,不用每次都计算。
感谢大家的观看
欢迎大家提出问题并指正~
[蓝桥杯单片机]学习笔记——共阳数码管的静态与动态显示相关推荐
- 【蓝桥杯——单片机学习笔记】五.数码管显示(STC15F2K60S2)
一.原理图 二.原理图分析 如上图,U7锁存器控制数码管的段选(即每个数字的7个短横和1个点),U6锁存器控制数码管的位选(即8个数字).具体锁存器的输出端对应数码管的哪个输入端可看上图.控制锁存器的 ...
- 【蓝桥杯—单片机学习笔记(四)】共阳数码管的动态显示
一.要求 在CT107D单片机训练综合平台上,实现数码管的动态显示,在8位数码管中,前面4位显示年份"2022",接着是2个分隔符"--",最后两位是月份,从1 ...
- 【蓝桥杯-单片机学习笔记(六)】矩阵键盘控制数码管显示0~F
一.要求 在CT107D单片机训练平台上,首先将J5处的跳线帽接到1~2引脚,使按键S4~S19组成4*4的矩阵键盘.在扫描按键的过程中,发现有按键触发信号后,待按键松开后,数码管显示相应的数字.按键 ...
- 【蓝桥杯-单片机学习笔记(三)】共阳数码管的静态显示
一.要求 在CT107D单片机综合训练平台上,8个数码管分别单独依次显示0~9的值,然后所有数码管一起同时显示0~F的值,如此往复. 二.数码管 1.七段数码管 七段数码管,其实内部由8个发光二极管构 ...
- 学习笔记——共阳数码管的静态显示
目录 一.任务简述 二.实现方法 三.参考代码 一.任务简述 在CT107D单片机上实现8个数码管分别单独依次显示0-9,然后所有数码管同时显示0-9,以此循环. 二.实现方法 实现方法很简单,先弄清 ...
- 【蓝桥杯-单片机学习笔记(十五)】NE555频率测量
一.要求 在CT107D平台上测量NE555产生方波的频率值并显示在数码管上.频率数据显示用5位数码管,单位是Hz,数码管最左边显示"F".改变滑动变阻器Rb3可以改变频率大小. ...
- 【蓝桥杯-单片机学习笔记(十二)】工厂灯光控制系统
一.要求 在CT107D单片机综合训练平台上,设计程序,实现实时显示开机系统运行时间和按键控制灯光. 1.设计系统初始化函数,关闭蜂鸣器和继电器等无关设备. 2.设计设备检测函数,首先检测LED灯,从 ...
- 【单片机学习】共阳数码管的动态显示
题目: 在8位数码管中,前面4位显示年份"2018",接着2位是分割符"-",最后两位是月份,从1月份开始,每隔一段时间加1个月,到12月之后又从1月份开始递增 ...
- 【蓝桥杯-单片机学习笔记(十七)】24C02原理及其读写操作
一.24C02 24C02是一个2K Bit的串行EEPROM存储器,内部含有256个字节.在24C02里面有一个8字节的页写缓冲器.24C02支持I2C总线协议.I2C是一种双向.两线串行通信接口, ...
最新文章
- NDK JNI Android Studio开发与调试DEMO(三)(生成 .so 文件)
- JS的IE和Firefox兼容性汇编(原作:hotman_x)- -
- java连接Hbase数据库
- 多層開發注重效率的注意點
- mac 查看端口并终结
- 求解非线性方程f (x)= 0的MATLAB数值法指令介绍(solve、fzero的方法与实例)
- PyTorch 靠谱的模型可视化教程
- ES6之let能替代var吗?
- JSR-303 数据校验学习
- Vue-watch侦听器和计算属性
- C语言电话薄登录系统,求助 哈稀表编电话薄程序(c语言) 算法
- AltiumDesigner06——常见晶振封装尺寸
- 线性反馈移位寄存器 LFSR
- Latex下划线问题
- 【饭谈】为什么总有人劝你用mac来办公?
- 白嫖党最爱!java冒泡排序详解
- openGL绘制带纹理地球,并实现鼠标键盘控制
- 简单人口问题(指数增长)
- VUE-table表格操作列表适配屏幕缩小固定右侧fixed
- JAVA 俄罗斯方块联机