题目:单片机模块应用设计系统
一、目的任务
1、了解熟悉keill_v3开发工具和STC_ISP软件的使用
2、熟悉STC系列单片机的汇编语言及开发
3、熟悉嵌入式开发板的电路图及开发
二、设计原理
结合keill_v3开发工具和STC_ISP软件,使用STC10F08XE单片机,利用单片机的计时器,位操作和中断等功能,利用芯片SN74HC59,串口输入并口输出对PLTF-4561AS数码管等通信,从而实现显示数值,按键切换等功能,达到实验要求。
利用键盘反极法接受键盘对应键值,采用查询方式判断键盘按下情况,用查表和比较的方法将对应的LED灯编码查出,从而实现相应功能。
利用单片机外部中断源及及串口通信功能,通过外部中断INTO跳转到相应功能,采用单片机自发自接收模式,可以充分利用一个单片机的资源,将单片机最大限度利用起来,实现键盘键值输出,单片机接受并反映到显示器上。
本方案基于keill_v3开发环境,通过51单片机汇编语言的编辑,参考《单片机技术与工程实践》和STC10F08XE型号单片机datasheet,采用循环结构和中断方式实现数据交换,完成单片机题目功能的实现,
三、题目要求
模块要求:
1)设计一个可以显示9876的显示电路,并利用单片机实现。
2)利用按键切换,并将各个按键的值显示在数码管上
3)中断1按钮切换,设置自己电路板为自发自收类型,电路板识别所按的键盘值后,键盘值串口发送,自己串口接收后,然后在数码管上显示对应的键盘值。
4)中断2按钮切换,从电脑接收你的电话号码,并在数码管上滚屏显示。
四、设计方案
4.1 数码管显示9876
4.1.1 设计方案
由于数码管由74hc595控制,串口输入并口输出,故考虑将显示数字的电位信息保存在一个表中,经过芯片串口逐位输入信号,并由定时器控制移位脉冲,将8位信号全部保存在移位寄存器器中后,调用程序将其送入数码管,实现显示。数码管的译码部分可参考单片机课本。由于每个数码管要显示不同的数字,故考虑进行动态显示,即在短时间内每个数码管分别显示其相应的数字,并轮流循环显示,这需要建立一个表,表示每个数码管各自显示时P0口的状态,每次显示开始时赋给P0.由于每次显示时间很短,人眼中会看到四个数码同时显示相应的数字,从而完成其功能,其时间和循环控制也由同一个定时器辅助完成。
4.1.2 设计框图
4.2 设计方案
采用反极法获取键盘的读值,一开始置行线为0,列线为1,查询是否有键位电平变化,经过防抖程序后读取列值。再置行线为1,列线为0,执行重复的操作读取行值,将两次结果相与确定最终值,经过数据表翻译后送入控制数码管的p0口,显示相应数值。
4.3 设计方案
在第二问的基础上,将键盘经过表翻译的值送入sbuf,经过串口发送,串口接收,然后将SBUF的值送入P0口。
五、设计源代码
1、设计一个可以显示9876的显示电路,并利用单片机实现:
org 0000H
ajmp main
org 000BH
ajmp lock
org 0040H
main: mov tmod,#02
mov th0,#0DFH
mov tl0,#0DFH
setb ea
setb et0
setb tr0
start: mov r4,#04H
now: mov r3,#0fH
mov a,r4
mov dptr,#table
movc a,@a+dptr
mov p0,a
mov a,r4
mov dptr,#table2
movc a,@a+dptr
there: cjne r3,#00H,there
djnz r4,now
ajmp start
table: db 00H
db 02H
db 04H
db 08H
db 01H
table2: db 00H
db 06FH
db 07FH
db 07H
db 7DH
lock: cpl p0.4
jb p0.4,next
rl a
mov c,acc.7
mov p0.7,c
next: djnz r3,send
setb p0.5
clr p0.5
send: reti
end
2、利用按键切换,并将各个按键的值显示在数码管上:
org 0000H
ajmp main
org 000bH
main: nop
keyl: mov p2,#0FH
mov a,p2
anl a,#0FH
cjne a,#0FH,kl1
ajmp keyl
kl1:lcall dly
mov a,p2
anl a,#0FH
cjne a,#0FH,kl2
ajmp keyl
kl2:mov r0,a
keyr:mov p2,#0F0H
mov a,p2
anl a,#0F0H
cjne a,#0F0H,kr1
ajmp keyr
kr1:lcall dly
mov a,p2
anl a,#0F0H
cjne a,#0F0H,kr2
ajmp keyr
kr2:orl a,r0
mov r0,a
ajmp check3
dly:mov r7,#30
dly1:mov r6,#150
dly2:djnz r6,dly2
djnz r7,dly1
ret
check3: mov a,#00H
mov r5,#00H
next3: mov a,r5
inc a
mov r5,a
mov dptr,#table3
movc a,@a+dptr
clr cy
subb a,r0
jnz next3
now: mov p0,#01h
mov r3,#0fh
mov dptr,#table2
mov a,r5
movc a,@a+dptr
dly3: mov r6,#20h
dly4: djnz r6,dly4
lock: cpl p0.4
jb p0.4,next
rl a
mov c,acc.7
mov p0.7,c
next: djnz r3,dly3
setb p0.5
clr p0.5
ajmp keyl
table2: db 00H
db 0F1H,0F9H,0DEH,0B9H,0FCH,0F7H,6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH
table3: db 00H
db 0E7H,0D7H,0B7H,77H,0EBH,0DBH,0BBH,7BH,0EDH,0DDH,0BDH,7DH,0EEH,0DEH,0BEH,7EH
end
3、中断1按钮切换,设置自己电路板为自发自收类型,电路板识别所按的键盘值后,键盘值串口发送,自己串口接收后,然后在数码管上显示对应的键盘值:
org 0000H
ajmp main
org 0023H
ljmp keyl
org 0030H
main: mov scon,#50H
setb ea
setb ex0
ajmp $
keyl: mov p2,#0FH
mov a,p2
anl a,#0FH
cjne a,#0FH,kl1
ajmp keyl
kl1:lcall dly
mov a,p2
anl a,#0FH
cjne a,#0FH,kl2
ajmp keyl
kl2:mov r0,a
keyr:mov p2,#0F0H
mov a,p2
anl a,#0F0H
cjne a,#0F0H,kr1
ajmp keyr
kr1:lcall dly
mov a,p2
anl a,#0F0H
cjne a,#0F0H,kr2
ajmp keyr
kr2:orl a,r0
mov r0,a
ajmp check3
dly:mov r7,#30
dly1:mov r6,#150
dly2:djnz r6,dly2
djnz r7,dly1
ret
check3: mov a,#00H
mov r5,#00H
next3: mov a,r5
inc a
mov r5,a
mov dptr,#table3
movc a,@a+dptr
clr cy
subb a,r0
jnz next3
now: mov p0,#01h
mov r3,#0fh
mov dptr,#table2
mov a,r5
movc a,@a+dptr
mov pcon,#80H
mov tmod,#20H
mov th1,#0e6H
mov tl1,#0e6H
setb tr1
mov sbuf,a
jnb ti,$
clr ti
mov pcon,#80H
mov tmod,#20H
mov th1,#0e6H
mov tl1,#0e6H
setb tr1
jnb ri,$
clr ri
mov a,sbuf
dly3: mov r6,#20h
dly4: djnz r6,dly4
lock: cpl p0.4
jb p0.4,next
rl a
mov c,acc.7
mov p0.7,c
next: djnz r3,dly3
setb p0.5
clr p0.5
ajmp loop
table2: db 00H
db 0F1H,0F9H,0DEH,0B9H,0FCH,0F7H,6FH,7FH,07H,7DH,6DH,66H,4FH,5BH,06H,3FH
table3: db 00H
db 0E7H,0D7H,0B7H,77H,0EBH,0DBH,0BBH,7BH,0EDH,0DDH,0BDH,7DH,0EEH,0DEH,0BEH,7EH
loop:reti
end
六、实验结果与评估
要求一:通过STC_ISP选定相关单片机型号,下载到单片机后,单片机成功显示9876,相关功能达成。
要求二:源程序下载到单片机后,按下不同的键位,LED显示屏上切换出不同的对应的数字,说明源码正确。
要求三:源程序下载到单片机后,把单片机改为自发自接收模式(用短接线将TXD接口和RXD接口连接起来),按下中断1键(INT0)后,按下单片机键盘按键,单片机成功发送并接收到数据并且将数据显示到LED显示屏上,说明源码正确。
七、实验反思与心得
此次微机系统与接口课程设计较为仓促,是在考试之后进行的,而且刚开始对于STC_ISP和μKeill的使用完全不了解,因此开始时进行的较为困难,而且对于STC10F08XE型单片机的结构不是特别了解,感觉难以下手。但是在参照AG嵌入式开发板和STC10F08X的图纸后,对于其结构有了一定的了解,再参考《单片机技术与工程实践》,使得对于此次课程设计有了一定的了解,第一天进展并没有太多,但是万事开头难,第二天我们便研发出来第一第二和第三个功能,给了我们很大的鼓舞和信心,由于我们还需要同时做c语言的课设,而且截止日期和微机课设的时间一样,所以整体做的比较赶,尽管答辩当天上午准备了一上午,并没有完全做出第四问的功能,只是实现了一部分。这几天总的来说还是比较忙和累的,但是每当看出代码转换成了相应的成果,内心就忘记了疲惫和焦虑。总的来说这次的课程设计让我学到了很多新的东西,也帮助我复习了之前相关的所学习的内容,所以收获还是很大的。通过这次课程设计,我学到了很多我感兴趣的知识,也学习到了很多工程实践中的技能和技巧。加深了我对单片机以及汇编语言的兴趣,我决定以后利用时间来多多学习相关的知识。感谢老师教授了我相关的知识,让我能够学习了很多的单片机知识,对于我完成本次单片机课设有了很大的帮助。这次的课程设计我认为很有意义,培养了我的思考能力,动手能力以及排除故障能力,对于我今后的职业生活也有很大的帮助
经过本次课程设计,我们重新拾起了本来不太牢固的单片编程及结构知识,经过反复琢磨,实践,最终实现所要求的大部分功能,圆满地完成了课设。本次课程设计将书本上的理论转化为了实践,让我真正感受到了唯有实践出真知。在本次课设前,我们对于单片机代码如何运用,如何将代码系统编程以达到所需功能感到无从下手,无所适从。而经过了这次课设的实战磨练,我们已经能在一定程度上运用单片机的各种基本功能,虽然这个过程充满着磨炼与坎坷,但是我们仍然坚持克服了下来。由于期末前没有什么时间,我们本次课设是在考试之后的一天半内完成的。虽然借着考试后的余温,但是过程仍比我们想象中的困难,但这也磨炼了我们的意志。
八、参考文献
《单片机技术与工程实践》林土胜著
全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026
返回首页
如转载请注明来源于www.biyezuopin.vip
|