C51单片机03( .ppt
文本预览下载声明
LED数码管显示 一、认识LED显示器 在单片机应用系统中,常用的显示器主要有LED数码管显示器及LCD液晶显示器。LED显示器由于亮度高、价格低、寿命长、对电流、电压要求低,与单片机的连接方便等优点,得到了非常广泛的应用。 数码管不同的亮暗组合就能形成不同的字形,这种组合称之为字形码,共阳极和共阴极的字形码是不同的,对应的字形码如下表所示。 七段数码管的段位控制 七段数码管的段位控制 定义数组 unsigned char code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; 使用code,程序编译后,则将数组table[ ]保存到程序存储器(FLASH),否则就会保存到数据存储器(RAM) RAM是单片机的“紧缺资源”,能省则省 一位LED数码管的显示 一位LED数码管的显示 定义段码表 unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; 一位LED数码管的显示 多位LED数码管的显示 四、 显示方式:静态与动态 1.静态显示: 各数码管在显示过程中持续得到送显信号,与各数码管接口的I/O口线是专用的.无闪烁,使用的元器件较多,占I/O线多,无须扫描,节省CPU时间,编程简单. 连接:所有LED的位选均共同连接到+Vcc或GND,每个LED的8根段选线分别连接一个8位并行I/O口,从该I/O口送出相应的字型码显示字型. 特点:原理简单,显示亮度强,无闪烁,占用I/O资源较多 例1:4个LED组合的静态显示电路如下图所示 控制系统中的LED显示电路,除了要完成把字符转换成对应的段选码的译码功能以外,还要具有数据锁存与驱动的功能. 其中,译码功能可以通过硬件译码器完成,也可通过软件编程实现;而数据锁存与驱动只有依赖硬件电路来实现.静态显示方式的关键是多个LED需与多个I/O并行口相连,一般的并行I/O口如8255A或锁存器只具备锁存功能,还要有硬件驱动电路,再配以软件译码程序. 目前广泛使用一种集锁存、译码、驱动功能为一体的集成电路芯片,以此构成静态显示硬件译码接口电路.如美国RCA公司的CD4511是4位BCD码─7段十进制锁存译码驱动器,美国MOTOROLA公司的MC14495是4位BCD码─7段十六进制锁存译码驱动器. 任务2-1 单片机控制两个数码管静态显示00-99 程序框图 C51程序设计 #include reg52.h unsigned char code dispcode[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92, 0x82,0xf8,0x80,0x90}; unsigned char Second; void delay1s(void) { unsigned char i,j,k; for(k=100;k0;k--) for(i=20;i0;i--) for(j=248;j0;j--); } 2.动态显示(常用,有特色): 各数码管在显示过程中轮流得到送显信号,与各数码管接口的I/O口线是共用的.有闪烁,使用的元器件较少,占I/O线少,必须扫描,花费CPU时间,编程复杂.(有多个LED时尤为突出) 任务2-2 单片机控制两个数码管动态显示00-99 C51 #includereg52.h #define uchar unsigned char #define uint unsigned int uchar smg_du={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90}; sbit P3_6=P3^6; sbit P3_7=P3^7; void delay_50us(uint t) { uchar j; for(;t0;t--) for(j=19;j0;j--); } C51 void display(uint temp) { P3_6 =0; P3_7=1; P0=smg_du[temp%10]; delay_50us(100); P3_6 =1; P3_7 =0; P0=smg_du[temp/10]; delay_50us(100); } void main() {unsigned int i=0,k=0; while(1) {display(i); i++; if(i==100)//数码管0~99循环 {i=0; } } } * * L
显示全部