单片机系统设计项目(三级项目)设计说明书(题目: _______数字钟______________数字钟是一种非常广泛日常计时工具,对现代社会越来越流行。
它可以对年、月、日、时、分、秒进行计时,设置闹钟等很多种功能,对于数字钟采用直观的数字显示,可以同时显示年、月、日、时、分、秒等信息,还具有时间校准等功能。
本设计是基于51系列的单片机进行设计,可以显示年月日时分秒信息,具有可调整日期和时间功能,有秒表以及闹钟功能。
程序采用高级语言C进行编写,以便更简单地实现调整时间。
所有程序编写完成后,在确定没有问题后,在Proteus软件中嵌入单片机内进行仿真。
1、单片机简介1.1单片机的特点单片机的集成度很高,他将微型计算机的主要部件都集成在一块芯片上,具有下列特点:1. 体积小、重量轻、价格便宜、耗电少;2. 根据工程环境要求设计,且许多功能部件集成在芯片内部,其信号通道受外界影响小,故可靠性高,抗干扰性能优于采用一般的CPU。
3. 控制功能强,运行速度快。
其结构组成与指令系统都着重满足工控要求,又极丰富的条件分支指令,有很强的位处理功能和I/O口逻辑操作功能。
4. 片内存储器的容量不可能很大;引脚也嫌少,I/O引脚常不够用,且兼第二功能,第三功能但存储器和I/O口都易于扩展。
1.3 80C51单片机介绍51单片机是对目前所有兼容Intel 8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
80C51单片机属于MCS-51系列单片机,由Intel公司开发,其结构是8048的延伸,改进了8048的缺点,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。
采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM 单元及4K的ROM。
80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。
80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。
1.4单片机硬件资源单片机(microcontroller,又称微控制器)是在一块硅片上集成了各种部件的微型计算机。
这些部件包括中央处理器CPU、数据存储器RAM、程序存储器ROM、定时器/计数器和多种I/O接口电路。
图1-1是8051单片机的基本结构图图1-18051单片机的结构特点有以下几点:8位CPU;片内振荡器及时钟电路;32根I/O线;外部存储器ROM和RAM,寻址范围各64KB;两个16位的定时器/计数器;5个中断源,2个中断优先级;全双工串行口;布尔处理器1.5定时器/计数器8051内部有两个16位可编程定时器/计数器,记为T0和T1。
16位是指他们都是由16个触发器构成,故最大计数模值为216-1。
可编程是指他们的工作方式由指令来设定,或者当计数器来用,或者当定时起来用,并且计数(定时)的范围也可以由指令来设置。
这种控制功能是通过定时器方式控制寄存器TMOD 来完成的。
如果需要,定时器在计到规定的定时值是可以向CPU发出中断申请,从而完成某种定式的控制功能。
在计数状态下同样也可以申请中断。
定时器控制寄存器TCON用来负责定时器的启动、停止以及中断管理。
在定时工作时,时钟由单片机内部提供,即系统时钟经过12分频后作为定时器的时钟。
技术工作时,时钟脉冲由TO和T1输入。
1.6中断系统8051的中断系统允许接受五个独立的中断源,即两个外部中断申请,两个定时器/计数器中断以及一个串行口中断。
外部中断申请通过INTO和INT1(即P3.2和P3.3)输入,输入方式可以使电平触发(低电平有效),也可以使边沿触发(下降沿有效)。
两个定时器中断请求是当定时器溢出时向CPU提出的,即当定时器由状态1转为全零时提出的。
第五个中断请求是由串行口发出的,串行口每发送完一个数据或接收完一个数据,就可提出一次中断请求。
1.7 8051的芯片引脚如图1-2所示图1-2P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH 编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下所示: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(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
2、数字钟设计2.1 单片机定时/计数器在数字钟的使用8051系列单片机至少有两个16位内部定时器/计数器。
8052有三个定时器/计数器,其中连个基本定时器/计数器是定时器/计数器0和定时器/计数器1。
他们既可以编程为定时器使用,也可以编程为计数器使用。
若是计数内部晶振驱动时钟,则它是定时器;若是计数8051的输入引脚的脉冲信号,则它是计数器。
8051的T/C时加一计数的。
定时器实际上也是工作在技术方式下的,只不过对固定频率的脉冲计数;由于脉冲周期固定,由计数值可以计算出时间,有定时功能。
当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加一,频率加=fosc/12。
晶振为6MHz,计数频率=500KHz,每2Us计数加一。
当T/C工作在计数器时,计数脉冲来自外部脉冲输入引脚T0或T1。
当T0或T1脚上负跳变需2个机器周期,即24个振荡周期。
所以T0或T1脚输入的计数外部脉冲的最高频率为fosc/12。
当晶振为12MHz时,最高技术频率为500KHz,高于此频率将计数出错。
2.2与T/C有关的特殊功能寄存器(1)计数寄存器TH和TLT/C是16位的,计数寄存器有TH高8位TL低8位构成。
在特殊功能寄存器中,对应T/C0为TH0和TL0;对应T/C1为TH1和TL1。
定时器/计数器的初始值通过TH1/TL1和TH0/TL0设置TR0、TR1:定时器/计数器0、1启动控制位。
1是启动,0是停止TCON复位后清零,T/C需要受到软件控制才能启动计数;当计数计满时,产生向高位的进位TF,即溢出中断请求标志C/T:计数器或定时器选择位。
1位计数器,0位定时器GATE:门控信号。
1时T/C的启动控制受到双重控制,即要求TR0/TR1和INT0/INT1同时为高;0时T/C的启动仅受TR0/TR1控制2.3 定时器/计数器的初始化(1)初始化步骤在使用8051的定时器/计数器前,应对它进行编程初始化,主要是对TCON 和TMOD编程,还需要计算和装载T/C的计数初值。
一般完成以下几个步骤:确定T/C的工作方式----编程TMOD寄存器。
计算T/C中的计数初值,并装载到TH和TL。
T/C在中断方式工作时,须开CPU中断和源中断----编程IE寄存器。
启动定时器/计数器----编程TCON中TR1和TR0位(2)计数初值的计算在定时器方式下,T/C是对机器周期脉冲计数的,如果fosc=6MHz,一个机器周期为2Us,则方士0 13位定时器最大时间间隔=(213-1)*2Us=16.384ms;方式1 16位定时器最大时间间隔=(216-1)*2Us=131.072ms;方式2 8位时器最大时间间隔=(28-1)*2Us=512Us若使T/C工作在定时器方式1,要求定时1ms,求计数初值。
如设计数初值为x,则有(216-1)*2Us=1000usx=216-500因此,TH,TL可置65536-500。
2.4 查询式键盘在多功能数字钟的设计中,我们用到了查询式键盘。
查询式键盘也是键盘控制电路中比较常用到的一种。
2.4.1 查询式键盘的工作原理如图2-1时查询式键盘与单片机的连接。
在电路中我们看到P0口作为输入口。
在端口作为外部输入线时,也就是读引脚时,要先通过指令,把端口锁存器置1,然后再执行读引脚操作,否则就可能读入出错。