C51单片机应用设计与技能训练(第2版)课件 6.3 扫一扫看教学课件:单片机的显示控制_第1页
C51单片机应用设计与技能训练(第2版)课件 6.3 扫一扫看教学课件:单片机的显示控制_第2页
C51单片机应用设计与技能训练(第2版)课件 6.3 扫一扫看教学课件:单片机的显示控制_第3页
C51单片机应用设计与技能训练(第2版)课件 6.3 扫一扫看教学课件:单片机的显示控制_第4页
C51单片机应用设计与技能训练(第2版)课件 6.3 扫一扫看教学课件:单片机的显示控制_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机的显示控制

段显示(7段、米字型等)和点阵显示(5×8、8×8点阵等)。一、单片机的显示控制发光二极管LED(LightEmittingDiode)显示器液晶LCD(LiquidCrystalDisplay)显示器CRT显示器……(一)LED显示器结构

LED显示器内部由多个发光二极管组成。(二)显示字形与字段码关系aabcdefgabcedgfGNDGND7691254938dpdpD7D6D5D4D3D2D1D0字dpgfedcba011000000111111001210100100310110000410011001510010010610000010711111000810000000910010000LED数码管显示字形与字段码关系

显示字形共阳极字段码共阴极字段码显示字形共阳极字段码共阴极字段码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHb83H7CH3B0H4FHCC6H39H499H66HdA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H“熄灭”FFH00H880H7FH

数码管与P1口接口连接电路P1=0x3F(共阴极)P1=0xC0(共阳极)dpgfedcba(三)LED数码显示方式及电路特点:每个数码管必须接一个8位锁存器用来锁存待显示的字形码。送入一次字形码显示字形一直保持,直到送入新字形码为止。优点:占用CPU时间少,显示便于监测和控制。缺点:硬件电路比较复杂,成本较高。静态显示接口电路有许多种,1.静态显示方式:并行口静态显示电路字段码位选线轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。(2)动态显示特点:将所有数码管的段选线并联在一起,通过控制位选信号来控制数码管的点亮。数码管采用动态扫描显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的限流电阻。4位LED动态显示电路5.2.4应用实例一维数组大量用在查表程序中。由于单片机的数据处理能力有限,因此对一些复杂的、高精度的数学运算往往无能为力,这时候就可以把数组作为一个表格,预先存储在存储器中,需要的时候可以通过查找数组元素快速地获得其中的数据。对于这些运行时无需修改的数组,通常将其定义为code存储器类型,将其存放在程序存储器中以节省数据存储器的空间。例一只数码管静态显示案例例一只数码管静态显示案例#include<reg51.h>unsignedcharseg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};main(){unsignedinti,j;while(1){for(i=0;i<10;i++){P0=seg[i];for(j=50000;j>0;j--);}}}例多只数码管静态显示案例74LS373功能表输入

输出OELEDQLHHHLHLLLL×Q不变H××高阻态例多只数码管静态显示案例#include<reg51.h>unsignedcharseg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};voidmain(){unsignedinti,ctr=0xfe;P2=0xff;for(i=0;i<3;i++){P0=seg[i];P2&=ctr;ctr<<=1;}while(1);}例数码管动态显示案例例数码管动态显示#include<reg51.h>unsignedcharseg[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x70};unsignedcharcon[4]={0xfe,0xfd,0xfb,0xf7};unsignedinti=0;main(){TMOD=2;TH0=6;TL0=6;EA=1;ET0=1;TR0=1;while(1);}voidisr_time0()interrupt1{P2=con[i];P1=seg[i];i++;if(i==4)i=0;}案例设计计时器案例设计计时器#include<reg51.h>unsignedcharseg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};unsignedcharcon[6]={0x1,0x2,0x4,0x8,0x10,0x20};unsignedcharmm=0;unsignedcharss=0;unsignedcharhh=0;unsignedcharcount=100;main(){TMOD=1;TH0=-10000>>8;TL0=-10000;EA=1;ET0=1;TR0=1;while(1);}voidisr_time0()interrupt1{unsignedinti=0,j;unsignedchartime[6];TH0=-10000>>8;TL0=-10000;count--;if(count==0)

{

count=100;ss++;if(ss==60)

{ss=0;mm++; if(mm==60)

{mm=0;hh++; if(hh==24)hh=0;

}

}

}time[0]=hh/10;time[1]=hh%10;time[2]=mm/10;time[3]=mm%10;time[4]=ss/10;time[5]=ss%10;for(i=0;i<6;i++){P2=con[i];if(i==1||i==3)P1=seg[time[i]]&0x7f;elseP1=seg[time[i]];for(j=100;j>0;j--);}}在现代工业控制和一些智能化仪器仪表中,越来越多的场所需要用点阵图形显示器显示数字、字母或汉字,例如日常生活中经常见到的电梯楼层的显示与一些户外广告,都是用LED点阵作为显示器。LED点阵中要用到的一个典型数据结构就是二维数组。不论显示图形还是文字,都是控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光。通常事先把需要显示的图形文字转换成点阵图形,再按照显示控制的要求以一定的格式形成显示数据。对于只控制通断的图文显示屏来说,每个LED发光器件占据数据中的1位(lbit),在需要该LED器件发光的数据中相应的位填1,否则填0。当然,根据控制电路的安排,相反的定义同样是可行的。LED点阵的显示这样依照所需显示的图形文字,按显示屏的各行各列逐点填写显示数据,就可以构成一个显示数据文件。显示图形的数据文件,其格式相对自由,只要能够满足显示控制的要求即可,例如,可以用一个5×7(5列7行)的LED点阵显示数字“1”或“2”LED点阵的显示把同一列发光管的阳极连接在一起,把所有同一行的阴极连在一起。先送出对应第1列发光管亮灭的数据,然后选通第1列使其点亮一段时间后熄灭;再送出第2列的数据,然后选通第2列使其点亮相同的时间后熄灭;第5列之后又重新点亮第1列,这样反复轮回,当这样轮回的速度足够快时(每秒24次以上),由于人眼的视觉暂留现象就能看到显示屏上稳定的显示了。LED点阵的显示设用P1的低7位控制行的显示(最低位对应最上端的LED),用(P3的低5位控制列的显示。可以看出从左到右每一列的显示数据依次为0x00,0x42,0x7f,0x40,0x00。因此可以用下面的数组表示“1”:{0x00,0x42,0x7f,0x40,0x00}同理,可以用下面的数组表示“2”:{0x42,0x61,0x51,0x49,0x46}LED点阵的显示unsignedcharcodedigit_code[10][5]={{0x3e,0x41,0x41,0x41,0x3e},//0{0x00,0x42,0x7f,0x40,0x00},//1{0x42,0x61,0x51,0x49,0x46},//2

{0x22,0x41,0x49,0x49,0x36},//3{0x18,0x14,0x12,0x7f,0x10},//4{0x27,0x45,0x45,0x45,0x39},//5{0x3c,0x4a,0x49,0x49,0x30},//6{0x01,0x71,0x09,0x05,0x36},//7{0x36,0x49,0x49,0x49,0x36},//8{0x06,0x49,0x49,0x29,0x1e}//9};LED点阵的显示unsignedcharcodedigit_code[10][5]={{0x41,0x3e,0x3e,0x3e,0x41},//0{0x7f,0x3d,0x00,0x3f,0x7f},//1{0x3d,0x1e,0x2e,0x36,0x39},//2{0x5d,0x3e,0x36,0x36,0x49},//3{0x67,0x6b,0x6d,0x00,0x6f},//4{0x58,0x3a,0x3a,0x3a,0x46},//5{0x43,0x35,0x36,0x36,0x4f},//6{0x7e,0x0e,0x76,0x7a,0x7d},//7{0x49,0x36,0x36,0x36,0x49},//8{0x79,0x36,0x36,0x56,0x61}//9};D0D1D2D3D4D5D6LED点阵的显示LED点阵的显示5×7LED点阵的控制电路如右图所示。由于LED点阵中发光管的数量较多,单片初本身的端口达不到控制的要求,因此对于LED点阵的控制一般要对单片机的端口进行扩展。但本例主要介绍二维数组的应用,故对这些枝节问题没有过多地考虑,仍直接用单片机端作为列驱动。LED点阵的显示在程序中定义了一个delay()函数,该函数是一个延时,确定了轮流显示字符时每个字符显示的时间;定时器0初始化为24MHz下的4ms中断,这个4ms是显示某个字符时每一列显示的持续时间,5列循环显示,直到上述的delav()所确定的时间段耗完,转去显示下一个字符。#include<reg51.h>unsignedcharcodedigit_code[10][5]={{0x41,0x3e,0x3e,0x3e,0x41},//0{0x7f,0x3d,0x00,0x3f,0x7f},//1{0x3d,0x1e,0x2e,0x36,0x39},//2{0x5d,0x3e,0x36,0x36,0x49},//3{0x67,0x6b,0x6d,0x00,0x6f},//4{0x58,0x3a,0x3a,0x3a,0x46},//5{0x43,0x35,0x36,0x36,0x4f},//6{0x7e,0x0e,0x76,0x7a,0x7d},//7{0x49,0x36,0x36,0x36,0x49},//8{0x79,0x36,0x36,0x56,0x61}//9};用二维数组实现LED点阵的显示voidmain(){init_time0();while(1){delay();number=(number+1)%10;}}voiddelay(){unsignedinti,j;for(i=0;i<1000;i++)for(j=0;j<500;j++);}用二维数组实现LED点阵的显示unsignedcharnumber=0;unsignedcharcolumn=0;void

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论