单片机大作业设计报告.docx

上传人:b****5 文档编号:7266371 上传时间:2023-01-22 格式:DOCX 页数:15 大小:541.11KB
下载 相关 举报
单片机大作业设计报告.docx_第1页
第1页 / 共15页
单片机大作业设计报告.docx_第2页
第2页 / 共15页
单片机大作业设计报告.docx_第3页
第3页 / 共15页
单片机大作业设计报告.docx_第4页
第4页 / 共15页
单片机大作业设计报告.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

单片机大作业设计报告.docx

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

单片机大作业设计报告.docx

单片机大作业设计报告

课程设计报告

 

课题单片机大作业(显示系统设计)

学院电子与控制工程学院

专业建筑电气与智能化

班级

学号

姓名

 

4月13日至4月18日

指导教师徐先锋

设计任务书

 

摘要

本次设计主要采用MCS-51单片机、74LS273锁存器、数码管、按键、LED灯等器件组成一个能够控制流水灯的显示以及数码管显示的简单系统,并且内部用到中断技术。

键盘控制数码管显示的具体数字。

关键词:

流水灯,键盘,数码管显示,中断,定时器

Abstract

ThisdesignusingMCS-51microcontroller,74LS273latch,digitalcontrol,button,LEDlightsandotherdevicescancontrolwaterlightshowsimplesystemanddigitaldisplay,andinternaldisruptiontechniqueisused.Keyboardcontrolsdigitaldisplayspecificfigures.

 

Keywords:

waterlights、keyboard、digitaldisplay、breakoff、timer

 

 

内容

一、设计要求

1.选择合适的设计方案,并进行理论阐述。

2.编制相应的控制程序,要求有程序流程图,程序加注释。

3.绘制实现电路原理图,所有图纸均用计算机绘制。

二、设计步骤

1.流水灯的控制

本次设计流水灯的显示有三种模式。

第一种:

系统工作时,指示灯L0~L7以3个指示灯为一组循环显示。

第二种:

当S1按下时,暂时中断3灯循环方式,熄灭全部指示灯,从指示灯L0开始逐个点亮并保持,直至L0~L7全部点亮,然后熄灭,重复上述过程5次后退出,继续三灯循环显示模式。

第三种:

当S2按下时,暂时中断3灯循环方式,全部指示灯L0~L7闪烁10次后退出,继续三灯循环显示模式。

考虑到定时器/计数器的使用,本次中断采用不同的方式,即:

第二种显示模式采用外部事件中断TNT0,第三种显示模式采用定时器/计数器T0的溢出中断。

2.键盘的设计

本次键盘设计为3×3键盘,键盘接MCS-51单片机P2口,其中P2.3口和P2.7口处于闲置状态,九个按键依次对应1到9九个数字,按键识别方法采用线反转法。

3.数码管的显示

七段数码管采用共阴极接法,与MCS-51单片机接于P0口,键盘按键键值计算完后,由P0口输出到74LS273锁存器,再驱动数码管相应位置点亮,显示相应数字。

 

三、设计原理

1.流水灯控制设计

2.

本次设计中流水灯采用三种模式显示。

流水灯接P1口,正常工作时,指示灯三个为一组循环显示,在指令中采用依次循环左移产生显示控制码来控制指示灯依次显示。

另两种显示模式分别用两种类型的中断来控制。

首先,这两种中断的优先级是一样的。

第二种模式采用采用外部事件中断TNT0,触发方式采用负跳变方式。

第三种显示模式采用定时器/计数器T0的溢出中断,定时器/计数器的工作方式寄存器(TMOD)初始值设为06H,让定时器/计数器T0为计数器工作模式,并且工作方式为方式2。

外部事件中断INT0方式中,按下开关S1,中断触发,改变流水灯显示方式,同样,当按下开关S2是,计数器计数溢出中断,进入中断处理程序,改变流水灯显示方式。

因为两个中断的优先级是相同的,所以,两个按键对其中任何一个按键是否按下没有影响,当两个按键同时按下时,优先响应S1的请求,正在处理其中一个时,不会响应另外一个。

3.键盘及数码管显示设计

(1)键盘接口设计:

键盘是由一组规则排列的按键组成的。

按键实际上是一个开关元件,也就是说键盘是一组规则排列的开关,可分为独立式和矩阵式两种形式。

本次设计采用矩阵式键盘,设计成一个3×3键盘,接于P2口。

其中,P2.0~P2.2作为行线,P2.4~P2.6作为列线,P2.3和P2.7不接,处于闲置状态。

本次设计中按键的识别方法为线反转法。

其工作原理如下:

第一步,首先使行线为输入,列线为输出。

列线全部输出低电平,那么,行线中变为低电平的行线为按键所在的行。

第二步,试行线变为输出,列线变为输出。

行线输出全部为低电平,那么,列线中变为低电平的列线为按键所在的列。

在程序设计时,可以用行线和列线的输入状态来构造按键的特征码。

线反转法键盘识别及处理程序流程图见第四部分(软件流程)。

在程序中获取行线和列线的状态后,先进行取反操作,这样按键所在的行和列的状态为1,然后通过移位指令,计算出按键所在的行号和列号。

然后用行号和列号求出键值,由于每行有三个按键,因此键值计算公式为:

键值=3×行号+列号,求出键值存放在R5中。

(2)

LED数码管显示器接口设计:

本次设计采用LED数码管显示器。

LED数码管是由若干个发光二极管组成的显示字段。

当二极管导通时相应的一个点或一个笔划发光,就能显示出各种字符,常用的8段LED显示器的外形结构如图所示,COM为公共端,a~g和dp为显示字控制端。

LED数码管显示器有两种结构,一种是所有发光二极管的阳极连在一起,称共阳数码管,使用时,它的公共端COM接高电平。

另一种是所有发光二极管的阴极连在一起,称共阴数码管,它的公共端COM接低电平。

8段LED数码管显示器字型编码表如图所示。

本次设计采用单个数码管静态显示键盘按下的一位数字。

当键盘中某一按键按下时,由键盘处理程序计算出键值,P2口输入,P0口输出到锁存器74LS273,74LS273CLK端接P3.7口,显示程序中给一个脉冲信号,即可输出相应的信号来驱动数码管的点亮,显示对应的数字。

四、系统调试

1.软件环境:

proteus

2.调试过程:

将编写好的源程序输入,编译后出现很多问题,经过反复修改程序终于运行通过。

刚开始数码管不显示任何数字,按键按下没有任何反应,仔细检查后发现键盘之间的连线发生了错误。

改正后发现数码管显示的数字与键盘按下的不相对应,分析了源程序后发现问题出现在键盘处理程序中键值计算的时候出了问题。

本次采用的是3×3的矩阵式键盘,键值计算的时候行号应乘以3而并非乘以4,改正后,数码管正常显示。

流水灯的控制显示没有出现太大问题,开始就可以正常显示了。

 

五、软件流程

1.

流水灯控制流程:

 

Y

N

Y

N

 

INTO中断:

TO中断:

 

2.键盘及数码管显示流程:

 

N

Y

N

Y

 

N

Y

 

六、仿真结果与分析

MCS-51单片机工作系统图:

流水灯显示结果:

1.正常工作模式:

3个为一组循环显示

2.当S1按下:

逐个点亮并保持,全部点亮后熄灭,重复5次后退出

3.当S2按下:

全部指示灯闪烁显示10次

 

键盘及数码管显示:

本次设计采用3×3矩阵式键盘。

当键盘按下时,键值由P2口输入,P0口输出,数码管显示1~99个数字。

 

设计总结

在这次课程设计过程中,我们逐步养成了发现、提出、分析和解决实际问题的习惯;这不但锻炼提高了我们的实践能力,更是对我们实际工作能力的具体训练和考察过程。

对于此次单片机系统的设计,我仍感慨颇多,让我们巩固了以前所学过的知识。

通过这次简单的设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中也发现了自己对所学过的知识理解得不够深刻,掌握得不够牢固,比如说锁存器的使用。

通过这次课程设计,我对MCS-51单片机,中断技术,定时器/计数器的使用,74LS273等内容有了更深刻的理解与认识。

同时也看到了自己基础知识还是不够扎实,实践经验还是比较缺乏,理论联系实际的能力还待急需提高。

 

参考文献:

段晨东.单片机原理及接口技术.清华大学出版社,2008.7

附录

设计图:

源程序清单:

ORG0000H

LJMPMAIN

ORG0003H

LJMPPint0;INTO的中断入口地址

ORG000BH

LJMPPint1;T0的中断入口地址

ORG0030H

MAIN:

MOVSP,#60H;开辟栈区

SETBIT0;INTO跳变触发方式

SETBEA

SETBEX0

MOVA,#07H;1组3个指示灯显示控制码初值

MOVTMOD,#06H

MOVTH0,#0FFH

MOVTL0,#0FFH

SETBET0

SETBTR0

CONT:

MOVP1,A;输出控制LED,3个指示灯为1组显示

LCALLDELAY;延时

RLA;循环左移产生显示控制码

PUSHACC

KEY:

MOVP2,#11110000B;行线置低电平,列线置输入态

MOVA,P2;读列线状态

CPLA;数据取反,按键按下的列线“1”有效

ANLA,#11110000B;屏蔽行线,取列线状态

JZGRET;全0,无键按下,返回

LCALLDL20MS

MOVP2,#11110000B;行线置低电平,列线置输入态

MOVA,P2

CPLA

ANLA,#11110000B

JZGRET;全0,无键按下,返回

MOVP2,#11110000B;行线置低电平,列线置输入态

MOVA,P2;读列线状态

CPLA;数据取反,按键按下的列线“1”有效

ANLA,#11110000B;屏蔽行线,取列线状态

MOVR1,A

MOVP2,#00001111B

MOVA,P2

CPLA

ANLA,#00001111B

MOVR2,A

KEY1:

MOVP2,#11110000B

MOVA,P2

CPLA

ANLA,#11110000B

JNZKEY1

MOVA,R1

MOVR1,#03H

MOVR3,#03H

CLRC

KEY2:

RLCA

JCKEY3

DECR1

DJNZR3,KEY2

KEY3:

MOVA,R2

MOVR2,#00H

MOVR3,#03H

CLRC

KEY4:

RRCA

JCKEY5

INCR2

DJNZR3,KEY4

KEY5:

MOVA,R2

CLRC

MOVB,A

RLCA

ADDA,B

ADDA,R1

MOVDPTR,#LED_SEG

MOVCA,@A+DPTR

MOVP0,A

CLRP3.7

SETBP3.7

GRET:

MOVR5,#0FFH

POPACC

LJMPCONT

;延时子程序

DELAY:

MOVR5,#100

DEL1:

MOVR6,#200

DEL0:

NOP

NOP

NOP

DJNZR6,DEL0

DJNZR5,DEL1

RET

ORG0300H

Pint0:

PUSHACC;保护现场

PUSHPSW

SETBRS0;把工作寄存器切换到1区,避免中断处理影响主程序中R0~R7的内容

MOVR1,#05H;设置循环次数

CONT1:

CLRA;产生显示控制码

MOVP1,A;输出控制LED全熄灭

ACALLDELAY;延时

MOVR2,#01H;循环初值

MOVR3,#01H;显示控制码暂存寄存器初值,逐个点亮起始位

CONT2:

MOVA,R3;取显示控制码

MOVP1,A;输出控制LED

ACALLDELAY;延时

MOVA,R2;取循环码

RLA;循环码移位

MOVR2,A;循环码暂存

ORLA,R3;产生下次显示控制码

MOVR3,A;暂存显示控制码

MOVA,R2

XRLA,#01;8个LED显示完,异或结果为0

JNZCONT2;8个LED未显示完,继续

DJNZR1,CONT1;这种显示模式5次显示完否?

POPPSW;回复现场,RS0恢复到原来的状态

POPACC

RETI;中断返回

;INT1中断源的中断处理程序

ORG0400H

Pint1:

PUSHACC

PUSHPSW

SETBRS0

MOVR1,#10

CONT3:

CLRA

MOVP1,A

ACALLDELAY

MOVA,#0FFH

MOVP1,A

ACALLDELAY

DJNZR1,CONT3

POPPSW

POPACC

RETI

;延时20MS

DL20MS:

MOVR5,#20

DEL2:

MOVR6,#200

DEL3:

NOP

NOP

NOP

DJNZR6,DEL3

DJNZR5,DEL2

RET

;字形码表

LED_SEG:

DB06H,5BH,4FH,66H,6DH,7DH,07H

DB7FH,6FH

END

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

当前位置:首页 > 农林牧渔 > 林学

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

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