




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C7数码管显示程序设计,主要内容,发光二极管的工作参数 数码管的结构和工作原理 多位数码管动态显示电路原理图 编程练习:驱动一位数码管,发光二极管的工作参数,发光二极管正常发光时,电流约为510mA,压降1V左右。,限流电阻 R=(5V-1V)/8mA=500 ,引脚输出低电平时,发光二极管导通。,com,a,b,c,dp,a,a,b,c,d,e,f,g,b,c,d,e,f,g,dp,1,0,0,0,0,1,1,0,1,com,;共阳极7段数码管驱动段码表 ; pgfedcba TAB: DB 11000000B;0DB 11111001B;1DB 10100100B;2DB 10110000
2、B;3DB 10011001B;4DB 10010010B;5DB 10000010B;6DB 11111000B;7DB 10000000B;8DB 10010000B;9,共阳极数码管,共阳极数码管的结构是:将8个发光二极管排列成一个 “8.” 的形状,所有发光二极管阳极连接在一起做公共端com,阴极作为各个段的控制端a,b,c,d,e,f,g,dp。,多位数码管动态显示电路原理图实验板数码管连接示意图,P0.0,+5V,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,位驱动,段驱动,六位共阳极数码管模块 相
3、同的段驱动端都并联在一起。,在第一位上显示5,P0.0,+5V,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7,P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,位驱动P2.7输出0 段驱动P0口输出“5”的段码“10010010B”,0,1,1,1,1,1,0,1,0,0,1,0,0,1,编程练习1驱动一位数码管,要求:在第一位显示连续变化的09,间隔时间自定。,开始,(R0)=0,Y,(A)=(R0),查段码表, 取得段驱动码,段驱动码送P0口,P2.7=0,延时,(R0)+1,(R0)=10?,(R0)=0,N,参考课本P196页例1,在keil中编程,生
4、产HEX文件。,在proteus中观察运行结果。(参考“ c6定时器应用程序调试” 介绍的方法),编程练习2动态显示程序,要求:显示123.456。,T0中断,熄灭显示,提示: (1)使用内部RAM21H26H单元做显示缓冲区。 (2)使用27H单元记当前显示位(位号16)。 (3)使用28H单元控制位闪烁,1闪烁,0不闪烁。 (4)使用显示缓冲区单元最高位控制小数点显示,在高位为1,表示该位显示小数点。 (5)fosc11.0592MHz,使用定时器T0定时2.5ms进行扫描速率控制。 (6)T0中断服务程序使用工作寄存器组1工作。,重装初值 保护现场 选工作寄存器组,根据当前显示位 查得段
5、驱动码,处理小数点,段驱动码送P0口,根据当前显示位 查得位驱动码,位驱动码送P2口,计算显示位,恢复现场,返回,动态显示参考程序1:定义变量,;- ;动态显示程序 ;- ;全局变量定义 FLAG EQU 20H ;标志位 DISSEG EQU P0 ;显示段驱动 DISBIT EQU P2 ;显示位驱动P2.7-P2.2 DISBUF EQU 21H ;显示缓冲区首地址21H-26H DISBITBUF EQU 27H ;当前显示位计数器0-5 FLASH EQU 28H ;闪烁控制xxxxxx00,将x=1闪烁,=0不闪 ;小数点的处理: ;若显示3,缓冲区放3,若显示3.,缓冲区放3+8
6、0H,最高位为1 S_PULSE EQU FLAG.0 ;秒脉冲 CNT_2D5MS EQU 2FH ;2.5MS计数器 CNT_10MS1 EQU 30H ;10MS计数器 CN_0D5S EQU 31H ;0.5秒计数器 ;-,动态显示参考程序2:主程序,ORG 0000H LJMP START ORG 000BH LJMP T0SERV ;T0中断入口 ORG 0030H START: MOV SP,#50H ;初始化堆栈 LCALL INIT ;初始化 LOOP: MOV DISBUF,#1 MOV DISBUF+1,#2 MOV DISBUF+2,#3 MOV DISBUF+3,#4
7、+80H;显示小数点 MOV DISBUF+4,#5 MOV DISBUF+5,#6 AJMP LOOP ;-初始化子程序- INIT: MOV R0,#2 ;清理内部RAM CLR A INIT1: MOV R0,A INC R0 CJNE R0,#50H,INIT1 ;初始化定时器T0 ;f=11.0592MHz,2.5ms定时 MOV TMOD,#01H ;模式1 MOV TL0,#05H MOV TH0,#0F7H SETB TR0 ;启动 SETB ET0 ;开中断 SETB EA RET,动态显示参考程序3:中断服务程序,;-2.5MS中断服务程序=动态显示- T0SERV: MO
8、V TL0,#05H MOV TH0,#0F7H PUSH PSW ;保护现场 PUSH ACC PUSH DPH PUSH DPL SETB RS0 ;中断服务使用工作寄存器组1 CLR RS1 ;-计算时间- INC CNT_2D5MS ;2.5MS计数器 MOV A,CNT_2D5MS CJNE A,#4,T0SERV3 ;4x2.5ms=10ms MOV CNT_2D5MS,#0 INC CNT_10MS1 ;10MS计数+1 MOV A,CNT_10MS1 CJNE A,#50,T0SERV3 MOV CNT_10MS1,#0 INC CN_0D5S ;0.5秒计数 CPL S_PU
9、LSE ;秒脉冲,每0.5秒变化,动态显示参考程序4:中断服务程序,;-显示处理- T0SERV3:ORL DISBIT,#11111100B ;熄灭显示 MOV A,DISBITBUF ;取当前显示位 INC A ;指向下一位,若(A)+1=6,使(A)=0 CJNE A,#6,T0SERV1 CLR A T0SERV1:MOV DISBITBUF,A MOV R0,#DISBUF ;取显示内容 ADD A,R0 MOV R0,A MOV A,R0 ;A中为显示内容 MOV C,ACC.7 ;判断是否显示小数点 CLR ACC.7 MOV DPTR,#LEDTAB MOVC A,A+DPTR
10、 ;取段码 JNC T0SERV2 CLR ACC.7 ;设置显示小数点 T0SERV2:MOV DISSEG,A ;送段码 ;闪烁控制 MOV A,FLASH ;取闪烁控制码 MOV R0,DISBITBUF ;将当前显示位的闪烁控制位移入c中 INC R0 T0SERV4:RLC A DJNZ R0,T0SERV4 JNC T0SERV5 ;C=1,闪烁 JNB S_PULSE,T0SERV5 ;S_PULSE=1时不显示 MOV DISSEG,#0FFH T0SERV5:MOV DPTR,#DISBITTAB ;取位驱动码 MOV A,DISBITBUF MOVC A,A+DPTR AN
11、L DISBIT,A ;送位驱动码 T0SERV0:POP DPL ;恢复现场 POP DPH POP ACC POP PSW RETI,动态显示参考程序5:位段驱动码表,;- ;数码管位驱动代码表 DISBITTAB: DB 01111111B ;位1 DB 10111111B ;位2 DB 11011111B ;位3 DB 11101111B ;位4 DB 11110111B ;位5 DB 11111011B ;位6 ;- ;共阳极数码管段驱动代码表 LEDTAB: DB 0C0H ;0 00 DB 0F9H ;1 01 DB 0A4H ;2 02 DB 0B0H ;3 03 DB 99H
12、 ;4 04 DB 92H ;5 05 DB 82H ;6 06 DB 0F8H ;7 07 DB 80H ;8 08 DB 90H ;9 09 DB 0FFH ;空 10 ;-,编程练习3,动态显示:前5位显示01234,使前两位闪烁,最后一位循环显示09,变化速度自定。 提示:只需要在练习2的基础上,改动主程序。(利用双重循环编一个延时程序),开始,初始化,Y,显示012340,(R0)=0,(DISBUF+5)=(R0),延时,(R0)=10?,(R0)=0,N,(R0)+1,主程序流程图,(FLASH)=11000000B,练习3主程序参考:,ORG 0000H LJMP START
13、ORG 000BH LJMP T0SERV ;T0中断入口 ORG 0030H START: MOV SP,#50H ;初始化堆栈 LCALL INIT ;初始化 MOV DISBUF,#0 MOV DISBUF+1,#1 MOV DISBUF+2,#2 MOV DISBUF+3,#3 MOV DISBUF+4,#4 MOV DISBUF+5,#0 MOV FLASH,#11000000B MOV R0,#0 LOOP: MOV DISBUF+5,R0 LCALL DELAY INC R0 CJNE R0,#10,LOOP MOV R0,#0 AJMP LOOP,编程练习4,秒表:前4位不显示
14、,后两位循环显示0059秒。 提示:只需要在练习2的基础上,定义29H单元存储秒的值,利用T0中断服务程序中的0.5秒信号产生1秒信号。主程序负责将秒的个位和十位分离并放入显示缓冲区。,开始,初始化,显示 00,(A)=(29H),主程序流程图,(B)=10,AB,(DISBUF+4)=(A),(DISBUF+5)=(B),练习4主程序参考:,SEC EQU 29H ;定义秒单元 ORG 0000H LJMP START ORG 000BH LJMP T0SERV ;T0中断入口 ORG 0030H START: MOV SP,#50H ;初始化堆栈 LCALL INIT ;初始化 MOV D
15、ISBUF,#10 MOV DISBUF+1,#10 MOV DISBUF+2,#10 MOV DISBUF+3,#10 MOV DISBUF+4,#0 MOV DISBUF+5,#0 MOV FLASH,#0 MOV SEC,#0 LOOP: MOV A,SEC MOV B,#10 DIV AB MOV DISBUF+4,A MOV DISBUF+5,B AJMP LOOP,练习4中断T0服务程序中的1秒计数参考:,;-计算时间- INC CNT_2D5MS ;2.5MS计数器 MOV A,CNT_2D5MS CJNE A,#4,T0SERV3 ;4x2.5ms=10ms MOV CNT_2D5MS,#0 INC CNT_10MS1 ;10MS计数+1 MOV A,CNT_10MS1 CJNE A,#50,T0SERV3 MOV CNT_10MS1,#0 INC CN_0D5S ;0.5秒计数 CP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《公差配合与技术测量》课件-第7章:滚动轴承(章节版)
- 数字人民币跨境支付跨境支付系统性能优化与升级报告
- 医疗美容行业2025年医疗美容行业人才培养与市场监管策略报告
- 金融与投资行业:金融与投资行业:2025年金融行业科技应用案例分析
- 养殖公司管理办法
- 兼职取薪管理办法
- 内审跟踪管理办法
- 内网办公管理办法
- 内部考勤管理办法
- 军计价管理办法
- 2025年公务员考试时事政治试题含答案详解(完整版)
- 2025时事政治考试题及完整答案(全国)
- 常见院前急救应急预案
- 电梯公司合伙合同协议书
- 中国智能安防出海深度解读报告
- 煤矿职工心理健康讲座
- 中华人民共和国治安管理处罚法培训宣贯
- 宣讲入团活动方案
- 分析检验技术专业教学标准(高等职业教育专科)2025修订
- 新疆交通投资(集团)有限责任公司所属公司招聘笔试题库2025
- 短视频传播机制-洞察及研究
评论
0/150
提交评论