单片机课设60秒计时器Word格式文档下载.docx
《单片机课设60秒计时器Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机课设60秒计时器Word格式文档下载.docx(23页珍藏版)》请在冰豆网上搜索。
用AT89S51单片机的定时/计数器T0产生一秒的定时时间,作为秒计数时间,
一秒产生时,秒计数加1,秒计数到60时,自动从0开始。
额外拓展,实现两个按键,一个实现计时暂停,一个实现从0计时。
课程设计目的:
课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练,进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不可少的,是非常必要的。
课程设计是提高学生单片机技术应用能力以及文字总结能力的综合训练环节,是配合单片机课程内容掌握应用得的专门性实践类课程,通过典型实际问题的实际,训练学生的软硬件的综合设计、调试能力以及文字组织能力,建立系统设计概念,加强工程应用思维方式的训练,同时对教学内容做一定的扩充。
通过课程设计,使自己深刻理解并掌握基本概念,掌握单片机的基本应用程序设计及综合应用程序设计的方法,通过做一个综合性训练题目,达到对内容的消化、理解并提高解决问题的能力的目的。
1.2、总体方案设计
1.2.1、设计方案框图
1.2.2、硬件方案
1、制作一个AT89S51最小系统;
2、采用两个LED七段数码显示管分别显示秒表的个位和十位;
3、P0口输出十位段码,P2口输出个位段码。
1.2.3、软件方案
1、因为当晶振频率为12MHz时,选择定时/计时器的模式1;
2、时间设定定时/计数器定时时间,累计合适中断次数后执行刷新显示子程序;
3、每隔1s秒计数加1,秒计数到60自动从0开始,循环不止。
二、系统硬件设计
2.1、电路总体设计方案
最小系统应符合以下要求:
(1)引出4个I/O端口,便于硬件拓展,同时接入排阻以满足更多的使用要求
(2)在上电自动复位的基础上添加按键复位功能,以提高系统的可控性;
(3)采用按钮开关、继电器与稳压二极管构成电源电路,以提高系统的稳定性;
(4)具有专门的编程端口;
(5)采用内部时钟电路。
2.2、电路原理图
2.3、各硬件模块设计与制作
2.3.1、AT89C51单片机设计
AT89C51是一个低功耗高性能CMOS8位单片机,片内含4kBytesISPIn-systemprogrammable的可反复擦写1000次的Flash,只读程序存储器器件采用ATMEL公司的高密度非易失性存储技术,制造兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案,AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
外形及引脚排列如图所示:
主要特性:
·
与MCS-51兼容
4K字节可编程闪烁存储器
寿命1000写擦循环
数据保留时间10年
全静态工作0Hz-24MHz
三级程序存储器锁定
128×
8位内部RAM
32可编程IO线
两个16位定时器计数器
5个中断源
可编程串行通道
低功耗的闲置和掉电模式
片内振荡器和时钟电路
管脚说明:
(1)电源与时钟引脚
Vcc:
电源接入引脚
Vss:
接地引脚
XTAL1:
晶振震荡器接入的一个引脚采用外部振荡器时此引脚接地
XTAL2:
晶体振荡器的另一个引脚(采用外部振荡器时此引脚作为外部振荡器信号的输入端)
(2)控制线引脚
RST/Vpd:
复位信号输入引脚备用电源输入引脚
ALE:
地址锁存允许信号输出引脚编程脉冲输入引脚
EA:
内外存储器选择引脚片外EPROM编程电压输入引脚
PSEN:
外部程序存储器选通信号输出引脚
(3)并行IO引脚
(4)P00-P07:
一般IO口引脚或数据低位地址总线复用引脚
(5)P10-P17:
一般IO口引脚
(6)P20-P27:
一般IO口引脚或高位地址总线引脚
(7)P30-P37:
一般IO口引脚或第二功能引脚
内部振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出,该反向放大器可以配置为片内振荡器,石晶振荡和陶瓷振荡均可采用如采用,如果采用外部时钟源驱动器件,XTAL2应不接有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
P0口(P0.0-P0.7):
P0口是一个8位漏极开路型双向I/O端口。
P0口可做通用I/O口使用,但在端口进行输入操作前,应先向端口的输出锁存器写“1”。
在CPU访问片外存储器时,P0口自动作为地址/数据复用总线。
在编程时,由P0口输入指令字节,而在验证程序时,P0口输出指令字节(验证时应外接上拉电阻)。
P0口能以吸收电流的方式驱动8个LS型TTL负载。
P1口(P1.0-P1.7):
P1口是一个内部带上拉电阻的8为准双向I/O端口。
当P1输出高电平是,能向外部提供拉电流负载,因此,不需再外接上拉电阻。
当端口用作输入时,也应先向端口的输出锁存器写入“1”。
在编程和验证程序时,P1口用来输入低8位地址。
P1口能驱动4个LS型TTL负载。
P2口(P2.0-P2.7):
P2口也是一个内部带上拉电阻的8位准双向I/O端口。
当CPU访问外部存储器时,P2口自动用作输出高8位地址,与P0低8位地址一起形成外部存储器的16位地址总线。
此时,P2口不再作为通用I/O口使用。
P2口可驱动4个LS型TTL负载。
在编程和验证程序时,P2口用作接收高8为地址。
P3口(P3.0-P3.7):
P3口是一个内部带上拉电阻的8位多功能双向I/O端口。
P3口除了作通用I/O端口外,其主要功能是它的各位还具有第二功能。
无论P3口作通用输入框还是作第二输入功能口使用,相应位的输出锁存器和第二输出功能段都应置“1”。
P3口能驱动4个LS型TTL负载。
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:
外RAM写选通信号输出端;
P3.7——RD:
外RAM读选通信号输出端。
为便于硬件拓展以及满足更多的使用有求,在P0、P2口处分别接1KΩ和2.2KΩ的上拉电阻,并在每个端口出添加VCC和GND引脚。
2.3.2、晶振输入电路设计
单片机必须在时钟的驱动下才能工作,在单片机内部有一个时钟振荡电路,只要外界一个振荡源就能产生一定的时钟信号,送到单片机内部的各个单元,决定单片机的工作速度。
时钟电路如下图
AT89C51单片机内部的振荡电路是一个高增益反向放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。
单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。
AT89C51的时钟产生方式有两种:
内部时钟电方式和外部时钟方式。
由于外部时钟方式用于多片单片机组成的系统中,所以此处选用内部时钟方式。
即利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路产生自激振荡。
最常用的是在XTAL1和XTAL2之间接晶体振荡器与电路构成稳定的自激振荡器,如图电路所示为单片机最常用的时钟振荡电路的接法,其中晶振可选用振荡频率为12MHz的石英晶体,电容器一般选择30μF左右。
2.3.3、复位电路设计
本设计中AT89C51是采用上电自动复位和按键复位两种方式。
复位电路可将单片机的各状态都恢复到初始化状态。
单片机的RES脚为硬件复位端,只要将持续高电平即可实现复位,复位后单片机的各状态都恢复到初始化状态。
复位电路如图所示。
由于单片机是高电平复位,所以当按下S时,单片机的9脚RESET管脚处于高电平,此时单片机处于复位状态,当上电后,由于电容缓慢充电,单片机的9脚电压逐步由高向低转化,经过一段时间后,单片机的9脚处于稳定的低电平状态,此时单片机上复位完毕,系统程序从0000H开始执行。
2.3.4、实现暂停与重置的按键电路
本次设计的两个独立按键,分别接到P3.2口(实现暂停功能)和P3.3口(实现从0计时功能),利用单片机中断系统,使功能实现。
2.3.5、数码管显示部分电路
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示),按能显示多少个8可分为1位、2位、4位等等数码管,按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。
共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。
共阳数码管在应用时,应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。
当某一字段的阴极为高电平时,相应字段就不亮。
共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。
共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光,二极管的阳极为高电平时,相应字段就点亮。
当某一字段的阳极为低电平时,相应字段就不亮。
LED数码管接法:
共阳极接法:
把发光二极管的阳极连在一起构成公共阳极,使用时公共阳极接5V,每个发光二极管的阴极通过电阻与输入端相连。
共阴极接法:
把发光二极管的阴极连在一起构成公共阴极,使用时公共阴极接地,每个发光二极管的阳极通过电阻与输入端相连。
数码管参数:
8字高度:
8字上沿与下沿的距离。
比外型高度小,通常用英寸来表示。
范围一般为025-20英寸。
长*宽*高:
长——数码管正放时,水平方向的长度;
宽——数码管正放时,垂直方向上的长度;
高——数码管的厚度
时钟点:
四位数码管中,第二位8与第三位8字中间的二个点,一般用于显示时钟中的秒。
LED8段数码显示管原理图、引脚图
相应字段就不亮。
LED数码管段码如下表:
表1八段LED数码管段码表
显示数码
共阴型段码
共阳型段码
3FH
C0H
1
06H
F9H
2
5BH
A4H
3
4FH
B0H
4
66H
99H
5
60H
92H
6
70H
82H
7
07H
F8H
8
7FH
80H
9
6FH
90H
本设计采用共阴静态七段数码管显示,其中P2口输出个位段码,P0口输出十位段码。
七段数码管显示电路如下图
2.3.6、绘制原理图.
根据仿真软件做出来的原理图,在DXP软件中再次绘制原理图。
ProtelDXP2004是Altium公司于2004年推出的最新版本的电路设计软件,该软件能实现从概念设计,顶层设计直到输出生产数据以及这之间的所有分析验证和设计数据的管理。
当前比较流行的Protel98、Protel99SE,就是它的前期版本。
ProtelDXP2004已不是单纯的PCB(印制电路板)设计工具,而是由多个模块组成的系统工具,分别是SCH(原理图)设计、SCH(原理图)仿真、PCB(印制电路板)设计、AutoRouter(自动布线器)和FPGA设计等,覆盖了以PCB为核心的整个物理设计。
该软件将项目管理方式、原理图和PCB图的双向同步技术、多通道设计、拓朴自动布线以及电路仿真等技术结合在一起,为电路设计提供了强大的支持。
步骤:
(1)建立新工程文件,设置画图环境。
(2)定元件和加载元件库。
(3)原理图放置元件。
(4)连接线路和放置节点。
(5)电路ERC电气规则检查.(6)生成网络表。
(7)生成元器件列表。
原理图如下图:
2.3.7、生成PCB图
根据原理图生成PCB图
(1)创键PCB文件。
(2)向PCB装入网络表。
(3)布置元器件的位置.(4)进行布线
PCB图如下图:
2.3.8、制作PCB板
2.3.9、钻孔,并焊接芯片
背面
正面
2.4、遇到的问题与解决办法
我的任务部分是用DXP软件绘制原理图与生成PCB图,而我之前对于DXP软件一无所知,完全一片茫然,由于生疏所以出现了许多问题,不过经过不断的探索,终于解决了这些问题,将任务完成了,对于DXP我也有一定的了解与掌握了。
1、问题:
在布线的时候容易搞乱,不知道如何才能将线布好
解决办法:
先将元器件摆整齐了,在慢慢布线就不容易搞乱
2、问题:
数码管的引脚与单片机的引脚没有接对
测试每个引脚所对应的代号,然后在一一按要求与单片机引脚对接。
3、问题:
在布线时总有一条线无法按要求不与其他线相交的连接起来。
实在无法接入,就弄一条跳线。
4、问题:
在画原理图的时候在库里找不到合适的元器件
打开库,然后去安装的库里添加所需要的元件
三、系统软件设计
3.1、软件总体设计方案
本次设计运用的是汇编语言。
汇编语言(AssemblyLanguage)是面向机器的程序设计语言。
在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。
使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。
汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。
因此,有时候人们也把汇编语言称为组合语言。
AT89S51单片机的内部16位定时/计数器是一个可编程定时/计数器,它既可以工作在13位定时方式,也可以工作在16位定时方式和8位定时方式。
只要通过设置特殊功能寄存器TMOD,即可完成。
定时/计数器何时工作也是通过软件来设定TCON特殊功能寄存器来完成的。
定时/计数器方式选择寄存器(TMOD)----TMOD寄存器是一个专用寄存器,用于控制两个定时计数器的工作方式,TMOD可以用字节传送指令设置其内容,但不能位寻址。
TMOD主要是用于选定定时器的工作方式;
TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。
当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
现在我们选择16位定时工作方式,对于T0来说,最大定时也只有65536us,即65.536ms,无法达到我们所需要的1秒的定时,因此,我们必须通过软件来处理这个问题,假设我们取T0的最大定时为50ms,即要定时1秒需要经过20次的50ms的定时。
对于这20次我们就可以采用软件的方法来统计了。
通过查阅资料:
TMOD寄存器结构
D7
D6
D5
D4
D3
D2
D1
D0
GATA
M1
M0
←T1方式字段→
←T0方式字段→
M1M0
模式
说明
00
13位定时(计数)器,TH高8位和TL的低5位
01
16位定时/计数器
10
自动重装入初值的8位定时/计数器
11
T0分成两个独立的8位计数器,T1没有模式3
根据上表,设定TMOD初值为00000001B,即TMOD=01H。
给T0定时/计数器的TH0,TL0装入预置初值,通过下面的公式可以计算出:
TH0=(216-50000)/256TL0=(216-50000) MOD 256
TH0=(65536-50000)/256=60(3CH)TL0=(65536-50000)%256=176(B0H)
注:
当为定时工作方式1时,定时时间的计算公式为:
(65536—计数初值)×
晶振周期×
12或
(65536—计数初值)×
机器周期
其时间单位与晶振周期或机器周期相同。
当T0在工作的时候,我们如何得知50ms的定时时间已到,这回我们通过检测TCON特殊功能寄存器中的TF0标志位,如果TF0=1表示定时时间已到。
TCON结构
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF0、TF1分别是T0、T1的溢出标志位,加1记满溢出时置1,并申请中断,在中断响应后自动清零。
TR0、TR1分别是T0、T1的运行控制位,通过软件置1后,定时/才开始工作,在系统复位时清零。
TCON的其余4位与中断相关。
3.2、程序流程图
3.3、部分重要模块汇编程序:
START:
MOVSECOND,#00H//秒数清零
MOVTCOUNT,#00H//循环次数清零
MOVTMOD,#01H//计时器工作模式1
MOVTCON,#05H//开定时器与中断,边沿触发
MOVIE,#85H//开启中断
MOVTH0,#3CH//赋初值
MOVTL0,#B0H
SETBTR0//开启定时器
DISP:
MOVA,SECOND//显示部分子程序
MOVB,#10
DIVAB//A为十位数,B为个位数
MOVDPTR,#TABLE
MOVCA,@A+DPTR
MOVP0,A//P0口向数码管输出十位数
MOVA,B
MOVP2,A//P2口向数码管输出个位数
WAIT:
JNBTF0,WAIT//计时部分子程序
CLRTF0
MOVTH0,#3CH
INCTCOUNT
MOVA,TCOUNT
CJNEA,#20,NEXT//50ms循环20次即1s
MOVTCOUNT,#00H
INCSECOND
MOVA,SECOND
CJNEA,#60,NEX//1s循环60次,即为60s
MOVSECOND,#00H
NEX:
LJMPDISP
EXT0:
MOVSECOND,#00H
SJMPSTART
RETI
EXT1:
SJMP$//暂停子程序
NEXT:
LJMPWAIT
TABLE:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
四、系统调试
4.1、软件调试
1、程序调试:
运用Keil软件对程序进行调试,检查程序是否正确。
程序调试工具:
KeilC51仿真器是一款利用KEILC51的IDE集成开发环境作为仿真环境的廉价仿真器,是利用SST公司具有IAP功能的单片机SST89C58制作而成,主要是利用了SST89C58的IAP功能所谓IAP功能,是Inapplicationprogram的英文缩写,是在应用编程的意思,通俗一点讲就是它可以通过串口,将用户的程序下载到单片机中,可以通过串口对单片机进行编程它,之所以具有这种功能,实际上它有两块程序flash区,其中一块flash中运行的程序可以更改另外的一块程序flash区中的程序,正是利用这一特性才用它作成了仿真器,我们把仿真器的监控程序事先烧入SST89C58监控程序,通过SST89C58的串口和PC通讯。
当使用KEILC51的IDE环境仿真时,用户的程序通过串口被监控程序写入flash程序区中,当用户设置断点等操作仿真程序时,flash程序中的用户程序也在相应的更改,从而实现了仿真功能。
2、仿真:
运用proteus软件对原理图调试,检查原理图与程序是否能实现所需的功能。
仿真工具:
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。
仿真图如下图:
4.2、硬件调试
1、将焊接完成的实际电路接通电源并进行调试,电路若无反应,就用万用表测试看各个连线有无断路或短路,并将存在问题的线路纠正,再次连接电源进行调试。
2、出现的问题:
指示灯不亮