单片机数码管显示程序设计PPT格式课件下载.ppt
- 文档编号:14333084
- 上传时间:2022-10-22
- 格式:PPT
- 页数:18
- 大小:174.50KB
单片机数码管显示程序设计PPT格式课件下载.ppt
《单片机数码管显示程序设计PPT格式课件下载.ppt》由会员分享,可在线阅读,更多相关《单片机数码管显示程序设计PPT格式课件下载.ppt(18页珍藏版)》请在冰豆网上搜索。
7DB10000000B;
8DB10010000B;
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,位驱动,段驱动,六位共阳极数码管模块相同的段驱动端都并联在一起。
在第一位上显示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中编程,生产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工作。
重装初值保护现场选工作寄存器组,根据当前显示位查得段驱动码,处理小数点,段驱动码送P0口,根据当前显示位查得位驱动码,位驱动码送P2口,计算显示位,恢复现场,返回,动态显示参考程序1:
定义变量,;
-;
动态显示程序;
全局变量定义FLAGEQU20H;
标志位DISSEGEQUP0;
显示段驱动DISBITEQUP2;
显示位驱动P2.7-P2.2DISBUFEQU21H;
显示缓冲区首地址21H-26HDISBITBUFEQU27H;
当前显示位计数器0-5FLASHEQU28H;
闪烁控制xxxxxx00,将x=1闪烁,=0不闪;
小数点的处理:
;
若显示3,缓冲区放3,若显示3.,缓冲区放3+80H,最高位为1S_PULSEEQUFLAG.0;
秒脉冲CNT_2D5MSEQU2FH;
2.5MS计数器CNT_10MS1EQU30H;
10MS计数器CN_0D5SEQU31H;
0.5秒计数器;
-,动态显示参考程序2:
主程序,ORG0000HLJMPSTARTORG000BHLJMPT0SERV;
T0中断入口ORG0030HSTART:
MOVSP,#50H;
初始化堆栈LCALLINIT;
初始化LOOP:
MOVDISBUF,#1MOVDISBUF+1,#2MOVDISBUF+2,#3MOVDISBUF+3,#4+80H;
显示小数点MOVDISBUF+4,#5MOVDISBUF+5,#6AJMPLOOP;
-初始化子程序-INIT:
MOVR0,#2;
清理内部RAMCLRAINIT1:
MOVR0,AINCR0CJNER0,#50H,INIT1;
初始化定时器T0;
f=11.0592MHz,2.5ms定时MOVTMOD,#01H;
模式1MOVTL0,#05HMOVTH0,#0F7HSETBTR0;
启动SETBET0;
开中断SETBEARET,动态显示参考程序3:
中断服务程序,;
-2.5MS中断服务程序=动态显示-T0SERV:
MOVTL0,#05HMOVTH0,#0F7HPUSHPSW;
保护现场PUSHACCPUSHDPHPUSHDPLSETBRS0;
中断服务使用工作寄存器组1CLRRS1;
-计算时间-INCCNT_2D5MS;
2.5MS计数器MOVA,CNT_2D5MSCJNEA,#4,T0SERV3;
4x2.5ms=10msMOVCNT_2D5MS,#0INCCNT_10MS1;
10MS计数+1MOVA,CNT_10MS1CJNEA,#50,T0SERV3MOVCNT_10MS1,#0INCCN_0D5S;
0.5秒计数CPLS_PULSE;
秒脉冲,每0.5秒变化,动态显示参考程序4:
-显示处理-T0SERV3:
ORLDISBIT,#11111100B;
熄灭显示MOVA,DISBITBUF;
取当前显示位INCA;
指向下一位,若(A)+1=6,使(A)=0CJNEA,#6,T0SERV1CLRAT0SERV1:
MOVDISBITBUF,AMOVR0,#DISBUF;
取显示内容ADDA,R0MOVR0,AMOVA,R0;
A中为显示内容MOVC,ACC.7;
判断是否显示小数点CLRACC.7MOVDPTR,#LEDTABMOVCA,A+DPTR;
取段码JNCT0SERV2CLRACC.7;
设置显示小数点T0SERV2:
MOVDISSEG,A;
送段码;
闪烁控制MOVA,FLASH;
取闪烁控制码MOVR0,DISBITBUF;
将当前显示位的闪烁控制位移入c中INCR0T0SERV4:
RLCADJNZR0,T0SERV4JNCT0SERV5;
C=1,闪烁JNBS_PULSE,T0SERV5;
S_PULSE=1时不显示MOVDISSEG,#0FFHT0SERV5:
MOVDPTR,#DISBITTAB;
取位驱动码MOVA,DISBITBUFMOVCA,A+DPTRANLDISBIT,A;
送位驱动码T0SERV0:
POPDPL;
恢复现场POPDPHPOPACCPOPPSWRETI,动态显示参考程序5:
位段驱动码表,;
数码管位驱动代码表DISBITTAB:
DB01111111B;
位1DB10111111B;
位2DB11011111B;
位3DB11101111B;
位4DB11110111B;
位5DB11111011B;
位6;
共阳极数码管段驱动代码表LEDTAB:
DB0C0H;
000DB0F9H;
101DB0A4H;
202DB0B0H;
303DB99H;
404DB92H;
505DB82H;
606DB0F8H;
707DB80H;
808DB90H;
909DB0FFH;
空10;
-,编程练习3,动态显示:
前5位显示01234,使前两位闪烁,最后一位循环显示09,变化速度自定。
提示:
只需要在练习2的基础上,改动主程序。
(利用双重循环编一个延时程序),开始,初始化,Y,显示012340,(R0)=0,(DISBUF+5)=(R0),延时,(R0)=10?
(R0)=0,N,(R0)+1,主程序流程图,(FLASH)=11000000B,练习3主程序参考:
ORG0000HLJMPSTARTORG000BHLJMPT0SERV;
初始化MOVDISBUF,#0MOVDISBUF+1,#1MOVDISBUF+2,#2MOVDISBUF+3,#3MOVDISBUF+4,#4MOVDISBUF+5,#0MOVFLASH,#11000000BMOVR0,#0LOOP:
MOVDISBUF+5,R0LCALLDELAYINCR0CJNER0,#10,LOOPMOVR0,#0AJMPLOOP,编程练习4,秒表:
前4位不显示,后两位循环显示0059秒。
只需要在练习2的基础上,定义29H单元存储秒的值,利用T0中断服务程序中的0.5秒信号产生1秒信号。
主程序负责将秒的个位和十位分离并放入显示缓冲区。
开始,初始化,显示00,(A)=(29H),主程序流程图,(B)=10,AB,(DISBUF+4)=(A),(DISBUF+5)=(B),练习4主程序参考:
SECEQU29H;
定义秒单元ORG0000HLJMPSTARTORG000BHLJMPT0SERV;
初始化MOVDISBUF,#10MOVDISBUF+1,#10MOVDISBUF+2,#10MOVDISBUF+3,#10MOVDISBUF+4,#0MOVDISBUF+5,#0MOVFLASH,#0MOVSEC,#0LOOP:
MOVA,SECMOVB,#10DIVABMOVDISBUF+4,AMOVDISBUF+5,BAJMPLOOP,练习4中断T0服务程序中的1秒计数参考:
;
秒脉冲,每0.5秒变化JNBS_PULSE,T0SERV3;
1秒计数INCSECMOVA,SECCJNEA,#60,T0SERV3MOVSEC,#0;
MOVDISBITBUF,A,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数码管 显示 程序设计