51单片机LED与数码管的学习
2017-05-06 19:26
381 查看
一、关于LED的各种操作
二、数码管
1、数码管的显示原理
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。
LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点,共计8段。
因此我们对它编码时,刚好是用一个字节。
2、数码管的种类
根据数码管的显示原理:
可分为共阴数码管和共阳数码管
根据数码管的位数:
可分为独立数码管、2位数码管、4位数码管
根据数码管的用途:
可分为普通数码管和专用数码管
3、共阳极段选表与共阴极段选表
4、74HC573锁存器的使用
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。
1脚是输出使能
11脚是锁存使能
D是输入
Q是输出
H是高电平,L是低
/OC是1脚 C是11脚
/OE 接低电平,使芯片内部数据保持器输出端与芯片8位输出端之间连通。
C 端的作用是通过高低电平控制8位输入与内部数据保持器输入端的连通与断开。
当 C= 1 时,P0端口的8位数据线与74HC573内部数据保持器的输入端连通,发送数据
当 C= 0 时,P0端口的8位数据线与74HC573内部数据保持器的输入端断开,锁存数据
//亮灯 void LED_ON(void) { P1 = 0x00; } //灭灯 void LED_OFF(void) { P1 = 0xff; } //左移和右移 void LED_DLINK(unsigned char dir,unsigned char speed) //dir为移动方向,speed为移动的速度 { unsigned char temp; if(0 == flashtime) { if(dir == 1 ) { temp = 0xfe; // 0x1111 1110 } else { temp = 0x7f; } flashtime = 1; } else { P1 = temp; Delay(speed * 10000); if(dir == 1) { temp = (temp << 1) | 0x01; //左移 } else { temp = (temp >> 1) | 0x80; //右移 } flashtime++; } if(9 == flashtime) { flashtime = 0; } }
二、数码管
1、数码管的显示原理
单片机系统中常用的显示器有:
发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。
LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。
数码管,根据内部结构,可分为共阴极数码管和共阳极数码管。七段发光管加上一个小数点,共计8段。
因此我们对它编码时,刚好是用一个字节。
2、数码管的种类
根据数码管的显示原理:
可分为共阴数码管和共阳数码管
根据数码管的位数:
可分为独立数码管、2位数码管、4位数码管
根据数码管的用途:
可分为普通数码管和专用数码管
3、共阳极段选表与共阴极段选表
* 接法为:Px.0~Px.7——a~h * unsigned char code distab[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71} //共阴数码管段选码表,无小数点 * unsigned char code distab[16]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1} //共阴数码管段选码表,有小数点 * unsigned char code distab[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, * 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e} //共阳数码管段选码表,无小数点 * unsigned char code distab[16]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e} //共阳数码管段选码表,有小数点
4、74HC573锁存器的使用
锁存器(Latch)是一种对脉冲电平敏感的存储单元电路,它们可以在特定输入脉冲电平作用下改变状态。锁存,就是把信号暂存以维持某种电平状态。
1脚是输出使能
11脚是锁存使能
D是输入
Q是输出
H是高电平,L是低
/OC是1脚 C是11脚
/OE 接低电平,使芯片内部数据保持器输出端与芯片8位输出端之间连通。
C 端的作用是通过高低电平控制8位输入与内部数据保持器输入端的连通与断开。
当 C= 1 时,P0端口的8位数据线与74HC573内部数据保持器的输入端连通,发送数据
当 C= 0 时,P0端口的8位数据线与74HC573内部数据保持器的输入端断开,锁存数据
sbit LATCH_WEI = P2^0; sbit LATCH_DUAN = P2^1; unsigned char code cctable[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管段选码表,无小数点 unsigned char Weima[8] = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //74H573位选 //4位数码管+74HC373的操作 void show_cc(void) { //消除残影 //数码管清零 P0 = 0x00; LATCH_DUAN = 1; LATCH_DUAN = 0; //位选 P0 = Weima[i]; LATCH_WEI = 1; //位锁存 LATCH_WEI = 0; //段选 P0 = cctable[i]; LATCH_DUAN = 1; //段锁存 LATCH_DUAN = 0; Delay(20); // 扫描间隙延时,时间太长会闪烁,太短会造成重影 i++; if(i == 8) { i = 0; } } //简单的测试74HC573的程序 在main()函数中while(1)中循环,8个数码管显示0 1 2 3 4 5 6 7
相关文章推荐
- 菜鸟之学习51单片机(三)点亮LED灯
- 奶爸业余单片机学习之:用数码管及LED实现交通灯(初版)
- 51单片机学习(三)数码管秒表完成啦!
- 51单片机功能模块学习笔记 — 数码管
- [51单片机学习笔记ONE]-----LED灯的多种使用方法
- 【51单片机学习过程记录】 2LED点亮
- C51单片机学习(一):LED和数码管静态显示
- ATmega8仿真——LED 数码管的学习
- 菜鸟之学习51单片机(六)点亮数码管,动态扫描
- 51单片机学习笔记【三】——数码管实验
- 【51单片机学习过程记录】6数码管动态显示
- 51单片机 学习之旅[4] 数码管 动态显示
- 51单片机的LED与数码管的驱动
- 51单片机学习(四)用点阵LED显示I LOVE YOU!
- 51单片机学习笔记【一】——LED灯实验
- 51单片机驱动数码管(LED)时的注意事项
- 关于X86汇编语言学习的随记-8259.8254.A/D转换.D/A转换。键盘扫描。LED7段数码管显示
- 【51单片机学习过程记录】5数码管静态显示
- 51单片机--数码管
- 用C#控制TQ2440开发板上的LED小灯(C# GPIO学习笔记)