编辑: 无理的喜欢 | 2015-09-16 |
1 概述 3.1.1 LED 数码管简介 对于0.5(对角线尺寸)LED 数码管,每段对应一个发光管 3.1.2 数字和字符的数码管显示图样 3.1.3 共阳和共阴数码管 共阳极:点亮时加高电平 共阴极:点亮时加低电平 段码:高电平驱动 段码:低电平驱动 3.2.4 静态显示和动态显示 3.2 数码管显示 静态显示每个数码管有独立的驱动电路,亮度高电路复杂,编程容易. 独立的段码驱动电路 3位共阳极数码管静态显示 公共极直接接+5V电源 (在"串口应用"讲解) 3.2.4 静态显示和动态显示 动态显示 所有数码管的段码共有一套驱动电路采用扫描显示.亮度稍低,电路简单,编程复杂, CPU实时扫描显示占用CPU的时间. 以4位共阳极数码管动态显示为例 ?视频
1000 0100
0010 0001 一个扫描周期 共阳极数码管动态显示"1234"的过程(位扫描) 送1的段码 送2的段码 送4的段码 送3的段码 消隐――扫描切换时,先灭掉"当前显示的数码管",然后送下一位的段码,再点亮下一位数码管 使用公共教室,必须先下课,再上课,有一个"间隙",否则会怎样? 相对应的段码接在一起 依次驱动(扫描)公共极 8路OC反相器,驱动电流>100mA(267页) 排电阻,作用限流 3/8在内部是接在一起的,所以可任意接一个就可以了 动态显示电路 外接感性负载(电动机/继电器)时,接负载电源
00000001 00000001
00000001 00000001
0 1
0 11111110
101 P2口送"8的反相"的段码 反相器 同时送"8"段码:00000001,哪一个显示"8"呢? P0口"位"码 动态显示 为了正确显示段码与位码必须同步! 反相
00000001 00000001
00000001 00000001
101 0
1 0
0 0
0 11111110
101 111 消隐 消隐信号 消隐信号 无论段码如何,因为所有阳极都是低电平,所以全灭 编写程序程 C语言知识:宏(47页) 宏定义的一般格式:#define 宏名 字符串或数字宏定义就是用宏名代替一个字符串,也就是简单的替换. 不是必须的,但更便于编写、修改、理解程序. 上述宏定义后 P_duan和P2就是等效的,好处是: 读程序时,P_duan的意义更清晰,表示段码驱动端口的意思. 如果想改为其他端口,只需修改宏定义即可,而不必"修改程序". C语言知识:一维数组(56页)为了便于访问将同一类型数据的有序集合――数组.数组的定义方式为:类型 数组名[常数];
这两数组均为一组常数定义为code,存储在程序存储器(ROM)中,定义为data,存储在内存中,是不合理的!! 段码表的获取可通过"LED段码查询"实现. 复制 动态显示x的千/百/十/个位 将x的千/百/十/个位的段码存入nx[]中 "取余" 将x的千/百/十/个位的段码存入nx[]中 "取余" 填写"显示数组"程序 nx[3]=4 nx[2]=3 nx[1]=2 nx[0]=1 赋值 个十百千位4x=1234
3 x/10=123
2 x/100=12
1 x/1000=1 再"%10" 先整除 X=1234 利用循环语句填写"显示数组"程序及框图 i=0 取出X的最低位 i