C51单片机03( .ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
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

文档评论(0)

zyzsaa + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档