首页 单片机数码管动态显示

单片机数码管动态显示

举报
开通vip

单片机数码管动态显示动态显示 1.掌握LED数码管显示及其一般电路结构; 2.掌握LED动态显示程序的一般设计方法。 1、 实验内容 动态显示,也称为扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。 2、 实验步骤 1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。 实验所用元件清单 元件名称 所属类 所属子类 AT89C51 Microprocessor I...

单片机数码管动态显示
动态显示 1.掌握LED数码管显示及其一般电路结构; 2.掌握LED动态显示程序的一般 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 方法。 1、 实验内容 动态显示,也称为扫描显示。显示器由6个共阴极LED数码管构成。单片机的P0口输出显示段码,由一片74LS245输出给LED管;由P1口输出位码,经74LS04输出给LED显示。 2、 实验步骤 1、打开Proteus ISIS编辑环境,按下 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 所列的元件清单添加元件。 实验所用元件清单 元件名称 所属类 所属子类 AT89C51 Microprocessor ICs 8051 Family CAP Capacitors Generic CAP-ELEC Capacitors Generic CRYSTAL Miscellaneous - RES Resistors Generic 7SEG-MPX6-CC-BLUE Optoelectronics 7-Segment Displays 74LS04 TTL 74LS Series Gates & Inverters 74LS245 TTL 74LS Series Transeivers 元件全部添加后,在Proteus ISIS的编辑区域中按实验原理图连接硬件电路。 图1 动态显示实验电路原理图 2、 按实验要求在KeilC中创建项目,编辑、编译程序。 3、 将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。 4、 在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。 3、 实验要求 1. 编写一显示程序显示201071; 2. 显示特殊字符good; 3. 调整软件延时子程序的循环初值,逐渐加大每一位LED点亮的时间,观察程序运行结果。 4、 参考程序 dbuf equ 30h ;置存储区首址 temp equ 40h ;置缓冲区首址 org 00h mov 30h,#2 ;存入数据 mov 31h,#0 mov 32h,#1 mov 33h,#0 mov 34h,#7 mov 35h,#1 mov r0,#dbuf mov r1,#temp mov r2,#6 ;六位显示器 mov dptr,#segtab ;段码表首地址 dp00: mov a,@r0 ;取要显示的数据 movc a,@a+dptr ;查表取段码 mov @r1,a ;段码暂存 inc r1 inc r0 djnz r2,dp00 disp0: mov r0,#temp ;显示子程序 mov r1,#6 ;扫描6次 mov r2,#01h ;从第一位开始 dp01: mov a,@r0 mov p0,a ;段码输出 mov a,r2 ;取位码 mov p1,a ;位码输出 acall delay ;调用延时 mov a,r2 rl a mov r2,a inc r0 djnz r1,dp01 sjmp disp0 segtab: db 3fh,06h,5bh,4fh,66h db 6dh,7dh,07h,7fh,6fh delay: mov r4,#03h ;延时子程序 aa1: mov r5,0ffh aa: djnz r5,aa djnz r4,aa1 ret end 实验原理 MCS-51单片机内设置了两个可编程的16位定时器T0和T1,通过编程,可以设定为定时器和外部计数方式。T1还可以作为其串行口的波特率发生器。 定时器T0由特殊功能寄存器TL0和TH0构成,定时器T1由TH1和TL1构成,特殊功能寄存器TMOD控制定时器的工作方式,TCON控制其运行。定时器的中断由中断允许寄存器IE,中断优先权寄存器IP中的相应位进行控制。定时器T0的中断入口地址为000BH,T1的中断入口地址为001BH。 定时器的编程包括: 1) 置工作方式。 2) 置计数初值。 3) 中断设置。 4) 启动定时器。 定时器/计数器由四种工作方式,所用的计数位数不同,因此,定时计数常数也就不同。 在编写中断服务程序时,应该清楚中断响应过程:CPU执行中断服务程序之前,自动将程序计数器PC内容(即断点地址)压入堆栈保护(但不保护状态寄存器PSW,更不保护累加器A和其它寄存器内容),然后将对应的中断矢量装入程序计数器PC使程序转向该中断矢量地址单元中以执行中断服务程序。定时器T0和T1对应的中断矢量地址分别为000BH和001BH。 中断服务程序从矢量地址开始执行,一直到返回指令“RETI”为止。“RETI”指令的操作一方面告诉中断系统该中断服务程序已经执行完毕,另一方面把原来压入堆栈保护的断点地址从栈顶弹出,装入到程序计数器PC,使程序返回到被到中断的程序断点处,以便继续执行。 因此,我们在编写中断服务程序时注意。 1.在中断矢量地址单元放一条无条件转移指令,使中断服务程序可以灵活地安排在64K字节程序存储器的任何空间。 2.在中断服务程序中应特别注意用软件保护现场,以免中断返回后,丢失原寄存器、累加器的信息。 3.若要使执行的当前中断程序禁止更高优先级中断,可以先用软件关闭CPU中断,或禁止某中断源中断,在返回前再开放中断。 5、 实验内容 编写并调试一个程序,用AT89C51的T0工作方式1产生1s的定时时间,作为秒计数时间,当1s产生时,秒计数加1;秒计数到60时,自动从0开始。实验电路原理如图1所示。 计算初值公式 定时模式1 th0=(216-定时时间) /256 tl0=(216-定时时间) mod 256 6、 实验步骤 1、打开Proteus ISIS编辑环境,按下表所列的元件清单添加元件。 实验所用元件清单 元件名称 所属类 所属子类 AT89C51 Microprocessor ICs 8051 Family CAP Capacitors Generic CAP-ELEC Capacitors Generic CRYSTAL Miscellaneous - RES ResistorsGeneric 7SEG-COM-CAT-GRN Otoelectronics 7-Segment Displays PULLUP Modelling Primitives Digital[Miscellaneous] 元件全部添加后,在Proteus ISIS的编辑区域中按实验原理图连接硬件电路。 图1 定时器实验电路原理图 2、 按实验要求在KeilC中创建项目,编辑、编译程序。 3、 将编译生成的目标码文件(后缀为.Hex)传入Proteus的实验电路中。 4、 在Proteus ISIS仿真环境中运行程序,观察实验运行结果并记录。 五、 参考程序 second equ 30h count equ 31h org 00h ljmp start org 0bh ljmp int_t0 start: mov second,#00h mov count,#00h mov dptr,#table ;段码表首址 mov p0,#3fh mov p2,#3fh mov tmod,#01h mov th0,#(65536-50000)/256 mov tl0,#(65536-50000) mod 256 ;定时50ms setb tr0 mov ie,#82h sjmp $ int_t0: mov th0,#(65536-50000)/256 mov tl0,#(65536-50000) mod 256 inc count mov a,count cjne a,#20,i2 ;是否到1s mov count,#00h inc second mov a,second cjne a,#60,i1 ;是否到60s mov second,#00h i1: mov a,second mov b,#10 div ab movc a,@a+dptr mov p0,a mov a,b movc a,@a+dptr mov p2,a i2: reti table: db 3fh,06h,5bh,4fh,66h db 6dh,7dh,07h,7fh,6fh end 6、 思考 若用定时器1方式2,程序如何修改? org 0000h main: mov p2,#00h mov r1,#1 start: mov dptr,#tab ;将表头放入DPTR lcall key ;调用键盘扫描程序 movc a,@a+dptr ;查表后将键值送入ACC cjne r1,#1,er inc r1 mov r2,a ljmp start er: cjne r1,#2,san inc r1 mov r3,a ljmp start san: cjne r1,#3,si inc r1 mov r0,a ljmp start si: cjne r1,#4,fan mov r5,a xun: mov p3,#00h mov p2,r2 mov p3,#01h lcall delay3 mov p3,#00h mov p2,r3 mov p3,#02h lcall delay3 mov p3,#00h mov p2,r0 mov p3,#04h lcall delay3 mov p3,#00h mov p2,r5 mov p3,#08h lcall delay3 ljmp xun fan:ljmp xun KEY: LCALL KS ;调用 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 按键子程序 JNZ K1 ;有键按下继续 LCALL DELAY2 ;无键按调用延时去抖 AJMP KEY ;返回继续检测按键 K1: LCALL DELAY2 LCALL DELAY2 ;有键按下延时去抖动 LCALL KS ;再调用检测按键程序 JNZ K2 ;确认有按下进行下一步 AJMP KEY ;无键按下返回继续检测 K2: MOV R2,#0EFH ;将扫描值送入 R2暂存 MOV R4,#00H ;将第一列值送入R4暂存 K3: MOV P1,R2 ;将R2的值送入P1口 L6: JB P1.0,L1 ;P1.0等于1跳转到L1 MOV A,#00H ;将第一行值送入ACC AJMP LK ;跳转到键值处理程序 L1: JB P1.1,L2 ;P1.1等于1跳转到L2 MOV A,#04H ;将第二行的行值送入ACC AJMP LK ;跳转到键值理程序进行键值处理 L2: JB P1.2,L3 ;P1.2等于1跳转到L3 MOV A,#08H ;将第三行的行值送入ACC AJMP LK ;跳转到键值处理程序 L3: JB P1.3,NEXT ;P1.3等于1跳转到NEXT处 MOV A,#0cH ;将第四行的行值送入ACC LK: ADD A,R4 ;行值与列值相加后的键值送入A PUSH ACC ;将A中的值送入堆栈暂存 K4: LCALL DELAY2 ;调用延时去抖动程序 LCALL KS ;调用按键检测程序 JNZ K4 ;按键没有松开继续返回检测 POP ACC ;将堆栈的值送入ACC RET NEXT: INC R4 ;将列值加一 MOV A,R2 ;将R2的值送入A JNB ACC.7,KEY ;扫描完至KEY处进行下一扫描 RL A ;扫描未完将A中的值右移一位进行下一列的扫描 MOV R2,A ;将ACC的值送入R2暂存 AJMP K3 ;跳转到K3继续 KS: MOV P1,#0FH ;将P1口高四位置0低四位值1 MOV A,P1 ;读P1口 XRL A,#0FH ;将A中的值与A中的值相异或 RET ;子程序返回 DELAY2: ;40ms延时去抖动子程序 MOV R5,#08H L7: MOV R6,#0FAH L8: DJNZ R6,L8 DJNZ R5,L7 RET delay3: mov r7,#10 d1:mov r6,#200 djnz r6,d2 d2:djnz r7,d1 ret tab: db 66h,4fh,5bh,06h,7fh,07h,7dh,6dh,7ch,77h,3fh,6fh,71h,79h,5eh,39h;0h0hc9878654a321 轮流显示键盘因为无法表达*# 就用H表示,B用8表示 end
本文档为【单片机数码管动态显示】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_768449
暂无简介~
格式:doc
大小:80KB
软件:Word
页数:8
分类:生产制造
上传时间:2011-12-26
浏览量:78