数码管:
数码管由7个发光二极管组成一个日字形,如果需要显示小数点,那么就再加一个点,就是8段数码管。
数码管显示亮度高,响应速度快,分共阴和共阳两种形式,常用的有单个的和4联的,还有两联的和专门用来显示时间的。
分类:共阴;共阳
编码问题:
必须对数字或字符进行编码。因此为LED显示器提供的编码正好是一个字节。也有采用BCD-7段译码芯片的。
显示问题:
静态显示方式
静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。
动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。
数码管下方有一个反相器。默认P3输出1,即默认数码管共阴。
现在需要操作P1,扫描所有数码管
如何扫描:
P3:10000 P1送入数字编码
P3:01000 P1送入数字编码
P3:00100 P1送入数字编码
P3:00010 P1送入数字编码
P3:00001 P1送入数字编码
送入数字编码:按照16进制编码表即可
其他类型的数码管:
四个管子同时接出a---dp
74HC138译码器:
A1,A2,A3三个加权(A0A1A2的输入相当于一个八进制数)输入可以产生八个互斥输出Y0-Y7
输入输出特性:
使能条件:E1E2 :低电平 E3:高电平
芯片使用:
G2A G2B G1:代表E1E2E3
ABC:A0A1A2
点亮数码管:
//静态显示
#include unsigned char a[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c}; int main() { P1=a[1]; //接地端默认使数码管共阴 while(1); return 0; } //数码管的动态显示 /* 思路: 1.向138芯片的A123输出选中数码管,选中谁 谁是低电平 2.同时P10输出十六进制 */ #include sbit smgen=P2^3;//573芯片 高电平 sbit rs=P3^6;//其他芯片会影响 所以用这个脚关闭那个芯片。 unsigned char table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c};//对应着数字 unsigned char table2[]={0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70}; //总线驱动:A1A2A3 void delay(unsigned int a) { while(a--); } unsigned int t; void main() { unsigned char i; rs=0;//OE接地 t = 50; while(1) { for(i=0;i<8;i++) { P2=table2[i]; smgen=1; P1=table1[i]; delay(t); } } } 点阵: 如何显示: 上图原理图中:横向是P0 纵向是P1 此板使用左边原理图。延序号有P0-P7 如果想让点阵点亮,则保证P0i = 0;P1j = 1 举例:动态显示数字0: P0选中第一列 P0 = 1111 1110 ;P1 = 0000 0000 P0选中第二列 P0 = 1111 1101 ;P1 = 0000 0000 P0选中第三列 P0 = 1111 1011 ;P1 = 0011 1110 P0选中第四列 P0 = 1111 0111 ;P1 = 0100 0001 P0选中第五列 P0 = 1110 1111 ;P1 = 0100 0001 P0选中第六列 P0 = 1101 1111 ;P1 = 0100 0001 P0选中第七列 P0 = 1011 1111 ;P1 = 0011 1110 P0选中第八列 P0 = 0111 1111 ;P1 = 0000 0000 #include #define uchar unsigned char #define uint unsigned int sbit en1=P2^0;//573高电平 sbit en2=P2^3;//573高电平 sbit rs=P3^6;//某个芯片需要关闭 uchar table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar table2[]={0x00,0x00,0x3e,0x41,0x41,0x41,0x3e,0x00}; void init(void) { en1=1; en2=1; rs=0; } void delay(uint a) { while(a--); } void main() { uchar i; init();//初始化 while(1) { for(i=0;i<8;i++) { P0=table1[i]; P1=table2[i]; delay(40); } } } ———————————————— 版权声明:本文为CSDN博主「mmciel」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/F_zmmfs/article/details/81152044
上一篇:【C51自学笔记】中断系统
下一篇:【C51自学笔记】ULN2003+蜂鸣器+继电器+步进电机
推荐阅读最新更新时间:2024-11-11 07:46
推荐帖子
- OLED显示屏的所有图像整体翻转90°。在线求救!!
- 在VXWORKS下的一台设备,原先手持终端是LED屏的,所有图像都是是横屏显示。但是自从换了OLED屏后就变为竖屏显示了。该怎么样调节过来??请教各位高手。图像是使用windml编的。OLED显示屏的所有图像整体翻转90°。在线求救!!一个横的,一个竖的,总不能简单的翻个90度来用吧,人只能歪着头看啊分辨率变了,显示模式和屏幕定位都要变了,应该说界面需要重构。如果就是简单翻,那只要在底层函数里面把X和Y的坐标进行变换整个界面都要重构
- zhangjuny30 嵌入式系统
- 单片机键盘扫描之状态机实现
- 一、概述在编写单片机程序的过程中,键盘作为一种人机接口的实现方式,是很常用的。而一般的实现方法大概有:1、外接键盘扫描芯片(例如8279,7279等等),然后由该芯片来完成去抖、键值读取、中断请求等功能。然后单片机响应中断并读取键值,有的时候也可以采用轮训的方式。2、如果按键数比较少,那么可以直接将按键接到单片机的IO口,然后各按键取逻辑或再送到单片机的中断管脚(对于51体系),单片机响应中断后再去读取IO口的数据。如果单片机的中断向量比较多(例如AVR系列的单片机,每个IO都可以作为中
- 求知者 单片机
- DSP中的CMD文件经典解读
- DSP中的CMD文件经典解读,欢迎来吐槽也可以从这里下载http://pan.baidu.com/s/1bnEl4dTDSP中的CMD文件经典解读
- Aguilera DSP 与 ARM 处理器
- 【TI学习】M3在TFT屏幕上显示汉字
- 分享一个M3在TFT屏幕上显示汉字的代码和文档,我都找了很久才找到的,非常实用【TI学习】M3在TFT屏幕上显示汉字:carnation:谢谢,楼主,下来看下楼主这个同TI图形库有区别么很高档的资料应该是在TIGrlib的基础上扩展的,很好的资料,顶。回复板凳ddllxxrr的帖子支持没有区别,就是基于TIGRLIB的回复板凳ddllxxrr的帖子早上根据PDF实验了下,失败了!还没发现是那里的问题!谁移值成功的进来指导指导!确实不错啊国人做
- fengzhang2002 微控制器 MCU
- 07月21日 DIY示波器调试用器件及液晶到位
- DIY数字示波器,核心小组调试用的器件和液晶已经到位感谢西门辛苦为大家筹备器件也感谢周生及时高质量的送来液晶石头的PCB也在制作中,要迟些到位。全部聚齐后,核心小组人员会将自己的进度和问题随时发表出来,供大家参考。先秀下照片喽器件清单及价格,会请莫恩整理出比较详细的晒出来。07月21日DIY示波器调试用器件及液晶到位哟西,不错,给我来一套。。。照片好漂亮,没想到堆成一堆的器件能照成这样DIY活动可以更进一步了,大家加油啊!呵呵,不错啊,不过这材料太贵了点吧,支持。。。
- soso DIY/开源硬件专区
- “T”型连接结构的UPS并联运行方案
- 摘要:提出一种“T”型连接结构的UPS并联运行方案,该方案中并联运行的UPS省去信号联络线,属于主从式UPS并联。从“T”型结构UPS将前级UPS的输出电流引入并以此电流作并联控制信号,采用电流追踪型PWM控制信号发生方案,可使其输出电流与前级输入电流保持同相,并可达到均流的目的。文中给出了仿真结果,表明该方案是可行的。关键词:UPS并联运行拓扑“T”型连接结构的UPS并联运行方案 作为DIY电子爱好者,丰富的资料及实践经验教程是快速步入高手殿堂的好帮手,感谢你。
- zbz0529 模拟电子