版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章:51系列单片机键盘/显示器接口技术常用的显示设备:发光二极管、八段LED显示器、点阵LED,液晶显示器(LCD)、屏幕显示器(CRT)等。8.1LED显示器接口技术8.2键盘接口技术8.3点阵接口技术8.4液晶显示器接口技术8.151单片机显示器接口技术
1、LED显示器结构与原理:(1)结构:LED封装图共阴极LED共阳极LED(2)LED显示器的基本问题a.七段码问题共阳极、共阴极七段码如显示“0”,共阴极七段码:
dpgfedcba001111113FH共阳极七段码:
dpgfedcba110000000C0H共阴极七段码表:unsignedcharcodedaima[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};b.驱动问题LED显示器的每一个段通常需要1~5mA电流。段驱动、位驱动;段口、位口c.显示方式问题静态显示、动态显示d.译码方式问题硬件译码:采用专用译码器芯片实现,如CD4511、7447等芯片软件译码:采用软件查表的方法,如显示“3”:unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};
unsignedchari,j;
i=0x03;//
j=table[i];//查表,转换成7段码(3)显示函数的编写问题a.建立7段码表b.建立显示缓冲区通常,显示缓冲区中存放要显示的内容,对应于每个显示器,显示缓冲区的数据由其他函数或主函数来修改。c.编制显示函数显示函数只完成将显示缓冲区中的数据通过查表转换成7段码送显示器显示。d.显示函数的调用在主函数或其他函数中调用显示函数。例如:2位显示器显示函数的编写unsignedchardis_buf[2]; //显示缓冲区unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voidDisp(void)//2位数码管显示函数{ unsignedchari;i=dis_buf[0];//取显示内容P1=table[i];//7段码送显示器i=dis_buf[1];P3=table[i];}
(4)LED显示器静态显示1、一个8位端口控制1位LED显示器;2、不改变显示内容,显示器一直显示不变;3、硬件复杂,软件控制简单。例1:利用P2、P3口进行静态显示:轮流显示“12”、“--”、“AB”#include<reg51.h>unsignedchardis_buf[2]; //显示缓冲区unsignedcharcodetable[18]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};voiddl(unsigned
intx) //延时xms{ unsignedintt1,t2; for(t1=0;t1<x;t1++) for(t2=0;t2<120;t2++);}voiddisplay(void)//显示函数{ P2=table[dis_buf[0]];//静态显示1 P3=table[dis_buf[1]];//静态显示2}voidmain(void){ while(1) { dis_buf[0]=1;dis_buf[1]=2;//送显示数据12 display(); //调显示函数
dl(500); //延时500ms dis_buf[0]=16;dis_buf[1]=16; //显示-- display(); dl(500); dis_buf[0]=0x0a;dis_buf[1]=0x0b;//显示ab display(); dl(500); }}例2:利用8255PA、PB、PC口进行静态显示:轮流显示“123”、“abc”#include<reg51.h>#include<absacc.h>#defineCOM8255XBYTE[0xbfff]#definePA8255XBYTE[0xbcff]#definePB8255XBYTE[0xbdff]#definePC8255XBYTE[0xbeff]unsignedchardis_buf[3]; //显示缓冲区unsignedcharcodetable[18]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00};voiddl(unsigned
intx) //延时xms{ unsignedintt1,t2; for(t1=0;t1<x;t1++) for(t2=0;t2<120;t2++);}voiddisplay(void){ PA8255=table[dis_buf[0]]; PB8255=table[dis_buf[1]]; PC8255=table[dis_buf[2]];}voidmain(void){
COM8255=0x80; //8255初始化
while(1) { dis_buf[0]=1;dis_buf[1]=2; dis_buf[2]=3;//显示123 display(); //调显示函数
dl(500);//延时500ms dis_buf[0]=0x0a;dis_buf[1]=0x0b;dis_buf[2]=0x0c; //显示abc
display(); dl(500); }}(5)LED动态显示动态显示即一位一位轮流点亮各位显示器,采用动画模式。理解:段口和位口的含义unsignedchardis_buf[8]; //显示缓冲区unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位码
for(i=0;i<8;i++) {
DUANKOU=table[dis_buf[i]]; //送段码
WEIKOU=bitcode;
//位码
dl_ms();
//延时1ms
WEIKOU=0xff;//关闭显示
bitcode=_crol_(bitcode,1);//位码左循环移位 }}例3:利用P0、P3口进行动态显示:显示“123456”#include<reg51.h>#include<intrins.h>unsignedchardis_buf[6]={0};//显示缓冲区unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddl_ms() //延时1ms{ unsignedintj; for(j=0;j<150;j++);}voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位码
for(i=0;i<6;i++) { P0=table[dis_buf[i]]; //送段码
P3=bitcode; //位码
dl_ms(); //延时1msP3=0xff; //关闭显示
bitcode=_crol_(bitcode,1);//位码左循环移位
}}voidmain(void){ dis_buf[0]=1;dis_buf[1]=2; dis_buf[2]=3;dis_buf[3]=4;dis_buf[4]=5;dis_buf[5]=6;
while(1) { display(); }}A15A14A13A12A11A10A9A8A7---------A0101111001--------1
01
10
11
8255端口地址:BCFFH—BFFFH例4:利用8255A控制动态显示PA口为段口,PB口为位口74LS245、7407均为同向驱动器。例4:利用8255进行动态显示:显示“12345678”#include<reg51.h>#include<intrins.h>#include<absacc.h>#defineCOM8255XBYTE[0xbfff]#definePA8255XBYTE[0xbcff]#definePB8255XBYTE[0xbdff]#definePC8255XBYTE[0xbeff]unsignedchardis_buf[8]={1,2,3,4,5,6,7,8}; //显示缓冲区unsignedcharcodetable[16]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x27,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71};voiddl_ms() //延时1ms{ unsignedintj; for(j=0;j<150;j++);}voiddisplay(void){ unsignedchari; unsignedcharbitcode=0xfe; //位码
for(i=0;i<8;i++) { PA8255=table[dis_buf[i]]; //送段码
PC8255=bitcode; //位码
dl_ms(); //延时1msPC8255=0xff; //关闭显示
bitcode=_crol_(bitcode,1);//位码左循环移位
}}voidmain(){ COM8255=0x80; //8255初始化
while(1) { display(); }}提高:显示程序的实际问题前述显示程序是理想仿真下的情况。实际电路板中的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 神经脊柱科健康宣教
- 实施循证实践提升眼科护理安全
- 2026房屋买卖合同范本下载
- 高新技术企业劳动合同样本
- 个人出租房屋合同范本(2026版)
- MMO钛带阳极的结构、性能与工作原理
- 2026年年度班级工作总结及工作计划(3篇)
- 幼儿园学年第一学期研训工作计划(2篇)
- 江西省南昌市2026届高三年级四月第二次模拟数学试卷(含答案)
- 2025年AR博物馆导览的情境化交互设计
- 非标设备装配管理制度
- 小学50米跑教育
- 全国青少年人工智能创新挑战赛技能知识竞赛题库(含答案)
- 不规则抗体筛查和鉴定课件
- 精酿啤酒厂合作协议书范文
- 心理咨询与治疗新
- JTG-QB-003-2003公路桥涵标准图钢筋混凝土盖板涵
- 医药代表拜访情景演练
- 《食物在身体里的旅行》
- 日本跌宕50年一个制造业强国的沉浮史
- IE改善四大原则及ECRS技法课件
评论
0/150
提交评论