基于51单片机的电子时钟系统Word文件下载.docx
《基于51单片机的电子时钟系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于51单片机的电子时钟系统Word文件下载.docx(16页珍藏版)》请在冰豆网上搜索。
(三)内部ROM结构,且具有廉价OTP(一次性写入程式)ROM,以便小批量生产,减少MASK风险。
(四)程序保密功能,防止拷贝,保护成果。
(五)方便的开发工具(仿真器与烧入器)
MCS-51单片机中断系统
中断是一项重要的计算机技术,采用中断技术可以使多项任务共享一个资源,所以中断技术实质上就是一种资源共享技术。
中断源
MCS-51是一个多中断源的单片机,以80C51为例,有三类共五个中断源,分别是外部中断两个,定时中断两个和串行中断一个。
1.外中断
外中断是由外部原因引起的,共有两个中断源,即外部中断0和外部中断1。
它们的中断请求信号分别由引脚INT0(P3.2)和INT1(P3.3)引入。
外部中断请求有两种信号方式,即电平方式和脉冲方式,可通过有关控制位进行定义。
2.定时中断
定时中断是为满足定时或计数的需要而设置的。
3.串行中断
串行中断是为串行数据传送的需要而设置的。
中断控制
这里所说的中断控制是指提供给用户使用的中断控制手段,实际上就是一些专用寄存器。
在MCS-51单片机中,用于此目的的控制寄存器共有四个,即定时器控制寄存器、中断允许控制寄存器、中断优先控制寄存器以及串行口控制寄存器。
1.定时器控制寄存器(TCON)
该寄存器用于保存外部中断请求和以及定时器的计数溢出。
寄存器地址88H,位地址8FH~88H。
位地址
8F
8E
8D
8C
8B
8A
89
88
位符号
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
这个寄存器既有定时器/计数器的控制功能又有中断控制功能,其中与中断有关的控制位共六位:
IE0和IE1、IT0和IT1以及TF0和TF1。
2.中断允许控制寄存器(IE)
寄存器地址A8H,位地址AFH~A8H。
AF
AE
AD
AC
AB
AA
A9
A8
EA
/
ES
ET1
EX1
ET0
EX0
其中与中断有关的控制位共六位:
EA、EX0和EX1、ET0和ET1、ES。
3.中断优先级控制寄存器(IP)
MCS-51的中断优先级控制只定义了高、低两个优先级。
各中断源的优先级由优先寄存器(IP)进行设定。
IP寄存器地址B8H,位地址为BFH~B8H。
寄存器的内容及位地址表示如下:
BF
BE
BD
BC
BB
BA
B9
B8
PS
PT1
PX1
PT0
PX0
PX0外部中断0优先级设定位
PT0定时中断0优先级设定位
PX1外部中断1优先级设定位
PT1定时中断1优先级设定位
PS串行中断优先级设定位
为0的位优先级为低;
为1的位优先级为高。
中断响应
中断响应就是对中断源提出的中断请求的接受,是在中断查询之后进行的,当查询到有效的中断请求时,紧接着就进行中断响应。
中断响应的主要内容是由硬件自动生成一条长调用指令LCALL。
其格式为LCALLaddr16,这里的addr16就是程序存储器中断区中相应中断的入口地址。
在MCS-51单片机中,这些入口地址已由系统设定。
例如,对于外部中断0的响应,产生的长调用指令为:
LCALL0003H
生成LCALL指令后,紧接着就由CPU执行。
首先将程序计数器PC的内容压入堆栈以保护断点,再将中断入口地址装入PC,使程序执行转向相应的中断区入口地址。
但由于各中断区只有8个单元。
一般情况下难以安排下一个完整的中断
服务程序。
因此通常总是在各中断区入口地址处放置一条无条件转移指令,使程序执行转向在其它地址存放的中断服务程序。
中断返回
中断响应后就转去执行中断服务程序,完成所需要的操作。
中断服务程序的最后一条指令必须是中断返回指令RETI,CPU执行这条指令时,把响应中断时置位的优先级触发器复位,再从堆栈中弹出断点地址送入程序计数器PC,以便从断点处重新执行被中断的主程序。
MCS-51单片机的定时器/计数器
MCS-51单片机共有两个可编程的定时器/计数器,分别称定时器/计数器0和定时器/计数器1。
它们都是十六位加法计数结构,分别由TH0(地址8CH)和TL0(地址8AH)及TH1(地址8DH)和TL1(地址8BH)两个8位计数器组成。
这四个计数器均属专用寄存器之列。
MCS-51的每个定时器/计数器都具有定时和计数两种功能。
1.计数功能
所谓计数是指对外部事件进行计数。
外部事件的发生以输入脉冲表示,因此计数功能的实质就是对外来脉冲进行计数。
2.定时功能
定时功能也是通过计数器的计数来实现的。
不过此时的计数脉冲来自单片机的内部,即每个机器周期产生一个计数脉冲。
也就是每个机器周期计数器加1。
由于一个机器周期等于12个振荡脉冲周期,因此计数频率为振荡频率的1/12。
定时器/计数器提供给用户使用的有:
八位计数器TH和TL,以及有关的控制位。
这些内容只能以软件方法使用。
MCS-51定时器/计数器的四种工作方式
1.定时工作方式0
方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。
当TL0的低5位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。
在方式0下,当为计数工作方式时,计数值的范围是:
1~8192(213)
当为定时工作方式时,定时时间的计算公式为:
(213-计数初值)×
晶振周期×
12或(213-计数初值)×
机器周期
其时间单位与晶振周期或机器周期相同(s)。
2.定时工作方式1
方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。
当为计数工作方式时,计数值的范围是:
1~65536(216)
当为定时工作方式时,定时时间计算公式为:
(216-计数初值)×
12
或(216-计数初值)×
3.定时工作方式2
工作方式2是自动重新加载工作方式。
在这种工作方式下,把16位计数器分为两部分,即以TL作计数器,以TH作预置寄存器,初始化时把计数初值分别装入TL和TH中。
当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。
变软件加载为硬件加载。
初始化时,8位计数初值同时装入TL0和TH0中。
当TL0计数溢出时,置位TF0,同时把保存在预置寄存器TH0中的计数初值自动加载TL0,然后TL0重新计数。
如此重复不止。
这不但省去了用户程序中的重装指令,而且也有利于提高定时精度。
但这种工作方式下是8位计数结构,计数值有限,最大只能到255。
这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用。
第三章调试及结果分析.............................
电路原理图
电源部分
可以由USB口供电,还可以通过3.5毫米电源接口供电,供电电路中有二极管防止反接,5.1V稳压二极管防止电压过大。
串口部分
CH340是一个USB总线的转接芯片,实现USB转串口、USB转IrDA红外或者USB转打印口。
在串口方式下,CH340提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB总线。
单片机最小系统部分
单片机最小系统
在STC125A60S2芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片内部,XTAL1和XTAL2之间跨接晶体振荡器和微调电容,从而构成一个稳定的自激振荡器。
时钟电路产生的振荡脉冲经过触发器进行二分频之后,才成为单片机的时钟脉冲信号。
单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。
对51系列单片机来说,最小系统一般应该包括:
单片机、晶振电路、复位电路。
下面给出一个51单片机的最小系统电路图。
复位电路:
由电容串联电阻构成,由图并结合"
电容电压不能突变"
的性质可以知道,当系统一上电,RST脚将会出现高电平,并且,这个高电平持续的时间由电路的RC值来决定。
典型的51单片机当RST脚的高电平持续两个机器周
上就将复位,所以,适当组合RC的取值就可以保证可靠的复位。
一般教科书推荐C取10u,R取8.2K。
当然也有其他取法的,原则就是要让RC组合可以在RST脚上产生不少于2个机周期的高电平。
至于如何具体定量计算,可以参考电路分析相关书籍。
晶振电路:
典型的晶振取11.0592MHz(因为可以准确地得到9600波特率和19200波特率,用于有串口通讯的场合)/12MHz(产生精确的uS级时歇,方便定时操作)特别注意:
对于31脚(EA/Vpp),当接高电平时,单片机在复位后从内部ROM的0000H开始执行;
当接低电平时,复位后直接从外部ROM的0000H开始执行.这一点是初学者容易忽略的。
LCD显示部分
1602LCD管脚定义如下:
第1脚:
VSS为地
第2脚:
VDD接5V正电源
第3脚:
V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,
使用时可以通过一个10K的电位器调整对比度
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,
当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
背光电源接5V正电压
第16脚:
背光电源接地
按键部分
四位独立按键
分别连接P3.0、P3.1、P3.2、P3.3
调试部分:
根据电路图将单片机开发板焊接完毕,检查焊接质量,杜绝焊接不良,连接上电脑,通过USB连接单片机下载任意程序检查单片机是否能成功下载程序。
下载成功后根据要求设计程序。
程序流程图:
见附录
(二)
调试及结析结果分析:
根据试验要求编写汇编语言程序,利用KEIL软件编写加调试成功,生成hex文件,使用STC-ISP工具将hex文件写入单片机rom中。
将LCD1602连接到单片机开发板上,通过杜邦线将四位独立按键连接至单片机P3.0~P3.3口。
打开电源,显示Time:
00:
00。
通过按键操作,1键设置键,按下后能够通过2、3键分别使小时、分钟加一,设定好时间后按4建,时间开始运行。
经调试该系统运行良好。
通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。
创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。
这个设计过程中,我们通过在原有的计数器系统进行了改进,使之增添了暂停、计数、清零等的三个控制功能,使之成为一个更加适用,功能更加完备的属于自己的一个系统。
设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。
这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。
附录
(一)...........................................
汇编程序
RSBITP2.2//重命名IO口
RWBITP2.1
EBITP2.0
BFBITP0.7//D0~D7接在P0口
K1BITP1.0
K2BITP1.1
K3BITP1.2
K4BITP1.3
NOP
MOVTMOD,#11H//设定时器0和1工作在定时方式一
MOVIE,#8AH
SETBTR0
AJMPL0
JS:
MOVTH0,#0BH//定时器中断0
MOVTL0,#0DCH
INCR7//R7为秒的个位
CJNER7,#160,JW
INCR6//R6为秒的十位
CPLP2.4//LED每过10秒状态变一下
AJMPL1
JW:
RETI
INCR7//定时器中断1
CJNER7,#2,JW
MOVR7,#0
INC@R0
CJNER5,#3AH,L3//R5为分的个位
MOVR5,#48
INCR4
L3:
CJNER4,#36H,L6//R4为分的十位
MOVR4,#48
L6:
CJNER3,#24,JW//R3为小时
MOVR3,#0
RETI
L1:
CJNER6,#36H,JW
MOVR6,#48
INCR5
CJNER5,#3AH,JW
CJNER4,#36H,JW
INCR3
CJNER3,#24,JW
MOVR3,#0
L0:
MOVR6,#48//初始化程序
MOVR3,#12
CLRK2
CLRK3
CLRK4
ACALLCSH
L2:
MOVR2,#87H//1602显示时间
ACALLML
MOVB,#10
MOVA,R3
DIVAB
ADDA,#48
XCHA,R2
ACALLSJ
XCHA,B
MOVR2,#'
:
'
MOVR2,4
MOVR2,5
MOVR2,6
MOVB,#16
MOVA,R7
ADDA,#30H
JNBK1,SS//检测K1
AJMPL2
SS:
CLRTR0//K1:
进入设置现在的时间
SETBK2
SETBK3
SETBK4
JNBK3,F
JNBK2,S
JNBK4,W
CLRTR1
MOVTH1,#0
MOVTL1,#0
CLRK1
AJMPL2
S:
MOVR0,#3//K2:
设置小时。
SETBTR1
F:
MOVR0,#5//K3:
设置分钟。
W:
SETBTR0//K4:
确认完成设置
SETBK1
T:
MOVR1,#1//延时
DJNZR1,$
RET
ZT:
CLRRS//查状态
SETBRW
L9:
ACALLT
SETBE
MOVC,BF
CLRE
JCL9
CLRRW
ML:
ACALLZT//传命令
SETBE
MOVP0,R2
SJ:
ACALLZT//传数据
SETBRS
CSH:
MOVR2,#38H//初始化1602
MOVR2,#0CH
MOVR2,#06H
MOVR2,#81H
T'
i'
m'
e'
END
附录
(二)...........................................
开始