急寻单片机高手帮指点下课程设计

急寻单片机高手帮指点下课程设计,第1张

17. 99秒马表设计
1. 实验任务
(1. 开始时,显示“00”,第1次按下SP1后就开始计时。
(2. 第2次按SP1后,计时停止。
(3. 第3次按SP1后,计时归零。
2. 电路原理图

图4171
3. 系统板上硬件连线
(1. 把“单片机系统”区域中的P00/AD0-P07/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P00/AD0对应着a,P01/AD1对应着b,……,P07/AD7对应着h。
(2. 把“单片机系统”区域中的P20/A8-P27/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P20/A8对应着a,P21/A9对应着b,……,P27/A15对应着h。
(3. 把“单片机系统“区域中的P35/T1用导线连接到”独立式键盘“区域中的SP1端口上;
4. 程序框图
主程序框图
T0中断服务程序框图

图4172
5. 汇编源程序
TCNTA EQU 30H
TCNTB EQU 31H
SEC EQU 32H
KEYCNT EQU 33H
SP1 BIT P35
ORG 00H
LJMP START
ORG 0BH
LJMP INT_T0
START: MOV KEYCNT,#00H
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV TMOD,#02H
SETB ET0
SETB EA
WT: JB SP1,WT
LCALL DELY10MS
JB SP1,WT
INC KEYCNT
MOV A,KEYCNT
CJNE A,#01H,KN1
SETB TR0
MOV TH0,#06H
MOV TL0,#06H
MOV TCNTA,#00H
MOV TCNTB,#00H
LJMP DKN
KN1: CJNE A,#02H,KN2
CLR TR0
LJMP DKN
KN2: CJNE A,#03H,DKN
MOV SEC,#00H
MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
MOV KEYCNT,#00H
DKN: JNB SP1,$
LJMP WT
DELY10MS:
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
INT_T0:
INC TCNTA
MOV A,TCNTA
CJNE A,#100,NEXT
MOV TCNTA,#00H
INC TCNTB
MOV A,TCNTB
CJNE A,#4,NEXT
MOV TCNTB,#00H
INC SEC
MOV A,SEC
CJNE A,#100,DONE
MOV SEC,#00H
DONE: MOV A,SEC
MOV B,#10
DIV AB
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P0,A
MOV A,B
MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P2,A
NEXT: RETI
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
6. C语言源程序
#include <AT89X51H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(P3_5==0)
{
for(i=20;i>0;i--)
for(j=248;j>0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==400)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P0=dispcode[second/10];
P2=dispcode[second%10];
}
}

AIP74HC245和AIP74HC595是常见的逻辑器件,它们可以用于控制LED屏幕的显示。
AIP74HC245是一个三态缓冲器,可以实现电平转换和数据传输功能。在LED屏幕控制中,它通常用于将控制器(如单片机)的输出信号转换为可以控制LED屏幕驱动芯片(如74HC595)的信号,同时可以对信号进行缓存,以保证信号的稳定性和可靠性。
AIP74HC595是一个8位移位寄存器,可以用于将控制器输出的8位数据按位传输到LED屏幕驱动芯片,从而实现LED的显示。它通常与LED屏幕驱动芯片(如常用的TPIC6B595)配合使用,以实现LED点阵的控制。
因此,AIP74HC245和AIP74HC595都可以应用于LED屏幕控制中,但具体的使用方式和接线方式需要根据具体的LED屏幕和控制器进行调整和确认。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13215757.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-21
下一篇 2023-06-21

发表评论

登录后才能评论

评论列表(0条)

保存