单片机工程实践报告样板.docx
- 文档编号:25556971
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:30
- 大小:473.51KB
单片机工程实践报告样板.docx
《单片机工程实践报告样板.docx》由会员分享,可在线阅读,更多相关《单片机工程实践报告样板.docx(30页珍藏版)》请在冰豆网上搜索。
单片机工程实践报告样板
学校代码:
10128
单片机工程实践
(第2组)
题目:
仪表参数的设定
组长:
韦卓慜(自12-1班)学号:
201211204034
组员:
刘思铭(自12-1班)学号:
201221204053
兰芳(自12-1班)学号:
201211204005
指导教师:
裴岩、吕少中、斯日古楞、韩海波、
郭若飞、马少瑛、高鹏
设计时间:
2015年7月6日——2015年7月17日
内蒙古工业大学课程设计(论文)任务书
课程名称:
单片机系统综合设计与实践学院:
电力学院班级:
自动化12-1班
学生姓名:
韦卓慜刘思铭兰芳学号:
201211204034、201221204053、201211204005
指导教师:
裴岩、吕少中、斯日古楞、韩海波、郭若飞、马少瑛、高鹏
一、题目
仪表参数的设定
2、目的与意义
本课程为培养学生计算机应用能力的实践性课程,也是一门重要的专业技术课程。
它将使学生不仅理论上掌握单片微型计算机的基本原理、单片机应用系统的构成、系统程序设计,进一步加强学生单片机应用系统软、硬件开发的能力,并能将电路、模拟电子技术、数字电子技术和微机原理等课程的知识有机地结合起来,做到学用结合。
课程通过已实际应用的智能仪表为实训对象,其电路包含了单片机应用系统的基本部分,即:
8位单片机、A/D模数转换器、七段LED动态显示电路、RS-485串行通信及Watchdog等接口电路,是一个理论与实践相结合的良好载体。
课程采用项目组运作模式,使学生熟悉理论课程的相关知识,通过具体项目下线要求、验收方式等环节,充分发挥不同程度学生的学习积极性、创新精神及合作意识,培养学生的工程设计思想和科学研究能力,使学生在分析问题、解决问题和动手能力等方面有所提高,并了解工程项目设计实施的全过程,达到提高学生工程实践能力和素质的目标。
三、要求(包括原始数据、技术参数、设计要求、图纸量、工作量要求等)
1、设计时间:
2周
2、分组:
(1)2-3人一组,自由组合,组长负责制。
(2)分工明确,分工情况上报老师,验收时参考。
(3)每小组写一份综合设计报告。
应包括题目、分工情况、系统结构设计说明、程序结构框图设计说明、各模块设计说明、程序清单、体会等内容。
3、设计任务
设计任务相对独立完整,难易适宜,不同层次,并充分考虑学有余力的学生的扩展空间。
1)基本任务:
完成蜂鸣器、键盘、七段LED显示器的自检程序设计。
(1)蜂鸣器自检
要求:
利用程序实现两种以上声音。
参见【例7-4-4】
(2)键盘自检
要求:
确定键盘正确。
参见【例7-4-14】
(3)七段LED显示器自检
要求:
确定LED显示器每一段均正确。
参见【例7-4-16】
2)主任务(随即选择)
仪表参数的设定
4、设计理念
必须始终保持和发展本课程突出的教学特点:
内容综合、按工程项目实施、学生设计自由度较大、对学生的综合能力要求高、挑战性强。
四、工作内容、进度安排
第一周:
1、根据任务书完成基本任务(即目标实验板的检测)
2、根据任务书按组抽签确定每组实训主任务
3、确定任务思路,各小组内分配任务,要求分工明确
4、画出主任务程序框图
第二周:
1、画出主任务程序框图
2、根据主任务程序框图和各自所分配任务编辑程序
3、中期笔试考核
4、验收成果
5、主要参考文献(三篇以上)
裴岩刘利民《单片机系统综合设计与实践》内蒙古大学出版社2003.10
李广弟等《单片机基础》北京航空航天出版社,2001.7
马忠梅等《单片机的C语言应用程序设计》北京航空航天大学出版社,2003修订版
审核意见
系(教研室)主任(签字)
指导教师下达时间2015年6月22日
指导教师签字:
裴岩、吕少中、斯日古楞、韩海波、郭若飞、马少瑛、高鹏
一、设计目的:
通过一个以8位单片机为核心的模拟量数字表的硬件调试过程,掌握具有A/D、七段LED显示、RS-485通信、Watchdog等接口电路的单片机应用系统的设计思想和方法。
学习应用系统软件的模块化设计方法,通过源程序的编辑、汇编或编译、链接、仿真调试,完成给定的任务。
通过上述过程提高学生工程实践能力和素质。
二、设计任务:
★基本任务:
完成蜂鸣器、键盘、七段LED显示器的自检程序设计。
(1)蜂鸣器自检
要求:
利用程序实现两种以上声音。
参见【例7-4-4】
(2)键盘自检
要求:
确定键盘正确。
参见【例7-4-14】
(3)七段LED显示器自检
要求:
确定LED显示器每一段均正确。
参见【例7-4-16】
★随机选择任务:
(1)仪表参数设定
难度系数:
9
功能:
实现-19999至+19999任意5位数字的输入、显示
硬件环境:
LED显示器、键盘等
(2)任务分工
姓名
任务
韦卓慜
主程序和k1键二级菜单的程序编写
刘思铭
K2键二级菜单程序的编写
兰芳
中断显示程序的编写
(3)设计思想
首先将k1,k2键设计为功能键,分别负责数据的输入和记录的查询。
两个键都下设二级菜单,k1键的下属菜单包括k1负责选位,k2负责输数,k3负责确定及保存,k4负责返回上级菜单;k2键的下属菜单包括k1负责上翻,k2负责下翻,k3负责删除当前记录,k4负责返回上级菜单。
然后通过中断程序完成数据的显示。
三、框图
1、硬件编程框图及相关说明
2、主程序框图、子程序框图及相关说明
(1)蜂鸣器的自检
说明:
通过控制蜂鸣器响和不响的频率发出“doremi”的音乐来检测蜂鸣器的好坏。
BEEP框图:
(2)LED的自检
说明:
依次选中不同的位选端,在低四位时,显示数字0-9和全亮;在最高位时,显示-、1、-1。
以此来检测各个LED的位选和段选是否有故障。
LED框图:
(3)键盘的自检
说明:
通过采键来判断哪个按键按下,显示效果为:
按下K1键,LED显示数字1,蜂鸣器响“do”音;按下K2键,LED显示数字2,蜂鸣器响“re”音;按下K3键,LED显示数字3,蜂鸣器响“mi”音;按下K3键,LED显示数字4,蜂鸣器响“fa”音。
键盘框图:
(4)仪表参数的设定
①主程序框图
◆中断显示程序
二级程序框图
◆K1键程序框图
◆K2键程序框图
四、程序清单:
1、蜂鸣器的自检程序
org0000h
***主程序***
main:
movR2,#250;0.5ms的“1”音
ABC:
setbP2.3
acalldelay1
clrP2.3
acalldelay1
djnzR2,ABC
movR3,#250;0.5ms的“2”音
bcd:
setbP2.3
acalldelay2
clrP2.3
acalldelay2
djnzR3,bcd
movR4,#250;0.5ms的“3”音
cde:
setbP2.3
acalldelay3
clrP2.3
acalldelay3
djnzR4,cde
jmpmain
***音阶do的半周期时间***
delay1:
movR1,#2
loop2:
movR0,#239
loop1:
djnzR0,loop1
djnzR1,loop2
ret
***音阶re的半周期时间***
delay2:
movR1,#4
loop3:
movR0,#105
loop4:
djnzR0,loop4
djnzR1,loop3
ret
***音阶mi的半周期时间***
delay3:
movR1,#3
loop8:
movR0,#125
loop7:
djnzR0,loop7
djnzR1,loop8
ret
end
2、LED的自检程序
***主程序***
main:
setbP2.5;选中sel5位选端
clrP2.6
clrP2.7
acallxian;调用显示程序
clrP2.5;选中sel4位选端
setbP2.6
setbP2.7
acallxian;调用显示程序
clrP2.5;选中sel3位选端
setbP2.6
clrP2.7
acallxian;调用显示程序
clrP2.5;选中sel2位选端
clrP2.6
setbP2.7
acallxian;调用显示程序
clrP2.5;选中sel1位选端
clrP2.6
clrP2.7
acallxian5;调用显示程序
jmpmain
***低四位显示子程序***
xian:
movdptr,#d1
movA,#00h
movR3,#0bh
loop1:
movA,R3
movcA,@A+DPTR
movP0,A
acalldelay
djnzR3,loop1
ret
***最高位显示子程序***
xian5:
movdptr,#d2
movA,#00h
movR4,#03h
loop5:
movA,R4
movcA,@A+DPTR
movp0,A
acalldelay
djnzR4,loop5
ret
***显示延时子程序***
delay:
movR2,#04h;显示延时(0.5s)
loop4:
movR1,#0ffh
loop3:
movR0,#0ffh
loop2:
djnzR0,loop2
djnzR1,loop3
djnzR2,loop4
ret
***全亮和0-9的码值表***
d1:
db0ffh,0ffh,0deh,0feh,0eh,0fah,0dah,0cch,9eh,0b6h,0ch,7eh
***最高位码值表***
d2:
db0ffh,80h,8ch,0ch
end
3、键盘的自检程序
***主程序***
main:
lcallcai;采键值(去抖动)
lcalldelay0
lcallcai
jbacc.0,xs1;判断哪位键按下
jbacc.1,xs2
jbacc.2,xs3
jbacc.3,xs4
jmpmain
***采键子程序***
cai:
movP0,#0;关闭P0口,消除LED对程序的影响
lcallsel8;打开三态门
movP1,#0ffh;使P1口成为可用输入输出口
movA,P1;采键值
lcallsel7;关闭三态门
cplA;将A中的值取反
anlA,#0fh;屏蔽拨盘对程序的影响
ret
***关闭三态门子程序***
sel7:
clrP2.7
setbP2.6
setbP2.5
ret
***打开三态门子程序***
sel8:
setbP2.7
setbP2.6
setbP2.5
ret
***K1键显示子程序***
xs1:
setbP2.5;打开LED最低位位选端并显示数字1
clrP2.6
clrP2.7
movP0,#0ch
lcalldelay
movR2,#150;蜂鸣器响0.3ms音阶“1”
ABC:
setbP2.3
acalldelay1
clrP2.3
acalldelay1
djnzR2,ABC
setbP2.3
jmpmain
***K2键显示子程序***
xs2:
clrP2.5;打开LED第四位位选端并显示2
setbP2.6
setbP2.7
movP0,#0b6h
lcalldelay
movR3,#150;蜂鸣器响0.3ms的音阶“2”
bcd:
setbP2.3
acalldelay2
clrP2.3
acalldelay2
djnzR3,bcd
setbP2.3
jmpmain
***K3键显示子程序***
xs3:
clrP2.5;打开LED第三位位选端并显示数字3
setbP2.6
clrP2.7
movP0,#9eh
lcalldelay
movR4,#150;蜂鸣器响0.3ms的音阶“3”
cde:
setbP2.3
acalldelay3
clrP2.3
acalldelay3
djnzR4,cde
setbP2.3
jmpmain
***K4键显示子程序***
xs4:
clrP2.5;打开LED第二位位选端并显示数字4
clrP2.6
setbP2.7
movP0,#0cch
lcalldelay
movR5,#150;蜂鸣器响0.3ms的音阶“4”
efg:
setbP2.3
acalldelay4
clrP2.3
acalldelay4
djnzR5,efg
setbP2.3
jmpmain
***显示延时子程序***
delay:
movR3,#03h
loop3:
movR2,#0ffh
loop2:
movR1,#0ffh
loop1:
djnzR1,loop1
djnzR2,loop2
djnzR3,loop3
ret
***为了实现去抖动而设置的延时子程序***
delay0:
movR2,#20
loop5:
movR1,#250
loop4:
djnzR1,loop4
djnzR2,loop5
ret
***音阶“1”的半周期时间***
delay1:
movR1,#2
loop7:
movR0,#239
loop6:
djnzR0,loop6
djnzR1,loop7
ret
***音阶“2”的半周期时间***
delay2:
movR1,#4
loop9:
movR0,#105
loop8:
djnzR0,loop8
djnzR1,loop9
ret
***音阶“3”的半周期时间***
delay3:
movR1,#3
loop11:
movR0,#125
loop10:
djnzR0,loop10
djnzR1,loop11
ret
***音阶“4”的半周期时间***
delay4:
movR1,#2
loop13:
movR0,#159
loop12:
djnzR0,loop12
djnzR1,loop13
ret
end
4、仪表参数的设定
org0000h
ajmpmain
org000bh
ajmpT0
org0030h
***主程序***
main:
mov52h,#6;初始化(寄存器清零,定时器设置,开中断)
movr0,#30h;循环为显示缓冲区清零
a4:
mov@r0,#00h
incr0
djnz52h,a4
movr0,#30h
mov53h,#17
movr1,#35h;循环为数据存储区清零
a5:
mov@r1,#00h
incr1
djnz53h,a5
movr1,#35h
movTMOD,#01h;定时器初始化
movth0,#0d8h;为定时器送初值
movtl0,#0f0h
movr3,#0;状态字清零
movr4,#0
movr5,#0
setbet0;允许定时器T0中断
setbea;开始中断
setbtr0;启动定时器T0
main1:
lcallcai;采键值(去抖动)
lcalldelay2
lcallcai
jbacc.0,k1;判断是否K1键按下
jmpmain1
***K1的二级菜单***
k1:
;K1的二级菜单采键
lcallcai
lcalldelay2
lcallcai
jbacc.0,k11;判断是否K1按下
jbacc.1,k12;判断是否K2按下
jbacc.2,k13;判断是否K3按下
jbacc.3,k14;判断是否K4按下
jmpk1
***选位功能子程序***
k11:
incr3
cjner3,#1,zz1
jmpk1
zz1:
incr0
incr1
jmpk1
***输数功能子程序***
k12:
mova,r3;输数并送入显示缓冲区
subba,#5;判断查哪个表
jnca1
movdptr,#TAB1
mova,r4
movca,@a+dptr
incr4
cjner4,#21,a2
movr4,#0
jmpa2
a1:
movdptr,#TAB2
mova,r5
movca,@a+dptr
incr5
cjner5,#7,a2
movr5,#0
a2:
mov@r0,a;将数送入显示缓冲区
cjner0,#34,a3
movr0,#30
a3:
jmpk1
***确定功能子程序***
k13:
mova,@r0;数据放入存储区
mov@r1,a
movr4,#0
jmpk1
***返回主菜单子程序***
k14:
movr4,#0;退出,转至主程序
jmpmain1
***中断显示子程序***
T0:
cjner3,#0,bj7;通过判断选位状态变量的值来判断打开哪位LED位选端
jmpbj6
bj7:
cjner3,#1,bj1
callsel5
jmpbj5
bj1:
cjner3,#2,bj2
callsel4
jmpbj5
bj2:
cjner3,#3,bj3
callsel3
jmpbj5
bj3:
cjner3,#4,bj4
callsel2
jmpbj5
bj4:
cjner3,#5,bj9
callsel1
jmpbj5
bj9:
cjner3,#6,bj5
movr3,#0
jmpbj6
bj5:
cjner4,#0,bj8;通过判断输入状态变量来选择显示内容
mova,#0ffh
movp0,a
jmpbj6
bj8:
mova,@r0
movp0,a
acalldelay
cjner0,#34h,bj10
movr0,#30h
bj10:
movth0,#0d8h;重复定时初值
movtl0,#0f0h
setbtr0
bj6:
reti
delay:
movr7,#0ah;显示延时(4ms)
loop3:
movr6,#0ffh
loop2:
djnzr6,loop2
djnzr7,loop3
ret
delay2:
mov51h,#20;去抖动延时(10ms)
loop5:
mov50h,#250
loop4:
djnz50h,loop4
djnz51h,loop5
ret
;LED选位端
sel1:
clrP2.5
clrP2.6
clrP2.7
ret
sel2:
clrP2.5
clrP2.6
setbP2.7
ret
sel3:
clrP2.5
setbP2.6
clrP2.7
ret
sel4:
clrP2.5
setbP2.6
setbP2.7
ret
sel5:
setbP2.5
clrP2.6
clrP2.7
ret
sel7:
clrP2.7
setbP2.6
setbP2.5
ret
sel8:
setbP2.7
setbP2.6
setbP2.5
ret
cai:
movP0,#0;采键子程序
lcallsel8
movP1,#0ffh
movA,P1
lcallsel7
cplA
anlA,#0fh
ret
五、个人体会
单片机实训个人体会
————韦卓慜
此次的实训,使我更加深入的对单片机理论的进行了掌握理解,在各位老师耐心地指导下,我将理论灵活地应用到实际当中去。
在蜂鸣器,LED,键盘以及仪表参数的设定的程序设计中,我不断地挑战自己,不断地创新,在原有的基础上进行改进,使之功能不断完善,最后得到令自己满意的作品。
其实我觉得实训是非常有必要的,这是一种实践的提高,以及对于理论掌握得检验,而我也非常的喜欢编程的感觉,看着一个想法的种子不断地发芽,然后壮大,最终体现在仿真器上,那种成就感与兴奋感,犹如喝了美酒一般使得全身都得到舒展。
而且学习单片机没有捷径,不能指望光靠理论的堆砌,要坚持不懈,重在积累。
单片机是一门应用性和实践性很强的学科,要多动手,多做实验。
在此次的实训中,我得到了以下几点感悟
1、一个完美的计划会让你事半功倍。
如果没有计划,你会觉得一切无从下手,杂乱无章,很难成功。
而有一个好的计划,不管做什么事都会事半功倍,做事心中有数,明确重点和缓急,不会有疏漏。
这样才能提高效率率。
大任务主框图的构思考验了我的逻辑思维能力,让我思考问题更加的缜密和细腻。
2、在动手之前,要准确的分析各个方案的利弊。
一件事往往有多种解决方法,一个好的方法,不仅能使事情事半功倍,而且往往决定最后的成与败,所以做事时一定要多动一下脑筋,想出最好的方法。
一种方法行不通,可以换另一种,所以一定要有耐心。
3、细节决定成败,无数的小细节组成了一个完美的程序,注重细节会让整个过程减少不必要的错误,特别是在软件的编程过程中,一点点的错误就会使你整个程序不能运行。
因此我们不仅仅要有整体意识,也要注意细节,不要因一个关键地方的一个细节而导致满盘皆输。
4、在编写大任务时,遇到了各种问题,感觉解决了一个问题又出现了一个问题。
虽然最后没有实现全部功能,但是经过了大任务的洗礼,我的逻辑思维能力和汇编能力得到了大幅度的提高。
最后,感谢各位老师的指导,老师辛苦了。
单片机实训个人体会
--------刘思铭
时间如白驹过隙,两周的实训一晃而过,在与老师和同学的相处中,不但加固了单片机的理论知识,也增加了自己动手能力。
在两周的时间里我们完成了蜂鸣器的自检,LED的自检,键盘的自检,以及仪表参数的设定程序的设计。
当蜂鸣器响出不同的频率的声音,LED亮起设定的数字,键盘打出设定的内容,我的内心万分激动,每一次的实验都让我新奇又企盼。
虽然之前做过许多种实验,但依旧发现自己存在许多的问题,
1.没有足够的耐心去巩固已经了解的知识。
2.对书本的依赖性比较大,对于语句的理解不是特别的深刻,导致在编程时不能灵活运用。
3.在编写程序时没有分块得运行。
导致
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 工程 实践 报告 样板