1. 实验任务
(1. 开始时,显示“00”,第1次按下sp1后单片机秒表就开始计时。
(2. 第2次按sp1后,计时停止。
(3. 第3次按sp1后,计时归零。
2. 电路原理图
图4.17.1
3. 系统板上硬件连线
(1. 把“单片机系统”区域中的p0.0/ad0-p0.7/ad7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:p0.0/ad0对应着a,p0.1/ad1对应着b,……,p0.7/ad7对应着h。
(2. 把“单片机系统”区域中的p2.0/a8-p2.7/a15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:p2.0/a8对应着a,p2.1/a9对应着b,……,p2.7/a15对应着h。
(3. 把“单片机系统“区域中的p3.5/t1用导线连接到”独立式键盘“区域中的sp1端口上;
4. 程序框
t0中断服务程序框
图4.17.2
5. 汇编源程序
tcnta equ 30h
tcntb equ 31h
sec equ 32h
keycnt equ 33h
sp1 bit p3.5
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 《at89x51.h》
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];
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];
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];
}
}
iWave已将JODY-W2多无线模块集成至i.MX8系统模块和SBC设计中
频闪成像原理
服装店中的体感试衣镜将让试衣体验变得更加便捷
分析师称iPhone 15 Pro Max不会推迟上市 本周就将开始大量出厂
喷嘴流量计的安装要求有哪些
如何使用单片机实现秒表的设计
怎样利用物联网RFID技术来推动石油行业发展
迈向无线时代:AGV接触式与无线充电桩成本对比详解
固立得:计划打造千亿级固顿光半导体科技产业园
手机去年出货量下滑11%,二季度或现拐点
测量电源纹波用什么仪器?全面解析,你值得拥有!
部署5G Massive MIMO的挑战、建议
17年高人气笔记本推荐!全新AirBook你值得拥有
3D打印机是什么,3D打印机可以打印什么东西
人工智能是一把双刃剑
精密图形转移技术控制要点
信息储存关键还得靠什么
光纤通信在新网络架构中的使用
PCB镀覆废液在综合利用上投资,能够节约资金降低成本
如何利用聚丙烯PP材料来实现3D打印