LED显示器接口技术及实验
微机接口原理--实验一 LED点阵显示实验

② CPU与外设之间设臵接口的理由
CPU与外设两者的信号线不兼容,在信号线功能定义、逻 辑定义和时序关系上都不一致; 工作速度不一致,CPU速度高,外设速度低;
不通过接口,由CPU直接对外设操作实施控制,就会使 CPU处于应付与外设打交道之中,大大降低CPU效率;
若外部设备直接由CPU控制,也会使外设的硬件结构依赖 于CPU,对外设本身的发展不利。 因此,有必要设臵接口电路,作为CPU与外设之间的桥梁, 使数据信息传送之前能有“联络”,传递的信息有3方面内 容: 状态、数据及控制信息。
③选择F. 纯DOS模式&PURE DOS MODE ;
④选择盘符C盘,执行auto.bat批处理文件,启动BC; ⑤通过project菜单,打开已建立的工程文件,即可进行 程序的调试和运行等工作。 ⑥ 或者直接在DOS下,选择D盘,找到Led.EXE,执
行,即可在实验箱看到实验结果。
Borlandc 调试、运行界面
五、本单元实验要求
实验讲义中的程序1为 LED点阵显示汉字“实”的主程序; 本实验单元的要求为:
1. 修改该程序,让LED点阵从下至上滚动显示“实验室”字样;
2. 画出所编程序的流程图; 3. 给出程序修改部分的源代码;
4. 认真回答思考题,并附在实验报告里。
实验一 LED 点阵显示实验
主要内容
预备知识 锁存器(74LS273)的工作原理 汉字点阵取模的方法和原理 开发环境的设臵和使用方法
一、预备知识
1、计算机接口技术概述
① 意义
微机接口(Interface)就是微处理器CPU与各种外设之间的连接电路, 学习它需要掌握微机原理、汇编语言(或高级语言)程序设计、电 子技术、自控原理以及通信技术等多门课程的基础理论和专业知识。 随着集成电路集成化的不断增高,电子计算机向微型化方向发展, 已成为导弹、智能机器人、卫星等复杂系统必不可少的智能部件。 目前,微机不仅作为科学计算、实时监控、现代化通信和管理的手 段,而且也成为人类进行学习、看病、咨询、购物、旅游等生活服 务和娱乐的工具。 在微机系统中,微处理器的功能是通过外设得以实现,而外设与微 处理器之间的信息交换及通信又是靠接口来实现的。因此,微机应 用系统的研究和微机化产品的开发,从硬件角度来讲,就是接口电 路的研究和开发,接口技术已成为直接影响微机系统的功能和微机 推广应用的关键。微机的应用是随着外部设备的不断更新和接口技 术的发展而深入到各个领域的。因此,掌握微机接口技术就成为当 代的科技和工程技术人员应用微型计算机必不可少的基本技能。
七段数码显示器显示实验报告

七段数码显示器显示实验报告单片机原理及接口技术实验报告实验项目:姓名:专业:班级:学号:一、实验名称七段数码显示器显示实验(SPI通信方式)二、实验设备PC机1台,CEPARK畅学系列实验装置1套三、实验目的1.熟悉I/O口作为数字量输出的初始化;2.熟悉共阳极与共阴极两种数码管的工作原理;3.学会软硬件的设计和调试方法;4.根据七段数码管的特性,对应出每个数字引脚输出的16进制码,然后编写程序。
四、实验要求1.将0-9这十个数字按顺序依次在数码管上显示出来,时间间隔为0.5S;2.熟悉延时函数的使用(可用for循环自己写一个延时函数);3.掌握PIC16F877A芯片及电子元件的使用方法;4.实现单片机软件与硬件的结合,将理论知识应用于实践。
五、理论原理1.LED七段数码显示器由8个发光二极管组成显示字段,根据内部发光二极管的连接形式不同,LED有共阴极和共阳极两种(原理图如下图1所示)。
(实验板采用的LED为共阳极的连接方式)图1.单个共阳极数码管原理图2.接口说明:接口编号为JP44,需要一个8位端口(A~G、DP)去控制,因此提供给LED的字形码也是8位的。
数码管各段编号如下图2所示:图2.数码管各段编号3.LED七段数码显示器各字段与控制端口位的对应关系如下表1所示:表1. 七段数码显示器各字段与控制端口位的对应关系控制端口位D7 D6 D5 D4 D3 D2 D1 D0 字段名dp g f e d c b a 4.共阳极LED七段数码显示器字形代码如下表2所示:字形显示编码字形显示编码0 C0H 9 90H1 F9H A 88H2 A4H b 83H3 B0H C C6H4 99H d A1H5 92H E 86H6 82H F 8EH7 F8H .(小数点)7FH8 80H -(负号)BFH六、实验内容步骤1.接线说明核心板RD口接底板JP15,具体为:RD0-A,RD1-B,RD2-C,RD3-D,RD4-E,RD5-F,RD6-G,RD7-DP2.创建项目打开MPLAB IDE v8.90 →选择Project,进入Project Wizard,进入下面的界面,单击下一步。
实验四 LED数码管显示实验报告

实验名称 LED数码管显示实验指导教师曹丹华专业班级光电1202班姓名陈敬人学号联系电话一、任务要求实验目的:理解LED七段数码管的显示控制原理,掌握数码管与MCU的接口技术,能够编写数码管显示驱动程序;熟悉接口程序调试方法。
实验内容:1.基础部分:利用C8051F310单片机控制数码管显示器。
利用末位数码管循环显示数字0-F,显示切换频率为1Hz。
2.提高部分:在数码管上显示0→199计数,计数间隔为0.5秒。
二、设计思路1.基础部分C8051F310单片机片上晶振为24.5MHz,采用8分频后为3.0625MHz ,输入时钟信号为48个机器周期,T1采用定时器工作方式1,单次定时最长可达1.027s,可以实现1s定时要求。
定时采用软件查询工作方式,利用JNB TF0, HERE实现。
置P0.6和P0.7端口为0,位选信号选定末位数码管。
通过MOVC A, @A+DPTR指令,利用顺序查表法取出显示段码数据。
寄存器R0自增1,并赋给A以取出下一个显示段码数据。
为减短代码长度,利用CJNE指令实现循环结构。
当寄存器R0增至0FH后,跳转至开头,重新开始下一轮显示。
2.提高部分定时方式及查表方式同基础部分,由于要实现三个数码管同时显示,因此采用动态扫描显示法。
三、资源分配1.基础部分P0.6: 位选信号端口P0.7:位选信号端口P1:输出段码数据R0:存放显示数据DPTR:指向段码数据表首 2.提高部分P0.6:位选信号端口P0.7:位选信号端口R0:存放个位显示数据 R5:存放十位显示数据 R6:存放百位显示数据 P1:输出段码数据DPTR: 指向段码数据表首四、流程图1.基础部分2.提高部分五、源代码(含文件头说明、语句行注释)1.基础部分;******************基础部分源代码***************************;Filename: test.asm;Decription: 末位数码管循环显示数字0-F,显示切换频率为1Hz。
用8255设计LED显示器接口实验

用8255设计LED显示器接口实验本文结合实验教学需要,介绍了用8255设计LED显示器接口实验的过程。
关键词:微机原理及应用;8255;LED;接口“微机原理及应用”是工科类专业的基础课,该课程比较抽象,因此实验教学起着至关重要的作用。
通过实验学生可以对比较抽象的命令、程序、输入输出接口电路加深理解。
现在仍有许多高校使用北京理工达盛科技有限公司的8086实验箱,但由于受到实验条件的限制,往常的做法是在有限的课堂时间内安排一些旨在验证理论知识的实验内容,较少涉及运用理论知识去解决实际问题。
这样的实验教学不利于发挥学生的学习主动性,不利于培养学生解决实际问题的能力。
如何改革传统的实验教学,如何培养学生的实际应用能力,本文举一个实例,需要教师利用现有的条件设计一些综合实验,让学生独立地去解决这些问题,从中培养能力。
希望本文能起到穿针引线的作用。
1设计LED显示器接口实验8086实验指导书显示器接口实验使用的是8279的显示输出功能,实验内容是在6位LED上循环显示8。
8086实验指导书8255并行口实验使用的是8255芯片,读开关量、输出、LED灯显示,实验讲义上都给出了电路原理图以及参考程序,学生往往是照着实验指导书上连接好线路,输入参考程序,进行程序调试。
大部分时间花在了实验的验证上,这样缺乏主动性和创新性,什么都是现成的。
能否在此基础上拓展一下,用8255芯片来实现显示器接口实验,这样既可取代8279,又可加深对8255的理解和使用。
实验任务:使用8255芯片的PA口作为段寄存器,PB口做为位寄存器,使用6位数码管从右向左逐位显示0~G,即显示0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G。
连线编程:由学生自己独立连接并独立编程实现,在编程过程中加深对硬件的理解、命令以及涉及的技巧。
2LED 显示器接口实验程序代码code segmentorg 100haa1: mov dx,04a6h ‘8255控制端口地址,大于255用dx做桥梁,小于255直接由端口地址传值mov al,80h ‘8255工作方式控制字out dx,allea bx,data ‘取偏移地址与bx相加aa3: mov ch,0‘显示数字0-------9 ,其中ch内容在变aa4: mov ah,0feh‘即1111 1110 为0时亮,须注意PB0与led接法,灯旋转方向mov si,6‘6个ledaa2: mov al,chxlat ‘查表地址转换指令:=MOV AL,[BX+AL]mov dx,04a0h ‘A口送字形,注意其端口地址out dx,almov al,ahmov dx,04a2h‘B口控制哪一位亮out dx,alrol ah,1 ‘1111 1110 循环左移mov di,0ffffhaa5: dec dijnz aa5 ‘延时,不为0,则decdi ,为0,则dec sidec sijnz aa2 ‘si不为0,则aa2——decsi ,为0,则inc chinc chcmp c h,12‘ch的值从0-18jnz aa4 ‘循环jmp aa3‘又从0开始到Fdata db 3fh,06h,5bh,4fh,66h,6dhdb 7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h,73h,88h,00hcode endsend aa1说明:在实验教学中如何培养能力?首先设计出较好的题目。
单片机实验报告——LED数码管显示实验

单⽚机实验报告——LED数码管显⽰实验(此⽂档为word格式,下载后您可任意编辑修改!)《微机实验》报告LED数码管显⽰实验指导教师:专业班级:姓名:学号:联系⽅式:⼀、任务要求实验⽬的:理解LED七段数码管的显⽰控制原理,掌握数码管与MCU的接⼝技术,能够编写数码管显⽰驱动程序;熟悉接⼝程序调试⽅法。
实验内容:利⽤C8051F310单⽚机控制数码管显⽰器基本要求:利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
提⾼要求:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:yyyy (年份)mm.dd(⽉份.⽇).asm;Description: 利⽤末位数码管循环显⽰数字0-9,显⽰切换频率为1Hz。
;Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000H ;复位⼊⼝AJMP MAINORG 000BH ;定时器0中断⼊⼝AJMP TIME0MAIN: ACALL Init_Device ;初始化配置MOV P0,#00H ;位选中第⼀个数码管MOV R0,#00H ;偏移指针初值CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#06HMOV TL0,#0C6H ;赋初值,定时1sLOOP: MOV A,R0ADD A,#0BH ;加偏移量MOVC +PC ;查表取,段码MOV P1,A ;段码给P1显⽰SETB TR0 ;开定时LOOP1: JNB PSW.1,LOOP1 ;等待中断CLR PSW.1INC R0 ;偏移指针加⼀CJNE R0,#0AH,LOOP3MOV R0,#00H ;偏移指针满10清零AJMP LOOP ;返回DB 0FCH,60H,0DAH,0F2H,66H ;段码数据表:0、1、2、3、4 DB 0B6H,0BEH,0E0H,0FEH,0F6H; 5、6、7、8、9 ;***************************************************************** ; 定时器0中断;***************************************************************** TIME0: SETB PSW.1 ;标志位置⼀MOV TH0,#06H ;定时器重新赋值MOV TL0,#0C6HLOOP3: CLR TR0 ;关定时RETI;***************************************************************** ;初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital ; P0.1 - Unassigned, Open-Drain, Digital ; P0.2 - Unassigned, Open-Drain, Digital ; P0.3 - Unassigned, Open-Drain, Digital ; P0.4 -Unassigned, Open-Drain, Digital ; P0.5 - Unassigned, Open-Drain, Digital ; P0.6 - Unassigned, Open-Drain, Digital ; P0.7 - Unassigned, Open-Drain, Digital ; P1.0 - Unassigned, Open-Drain, Digital ; P1.1 - Unassigned, Open-Drain, Digital ; P1.2 - Unassigned, Open-Drain, Digital ; P1.3 - Unassigned, Open-Drain, Digital ; P1.4 - Unassigned, Open-Drain, Digital ; P1.5 - Unassigned, Open-Drain, Digital ; P1.6 - Unassigned, Open-Drain, Digital ; P1.7 - Unassigned, Open-Drain, Digital ; P2.0 - Unassigned, Open-Drain, Digital ; P2.1 -Unassigned, Open-Drain, Digital ; P2.2 - Unassigned, Open-Drain, Digital ; P2.3 - Unassigned, Open-Drain, Digital mov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend提⾼部分:;*********************************************************;Filename: shumaguan2.asm;Description:在4位数码管显⽰器上依次显⽰当天时期和时间,显⽰格式如下:; 2012 (年份); 12.07(⽉份.⽇); 12.34(⼩时.分钟);Designed by:gxy;Date:2012117;*********************************************************$include (C8051F310.inc)ORG 0000HAJMP MAINORG 000BHAJMP TIME0MAIN: ACALL Init_DeviceMOV R0,#00H ;⽤于位选MOV R1,#00H ;⽤于段选MOV R2,#22H ;置偏移量,⽤于控制模式MOV R4,#8MOV R5,#250CLR PSW.1 ;标志位清零SETB EA ;允许总中断SETB ET0 ;允许定时器0中断MOV TMOD,#01H ;定时器0选⼯作⽅式1MOV TH0,#0FFHMOV TL0,#0C0H ;定时器赋初值1msBACK: MOV P0,R0 ;位选MOV A,R0ADD A,#40H ;选下⼀位MOV R0,AMOV A,R1ADD A,R2 ;加偏移量MOVC +PC ;查表取段码MOV P1,A ;段码给P1显⽰LOOP: SETB TR0 ;开定时HERE: JNB PSW.1,HERE ;等待中断CLR PSW.1DJNZ R5,BACKMOV R5,#250DJNZ R4,BACKMOV R4,#8 ;循环2000次(2s)MOV A,R2ADD A,#04H ;偏移量加04H,到下⼀模式段码初值地址 MOV R2,ACJNE R2,#2EH,LOOP2MOV R2,#22H ;加三次后偏移量回到初值LOOP2: AJMP BACK ;返回进⼊下⼀模式;段码数据表:DB 0DAH,60H,0FCH,0DAH ; 2102DB 0E0H,0FCH,61H,60H ; 701. 1DB 66H,0F2H,0DBH,60H ; 432. 1;*****************************************************************; 定时器0中断;***************************************************************** TIME0: MOV TH0,#0FFH MOV TL0,#0C0HCLR TR0SETB PSW.1INC R1 ;偏移指针加⼀CJNE R1,#04H,LOOPMOV R1,#00H ;偏移指针满04H清零RETI;***************************************************************** ; 初始化配置;***************************************************************** PCA_Init:anl PCA0MD, #0BFhmov PCA0MD, #000hretTimer_Init:mov TMOD, #001hmov CKCON, #002hretPort_IO_Init:; P0.0 - Unassigned, Open-Drain, Digital; P0.1 - Unassigned, Open-Drain, Digital; P0.2 - Unassigned, Open-Drain, Digital; P0.3 - Unassigned, Open-Drain, Digital; P0.4 - Unassigned, Open-Drain, Digital; P0.5 - Unassigned, Open-Drain, Digital; P0.6 - Unassigned, Open-Drain, Digital; P0.7 - Unassigned, Open-Drain, Digital; P1.0 - Unassigned, Open-Drain, Digital; P1.1 - Unassigned, Open-Drain, Digital; P1.2 - Unassigned, Open-Drain, Digital; P1.3 - Unassigned, Open-Drain, Digital; P1.4 - Unassigned, Open-Drain, Digital; P1.5 - Unassigned, Open-Drain, Digital; P1.6 - Unassigned, Open-Drain, Digital; P1.7 - Unassigned, Open-Drain, Digital; P2.0 - Unassigned, Open-Drain, Digital; P2.1 - Unassigned, Open-Drain, Digital; P2.2 - Unassigned, Open-Drain, Digital; P2.3 - Unassigned, Open-Drain, Digitalmov XBR1, #040hretInterrupts_Init:mov IE, #002hretInit_Device:lcall PCA_Initlcall Timer_Initlcall Port_IO_Initlcall Interrupts_Initretend六、程序测试⽅法与结果、软件性能分析软件调试总体截图:基础部分:软件运⾏时,我们发现P0端⼝为00H,P1端⼝以依次为FCH、60H、DAH、F2H、66H、B6H、BEH、E0H、FEH、F6H。
实验一、LED显示控制、82C55A并行接口数码管显示控制实验

//调用指定的 X86 中断
iobase0=regs.x.cx;
//CX 为返回的 IO0 的基地址
return(regs.h.ah);
} int getPCIbase1(void) {
union REGS regs;
regs.h.ah=0xb1; regs.h.al=0x09;
regs.x.di=0x1c;
regs.h.bl=bl; regs.h.bh=bh; int86(0x1a,®s,®s); iobase1=regs.x.cx; return(regs.h.ah); } int getPCImembase0(void)
//返回状态 //同上 //PCI 配置空间基地址 1 的地址
接口技术实验指导书
regs.h.al=0x09;
//配置空间用字的方式读入
regs.x.di=0x14;
//PCI 配置空间中基地址 0 的地址
regs.h.bl=bl;
//要读入配置空间的 PCI 卡的设备号和功能号
regs.h.bh=bh;
//要读入配置空间的 PCI 卡的总线号
int86(0x1a,®s,®s);
01
10
000
0
只有这时 7430 与非门才输出低电平(八段 LED 是阴极型)
在 DOS 下,它的真实地址为 PCI 接口板的 I/O 地址加上 60H 为真实地址。如 PCI
的 I/O 起始地址 0 为 E000H , I/O 起始地址 1 为 E400H。74ALS273 的地址为 E460H。
union REGS regs;
//同上
regs.h.ah=0xb1; regs.h.al=0x09;
实验三 LED数码显示管实验

竭诚为您提供优质的服务,优质的文档,谢谢阅读/双击去除[宇宙与人观后感]宇宙与人观后感3000字《宇宙与人》是由忻迎一导演的科教电影;也是他所著的一本书籍,于20XX年湖北少儿出版社出版。
下面是小编给大家整理的宇宙与人观后感,供大家参阅!宇宙与人观后感篇1在前几天的一节马哲课上,我们观看了一部非常有教育意义的科普片《宇宙与人》。
电影中详细的介绍了人类的起源:人类是从宇宙中的核子结构产生核聚变,形成了基因,基因也是一切生命的起源,我们人类就是由基因组成的。
既然是宇宙给了我们生命,是小小核子给了我们生命。
我们应该感谢它们,应该让它们继续去创造比我们更伟大的生命。
也许保护宇宙是我们力所不能及的事情,但是,保护地球是我们应该做的,是我们能够做的,更是我们必须做的。
科学家已经证实:白色垃圾是不能被大自然所分解的。
所谓白色垃圾就是泡沫、塑料制品等。
而这些白色垃圾在我们的日常生活中是能够经常看到的,比如:在某个巷子里,几个人推着车子买盒饭,那些饭盒就是白色垃圾。
再比如:在商场里买东西,或在菜市场买菜他们总会给你一个塑料袋,塑料袋也是白色垃圾。
象这样的例子还有很多很多……在生活中既然有很多白色垃圾的存在,那么,为什么我们不采取保护措施呢?作为一个泱泱大国,我们的环保为什么还远没有一些比我们小得多的国家做的好呢?在芬兰,商场买东西不会给你塑料袋,为了环保;在意大利,铝和塑料的再造可以节省能源、钢和纸的再加工可节省能源、玻璃的再生产可节省能源;在日本,每天都有白色垃圾处理车,收集各大商场,零售店的泡沫塑料等白色垃圾在车内处理,他们把橘子汁烧到一定温度,把白色垃圾弄成象铁一样的东西,再经过特殊的处理,变成了纤维,又把纤维经过纺织,织成一件衣服,拿到市场上去卖,这样废品再利用了,并且没有给大自然带来一点污染。
这些方法,不是都很好吗?这些方法,极大的保护了环境,甚至,有的还可以赢利。
而中国呢?目前国内城市垃圾处理主要采用填埋法、堆肥法、、焚烧法极少,由于我国城市生活垃圾治理工作开展较晚,全国垃圾无害化处理设施严重不足,只有少数城市借助国际援助建成一些达到无害化处理标准的现代化垃圾处理设施。
实验一 LED灯显示实验

实验一LED灯显示实验一.实验目的1.熟悉arm开发板基本组成电路,并通过配套教材熟悉arm芯片特性。
了解ADS1.2软件使用,并会用该软件编译调试开发板。
2.了解H—JTAG软件原理,利用教材中提供的LED测试程序,完成实验。
二.实验器材PC机一台,周立功开发板一块注意:对LPC2103管脚的寄存器进行配置时,应该对照芯片说明手册,按照索引,找到相关寄存器,对其进行配置。
三.实验原理EasyARM2103开发板提供了4个绿色发光二极管用作显示,电路如图1.1所示。
显示电路采用了灌电流的方式来驱动发光二极管,由于微控制器LPC2103 I/O 口提供的灌电流大于其拉电流,采用此驱动方式可以保证二极管发光的亮度。
1.1Led电路原理四.实验内容及步骤1.下面以GPIO的测试程序为例,熟悉EasyJTAG-H软件的使用方法,程序功能设计为控制单路LED闪烁,硬件电路如图1.1所示。
2. 打开示例工程。
示例工程路径:配套光盘内容->光盘内容v1.00->3.EasyARM2103安装手册->GPIO Test,将此文件夹复制到其它目录下打开,要求存放目录必须无中文路径,如图5.13所示。
打开文件夹后,建议用户先删掉“GPIO_Test_Data”文件夹,然后双击打开“GPIOTest.mcp”文件,即打开示例工程。
3.点击“user”文件夹,打开main.c文件,见到示例代码4.选择低速GPIO,控制LED灯闪烁,示例程序如程序清单所示。
此示例操作需要短接JP4的P0.17,输出控制LED1。
5.编译连接工程。
项目目标栏处选择DebugInFlash模式,然后编译连接工程。
如图所示为工程窗口中的DebugRel Settings… 工程设置,如地址设置、输出文件设置、编译选项等,Synchronize Modificatinte同步修改日期,检查工程中每个文件的修改日期,若(如使用其辑源文件),则在h栏标记“√”Linker 生成的Image 一般包括三个区域:代码段、数据段和BSS 段。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LED显示器接口技术及实验在单片机系统中,经常用LED(发光二极管)数码显示器来显示单片机系统的工作状态、运算结果等各种信息,LED数码显示器是单片机与人对话的一种重要输出设备。
16.1 LED数码显示器的构造及特点图16-1是LED数码显示器的构造。
它实际上是由8个发光二极管构成,其中7个发光二极管排列成“8”字形的笔画段,另一个发光二极管为圆点形状,安装在显示器的右下角作为小数点使用。
通过发光二极管亮暗的不同组合,从而可显示出0~9的阿拉伯数字符号以及其它能由这些笔画段构成的各种字符。
图16-1 LED数码显示器的构造LED数码显示器的内部结构共有两种不同形式,一种是共阳极显示器,其内部电路见图16-2,即8个发光二极管的正极全部连接在一起组成公共端,8个发光二极管的负极则各自独立引出。
另一种是共阴极显示器,其内部电路见图16-3,即8个发光二极管的负极全部连接在一起组成公共端,8个发光二极管的正极则各自独立引出。
图16-2 共阳极显示器内部电路图16-3 共阴极显示器内部电路LED数码显示器中的发光二极管共有两种连接方法:共阳极接法。
把发光二极管的阳极连在一起,使用时公共阳极接+5V,这时阴极接低电平的段发光二极管就导通点亮,而接高电平的则不点亮。
共阴极接法。
把发光二极管的阴极连在一起,使用时公共阴极接地,这时阳极接高电平的段发光二极管就导通点亮,而接低电平的则不点亮。
驱动电路中的限流电阻R,通常根据LED的工作电流计算而得到,R=(Vcc-Vled)/Iled。
式中,Vcc为电源电压(+5V),Vled为LED压降(一般取2V左右),Iled为工作电流(可取1~20mA)。
R通常取数百欧姆。
我们实验中使用的89C51单片机,其P0~P3口具有20mA的灌电流输出能力,因此可直接驱动共阳极的LED数码显示器。
为了显示数字或符号,要为LED数码显示器提供代码,因为这些代码是为显示字形的,因此称之为字形代码。
七段发光二极管,再加上一个小数点位,共计8位代码,由一个数据字节提供。
各数据16.2 LED数码显示器的显示方法在单片机应用系统中,LED数码显示器的显示方法有两种:静态显示法和动态扫描显示法。
16.2.1 静态显示法所谓静态显示,就是每一个显示器各笔画段都要独占具有锁存功能的输出口线,CPU 把欲显示的字形代码送到输出口上,就可以使显示器显示出所需的数字或符号,此后,即使CPU不再去访问它,显示的内容也不会消失(因为各笔画段接口具有锁存功能)。
静态显示法的优点是显示程序十分简单,显示亮度大,由于CPU不必经常扫描显示器,所以节约了CPU的工作时间。
但静态显示也有其缺点,主要是占用的I/O口线较多,硬件成本也较高。
所以静态显示法常用在显示器数目较少的应用系统中。
图16-4为静态显示示意图。
图16-4中由74LS273(8D锁存器)作扩展输出口,输出控制信号由P2.0和/WR合成,当二者同时为0时,或门输出为0,将P0口数据锁存到74LS273中,口地址为FEEEH。
输出口线的低4位和高4位分别接BCD-7段显示译码驱动器74LS47,它们驱动两位数码管作静态的连续显示。
图16-4 静态显示示意图16.2.2 动态扫描显示法动态扫描显示是单片机应用系统中最常用的显示方式之一。
它是把所有显示器的8个笔画段a~h的各同段名端互相并接在一起,并把它们接到字段输出口上。
为了防止各个显示器同时显示相同的数字,各个显示器的公共端COM还要受到另一组信号控制,即把它们接到位输出口上。
这样,对于一组LED数码显示器需要由两组信号来控制:一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位显示器工作,称为位码。
在这两组信号的控制下,可以一位一位地轮流点亮各个显示器显示各自的数码,以实现动态扫描显示。
在轮流点亮一遍的过程中,每位显示器点亮的时间则是极为短暂的(1~5mS)。
由于LED具有余辉特性以及人眼视觉的惰性,尽管各位显示器实际上是分时断续地显示,但只要适当选取扫描频率,给人眼的视觉印象就会是在连续稳定地显示,并不察觉有闪烁现象。
动态扫描显示由于各个数码管的字段线是并联使用的,因而大大简化了硬件线路。
图16-5为动态显示示意图。
图16-5 动态显示示意图在实际的单片机系统中,LED显示程序都是作为一个子程序供监控程序调用,因此各位显示器都扫过一遍之后,就返回监控程序。
返回监控程序后,进行一些其它操作,再调用显示扫描程序。
通过这种反复调用来实现LED数码显示器的动态扫描。
动态扫描显示接口电路虽然硬件简单,但在使用时必须反复调用显示子程序,若CPU 要进行其它操作,那么显示子程序只能插入循环程序中,这往往束缚了CPU的工作,降低了CPU的工作效率。
另外扫描显示电路中,显示器数目也不宜太多,一般在12个以内,否则会使人察觉出显示器在分时轮流显示。
16.3做静态显示实验16.3.1 实现方法在LED数码管输出试验板上做一个静态显示实验,通电后左边两个数码管静态显示56,右边两个数码管则作累加显示16.3.2 源程序文件在我的文档中建立一个文件目录(S16-1),然后建立一个S16-1.uv2的工程项目,最后建立源程序文件(S16-1.asm)。
输入下面的程序:序号: 1 ORG 0000H2LJMP MAIN3 ORG 030H4 MAIN: MOV 20H,#00H5 MOV A,20H6 MOV P3,#92H7 MOV P2,#82H8 GOON: CLR C9 ANL A,#0FH10 MOV DPTR,#TAB11 MOVC A,@A+DPTR12 MOV P0,A13 MOV A,20H14 SWAP A15 ANL A,#0FH16 MOVC A,@A+DPTR17 MOV P1,A18 ACALL DEL19 MOV A,20H20 INC A21 DA A22 MOV 20H, A23 AJMP GOON24 DEL: MOV R7,#014H25 DEL1: MOV R6,#0FFH26 DEL2: MOV R5,#01FH27 DEL3: DJNZ R5,DEL328 DJNZ R6,DEL229 DJNZ R7,DEL130 RET31 ORG 0100H32 TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H33 DB 80H,90H,88H,83H,0C6H,0A1H,86H,08EH34 END编译通过后,将S16-1文件夹中的hex文件烧录到89C51芯片中,将芯片插入到LED 数码管输出试验板上,通电运行。
可看到左边两个数码管静态显示56,右边两个数码管则从00~99作累加显示。
16.3.3 程序分析解释序号1:程序开始。
序号2:跳转到MAIN主程序处。
序号3:主程序MAIN从地址0030H开始。
序号4:将立即数00H传送给20H单元中。
序号5:将20H单元中的内容传送给累加器A。
序号6:将立即数92H送P3口,使最左的数码管显示5。
序号7:将立即数82H送P2口,使左边第二个数码管显示6。
序号8:进位位CY置0。
序号9:屏蔽累加器A中高4位。
序号10:将数据表格的首地址(0100H)存入16位数据地址指针DPTR中。
序号11:查表。
序号12:将累加器A中内容传送给P0输出口,点亮“个”位数码管。
序号13:再将20H单元中的内容传送给累加器A。
序号14:交换累加器A中的高、低4位。
序号15:屏蔽A中高4位。
序号16:查表。
序号17:将累加器A中内容传送给P1输出口,点亮“十”位数码管。
序号18:调用延时子程序,便于观察。
序号19:20H单元中的内容传送给累加器A。
序号20:累加器A内容加1。
序号21:2-10进制调整。
序号22:累加器A中的内容传送给20H单元。
序号23:跳转到标号GOON处继续执行。
序号24~30:延时子程序。
序号31:数据表格的首地址为0100H。
序号32~33:数据表格内容。
序号34:程序结束。
可以看出,一开始CPU对P3、P2口置数点亮左边两个数码管(显示56),以后CPU不再访问P3、P2口。
由于P3、P2口具有锁存作用,因此左边两个数码管被持续点亮,处于静态显示状态。
下面再在LED数码管输出试验板上做慢速扫描动态显示与快速扫描动态显示的对此实验。
16.4 P3~P0口的数码管依次慢速(显示时间为0.5S)显示1234四个字的实验16.4.1 源程序文件在我的文档中建立一个文件目录(S16-2),然后建立一个S16-2.uv2的工程项目,最后建立源程序文件(S16-2.asm)。
输入下面的程序:序号: 1 ORG 0000H2 LJMP MAIN3 ORG 030H4 MAIN: MOV P3,# 0F9H5 ACALL DEL0_5S6 MOV P3,#0FFH7 MOV P2,# 0A4H8 ACALL DEL0_5S9 MOV P2,#0FFH10 MOV P1,#0B0H11 ACALL DEL0_5S12 MOV P1,#0FFH13 MOV P0,#99H14 ACALL DEL0_5S15 MOV P0,#0FFH16 AJMP MAIN17 DEL0_5S: MOV R5,#04H18 DEL1: MOV R6,#0FFH19 DEL2: MOV R7,#0FFH20 DEL3: DJNZ R7,DEL321 DJNZ R6,DEL222 DJNZ R5,DEL123 RET24 END编译通过后,将S16-2文件夹中的hex文件烧录到89C51芯片中,将芯片插入到LED 数码管输出试验板上,通电运行。
可看到左边第一个(千位)数码管显示“1”字0.5秒,随即熄灭;接下来百位数码管显示“2”字0.5秒,随即熄灭;再下来十位数码管显示“3”字0.5秒,随即熄灭;最后个位数码管显示“4”字0.5秒,随即熄灭。
重复循环,反复不已。
显示过程采用了分时动态扫描的方法依次点亮四位数码管,但由于每位数码管在点亮0.5秒的过程中,其它三位数码管处于熄灭状态,扫描频率太低,因此观察起来很不舒服。
16.4.2 程序分析解释序号1:程序开始。
序号2:跳转到MAIN主程序处。
序号3:主程序MAIN从地址0030H开始。
序号4:将立即数F9H送P3口,使千位数码管显示1。
序号5:调用0.5秒延时子程序,维持千位数码管点亮。
序号6:将立即数FFH送P3口,熄灭千位数码管。
序号7:将立即数A4H送P2口,使百位数码管显示2。
序号8:调用0.5秒延时子程序,维持百位数码管点亮。
序号9:将立即数FFH送P2口,熄灭百位数码管。