资源描述:
《单片机数码管动态显示.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、动态显示1.掌握LED数码管显示及其一般电路结构;2.掌握LED动态显示程序的一般设计方法。一、实验内容动态显示,也称为扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。二、实验步骤1、打开ProteusISIS编辑环境,按下表所列的元件清单添加元件。实验所用元件清单元件名称所属类所属子类AT89C51MicroprocessorICs8051FamilyCAPCapacitorsGenericCAP-ELECCapacitorsGe
2、nericCRYSTALMiscellaneous-RESResistorsGeneric7SEG-MPX6-CC-BLUEOptoelectronics7-SegmentDisplays74LS04TTL74LSSeriesGates&Inverters74LS245TTL74LSSeriesTranseivers元件全部添加后,在ProteusISIS的编辑区域中按实验原理图连接硬件电路。图1动态显示实验电路原理图2、按实验要求在KeilC中创建项目,编辑、编译程序。3、将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路
3、中。4、在ProteusISIS仿真环境中运行程序,观察实验运行结果并记录。一、实验要求1.编写一显示程序显示201071;2.显示特殊字符good;3.调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。二、参考程序dbufequ30h;置存储区首址tempequ40h;置缓冲区首址org00hmov30h,#2;存入数据mov31h,#0mov32h,#1mov33h,#0mov34h,#7mov35h,#1movr0,#dbufmovr1,#tempmovr2,#6;六位显示器movdptr,#segtab;
4、段码表首地址dp00:mova,@r0;取要显示的数据movca,@a+dptr;查表取段码mov@r1,a;段码暂存incr1incr0djnzr2,dp00disp0:movr0,#temp;显示子程序movr1,#6;扫描6次movr2,#01h;从第一位开始dp01:mova,@r0movp0,a;段码输出mova,r2;取位码movp1,a;位码输出acalldelay;调用延时mova,r2rlamovr2,aincr0djnzr1,dp01sjmpdisp0segtab:db3fh,06h,5bh,4fh,66hdb6dh,7d
5、h,07h,7fh,6fhdelay:movr4,#03h;延时子程序aa1:movr5,0ffhaa:djnzr5,aadjnzr4,aa1retend实验原理MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。T1还可以作为其串行口的波特率发生器。定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由TH1和TL1构成,特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器IP中的相应位进行控制。定时器T0的中断入口地址为0
6、00BH,T1的中断入口地址为001BH。定时器的编程包括:1)置工作方式。2)置计数初值。3)中断设置。4)启动定时器。定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。在编写中断服务程序时,应该清楚中断响应过程:CPU执行中断服务程序之前,自动将程序计数器PC内容(即断点地址)压入堆栈保护(但不保护状态寄存器PSW,更不保护累加器A和其它寄存器内容),然后将对应的中断矢量装入程序计数器PC使程序转向该中断矢量地址单元中以执行中断服务程序。定时器T0和T1对应的中断矢量地址分别为000BH和001BH。中断服务程
7、序从矢量地址开始执行,一直到返回指令“RETI”为止。“RETI”指令的操作一方面告诉中断系统该中断服务程序已经执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入到程序计数器PC,使程序返回到被到中断的程序断点处,以便继续执行。因此,我们在编写中断服务程序时注意。1.在中断矢量地址单元放一条无条件转移指令,使中断服务程序可以灵活地安排在64K字节程序存储器的任何空间。2.在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。3.若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭CPU中断,
8、或禁止某中断源中断,在返回前再开放中断。一、实验内容编写并调试一个程序,用AT89C51的T0工作方式1产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1