七段数码管显示实验Word格式.docx
- 文档编号:19805044
- 上传时间:2023-01-10
- 格式:DOCX
- 页数:18
- 大小:20.28KB
七段数码管显示实验Word格式.docx
《七段数码管显示实验Word格式.docx》由会员分享,可在线阅读,更多相关《七段数码管显示实验Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
表4.9-1共阴极LED数码管字形代码
.专业.整理.
字型
共阴极字形
代码
3FH
6
7DH
C
39H
1
06H
7
07H
d
5EH
2
5BH
8
7FH
E
79H
3
4FH
9
6FH
F
71H
4
66H
A
77H
灭
00H
5
6DH
b
7CH
*实际上试验中使用的是共阳极数码管,这里就不一一列出。
2、动态显示
按图4.9-2(b)连接线路,通过交替选中LED1和LED0循环显示两位十
进制数。
七段数码管段码连接不变,位码驱动输入端S1、S0接8255AC口
的PC1、PC0,通过C口的这两位交替输出1和0,以便交替选中LED1和LED0,从而实现两位十进制数的交替显示。
请编程实现在两个LED数码管上循环显示0099,程序流程图如图4.9-3(b)所示。
开始
十位数的段码至A口
个位数的段码至A口
延时并修改要显示的数字
返回DOS返回DOS
(a)静态显示程序流程图
(b)动态显示程序流程图
图4.9-3
三、实验电路图
第一部分电路图:
第二部分电路图:
四、实验设备
微型计算机、单片机仿真器、实验仪、示波器(各一台);
实验连线(若干)。
五、实验内容
*由于汇编语言程序中已经做了相应的注释,
C语言的编程原理与之相同处不再做重复注释,
仅作个别注释,请
见谅。
1.编程在8位数码管上面显示“
12345678”8个数字,每经过
1秒8个数字
循环左移一位显示。
依次为:
1234578、23456781、34567812.......
汇编语言程序代码:
ORG
0000H
START:
MOV
R4,#00H
FLASH:
R2,#01H
R0,#30H
DPTR,#TABFLA
;
把字形表首地址给外部寻址寄存器
LOPFLA:
A,R2
输出位型
P2,A
A,@R0
MOVCA,@A+DPTR
在程序段中查表得到字形
P1,A
输出字形
R3,#0
DJNZR3,$
循环等待延时
P1,#0FFH
关显示
位型左移一位
RL
R2,A
INC
R0
下一个字形
CJNER0,#38H,GOON
GOON:
CJNEA,#01H,LOPFLA
若已经显示一遍则初始化
R4
CJNER4,#7FH,GOON1
A,30H
显示表左移更新
30H,31H
31H,32H
32H,33H
33H,34H
34H,35H
35H,36H
36H,37H
37H,A
GOON1:
AJMPFLASH
TABFLA:
;
字形表
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,88H
DB83H,0C6H,0A1H,86H,8EH
END
C语言程序代码:
#include<
reg51.h>
dataunsignedchardisadd_at_0x30;
constunsignedcharLED_TAB[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,
0x82,0xF8,0x80,0x90,0x88,0x83,
0xC6,0xA1,0x86,0x8E};
dataunsignedcharj;
voiddelay()
{
unsignedchari=0xFF;
while(i--)
}
voidchange_s()
unsignedchar*k;
unsignedcharm;
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()
unsignedchari;
unsignedchardisbit;
unsignedchar*disnum,*n;
SP=0x40;
n=&
*(n)=0x01;
//显示设置初值为1~8
*(n+1)=0x02;
*(n+2)=0x03;
*(n+3)=0x04;
*(n+4)=0x05;
*(n+5)=0x06;
*(n+6)=0x07;
*(n+7)=0x08;
while
(1)
disbit=0x01;
disnum=&
for(i=0;
i<
8;
i++)
P2=0x00;
P1=LED_TAB[*disnum];
P2=disbit;
delay();
disbit=disbit<
<
1;
disnum++;
j++;
if(j==0x3f)
change_s();
//调用显示表移位子程序
2.用8255的PA口作为段码输出口,编写程序,利用定时器T0作为时间基准控制电子钟走时,电子钟的格式为:
XX—XX—XX
分钟—秒钟—百分秒
COM_ADDXDATA0F003H
PA_ADDXDATA0F000H
PB_ADDXDATA0F001H
PC_ADDXDATA0F002H
AJMPSTART
000BH
AJMPT0INT
0030H
SP,#60H
设置堆栈
TMOD,#01H
设置定时器
T0的控制字
TH0,#0F0H
设置定时器计数初值
TL0,#07FH
R7,#00H
显示寄存器置初值
R6,#00H
R5,#00H
R3,#00H
R2,#00H
32H,#16
设置显示分隔符
35H,#16
SETBET0
允许中断(T0内部中断)
SETBEA
SETBTR0
开始计数
CONTINUE:
37H,R7
进位判断,R7表示百分之一秒(之
后的以此类推)
36H,R6
CJNER6,#0AH,NOREACH
R5
34H,R5
CJNER5,#0AH,NOREACH
33H,R4
CJNER4,#06H,NOREACH
R3
31H,R3
CJNER3,#0AH,NOREACH
R2
30H,R2
CJNER2,#06H,NOREACH
NOREACH:
ACALLDISPLAY;
调用显示子程序
AJMPCONTINUE
中断子程序
T0INT:
R7
R7表示百分之一秒(之后的以此类
推)
CJNER7,#0AH,NOREACH_S
R6
NOREACH_S:
计数完一次后再次置计数初值
RETI
数码管显示子程序
DISPLAY:
MOVR1,#01H;
位型输出指针
MOVR0,#30H
MOVDPTR,#COM_ADD
MOVA,#80H
MOVX@DPTR,A
MOVDPTR,#PB_ADD
MOVA,R1
MOVDPTR,#TABFLA
DPTR,#PA_ADD
A,#00H
WAIT:
DEC
CJNE
A,#00H,WAIT
等待延时
A,#0FFH
A,R1
R1,A
RET
DB0BFH
#define
TIMEINT0x01
TIMEH0xf0
TIMEL0x7f
xdataunsignedcharcon_address_at_0xf003;
xdataunsignedcharpa_at_0xf000;
xdataunsignedcharpb_at_0xf001;
xdataunsignedcharpc_at_0xf002;
0xC6,0xA1,0x86,0x8E,0xBF};
dataunsignedcharr2,r3,r4,r5,r6,r7;
//显示变量设置为全
局变量
voidtimer0(void)interrupt1using1//中断子程序
r7++;
if(r7==0x0A)
r7=0x00;
r6++;
TH0=TIMEH;
TL0=TIMEL;
voiddisplay()//显示子程序
unsignedchar*disnum;
pb=0x00;
pa=LED_TAB[*disnum];
pb=disbit;
unsignedchar*n;
con_address=0x80;
TMOD=TIMEINT;
r6=0x00;
r5=0x00;
r4=0x00;
r3=0x00;
r2=0x00;
*(n+2)=16;
*(n+5)=16;
ET0=1;
EA=1;
TR0=1;
while
(1)
*(n+7)=r7;
//显示进位判断
*(n+6)=r6;
if(r6==0x0A)
r6=0x00;
r5++;
*(n+4)=r5;
if(r5==0x0A)
r5=0x00;
r4++;
*(n+3)=r4;
if(r4==0x06)
r4=0x00;
r3++;
*(n+1)=r3;
if(r3==0x0A)
r3=0x00;
r2++;
*n=r2;
if(r6==0x06)
r2=0x00;
display();
六、实验小结
通过本次试验,我基本上掌握了数码管显示的程序流程,学会编写一些程
序调用相应的相应的子程序,显示所需内容,了解了动态扫描显示的程序执行过程,结合定时器的设置和中断的返回,来实现最基本的百分秒显示,从而完成时钟显示,由此,结合前面所学的知识,巩固了数码管显示的知识,增强了
我的程序调试能力,为下一步的学习打下了坚实基础。
以上程序都记过实验或是仿真器验证,现象正常,若有错误之处,请老师指正,谢谢。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数码管 显示 实验