当前位置: 首页 > news >正文

单片机Day05---动态数码管显示01234567

一、原理图

数组索引段码值二进制显示内容
00x3f0011 11110
10x060000 01101
20x5b0101 10112
30x4f0100 11113
40x660110 01104
50x6d0110 11015
60x7d0111 11016
70x070000 01117
80x7f0111 11118
90x6f0110 11119
100x770111 0111A
110x7c0111 1100B
120x390011 1001C
130x5e0101 1110D
140x790111 1001E
150x710111 0001F

二、思路梳理:

要让第几个位置亮某一个数字。

三、一些说明:

1.选择位置:

sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;

这里的ABC就是图中U5下面的ABC,对应了P2^几, 当 LSC = 1LSB = 1LSA = 1 时,选中第 1 个数码管,此时输入为 111 ,对应十进制数 7 , Y7 输出低电平,选中与之相连的第 1 个数码管(即LED8);当 LSC = 1LSB = 1LSA = 0 时,输入为 110 ,对应十进制数 6 ,Y6 输出低电平,选中第 2 个数码管(即LED7) 。

注意LED的位置与数码管的位置刚好相反,也就是第一个数码管是最后一个LED灯(即LED8)。

注意LED的位置与Y几的位置刚好相差一,写代码的时候一定要对照原理图来。

2.选择数字:

同静态数码管。数码管的点亮可以用数组表示,数组从第一位到最后就是从数字0到数字15,如果你想让某一位显示数字几,就把这个数字对应的数组元素赋给那个位置。

3.消音操作:

SMG_A_DP_PORT=0x00;//消音

在动态数码管显示中,数码管从显示一个数字切换到显示下一个数字时 ,如果不进行消隐操作,前一个数字的显示可能会因为余晖效应而在短时间内仍然可见 。例如,第一个数码管显示完数字后,马上切换到第二个数码管显示,如果第一个数码管对应的段选信号没有及时关闭,它的余晖可能会和第二个数码管的显示叠加,导致显示模糊不清 。

4.合适的时间:

delay_10us(100);

在 delay_10us(100); 函数中,delay_10us 是一个延时函数,当输入参数为 100 时,它大概产生 100 个 10us 的延时,即 1ms 延时 。若将参数改为 1000 ,则延时变为 10ms 。动态数码管显示原理是快速轮流点亮各个数码管,利用人眼视觉暂留效应让人感觉它们同时在显示 。
当延时变为 10ms 后,数码管切换显示的速度变慢,每个数码管点亮的时间相对变长 。人眼可以察觉到数码管的轮流点亮过程,不再能利用视觉暂留将其视为连续稳定显示,就会出现闪烁现象 。 正常动态显示需要数码管快速切换,合适的短延时才能实现稳定视觉效果 。

四、程序实现:

#include <REGX51.H>
typedef unsigned u16;
typedef unsigned u8;
# define LED P0
void delay_10us(u16 t)
{
while(t--);
}
u8 light[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
void foreverlight ()
{
u8 i=0;
for(i=0;i<8;i++)
{
switch(i)
{
case 0:LSC=1;LSB=1;LSA=1;break;
case 1:LSC=1;LSB=1;LSA=0;break;
case 2:LSC=1;LSB=0;LSA=1;break;
case 3:LSC=1;LSB=0;LSA=0;break;
case 4:LSC=0;LSB=1;LSA=1;break;
case 5:LSC=0;LSB=1;LSA=0;break;
case 6:LSC=0;LSB=0;LSA=1;break;
case 7:LSC=0;LSB=0;LSA=0;break;
}
LED=light[i];
delay_10us(100);
LED=0x00;
}
}

void main()
{
while(1)
{
foreverlight();
}
}

相关文章:

  • WindowsPE文件格式入门08.导出表
  • 蓝桥杯嵌入式历年省赛客观题
  • GPU虚拟化技术在深度学习集群中的应用实践
  • Spring AI 结构化输出详解
  • 【foc思考】为什么svpwm要不停变换占空比
  • Python 实现最小插件框架
  • JDK(Java Development Kit)从发布至今所有主要版本 的详细差异、新增特性及关键更新的总结,按时间顺序排列
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第七节:网关-XSS攻击与预防
  • uniapp日常总结--uniapp页面跳转方式
  • 单片机Day05---静态数码管
  • Cocos Creator Shader入门实战(八):Shader实现圆形、椭圆、菱形等头像
  • IIC通信协议
  • Python快速入门指南:从零开始掌握Python编程
  • JetBrain/IDEA :Request for Open Source Development License
  • 基于springboot+vue的秦皇岛旅游景点管理系统
  • MySql 自我总结
  • GOC 指令集
  • 深入学习任何技术的实用指南
  • data_analysis14
  • C++之map,set的实现
  • 网站本地被劫要怎么做/深圳市企业网站seo营销工具
  • 网站推广120种方法/网络营销和电子商务区别
  • 中国空间站搭建国际合作平台/互动营销案例分析
  • 网站建设项目设计表/浙江seo博客
  • 网站制作的一般步骤/互联网广告推广是做什么的
  • 做网站收费/五合一网站建设