单片机实验报告.docx

上传人:b****6 文档编号:7915500 上传时间:2023-01-27 格式:DOCX 页数:17 大小:794.37KB
下载 相关 举报
单片机实验报告.docx_第1页
第1页 / 共17页
单片机实验报告.docx_第2页
第2页 / 共17页
单片机实验报告.docx_第3页
第3页 / 共17页
单片机实验报告.docx_第4页
第4页 / 共17页
单片机实验报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机实验报告.docx

《单片机实验报告.docx》由会员分享,可在线阅读,更多相关《单片机实验报告.docx(17页珍藏版)》请在冰豆网上搜索。

单片机实验报告.docx

单片机实验报告

 

系别:

电力工程系

班别:

姓名:

学号:

指导老师:

2009年12月25日

目录

 

1、实习目的..............................................3

二、实习内容..............................................3

3、基本要求..............................................3

4、强化要求..............................................3

五、实习器材..............................................3

六、设计方案..............................................4

7、设计的程序..........................................6

八、实习小结..............................................13

 

1、实习目的

通过实习,使学生进一步弄懂所学到的课本知识,巩固和深化对单片机的结构、指令系统、中断系统、键盘/显示系统、接口技术、系统扩展、定时/控制、程序设计、应用开发、等基本理论知识的理解,提高单片机应用于技术的实践操作技能,掌握单片机应用系统设计、研制的方法,培养利用单片机进行科技革新、开发和创新的基本能力,为毕业后从事与单片机相关的工作打下一定的基础。

二、实习内容

利用软件MAVE2007在V51-S型实验板上设计键盘扫描+流水灯显示。

三、基本要求

要求所设计的键盘扫描+流水灯显示具有如下功能:

1、流水灯不停地工作。

2、按键从K0到KF显示对应的数字,同时流水灯速度越来越慢,并且交替显示学号。

四、强化要求

在以上效果不变的同时加入按键控制流水灯方向的功能

五、实习器材

V51-S型实验板

六、设计方案

1、分析

该程序可分为四个模块,分别是流水灯模块、显示模块、矩阵扫描显示模块、中断模块

分别画出各模块的程序框图,如下所示:

流水灯模块:

显示模块:

矩阵扫描模块:

中断模块:

2、方案

以流水灯模块为主程序,其他模块为子程序。

本实习提供了一个4×4小键盘,向P2口的低四位逐个输出高电平,如果有键按下,则相应输出高,如果没有键按下,则输出为低,通过输出的列码和读取的行码来判断按下什么键,在有键按下后要有一定的延时,防止抖动.

七、程序设计

;将4个7段数码显示器显示的内容放在4个显存中,4个显存空间定义如下

LED0EQU30H

LED1EQU31H

LED2EQU32H

LED3EQU33H

DEL17EQU34H

AKBIT30H

DELEQU35H

ORG0000H

LJMPMAIN

ORG0023H;;;;中断程序入口

LJMPXQ

ORG0040H

MAIN:

MOVSP,#60H

START:

MOVP0,#00H;使显示器不显示

MOVP1,#00H

MOVP3,#00H

MOVLED0,#0;初始界面'-''-''-''0'

MOVLED1,#16

MOVLED2,#16

MOVLED3,#16

MOVDEL17,#1;流水灯切换速度(值越大,速度越慢)

MOVDEL,#10;显示管切换速度(值越大,速度越慢)

MOVTMOD,#01H;设T0为工作方式1

MOVTH0,#00H

MOVTL0,#00H;22.1184M晶振?

SETBEA

SETBET0

SETBTR0

CLRAK

MOVA,#01H

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序

XM:

MOVP1,A

RLA;流水灯方向由上至下

PUSHA

MOVR1,DEL17;用DEL17来控制流水灯速度

D31:

MOVR2,#10

D21:

MOVR3,#100

D11:

LCALLSKLOOP

DJNZR3,D11

DJNZR2,D21

DJNZR1,D31

POPA

LJMPXM

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;扫描键盘子程序

SKLOOP:

MOVP0,#00H

MOVP2,#11110111B;P2.3口输出低电平,扫描K0,K1,K2,K3

LCALLDISLED3

SK0:

JBP2.4,SK1;P2.4为高电平扫描K0

LCALLDELAY;延时去除抖动

LCALLOPRK0;P2.4为低电平执行K0对应子程序

RET

SK1:

JBP2.5,SK2

LCALLDELAY;延时去除抖动

LCALLOPRK1

RET

SK2:

JBP2.6,SK3

LCALLDELAY;延时去除抖动

LCALLOPRK2

RET

SK3:

JBP2.7,NP2;换一次输出位

LCALLDELAY;延时去除抖动

LCALLOPRK3

RET

NP2:

MOVP0,#00H

MOVP2,#11111011B;P2.2口输出低电平,扫描K4,K5,K6,K7

LCALLDISLED2

SK4:

JBP2.4,SK5;P2.4为高电平扫描K5

LCALLDELAY;延时去除抖动

LCALLOPRK4;P2.4为低电平执行K5对应子程序

RET

SK5:

JBP2.5,SK6

LCALLDELAY;延时去除抖动

LCALLOPRK5

RET

SK6:

JBP2.6,SK7

LCALLDELAY;延时去除抖动

LCALLOPRK6

RET

SK7:

JBP2.7,NP3;换一次输出位

LCALLDELAY;延时去除抖动

LCALLOPRK7

RET

NP3:

MOVP0,#00H

MOVP2,#11111101B;P2.1口输出低电平,扫描K8,K9,KA,KB

LCALLDISLED1

SK8:

JBP2.4,SK9;P2.4为高电平扫描K8

LCALLDELAY;延时去除抖动

LCALLOPRK8;P2.4为低电平执行K8对应子程序

RET

SK9:

JBP2.5,SKA

LCALLDELAY;延时去除抖动

LCALLOPRK9

RET

SKA:

JBP2.6,SKB

LCALLDELAY;延时去除抖动

LCALLOPRKA

RET

SKB:

JBP2.7,NP4;换一次输出位

LCALLDELAY;延时去除抖动

LCALLOPRKB

RET

NP4:

MOVP0,#00H

MOVP2,#11111110B;P2.0口输出低电平,扫描KC,KD,KE,KF

LCALLDISLED0

SKC:

JBP2.4,SKD;P2.4为高电平扫描KC

LCALLDELAY;延时去除抖动

LCALLOPRKC;P2.7为低电平执行KC对应子程序

RET

SKD:

JBP2.5,SKE

LCALLDELAY;延时去除抖动

LCALLOPRKD

RET

SKE:

JBP2.6,SKF

LCALLDELAY;延时去除抖动

LCALLOPRKE

RET

SKF:

JBP2.7,NP5;换一次输出位

LCALLDELAY;延时去除抖动

LCALLOPRKF

RET

NP5:

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按键值,改变显示数据和流水灯速度

OPRK0:

MOVLED0,#0;显示管切换速度(值越大,速度越慢)

MOVDEL17,#1;流水灯切换速度(值越大,速度越慢)

RET

OPRK1:

MOVLED0,#1;显示管切换速度(值越大,速度越慢)

MOVDEL17,#1;流水灯切换速度(值越大,速度越慢)

RET

OPRK2:

MOVLED0,#2;显示管切换速度(值越大,速度越慢)

MOVDEL17,#2;流水灯切换速度(值越大,速度越慢)

RET

OPRK3:

MOVLED0,#3;显示管切换速度(值越大,速度越慢)

MOVDEL17,#3;流水灯切换速度(值越大,速度越慢)

RET

OPRK4:

MOVLED0,#4;显示管切换速度(值越大,速度越慢)

MOVDEL17,#4;流水灯切换速度(值越大,速度越慢)

RET

OPRK5:

MOVLED0,#5;显示管切换速度(值越大,速度越慢)

MOVDEL17,#5;流水灯切换速度(值越大,速度越慢)

RET

OPRK6:

MOVLED0,#6;显示管切换速度(值越大,速度越慢)

MOVDEL17,#6;流水灯切换速度(值越大,速度越慢)

RET

OPRK7:

MOVLED0,#7;显示管切换速度(值越大,速度越慢)

MOVDEL17,#7;流水灯切换速度(值越大,速度越慢)

RET

OPRK8:

MOVLED0,#8;显示管切换速度(值越大,速度越慢)

MOVDEL17,#8;流水灯切换速度(值越大,速度越慢)

RET

OPRK9:

MOVLED0,#9;显示管切换速度(值越大,速度越慢)

MOVDEL17,#9;流水灯切换速度(值越大,速度越慢)

RET

OPRKA:

MOVLED0,#10;显示管切换速度(值越大,速度越慢)

MOVDEL17,#10;流水灯切换速度(值越大,速度越慢)

RET

OPRKB:

MOVLED0,#11;显示管切换速度(值越大,速度越慢)

MOVDEL17,#11;流水灯切换速度(值越大,速度越慢)

RET

OPRKC:

MOVLED0,#12;显示管切换速度(值越大,速度越慢)

MOVDEL17,#12;流水灯切换速度(值越大,速度越慢)

RET

OPRKD:

MOVLED0,#13;显示管切换速度(值越大,速度越慢)

MOVDEL17,#13;流水灯切换速度(值越大,速度越慢)

RET

OPRKE:

MOVLED0,#14;显示管切换速度(值越大,速度越慢)

MOVDEL17,#14;流水灯切换速度(值越大,速度越慢)

RET

OPRKF:

MOVLED0,#15;显示管切换速度(值越大,速度越慢)

MOVDEL17,#15;流水灯切换速度(值越大,速度越慢)

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;显示子程序

DISLED0:

MOVDPTR,#TAB

MOVA,LED0

MOVCA,@A+DPTR

MOVP0,A

NOP

RET

DISLED1:

MOVDPTR,#TAB

MOVA,LED1

MOVCA,@A+DPTR

MOVP0,A

NOP

RET

DISLED2:

MOVDPTR,#TAB

MOVA,LED2

MOVCA,@A+DPTR

MOVP0,A

NOP

RET

DISLED3:

MOVDPTR,#TAB

MOVA,LED3

MOVCA,@A+DPTR

MOVP0,A

NOP

RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;中断改变前三位显示子程序

XQ:

MOVTH0,#00H

MOVTL0,#00H

MOVR4,DEL

DECR4

MOVDEL,R4

CJNER4,#0,ENDRE

MOVDEL,#10

JBAK,APP

MOVLED3,#16;最高三位分别显示'-''4''2'

MOVLED2,#4

MOVLED1,#2

CPLAK

RETI

APP:

MOVLED3,#3;最高三位分别显示'3''8''-'

MOVLED2,#8

MOVLED1,#16

CPLAK

ENDRE:

RETI

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;廷时子程序

DELAY:

MOVR5,#1;

D1:

MOVR6,#200;

D2:

MOVR7,#200;

DJNZR7,$;

DJNZR6,D2;

DJNZR5,D1;

RET;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;段码表

TAB:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,40H,

;'0''1''2''3''4''5''6''7''8''9''A''B''C''D''E''F''-'

;012345678910111213141516

80H,73H,00H

'.''P'''

171819

END;结束程序

程序改进:

增加按键改变流水灯方向的功能,要实现这个功能,我们利用进出栈来延时,程序如下:

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;主程序

LOOP2:

POPACC

LOOP:

MOVP1,A

RLA

PUSHACC

MOVR1,DEL17;用DEL17来控制流水灯速度

D31:

MOVR2,#10

D21:

MOVR3,#100

D11:

LCALLSKLOOP

DJNZR3,D11

DJNZR2,D21

DJNZR1,D31;将A寄存器中的数从P1端口输出

JNBP3.2,LOOP1

POPACC;将A寄存器中的数向左移动一位

SJMPLOOP;跳转到LP标号循环

LOOP1:

POPACC

LOOP3:

MOVP1,A

RRA

PUSHACC

MOVR1,DEL17;用DEL17来控制流水灯速度

D61:

MOVR2,#10

D51:

MOVR3,#100

D41:

LCALLSKLOOP

DJNZR3,D41

DJNZR2,D51

DJNZR1,D61

JNBP3.3,LOOP2

POPACC;调用延时子程序A

LJMPLOOP3

8、实习小结

单片机应用实习小结

随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,如果说微型计算机的出现使现代的科学研究得到了质的飞跃,那么可编程控制器的出现则是给现代工业控制测控领域带来了一次新的革命。

在现代社会中,温度控制不仅应用在工厂生产方面,其作用也体现到了各个方面。

本学期我们就学习了单片机这门课程,感觉是有点难呢。

也不知道整个学习过程是怎么过来得,可是时间不等人。

时光飞逝,一转眼,一个学期又进尾声了,本学期的单片机实习课题也在一周内完成了。

俗话说“好的开始是成功的一半”。

说这次实习,我认为最重要的就是做好程序调试,认真的研究老师给的题目。

其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起产品就会事半功倍,如果没弄明白,就迷迷糊糊的去做,到头来一点收获也没有。

最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。

虽然这次的实习算起来在实验室的时间只有几天,不过因为我们都有自己的实验板,所以在宿舍里做实验的时间一定不止三天。

硬件的设计跟焊接都要我们自己动手去焊,软件的编程也要我们不断的调试,最终一个能完成课程设计的劳动成果出来了,很高兴它能按着设计的思想与要求运动起来。

当然,这其中也有很多问题,第一、不够细心比如由于粗心大意焊错了线,由于对课本理论的不熟悉导致编程出现错误。

第二,是在学习态度上,这次课设是对我的学习态度的一次检验。

对于这次单片机综合课程实习,我的第一大心得体会就是作为一名工程技术人员,要求具备的首要素质绝对应该是严谨。

我们这次实习所遇到的多半问题多数都是由于我们不够严谨。

第三,在做人上,我认识到,无论做什么事情,只要你足够坚强,有足够的毅力与决心,有足够的挑战困难的勇气,就没有什么办不到的。

通过这次单片机实习,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。

设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。

这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。

作为一名电子专业的学生,我觉得做单片机实习是十分必要的。

在已度过的大学时间里,我们大多数接触的是专业课。

我们在课堂上掌握的仅仅是专业课的理论知识,如何去锻炼我们的实践能力?

如何把我们所学的专业基础课理论知识运用到实践中去呢?

我想做类似实习就为我们提供了良好的实践平台。

首先在做本次实习的过程中,我感触最深的当属查阅大量的设计资料了。

为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。

我们是在做单片机实习,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。

其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:

汇编语言、模拟和数字电路知识等。

虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。

最后,在实习之前,我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在实习过程中遇到问题是很正常的,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。

但是从中学到的知识会让我受益终身。

发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1