单片机大作业设计报告.docx
- 文档编号:30297878
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:18
- 大小:546.85KB
单片机大作业设计报告.docx
《单片机大作业设计报告.docx》由会员分享,可在线阅读,更多相关《单片机大作业设计报告.docx(18页珍藏版)》请在冰豆网上搜索。
单片机大作业设计报告
课程设计报告
课题单片机大作业(显示系统设计)
学院电子与控制工程学院
专业建筑电气与智能化
班级
学号
姓名
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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 作业 设计 报告