历史上的今天
今天是:2025年10月20日(星期一)
2022年10月20日 | STC89C52单片机 数码管静态显示
2022-10-20 来源:csdn
数码管显示原理

数码管根据内部连接不同分为共阴极和共阳极。八段数码管内部有8颗LED组成,如果想要显示特定字形只需控制相应的LED亮起,其他LED熄灭即可。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c7ppkdZI-1604209821031)(img/code_table.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2022/1020/20221020102731489.png?imageView2/2/w/550)
静态与动态显示
静态显示:
LED显示器工作方式有两种:静态显示方式和动态显示方式。静态显示的特点是每个数码管的段选必须接一个9位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。
缺点:使用的IO口比较多。
动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余晖和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
74HC573锁存器的工作原理
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zlCrpAey-1604210100233)(img/74HC573.png?imageView2/2/w/550)]](https://8.eewimg.cn/news/uploadfile/2022/1020/20221020102731857.png?imageView2/2/w/550)
芯片文档查询网址: https://www.alldatasheet.com/
上拉电阻的作用
上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。下位同理,也是将不确定的信号通过一个电阻钳位在低电平。
当P0口作为输入、输出口时,上电复位后处于开漏模式。P0口内部无上拉电阻,所以作I/0口必须外接10K-4.7K的上拉电阻。

点亮一位数字"1"
#include #include #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管段选 void main(){ // main函数自身会循环 WE = 1; // 打开位选锁存器 P0 = 0XFE; // 1111 1110 选通第一位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X06; // 0000 0110 显示“1” DU = 0; // 锁存段选数据 while(1){ // P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开位选锁存器才能进行修改 } } 点亮两位数字"2" #include #include #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管段选 void main(){ // main函数自身会循环 WE = 1; // 打开位选锁存器 P0 = 0XFC; // 1111 1100 选通第一位和第二位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X5B; // 0101 1011 显示“2” DU = 0; // 锁存段选数据 while(1){ // P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改 } } 点亮三位数字"3" #include #include #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管段选 void main(){ // main函数自身会循环 WE = 1; // 打开位选锁存器 P0 = 0XF8; // 1111 1000 选通第一位、第二位和第三位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X4F; // 0100 1111 显示“3” DU = 0; // 锁存段选数据 while(1){ // P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改 } } 点亮数码管最后一位数字"8" #include #include #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管段选 void main(){ // main函数自身会循环 WE = 1; // 打开位选锁存器 P0 = 0X7F; // 1111 1000 选通第八位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X7F; // 0111 1111 显示“8” DU = 0; // 锁存段选数据 while(1){ // P0 = 0X01; // 当锁存器中的数值被锁定后,无法直接修改数码管的值,需要打开锁存器才能进行修改 } } 使第三个(从左至右)数码管显示数字 6 #include #include #define uint unsigned int #define uchar unsigned char sbit DU = P2^6;//数码管段选 sbit WE = P2^7;//数码管段选 void main(){ // main函数自身会循环 P0 = 0X00; //清除断码 WE = 1; // 打开位选锁存器 P0 = 0X03; // 0000 0011 选通第3位、第4位、第5位、第6位、第7位、第8位数码管 // P0 = 0X00; // 0000 0000 表示选通所有位数码管 WE = 0; // 锁存位选数据 DU = 1; // 打开段选锁存器 P0 = 0X7D; // 0111 1101 对应的数码管字母 acdefg 显示“6” DU = 0; // 锁存段选数据 }
下一篇:STC89C52单片机 蜂鸣器
史海拾趣
|
使用MC34063设计DC-DC变换器 参数要求如下; 1 交流输入15V 2 直流输出3~12V可调3 效率70%以上 4 输出纹波小于200mV 5 最大输出电流 500mA 且带过流保护。。 请把懂得的发上来,谢谢拉!!… 查看全部问答> |
|
软件平台:wince6.0 硬件平台:UT-S3C6410开发板 我做了个控制音量的系统托盘程序,但是我向往窗口风格像XP下的那样,有立体的感觉 可是我的风格却只能这样,扁平的窗口 http://i3.6.cn/cvbnm/be/fb/90/8de0ce4c7163006c7feb4f5526a0ffc6.j ...… 查看全部问答> |
|
找了好长时间,还是修改已有驱动没成功,deviceid等到底是改什么,查了芯片手册没发现差别啊,求教已经修改成功的同学,折腾的头大,现在被卡住在网卡这个地方了,有谁帮一把,谢谢各位!… 查看全部问答> |
|
现在用EK-STM32开发板,已经搞定320x240的液晶,但该板没有M25P64,故在程序运行的开始,会“蓝屏”,提示SPI FLASH不对头。现在已经在SPI1安装上了空白的M25P64。以前偶尔好像看过一篇文档,讲的是怎么样将官方的image写到m25p64中,但 ...… 查看全部问答> |
|
KPCI-3100系列板卡都有多个数字信道。KPCI-3101/2/3/4有两个8位和一个7位(分别是信道A,B和C)。KPCI-3110/16有两个8位和一个2位(分别是信道A和B,以及动态数字输出[1])。在KPCI-3101/2/3/4中,信道C既可以作为普通的数字位操作,也可以作为动态数 ...… 查看全部问答> |
|
busybox 不能ctrl+c 提示can't access tty.job control 板子启动后就会自动创建ttyS0之类的节点 inittab文件内容: # /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:5:initdefault: # Boot-time system configuration ...… 查看全部问答> |




