单片机课程设计报告.docx
《单片机课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告.docx(37页珍藏版)》请在冰豆网上搜索。
单片机课程设计报告
目录
前言--------------------------------------------------------------------------2
1课程设计的目的和要求------------------------------------------------------2
1.1、课程设计的目的-----------------------------------------------------2
1.2、课程设计的基本要求-------------------------------------------------2
2系统设计------------------------------------------------------------------2
2.1基本工作原理-----------------------------------------------------------2
2.2系统设计-----------------------------------------------------------2
2.2.1系统组成方案---------------------------------------------------2
2.2.2扩展单元编址---------------------------------------------------2
2.2.3按键、显示功能的定义--------------------------------------------2
2.3软件总体设计-----------------------------------------------------2
2.3.1存储单元的分配、标志位的定义------------------------------------2
2.3.2主程序框图及清单-----------------------------------------------3
3硬件设计------------------------------------------------------------------3
3.1主控制器---------------------------------------------------------------3
3.1.180C51内部结构--------------------------------------------------3
3.1.280C51引脚封装与功能表------------------------------------------4
3.1.3P0P1P2P3口内部结构及作为I/O端口时的使用-----------------------6
3.1.4晶体振荡器电路-------------------------------------------------6
3.1.5复位电路--------------------------------------------------------7
3.2DS18B20原理及引脚介绍-------------------------------------------------7
3.3LED显示驱动电路-------------------------------------------------------8
4软件设计------------------------------------------------------------------8
5.Proteus仿真系列图…………………………………………………………………………….13
6系统操作说明………………………………………………………………………………….16
7结束语-------------------------------------------------------------------16
8参考文献-----------------------------------------------------------------17
9系统原理图---------------------------------------------------------------17
附录1-----------------------------------------------------------------------17
1.课程设计的目的和要求
1.1课程设计的目的
本次课程设计的目的主要是学会利用单片机采用软硬件结合的方法设计电子产品,一方面是学会以软代硬,用软件程序实现硬件功能,简化电路,另一方面就是学会设计硬件电路,科学布局电子电子元器件,掌握电路焊接的基本方法。
1.2课程设计的基本要求
基本要求:
(1)给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。
(2)抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。
此外,要封锁输入电路,禁止其他选手抢答。
发挥部分:
(1)抢答器具有定时抢答的功能,且一次抢答的时间和答题的时间可以由主持人设定(如30秒)。
当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
(2)参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
(2)如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示FF。
(3)选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。
2.系统设计
2.1基本原理
抢答器的工作原理是采用单片机最小系统,用程序查询方式采用动态显示组号。
主持人按下开始抢答键才可以抢答。
主持人没有按下开始抢答按纽(P3.0),有人抢答则抢答违规,报警并显示组号,主持人按下开始抢答开关重新抢答。
主持人按下开始抢答按纽(P3.0),蜂鸣响声提示,数码管30秒倒计时抢答,蜂鸣器响声提示并显示他的组号,30秒内有人抢答则开始60秒倒计时(60秒内必须回答完问题),最后五秒倒计时警报。
单片机最小系统、抢答按键模块(四位并行数码显示)、显示模块、显示驱动模块、抢答开关模块、蜂鸣器音频输出模块。
2.2.1系统设计
基本要求
(1).给主持人设置一个开关,用来控制系统的清零(编号显示数码管灭灯)和抢答器的开始。
(2).抢答器具有数据锁存和显示的功能。
抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。
此外,要封锁输入电路,禁止其他选手抢答。
发挥部分:
(3)抢答器具有定时抢答的功能,且一次抢答的时间和答题的时间可以由主持人设定(如30秒)。
当节目主持人启动“开始”键后,要求定时器立即减计时,并用显示器显示,同时扬声器发出短暂的声响,声响持续时间0.5秒左右。
(4)参加选手在设定的时间内抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答时刻的时间,并保持到主持人将系统清零为止。
(5)如果定时抢答的时间已到,却没有选手抢答时,本次抢答无效,系统短暂报警,并封锁输入电路,禁止选手超时后抢答,时间显示器上显示FF。
(6)选手如果在主持人按开始键之前违规抢答,系统报警,LED显示违规选手号码和FF,直到主持人按下停止键。
系统组成
抢答器的实现方式有种多样,通过纯电子器件搭建电路实现,如优先编码器,锁存器,555定时器译码器等,纯电子器件实现没有软件参与,调试简单,但是它不易于扩展和修改,而且电路结构复杂,调试困难电子,电子器件管脚很多,实际搭建起来费时费力,焊接很容易出错。
于是,我想到了用单片机实现。
该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
其原理框图如下:
在实际电路设计中,需要先通过仿真软件测试电路以及编译的程序,检查外围电路设计是否合理,软件编译是否正确,以及软件和硬件电路能否正常配合工作,能否准确的实现所设计的功能。
如果测试通过,电路仿真没有问题能完全实现功能的话就可以实际的做板子的焊接工作了。
在老师的指导下我选择了常用的单片机仿真软件proteus7.0以及keil进行仿真
2.2.2扩张单元地址
无扩展单元
2.2.3按键、显示功能的定义
P1口的八位分别接8位选手的按键,作抢答按键口
P3.1接复位键,按下程序复位
P3.2接抢答时间调整键,按下进入抢答时间调整
P3.3接答题时间调整键,按下进入答题时间调整
P3.4接时间调整加1键,按下被调时间加1
P3.5接时间调整减1键,按下被调时间减1
RST接单片机复位键,按下单片机复位
四位八段数码管,第一位显示抢答选手号,第三、四位显示倒计时间,第二位不用把选手号和倒计时间隔开
2.3软件总体设计
2.3.1存储单元的分配、标志位的定义
OKEQU20H:
抢答开始标志位
RINGEQU22H:
响铃标志位
P3.0抢答开始标志位
P3.1复位标志位
P3.2抢答时间调整标志位
P3.3答题时间调整标志位
P3.4时间调整加1标志位
P3.5时间调整减1标志位
P3.6蜂鸣取反标志位
R0作定时1秒的指针
R1做抢答时间的存储单元
R2做答题时间的存储单元
R3做选手号的存储单元
R6做倒计时指针
P0口做送显段码口
P1口做选手抢答按键口
P2口做送显位选口
P3口做功能键口
2.3.2主程序框图及清单
89C52
1个
USB
1个
共阴四联八段数码管
1个
开关
20个
蜂鸣器
1
30p
4个
晶振12M
1个
排阻10K
1个
10K电阻
2个
10uf
2个
3.硬件设计
3.1主控制器
3.1.189C51内部结构
3.1.289C51引脚封装与功能表
(1)Vcc(40引脚):
接+5V电源
(2)Vss(20引脚):
接地
(3)P0口:
8位双向I/O口线,为P0.0-P0.7
(4)P1口:
8位准双向I/O口线,为P1.0-P1.7
(5)P2口:
8位准双向I/O口线,为P2.0-P2.7
(6)P3口:
8位准双向I/O口线,为P3.0-P3.7
(7)XTAL1:
片内晶振电路的输入端
(8)XTAL2:
片内晶振电路的输出端
(9)RST/VPP:
复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。
(10)ALE/PROG:
地址所存允许信号。
(11)PSEN:
外部存储器读选通讯信号。
(12)EA/VPP:
程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。
3.1.3P0P1P2P3口内部结构及作为I/O端口时的使用
P0口和P2的结构
P0口的结构:
下图为P0口的某位P0.n(n=0~7)结构图,它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路及控制电路组成。
从图中可以看出,P0口既可以作为I/O用,也可以作为地址/数据线用。
P0口作为普通I/O口:
①输出时,CPU发出控制电平“0”封锁“与”门,将输出上拉场效应管T1截止,同时使多路开关MUX把锁存器与输出驱动场效应管T2栅极接通。
故内部总线与P0口同相。
由于输出驱动级是漏极开路电路,若驱动NMOS或其它拉流负载时,需要外接上拉电阻。
P0的输出级可驱动8个LSTTL负载。
②输入时----分读引脚或读锁存器
读引脚:
由传送指令(MOV)实现;
下面一个缓冲器用于读端口引脚数据,当执行一条由端口输入的指令时,读脉冲把该三态缓冲器打开,这样端口引脚上的数据经过缓冲器读入到内部总线。
读锁存器:
有些指令如:
ANLP0,A称为“读-改-写”
指令,需要读锁存器。
上面一个缓冲器用于读端口锁存器数据。
原因:
如果此时该端口的负载恰是一个晶体管基极,且原端口输出值为1,那么导通了的PN结会把端口引脚高电平拉低;若此时直接读端口引脚信号,将会把原输出的“1”电平误读为“0”电平。
现采用读输出锁存器代替读引脚,图中,上面的三态缓冲器就为读锁存器Q端信号而设,读输出锁存器可避免上述可能发生的错误。
**
说明:
(1)P0口必须接上拉电阻;
(2)在读信号之前数据之前,先要向相应的锁存器做写1操作的I/O口称为准双向口;
三态输入缓冲器的作用:
(ANLP0,A)
准双向口:
从图中可以看出,在读入端口数据时,由于输出驱动FET并接在引脚上,如果T2导通,就会将输入的高电平拉成低电平,产生误读。
所以在端口进行输入操作前,应先向端口锁存器写“1”,使T2截止,引脚处于悬浮状态,变为高阻抗输入。
这就是所谓的准双向口。
P0作为地址/数据总线
在系统扩展时,P0端口作为地址/数据总线使用时,分为:
(1)P0引脚输出地址/数据信息:
CPU发出控制电平“1”,打开“与”门,又使多路开关MUX把CPU的地址/数据总线与T2栅极反相接通,输出地址或数据。
由图上可以看出,上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增强。
P0作为地址/数据总线----真正的双向口
(2)P0引脚输出地址/输入数据:
输入信号是从引脚通过输入缓冲器进入内部总线。
此时,CPU自动使MUX向下,并向P0口写“1”,“读引脚”控制信号有效,下面的缓冲器打开,外部数据读入内部总线。
P2的内部结构
P2口作为普通I/O口:
CPU发出控制电平“0”,使多路开关MUX倒向锁存器
输出Q端,构成一个准双向口。
其功能与P1相同。
P2口作为地址总线:
在系统扩展片外程序存储器扩展数据存储器且容量超过256B(用MOVX@DPTR指令)时,CPU发出控制电平“1”,使多路开关MUX倒内部地址线。
此时,P2输出高8位地址。
P1口、P3口的内部结构
①P1口的一位的结构
它由一个输出锁存器、两个三态输入缓冲器和输出驱动电路组成----准双向口。
②P3的内部结构
作为通用I/O口与P1口类似----准双向口(W=1)
P3第二功能(Q=1)
此时引脚部分输入(Q=1、W=1),部分输出(Q=1、W输出)。
P3第二功能各引脚功能定义:
P3.0:
RXD串行口输入
P3.1:
TXD串行口输出
P3.2:
INT0外部中断0输入
P3.3:
INT1外部中断1输入
P3.4:
T0定时器0外部输入
P3.5:
T1定时器1外部输入
P3.6:
WR外部写控制
P3.7:
RD外部读控制
综上所述:
当P0作为I/O口使用时,特别是作为输出时,输出级属于开漏电路,必须外接上拉电阻才会有高电平输出;如果作为输入,必须先向相应的锁存器写“1”,才不会影响输入电平。
当CPU内部控制信号为“1”时,P0口作为地址/数据总线使用,这时,P0口就无法再作为I/O口使用了。
P1、P2和P3口为准双向口,在内部差别不大,但使用功能有所不同。
P1口是用户专用8位准双向I/O口,具有通用输入/输出功能,每一位都能独立地设定为输入或输出。
当有输出方式变为输入方式时,该位的锁存器必须写入“1”,然后才能进入输入操作。
P2口是8位准双向I/O口。
外接I/O设备时,可作为扩展系统的地址总线,输出高8位地址,与P0口一起组成16位地址总线。
对于8031而言,P2口一般只作为地址总线使用,而不作为I/O线直接与外部设备相连。
3.1.4晶体振荡器电路
3.1.5复位电路
3.1.6蜂鸣器驱动电路
3.3八段数码管显示驱动电路
4.软件设计
在本设计中包括了以下主要的程序:
主程序,查询程序,非法抢答程序,抢答时间调整程序,回答时间调整程序,倒计时程序,正常抢答处理程序,犯规处理程序,显示及发声程序。
整个程序主要由定时器T0、定时器T1、外部中断0和外部中断1和主程序构成。
主流程图如4.2.1所示:
主程序流程图
INT0用于调整抢答时间,设计流程图如下:
INT1用于调整答题时间,设计流程图如下:
定时器T0用于使扬声器发声,当需要响铃时,把响铃标志位置一,每次中断都对P3.6取反,扬声器发声,改变定时器初值,可改变扬声器频率。
这里用绿灯闪烁代替。
程序流程图如下:
定时器T1用于倒计时,每次中断为50ms,当计数标志为20时即为一秒,显示数字减一。
其流程图如下:
5.Proteus仿真系列组图
5.1复位图
图5.1复位显示三个FFF
该图显示当单片机复位后,在4位七段数码管上显示的初始状态“FFF”字符。
5.2设置计时时间
图5.2计时时间为17秒
该图显示通过加一按键操作后在4位数码管上显示的计时时间为17秒。
5.3非法抢答并显示座号
图5.3三号选手非法抢答
该图显示的是若三号选手非法抢答时候,第一位字符显示单片机判定的非法选手“3”号选手,在4位数码管上的后两位显示非法抢答字符“FF”。
5.4抢答成功并显示倒计时
图5.4六号选手抢答
图中显示的是若6号选手抢答成功的时候,4位数码管只显示第一位,表示六号选手抢答成功。
5.5抢答成功并显示倒计时
图5.4六号选手抢答
图中显示的是若6号选手抢答成功并开始答题的情形,4位数码管的第一显示是“6”号选手抢答成功,最后两位显示选手答题倒计时时间还有25秒。
6.系统操作说明
本系统共有七个功能键
按键A为单片机复位键
按键B为抢答开始键
按键C为抢答复位键
按键D为答题开始键
按键E为抢答时间调整键
按键F为答题时间调整键
按键G为时间加1键
按键H为时间减1键
7.结束语-
本文研究与设计的八路多功能抢答器采用了通用的电子元器件,利用AT89C51单片机及外围接口实现抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来。
理论联系实践,体现出大学生动手能力。
通过查资料和搜集有关的文献,培养了自学能力和动手能力。
并且由原先的被动的接受知识转换为主动的寻求知识,这可以说是学习方法上的一个很大的突破。
在以往的传统的学习模式下,我们可能会记住很多的书本知识,但是通过毕业论文,我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。
把握重点、攻克难关,学到用到、活学活用。
在设计过程中由于时间仓促有很多地方难免存在不足之处,硬件设计已经完成,在软件设计中有些功能还尚未开发出来。
但在以后的工作中,我们会严格要求自己,追求完美。
整个设计通过了软件和硬件上的调试、仿真。
我想这对于自己以后的学习和工作都会有很大的帮助的。
在这次设计中遇到了很多实际性的问题,在实际设计中才发现,书本上理论性的东西与在实际运用中的还是有一定的出入的,所以有些问题不但要深入地理解,而且要不断地更正以前的错误思维。
对于单片机设计,其硬件电路是比较简单的,主要是解决程序设计中的问题。
而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力。
它才是一个设计的灵魂所在。
因此在整个设计过程中大部分时间是用在程序上面的。
很多子程序是可以借鉴书本上的,但怎样衔接各个子程序才是关键的问题所在,这需要对单片机的结构很熟悉。
因此可以说单片机的设计是软件和硬件的结合,二者是密不可分的。
但是,通过这次设计我也发现自己的很多不足之处。
在设计过程中我发现自己考虑问题很不全面,自己的专业知识掌握的很不牢固,所掌握的计算机应用软件还不够多,我希望自己的这些不足之处能在今后的工作和学习中得到改善。
而且,通过这次设计,我懂得了学习的重要性,学会了坚持和努力,这将为以后的学习做出了最好的榜样!
7.参考文献
单片机原理与应用技术,张毅刚彭喜元编著,电子工业出版社
8.系统原理图
9.附录
程序:
OKEQU20H;抢答开始标志位
RINGEQU22H;响铃标志位
ORG0000H
AJMPMAIN
ORG0003H
AJMPINT0SUB
ORG000BH
AJMPT0INT
ORG0013H
AJMPINT1SUB
ORG001BH
AJMPT1INT
ORG0040H
MAIN:
MOVR1,#30;初设抢答时间为30s
MOVR2,#60;初设答题时间为60s
MOVTMOD,#11H;设置未定时器/模式1
MOVTH0,#0F5H
MOVTL0,#0FFH;越高发声频率越高,越尖
MOVTH1,#3CH
MOVTL1,#0B0H;100ms为一次溢出中断
SETBEA
SETBET0
SETBET1
SETBEX0
SETBEX1;允许四个中断,T0/T1/INT0/INT1
CLROK
CLRRING
SETBTR1
SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了
;=====查询程序=====
START:
MOVR5,#0BH
MOVR4,#0BH
MOVR3,#0BH
ACALLDISPLAY;未开始抢答时候显示FFF
JBP3.0,NEXT;
ACALLDELAY
JBP3.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询
ACALLBARK;按键发声
MOVA,R1
MOVR6,A;送R1->R6,因为R1中保存了抢答时间
SETBOK;抢答标志位,用于COUNT只程序中判断是否查询抢答
MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号
MOVR3,#0AH;抢答只显示计时,灭号数
AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面
NEXT:
JNBP1.0,FALSE1
JNBP1.1,FALSE2
JNBP1.2,FALSE3
JNBP1.3,FALSE4
JNBP1.4,FALSE5
JNBP1.5,FALSE6
JNBP1.6,FALSE7
JNBP1.7,FALSE8
AJMPSTART
;=====非法抢答处理程序=====
FALSE1:
MOVR3,#01H
AJMPERROR
FALSE2:
MOVR3,#02H
AJMPERROR
FALSE3:
MOVR3,#03H
AJMPERROR
FALSE4:
MOVR3,#04H
AJMPERROR
FALSE5:
MOVR3,#05H
AJMPERROR
FALSE6:
MOVR3,#06H
AJMPERROR
FALSE7:
MOVR3,#07H
AJMPERROR
FALSE8:
MOVR3,#08H
AJMPERROR
;==