单片机工程实践报告样板.docx

上传人:b****6 文档编号:12969247 上传时间:2023-06-09 格式:DOCX 页数:30 大小:473.51KB
下载 相关 举报
单片机工程实践报告样板.docx_第1页
第1页 / 共30页
单片机工程实践报告样板.docx_第2页
第2页 / 共30页
单片机工程实践报告样板.docx_第3页
第3页 / 共30页
单片机工程实践报告样板.docx_第4页
第4页 / 共30页
单片机工程实践报告样板.docx_第5页
第5页 / 共30页
单片机工程实践报告样板.docx_第6页
第6页 / 共30页
单片机工程实践报告样板.docx_第7页
第7页 / 共30页
单片机工程实践报告样板.docx_第8页
第8页 / 共30页
单片机工程实践报告样板.docx_第9页
第9页 / 共30页
单片机工程实践报告样板.docx_第10页
第10页 / 共30页
单片机工程实践报告样板.docx_第11页
第11页 / 共30页
单片机工程实践报告样板.docx_第12页
第12页 / 共30页
单片机工程实践报告样板.docx_第13页
第13页 / 共30页
单片机工程实践报告样板.docx_第14页
第14页 / 共30页
单片机工程实践报告样板.docx_第15页
第15页 / 共30页
单片机工程实践报告样板.docx_第16页
第16页 / 共30页
单片机工程实践报告样板.docx_第17页
第17页 / 共30页
单片机工程实践报告样板.docx_第18页
第18页 / 共30页
单片机工程实践报告样板.docx_第19页
第19页 / 共30页
单片机工程实践报告样板.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

单片机工程实践报告样板.docx

《单片机工程实践报告样板.docx》由会员分享,可在线阅读,更多相关《单片机工程实践报告样板.docx(30页珍藏版)》请在冰点文库上搜索。

单片机工程实践报告样板.docx

单片机工程实践报告样板

学校代码:

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.在编写程序时没有分块得运行。

导致

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2