关键词不能为空

当前您在: 主页 > 英语 >

七段数码管显示实验

作者:高考题库网
来源:https://www.bjmy2z.cn/gaokao
2021-02-10 00:08
tags:

-

2021年2月10日发(作者:寻乐)

















































































































































实验九



七段数码管显示实验



一、实验目的



1


.学习七段数码管的工作原理;


< /p>


2


.学习数码管与


8051


单片机的接口方法;



3


.掌握动态扫描显示技术。



二、实验原理



如图所示,

< p>
LED


数码管由


7


个发光 二极管组成,此外,还有一个圆点型发光


二极管(在图中以


dp


表示),用于显示小数点。通过七段发光二极管亮暗的不



共阴极接法





共阳极接法



同组合,可以显示多种数 字、字母以及其它符号。


LED


数码管中的发光二极管共


有两种连接方法:



1




共阴极 接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴


极接地,这样阳极端输 入高电平的段发光二极管就导通点亮,而输入低电平的


则不点亮。实验中使用的


LED


显示器为共阴极接法



2




共阳极 接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳


极接+


5V



这样阴极端输入低电平的段发光二极管就导通点 亮,


而输入高电平


的则不点亮。



为了显示数字或符号,要为


LED


显示器提 供代码,因为这些代码是为显示字


形的,


因此称之为字形代码。


七段发光二极管,


再加上一个小数点位,


共计八段。


因此提供给


LED


显示器 的字形代码正好一个字节。若


a



b< /p>



c



d



e



f

< p>


g



dp 8


个显示段依次对应一个字节的低位到高位,即


D0



D1



D2



D3



D4



D5



D6



D7


,则用共阴极


LED


数码管显示十六进制数时所需的字形代码如表所示。





共阴极


L ED


数码管字形代码



字型



0



1



2



3



4



5



共阴极字形


代码



3FH



06H



5BH



4FH



66H



6DH



字型



6



7



8



9



A



b



共阴极字形


代码



7DH



07H



7FH



6FH



77H



7CH



字型



C



d



E



F






共阴极字形


代码



39H



5EH



79H



71H



00H





2


、动态显示



按图(


b


)连接线路,通过交替选中


LED1



LED0


循环显示两位十进 制


数。


七段数码管段码连接不变,


位码 驱动输入端


S1



S0



8255A C


口的


PC1



PC0



通 过


C


口的这两位交替输出


1

< p>


0



以便交替选中


LED1



LED0



从而


实现两位十进制数的交替显示。请编程实现在两个


LED


数码管上循环显示


00


99


,程序流程图如图


(b)


所示。





开始




开始




< /p>


十位数的段码至


A






个位数的段码至


A







延时并修改要显示的数字






返回


DOS



返回


DOS




(b)


动态显示程序流程图



(a)


静态显示程序流程图








*


实际上试验中使用的是共阳极数码 管,这里就不一一列出。



三、实验电路图



第一部分电路图:




第二部分电路图:
















四、实验设备



微型计算机、单片机仿 真器、实验仪、示波器


(


各一台


)




实验连线


(< /p>


若干


)




五、实验内容



*

由于汇编语言程序中已经做了相应的注释,


C


语言的编程原 理与之相同处不再做重复注释,


仅作个别注释,



见谅。



1


.编程在


8


位数码管上面显示“”


8

< br>个数字,每经过


1



8


个数字循环左移


一位显示。依次为:


12345 78




.......



汇编语言程序代码:




O


RG



0000H



START:




M


OV



R4,#00H



FLASH:




M


OV



R2,#01H




M


OV



R0,#30H




M


OV



DPTR,#TABFLA



LOPFLA:




M


OV



A,R2







M


OV



P2,A




M


OV



A,@R0




M


OVC A,@A+DPTR







M


OV



P1,A







M


OV



R3,#0




D


JNZ


R3,$$









M


OV



P1,#0FFH






M


OV



A,R2







R


L



A




M


OV



R2,A




I


NC



R0








C


JNE


R0,#38H,GOON




M


OV



R0,#30H



GOON:




C


JNE


A,#01H,LOPFLA





I


NC



R4




C


JNE


R4,#7FH,GOON1




;


把字形表首地址给外部寻址寄存器





;


输出位型



;


在程序段中查表得到字形





;


输出字形





;


循环等待延时




;


关显示





;


位型左移一位





;


下一个字形




;


若已经显示一遍则初始化













M


OV



A,30H







;


显示表左移更新




M


OV



30H,31H




M


OV



31H,32H




M


OV



32H,33H




M


OV



33H,34H




M


OV



34H,35H




M


OV



35H,36H




M


OV



36H,37H




M


OV



37H,A




M


OV



R4,#00H



GOON1:




A


JMP


FLASH



TABFLA:











;


字形表




D


B 0C0H,0F9H,0A4H,0B0H,99H




D


B 92H,82H,0F8H,80H,90H,88H




D


B



83H,0C6H,0A1H,86H,8EH



END



C


语言程序代码:



#include<>



data unsigned char disadd _at_ 0x30;



const unsigned char LED_TAB[]={0xC0,0xF 9,0xA4,0xB0,0x99,0x92,












0x82,0xF8,0x80,0x90,0x88,0x83,












0xC6,0xA1,0x86,0x8E};



data unsigned char j;



void delay()



{




u


nsigned char i=0xFF;




w


hile(i--)




{




;




}



}



void change_s()



{




u


nsigned char *k;




u


nsigned char m;




k


=&disadd;




m


=*k;









*


k=*(k+1);




*


(k+1)=*(k+2);




*


(k+2)=*(k+3);




*


(k+3)=*(k+4);




*


(k+4)=*(k+5);




*


(k+5)=*(k+6);




*


(k+6)=*(k+7);




*


(k+7)=m;




j


=0x00;








}



main()



{




u


nsigned char i;




u


nsigned char disbit;




u


nsigned char *disnum,*n;




S


P=0x40;




j


=0x00;




n


=&disadd;




*


(n)=0x01;








*


(n+1)=0x02;




*


(n+2)=0x03;




*


(n+3)=0x04;




*


(n+4)=0x05;




*


(n+5)=0x06;




*


(n+6)=0x07;




*


(n+7)=0x08;




w


hile(1)




{




disbit=0x01;




disnum=&disadd;



//


显示表移位




//


计数值初始化




//


显示设置初值为


1~8


-


-


-


-


-


-


-


-



本文更新与2021-02-10 00:08,由作者提供,不代表本网站立场,转载请注明出处:https://www.bjmy2z.cn/gaokao/625182.html

七段数码管显示实验的相关文章