单片机实验一一Word格式文档下载.docx
《单片机实验一一Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机实验一一Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![单片机实验一一Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/8/7e559c8b-fb36-4e87-b0e0-ceb1e3c8c7d4/7e559c8b-fb36-4e87-b0e0-ceb1e3c8c7d41.gif)
其中“开始”按键当开关由1拨向0(由上向下拨)时开始计时;
“清零”按键当开关由1拨向0(由上向下拨)时数码管清零,此时若再拨“开始”按键则又可重新开始计时。
八、原理图
十、实验程序
;
******************************************************************
;
设计选题:
实验五-----秒表系统设计
描述:
2位LED数码显示"
秒表"
显示时间为00~99秒,每秒自动加1,
一个"
开始"
键,一个"
复位"
暂停"
键,一个“快加”键。
调用子程序:
暂停键子程序,计时键子程序,清0键子程序,加一子程序
显示子程序,定时子程序
所用特殊寄存器:
寄存器A,寄存器C
所用中断:
外部中断INT0、INT1,定时器T0、T1
实验作者:
吴呤--2号,方晓瑛--10号
***************************************************************************
org0000h
ajmpmain
;
主程序入口地址
org0003h
ajmpzhongduan0
中断0入口地址
org000bh
ajmpyanshi
定时器T0入口地址
org0013h
ajmpzhongduan1
中断1入口地址
org001bh
ajmpdingshi1
定时器T1入口地址
org0030h
***********************************************************
主程序
main:
movtcon,#05h
主程序开始外部中断跳变模式
movtmod,#11h
定时器0,1模式1
movie,#8fh
开总中断,中断0,1,定时器0,1
movdptr,#tab
movr1,#00h
movr2,#00h
movr3,#40
循环次数40
movtl0,#2Ch
置初值,定时25MS
movth0,#0CFh
movtl1,#78h
置初值,定时10MS
movth1,#0ech
clrtr0
关定时器
clrtr1
暂停键K3,快加键K4程序
here:
jbp1.0,here
show:
clrtr1
clrtr0
acallxianshi
kuaijia:
jbp1.2,kuaijia
等待P1.2为0快加
setbtr1
here3:
jnbp1.2,here3
ajmp
here
外部中断INT0子程序-----计时按键K1子程序
zhongduan0:
setbtr0
计时按键
reti
外部中断INT1子程序----复位按键K2子程序
zhongduan1:
clrtr0
复位按键
mov12h,#00h
mov11h,#00h
acallxianshi
调用显示子程序
加一子程序
jia1:
inc
r1
加1子程序
cjner1,#0ah,loop
判断是否到表尾
mov
r1,#00h
r2
cjner2,#0ah,loop
r2,#00h
loop:
mov12h,r1
重新赋值
mov11h,r2
ret
显示子程序
xianshi:
movr7,#02h
2个数码管显示子程序
movr0,#12h
loop5:
movr6,#08h
8位2进制数
mova,@r0
movca,@a+dptr
loop6:
rlca
循环左移
clrp3.1
movp3.0,c
setbp3.1
djnzr6,loop6
decr0
djnzr7,loop5
定时器T0子程序
yanshi:
定时子程序
djnzr3,loop7
acalljia1
调用加1子程序
movr3,#40
loop7:
定时器T1子程序
dingshi1:
movtl1,#78h
mov12h,r1
jnbp1.0,show
acalljia1
lop7:
reti
tab:
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh
end
十一、课程设计心得体会
1、认真审题,看懂题目的要求!
选择适当的课题,不益太简单或者太难。
做到既能把课题完成又能锻炼自己的能力!
2、根据课题要求,复习相关的知识,查询相关的资料。
3、根据实验条件,找到适合的方案,找到需要的元器件及工具,准备实验。
4、根据课程设计的要求和自己所要增加的功能写好程序流程图,在程序流程图的基础上,根据芯片的功能写出相应的程序。
然后再进行程序调试和相应的修改,以达到能够实现所要求的功能的目的。
5、还要根据实验的实际情况,添加些额外程序来使系统更加的稳定,如开关的消震荡(采用延迟)。
6、程序要尽量做到由各个子程序组成,在有些程序后面最好加注释,这样在程序出错的检查过程中可以更容易查找的到,也更简洁,更明白易懂。
7、该实验的程序可以参考DVCC系列单片机微机仿真实验系统实验指导书中的串并转换实验,也可自己根据自己熟悉的方法来编程。
8、在设计控制开关时,注意2个中断的打开和关闭的先后顺序,否则就会出错。
9、这次的单片机课程设计重点是理论与实际的相结合。
不再只读书了。
10、该设计从头到尾都要自己参与,熟悉了对整个设计的过程,更系统的锻炼了自己。
此设计完毕!
!
-------------------------------------------------------
下面提供一个程序(供参考的)
开机初始化
MOVP3,#0FFH;
对P3口初始化,设置为高电平,用于按键输入
MOVP0,#0FFH;
使显示时间数码管熄灭
CLRF0
CLRF1
MOVDPTR,#NUMTAB;
指定查表启始地址
等待按键输入
根据按键的输入判断执行什么功能
按键1按下则执行功能1
MOVP3,#0FFH;
START:
JBP3.6,START1;
循环判断开始按钮K1是否按下?
ACALLDELAY10;
延时10毫秒触点消抖
JBP3.6,START;
如果是干扰就返回
JNBP3.6,$;
等待按键松开
LJMPGN1
按键2按下则执行功能2
START1:
JBP3.7,START;
循环判断开始按钮K2是否按下?
JBP3.7,START1;
JNBP3.7,$
LJMPGN2
数码管显示秒表时间的程序
GN1:
先初始化
S1:
MOVA,#0
MOVTEMP,A
GOON1:
MOVR2,#2
JS1:
MOVR3,#250
TIME1:
MOVA,TEMP;
将TEMP中的十六进制数转换成10进制
MOVB,#10;
10进制/10=10进制
DIVAB
MOVB_BIT,A;
十位在A
MOVA_BIT,B;
个位在B
LCALLDPLOP1
插入一段判断定时过程中是否有按键输入的程序段
C1:
JBP3.6,B1
延时10毫秒消抖
JBP3.6,C1
CPLF0
ZT1:
JBP3.6,$;
JBP3.6,ZT1;
B1:
JBP3.7,LOOP1
ACALLDELAY10;
JBP3.7,B1
JNBP3.7,$;
AJMPOVER
LOOP1:
DJNZR3,TIME1;
2毫秒循环执行250次,时间约0.5秒
DJNZR2,JS1
循环执行2次,时间为1秒钟
INCTEMP;
满一秒钟对时间加1
MOVA,TEMP
CLRC
SUBBA,#60
JNZGOON1;
判断TEMP的数值是否为60?
不为60循环
ACALLOVER
RET
GN2:
MOVA,#14H;
设定倒计时的时间20S
MOVTEMP,A
数码管显示倒计时时间的程序
初始化
MOVP0,#14H;
使显示时间为设定的倒计时时间
GOON2:
JS2:
TIME2:
MOVDPTR,#NUMTAB;
DPLOP2:
MOVA,A_BIT;
取个位数
MOVCA,@A+DPTR;
查个位数的7段代码
MOVP0,A;
送出个位的7段代码
CLRP2.5;
开个位显示
ACALL
DELY1;
显示1毫秒
SETBP2.5;
关闭个位显示,防止鬼影
MOVA,B_BIT;
取十位数
查十位数的7段代码
送出十位的7段代码
CLRP2.6;
开十位显示
ACALLDELY1;
SETBP2.6;
关闭十位显示,防止鬼影
C2:
JBP3.6,B2
JBP3.6,C2
ZT2:
JBP3.6,ZT2;
B2:
JBP3.7,LOOP2
LOOP2:
DJNZR3,TIME2;
DJNZR2,JS2
DECTEMP;
满一秒钟对时间减1
JNZGOON2;
判断TEMP的数值是否为0?
不为0循环
结束定时
OVER:
AJMPSTART;
退到开机初始化状态
1毫秒延时子程序
DELY1:
MOVR4,#2
D1:
MOVR5,#248
DJNZR5,$
DJNZR4,D1
10毫秒延时子程序
DELAY10:
MOVR4,#20
D2:
DJNZR4,D2
实验板上的两位一体的数码管0~9各数字的显示代码
NUMTAB:
DB40H,79H,24H,30H,19H,12H,02H,78H,00H,10H
DPLOP1:
查十位数的7段代码
送出十位的7段代码
END