- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机培训实验设计ECMT
实验四-1 数码管跑马显示
一、实验目的
1、熟悉51单片机并行口的输入方式,输出方式的编程;
2、熟悉共阴极LED的工作特性及控制方法;
3、学习在系统烧写单片机程序(在系统编程ISP)的方法。
二、实验电路和程序
1、实验电路
一个数码管由8个发光二极管组成,由于是共阴极,所以低电平(高电平)选通。如图9.6所示,SN74ALS245A接成直通方式通过P0口驱动数码管。由74LS138对P1口译码控制SN74ALS245A驱动6个数码管的位选,剩余两路,一路接到发光二极管,另一路控制蜂鸣器。由程序进行选通控制。
2、程序
(1)汇编程序:
通过程序控制使数码管进行从0到9的跑马显示和0.到9.的跑马显示,两个数字显示的间隙发光二极管发光,当跑马显示完毕后,发光二极管继续闪亮。通过复位按键进行复位。
图9.6 实验电路图
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV A,#00H
MOV P1,A
MOV R0,#00H
LS: MOV A,R0
MOV DPTR,#TAB0
MOVC A,@A+DPTR
MOV P1,A ;数码管位选跑马
MOV A,R0
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV P0,A ;数码管数字显示
INC R0
ACALL DELAY
MOV P1,#0E0H
ACALL DELAY
SJMP LS
DELAY: MOV R5,#08H ;延时
DELAY1: MOV R6,#0FAH
DELAY2: MOV R7,#0FAH
DJNZ R7,$
DJNZ R6,DELAY2
DJNZ R5,DELAY1
RET
TAB0: DB 00H,20H,40H,60H,80H,0A0H,00H,20H,40H,60H
DB 80H,0A0H,00H,20H,40H,60H,80H,0A0H,00H,20H
TAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H, 7FH,6FH
DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH
END
(2)C语言程序:
通过程序控制使数码管进行从0到9的跑马显示和0.到9.的跑马显示,两个数字显示的间隙发光二极管发光,当跑马显示完毕后,发光二极管长亮。通过复位按键进行复位。
#include reg52.h
#include stdio.h
#define uchar unsigned char
#define uint unsigned int
uint a[20]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
uint b[20]={0x00,0x20,0x40,0x60,0x80,0xa0,0x00,0x20,0x40,0x60,
0x80,0xa0,0x00,0x20,0x40,0x60,0x80,0xa0,0x00,0x20};
void delay(uint count) /*延时子程序*/
{
uint i;
while(count--!=0)
{
for(i=0;i72;i++);
}
}
main()
{
uint j;
for(j=0;j20;j++)
{
P0=a[j]; /*数字显示*/
P1=b[j]; /*数码管跑马*/
delay(1000); /*延时*/
P1=0xe0;
delay(1000); /*延时*/
}
文档评论(0)