| 设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计 | |||||
|
|||||
|
|||||
|
|||||
目录
一、目的任务
二、设计原理
三、题目要求
四、设计方案及框图
五、设计源代码
六、实验结果与评估
七、实验反思与心得
八、参考文献
题目:单片机模块应用设计系统
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语言的课设,而且截止日期和微机课设的时间一样,所以整体做的比较赶,尽管答辩当天上午准备了一上午,并没有完全做出第四问的功能,只是实现了一部分。这几天总的来说还是比较忙和累的,但是每当看出代码转换成了相应的成果,内心就忘记了疲惫和焦虑。总的来说这次的课程设计让我学到了很多新的东西,也帮助我复习了之前相关的所学习的内容,所以收获还是很大的。通过这次课程设计,我学到了很多我感兴趣的知识,也学习到了很多工程实践中的技能和技巧。加深了我对单片机以及汇编语言的兴趣,我决定以后利用时间来多多学习相关的知识。感谢老师教授了我相关的知识,让我能够学习了很多的单片机知识,对于我完成本次单片机课设有了很大的帮助。这次的课程设计我认为很有意义,培养了我的思考能力,动手能力以及排除故障能力,对于我今后的职业生活也有很大的帮助
经过本次课程设计,我们重新拾起了本来不太牢固的单片编程及结构知识,经过反复琢磨,实践,最终实现所要求的大部分功能,圆满地完成了课设。本次课程设计将书本上的理论转化为了实践,让我真正感受到了唯有实践出真知。在本次课设前,我们对于单片机代码如何运用,如何将代码系统编程以达到所需功能感到无从下手,无所适从。而经过了这次课设的实战磨练,我们已经能在一定程度上运用单片机的各种基本功能,虽然这个过程充满着磨炼与坎坷,但是我们仍然坚持克服了下来。由于期末前没有什么时间,我们本次课设是在考试之后的一天半内完成的。虽然借着考试后的余温,但是过程仍比我们想象中的困难,但这也磨炼了我们的意志。
《单片机技术与工程实践》林土胜著
毕业66资料站 biye66.com ©2015-2026 版权所有 | 微信:15573586651 QQ:3903700237
本站毕业设计和毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!