实验四-数码管显示_第1页
实验四-数码管显示_第2页
实验四-数码管显示_第3页
实验四-数码管显示_第4页
实验四-数码管显示_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

(完整word版)实验四数码管显示(完整word版)实验四数码管显示(完整word版)实验四数码管显示实验四数码管显示1。驱动原理数码管由7个发光二极管组成,行成一个日字形,它门可以共阴极,也可以共阳极。通过解码电路得到的数码接通相应的发光二极而形成相应的字,这就是它的工作原理。基本的半导体数码管是由7个条状的发光二极管(LED)按图1所示排列而成的,可实现数字"0~9”及少量字符的显示。另外为了显示小数点,增加了1个点状的发光二极管,因此数码管就由8个LED组成,我们分别把这些发光二极管命名为”a,b,c,d,e,f,g,dp",排列顺序如下图1。图1:数码管引脚图及外形图2。数码管的结构及分类特别提示:注意段码和位码的概念;会找出不同接法的段码分析方法。数码管按各发光二极管电极的连接方式分为共阳数码管和共阴数码管两种共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮.共阴数码管内部连接如图3所示。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮.当某一字段的阴极为高电平时,相应字段就不亮。共阳数码管内部连接如图2所示。

图2:共阳数码管内部连接图

图3:共阴数码管内部连接图二、多位数码管的驱动方法A.静态法静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二—十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性.送数后可保持。B.动态扫描法动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp”的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低.注意:需要不停送数.实验任务一:静态扫描显示在数码管上循环显示0000至9999.打开锁存器74HC573锁存端,使数码管和P0口直通,向P0口送段码,打开数码管位选。注意:若P0口只需要用数码管功能,则锁存器573可以为直通方式若P0口需要数码管和其它器件复用,则需要用上573的锁存功能(1)硬件的连接图(2)实验目的:学会对数码管静态显示操作(3)实验步骤分析设计内容,设计软硬件设计方法编写C语言代码编译代码下载可执行文件硬件调试观察现象(4)程序源码:/***********************头文件*********************/#include”regx52。h" #defineucharunsignedchar#defineuintunsignedintucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};//0~9共阴显示子码sbitLOCK=P1^0; //定义锁存端sbitD1=P1^1; //数码管位选第一位sbitD2=P1^2; //数码管位选第二位sbitD3=P1^3; //数码管位选第三位sbitD4=P1^4; //数码管位选第四位/*******************毫秒级延时函数 *****************/voiddelayms(uintms){ucharb; while(ms--) { for(b=0;b<125;b++); }}/***********************主函数 *****************/voidmain(){ uinti; LOCK=1; //高电平通,低电平锁 //此程序因为不复用端口,所以让它全通 D1=0; //依次打开全部数码管位选 D2=0; D3=0; D4=0; while(1) { for(i=0;i<9;i++) { P0=dispcode[i]; //向P0口送段码 delayms(1000); //延时1S } }}(6)现象 数码管循环显示0000~9999。(7)扩展任务设计0~9自减器用数码管静态显示。实验任务二:动态扫描显示分别在各位上,显示7、6、5、4四个数,然后依次关闭显示,如此反复。(1)硬件的连接图(2)实验目的:学会对数码管的基本操作(3)程序设计内容打开锁存器74HC573锁存端,使数码管和P0口直通,向P0口送段码,依次打开数码管位选,延时1S再依次关闭位选,如此往复循环。注:若P0口只需要用数码管功能,则锁存器573可以为直通方式;若P0口需要数码管和其它器件复用,则需要用上573的锁存功能(4)程序流程图:(5)程序源码:/*************************头文件***********************/#include"regx52.h” #defineucharunsignedchar#defineuintunsignedintucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0~9共阴显示子码sbitLOCK=P1^0; //定义锁存端sbitD1=P1^1; //数码管位选第一位sbitD2=P1^2; //数码管位选第二位sbitD3=P1^3; //数码管位选第三位sbitD4=P1^4; //数码管位选第四位/********************毫秒级延时函数 ***********************/voiddelayms(uintms){ucharb;while(ms--){ for(b=0;b<125;b++); }}/*********************主函数***********************/voidmain(){ LOCK=1; //高电平通,低电平锁 //此程序因为不复用端口,所以让它全通 while(1) { D1=0; //依次打开全部位选 P0=dispcode[8]; //把数组的第八位(7)取出来赋给P0 delayms(1000); D1=1; delayms(1000); D2=0; P0=dispcode[7]; //把数组的第七位(6)取出来赋给P0 delayms(1000); D2=1; delayms(1000); D3=0; P0=dispcode[6]; //把数组的第六位(5)取出来赋给P0 delayms(1000); D3=1; delayms(1000); D4=0; P0=dispcode[5]; //把数组的第五位(4)取出来赋给P0 delayms(1000); D4=1; delayms(1000); }}(6)现象DI显示7延时1s,关闭延时1s;D2显示6延时1s,关闭延时1s;D3显示5延时1s,关闭延时1s;D4显示4延时1s,关闭延时1s;(7)扩展任务 拉布显示8765->7654—〉6543—>5432—>4321—>3210—〉2108如此循环.实验任务三:数码管动态扫描使用进阶0~9999自加器,满9999清0重新计数.(1)硬件连接图如上(2)实验目的:学会对数码管的更进一步的控制(3)程序设计内容 本实验使用了定时器0中断完成4位数码管的显示。注意:若P0口只需要用数码管功能,则锁存器573可以为直通方式;若P0口需要数码管和其它器件复用,则需要用上573的锁存功能。(4)实验步骤分析设计内容,设计软硬件设计方法编写C语言代码编译代码下载可执行文件硬件调试观察现象(5)程序源码:/**************************头文件***********************/#include”regx52.h" #defineucharunsignedchar#defineuintunsignedintucharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f};//0~9共阴显示子码ucharcodedispbit[]={0xfd,0xfb,0xf7,0xef}; //数码管位选码,低电平为选通,分别是P11,P12,P13,P14uchardispbuf[]={””};uintnum=0; //计数变量ucharcont=0; //显示偏移量uchari=0; //计时变量sbitLOCK=P1^0; //定义锁存端/************************毫秒级延时函数*****************/voiddelayms(uintms){ ucharb; while(ms--) { for(b=0;b〈125;b++); }}/**************************主函数*****************/voidmain(){ LOCK=0; //数码管直通 IE=0X82; //EA=1ET0=1打开总中断打开定时器0中断 TMOD=0X01; //T0方式28位定时器自动重装 TL0=(65536-5000)%256; //定时5MS TH0=(65536—5000)/256; TR0=1; //启动定时器T0 while(1) //大循环 { num++; //计数变量自增 if(num==10000) //满10000清0(数码管最大显示9999) { num=0; } dispbuf[3]=num/1000%10; //分离千位,放缓冲区dispbuf[] dispbuf[2]=num/100%10; //分离百位 dispbuf[1]=num/10%10; //分离十位 dispbuf[0]=num/1%10; //分离个位 delayms(50); //延时50MS(时间自定) }}/********************定时器0的中断服务程序*****************///利用中断服务函数,完成4位数码管的显示voidtimetodisplay()interrupt1//定时器T0{ TL0=(65536—5000)%256; //定时5MSTH0=(65536-5000)/256; P0=dispcode[dispbuf[cont]];//根据显示偏移量cont,将数

温馨提示

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

评论

0/150

提交评论