单片机课程设计—篮球计时计分器 联系客服

发布时间 : 星期日 文章单片机课程设计—篮球计时计分器更新完毕开始阅读d211115da9956bec0975f46527d3240c8547a159

6、课程设计心得体会

这次课程设计历时二个星期左右,通过这两个星期的学习,发现了自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。

回顾起此次单片机课程设计,我仍感慨颇多,的确,从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在XXX、XXX、XXX老师的辛勤指导下,终于游逆而解。同时,在XXX、XXX、XXX老师那里我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

参考文献:

[1]余发山.单片机原理及应用技术.徐州:中国矿业大学出版社,2003. [2]佟云峰,等.单片机原理及其应用.重庆:重庆大学出版社,2004,1. [3]吴金戌,等.8051单片机实践与应用.北京:清华大学出版社,2001,8. [4]刘瑞新.单片机原理及应用教程.北京:机械工业出版社,2005. [5]聂毅.宏汇编语言程序设计教程.北京:电子工业出版社,1998. [6]周航慈.单片机应用程序设计技术.北京:北京航空航天大学出版社,2002.

16

附1、源程序代码

scoreDisplayBuffer equ 40h ;设置计分显示缓冲区的地址为40h-45h ascore equ 47h ;设置甲队的计分地址

bscore equ 49h ;设置乙队的计分地址

akey bit p1.0 ;设置甲加分键(按一次加一分) bkey bit p1.1 ;设置乙加分键(按一次加一分) abkey bit p1.6 ;设置分数位置交换键(交换比分位置)

DisplayBuffer equ 30h ;设置计、定时显示缓冲区地址30h-35h OneSecondCounter equ 39h ;设置1秒计数地址 Minute equ 3bh ;设置分钟计数地址 Second equ 3ch ;设置秒计数地址

ClockMode equ 20h.0 ;设置模式(计时/定时)寄存器地址 AlarmOnOff equ 20h.1 ;设置报警开启/关闭标志 AlarmTimeOn equ 20h.2 ;设置计时时间到标志 DispMinute equ 22h ;设置分钟显示寄存器的地址 DispSecond equ 23h ;设置秒显示寄存器的地址 AlarmMinute equ 2fh ;设置定时分钟计数地址 AlarmSetKey bit p1.2 ;定义设置定时设置切换键 MinuteKey bit p1.5 ;定义分设置键 RelayOut equ p1.3 ;定义报警发声输出引脚 ;@@@@@@@@@@@@@@中断入口程序@@@@@@@@@ org 00h

ajmp Reset ; 程序开始 org 0bh ;T0中断地址 ajmp TimeInt ;调到中断服务程序 ;@@@@@@@@@@@@@@程序开始@@@@@@@@@@@ org 0020h Reset:

mov sp,#70h ;工作状态\\地址初始化 setb RelayOut

mov OneSecondCounter,#125 mov Minute,#00 mov Second,#00 mov AlarmMinute,#00 mov ascore,#00

17

mov bscore,#00 clr AlarmOnOff clr ClockMode clr AlarmTimeOn setb RelayOut

mov tmod,#00000001b mov th0,#0E0h mov tl0,#0C0h

mov ie, #82h ;开全局中断 setb tr0 ;定时器T0开始工作 ;@@@@@@@@@@@@@@@以下为主程序@@@@@@@@@@@@@@@@@ MainLoop:

jnb akey,bbb1 ; 如甲加分键按下,执行bbb1后的语句,完成甲分数加一

jnb bkey,bbb2 ; 如乙加分键按下,执行bbb2后的语句,完成乙分数加一

jnb abkey,bbb3 ; 如显示交换键按下,执行bbb3后的语句,交换显示 ajmp xxx ; 如果没有分数设置键按下,跳到xxx语句 bbb1: jnb akey,bbb1 ;等待按键释放 mov a, ascore

add a,#1 ; 完成甲分数加一 mov ascore,a

call ConvertoBuffer ;调用转换到显示缓冲区子程序 ajmp xxx ; 跳到xxx语句

bbb2: jnb bkey,bbb2 ;与bbb1的功能类似,完成乙分数加一 mov a,bscore add a,#1 mov bscore,a call ConvertoBuffer ajmp xxx

bbb3: jnb abkey,bbb3 ; 完成显示交换 mov a,ascore mov 48h,a mov a,bscore mov ascore,a mov a,48h mov bscore,a

call ConvertoBuffer ;调用转换到显示缓冲区子程序

18

xxx:

jb AlarmSetKey,CheckMinuteKey ; 定时设置键按下了吗?没有则检测分钟设置键

call Delay

jb AlarmSetKey,CheckMinuteKey ;延时去抖动 setb ClockMode call AlarmSet CheckMinuteKey:

jb MinuteKey,CheckAlarm ;分设置键按下了吗?没有则转去检测小时设置键

mov a,Minute add a,#1 mov Minute,a

cjne a,#3ch,NotOver1 ;到60分钟了吗? mov Minute,#0 ;到60分钟则将分钟清0 NotOver1:

jnb MinuteKey,$ CheckAlarm:

jnb AlarmTimeOn,ToReturn call AlarmProcess ToReturn:

ajmp MainLoop ;跳回主程序

;@@@@@@@@@@@@@定时器Timer0中断服务程序@@@@@@@@@@@ TimeInt:

mov th0,#0E0h ;重新加载定时参数 mov tl0,#0C0h push acc push psw setb rs0 clr rs1

djnz OneSecondCounter,NotoneSecond ;即够1秒了吗?

mov OneSecondCounter,#125 ;如够1秒则重新设置\计数器

call Clock ;调用将时钟内容加1秒的子程序 call ConvertoBuffer ;调用转换到显示缓冲区子程序 NotoneSecond:

call ScanDisplay ;调用扫描显示子程序 pop psw

19