用定时器计数器产生方波.docx
- 文档编号:12157431
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:15
- 大小:206.79KB
用定时器计数器产生方波.docx
《用定时器计数器产生方波.docx》由会员分享,可在线阅读,更多相关《用定时器计数器产生方波.docx(15页珍藏版)》请在冰豆网上搜索。
用定时器计数器产生方波
目录
一、设计目的1
二、设计要求1
三、设计方案1
四、设计内容2
五、方波2
(一)方波的简介2
(二)起源与应用2
六、硬件介绍(8031)3
(一)内部结构及引脚图4
(二)存储器空间以及存储器5
(三)定时/计数器7
(四)中断系统10
(五)并行I/O端口(P0、P1、P2、P3)11
(六)串行I/O端口12
七、软件设计12
(一)主程序模块12
(二)计数/定时器模块14
(三)硬件接线图15
(四)程序16
八、设计总结17
九、参考文献18
一、设计目的
通过课程设计使学生更进一步掌握单片机原理及应用课程的有关知识,提高应用单片机解决问题的能力,加深对单片机应用的理解。
通过查阅资料,结合所学知识进行软、硬件的设计,使学生初步掌握应用单片机解决问题的步骤及方法。
为以后学生结合专业从事单片机应用奠定基础。
二、设计要求
(1)方波的周期为2秒。
(2)用指示灯显示输出方波信号。
说明:
不能用软件延时。
三、设计方案
(1)通过单片机内部的计数器/定时器,采用软件编程来产生方波,这种方法的硬件线路较简单,系统的功能一般与软件设计相关。
(2)本次设计产生方波电路,选择MCS-51系列中的8031单片机,由于是用指示灯显示输出方波信号,一个LED显示灯即可满足设计要求。
四、设计内容
(1)这里采用应用广泛的MCS-51系列中的8031单片机作为产生方波的控制芯片,利用单片机内部的定时/计数器T0实现软时钟的目的。
首先将T0设定工作于定时方式,对机器周期计数形成基准时间(50ms),然后用另一个定时/计数器T1对基准时间计数形成秒时,再配合给定的脉冲信号,最后通过LED指示灯把输出方波的信号显示出来,达到读取波形的目的。
(2)本设计电路在硬件上接线简单,8031的P1.0外接T1,P1.7外接指示灯即可。
五、方波
(一)方波的简介
方波是一种非正弦曲线的波形,通常会于电子和讯号处理时出现。
理想方波只有“高”和“低”这两个值。
电流的波形为矩形的电流即为方波电流。
不论时间轴上下是不是对称的,只要是矩形就可叫方波,必要时,可加“对称”,“不对称”加以说明。
(二)起源与应用
在现实世界,方波只有有限的带宽由于一般电子零件只有高
(1)和低(0)两个值,方波就自然产生,并于数码开关电路中广泛应用。
因为方波可以快速从一个值转至另一个(即0→1或1→0),所以方波就用作时钟讯号来准确地触发同步电路。
但是如果用频率定义域来表示方波,就会出然一连串的谐波。
这可能会产生电磁波和电流脉波,影响周围的电路,产生噪声和错误,对一些精密仪器如类比数位资料转换器(analog-to-digitalconverter)影响十分明显,所以设计会使用正弦波作时钟讯号来代替方波。
在音乐上,方波被视为空洞的声音,因此会以减法合成过滤方波作管乐的基础。
另外,电吉他的失真效果(distortion)把波形的外层削去,令波形趋向成为方波。
失真越大会令波形越像方波。
一个“简单二能级莱德马契函数”(simpletwo-levelRademacherfunction)就是一个方波。
六、硬件介绍(8031)
8031是最常见的的MCS-51系列单片机,是inter公司早期的成熟的单片机产品,应用范围涉及到各行各业。
(一)内部结构及引脚图
一个机器周期=12个振荡脉冲周期(fosc)
(二)存储器空间以及存储器
内部数据存储器外部数据存储器外部程序存储器
(用mov指令读写)(用movx指令读写)(用movc指令读)
1、内部数据存储器结构:
内部RAM区:
专用寄存器区:
开机复位状态:
复位后:
内部RAM区及外部RAM区皆保持原值
2、程序状态字:
PSW
┌──┬──┬──┬──┬──┬──┬──┬──┐
│CY│AC│F0│RS1│RS0│OV│X│P│
└──┴──┴──┴──┴──┴──┴──┴──┘
CY:
进、借位,有进、借位:
CY=1
AC:
半进、借位,有半进、借位:
AC=1
F0:
用户标志位(由用户设定)
RS1,RS0:
工作寄存器组选择位
00:
选择0组
01:
选择1组
10:
选择2组
11:
选择3组
OV:
溢出位,有溢出:
OV=1
X:
无效位
P:
奇偶位,运算结果有奇数个1:
P=1
3、程序存储器特定入口:
0000H:
复位或开机后的程序入口
0003H:
外部中断0服务程序入口
000BH:
定时/计数器0中断服务程序入口
0013H:
外部中断1服务程序入口
001BH:
定时/计数器1中断服务程序入口
0023H:
串行I/O中断服务程序入口
(三)定时/计数器
8031片内有两个16位定时/计数器(增量式计数)
1、工作方式(方式0、方式1、方式2、方式3)
以定时/计数器1为例
⑴方式0(13位定时/计数)
⑵方式1(16位定时/计数)
⑶方式2(8位自动重装时间常数定时/计数)
⑷方式3(仅适用于定时/计数器0)
TL0用于8位定时/计数
TH0只用于8位定时
2、控制寄存器
⑴定时/计数器方式控制寄存器:
TMOD
├────T1────┼────T0────——┤
├──┬──┬──┬──┼──┬──┬──┬──┤
│GATE│C/T│M1│M0│GATE│C/T│M1│M0│
└──┴──┴──┴──┴──┴──┴──┴──┘
GATE:
门控位,1:
打开,0:
关闭
C/T:
工作状态选择,1:
计数状态,0:
定时状态
M1,M0:
工作方式选择
00方式0
01方式1
10方式2
11方式3
⑵定时/计数器控制寄存器:
TCON
┌──┬──┬──┬──┬──┬──┬──┬──┐
│TF1│TR1│TF0│TR0│IE1│IT1│IE0│IT0│
└──┴──┴──┴──┴──┴──┴──┴──┘
TF1,TF0:
定时/计数器中断请求标志,1:
有请求;0:
无请求
TR1,TR0:
定时/计数器运行控制位,1:
打开;0:
关断
IE1,IE0:
外部中断INT1,INT0中断请求标志,1:
有请求;0:
无请求
IT1,IT0:
外部中断INT1,INT0触发方式,1:
下降沿触发;0:
低电平触发
(四)中断系统
5个中断源:
INT0:
外部中断0
INT1:
外部中断1
T0:
定时/计数器0中断
T1:
定时/计数器1中断
TI/RI:
串行I/O中断
⑴中断允许寄存器:
IE(1:
允许;0:
不允许)
┌──┬──┬──┬──┬──┬──┬──┬──┐
│EA│×│×│ES│ET1│EX1│ET0│EX0│
└──┴──┴──┴──┴──┴──┴──┴──┘
EA:
全局中断允许位
ES:
串行口中断允许位
ET1:
T1中断允许位
EX1:
INT1中断允许位
ET0:
T0中断允许位
EX0:
INT0中断允许位
⑵中断优先寄存器:
IP(1:
高优先级;0:
低优先级)
┌──┬──┬──┬──┬──┬──┬──┬──┐
│×│×│×│PS│PT1│PX1│PT0│PX0│
└──┴──┴──┴──┴──┴──┴──┴──┘
PS:
串行口中断优先位
PT1:
T1中断优先位
PX1:
INT1中断优先位
PT0:
T0中断优先位
PX0:
INT0中断优先位
(同级中断时的优先顺序:
INT0→T0→INT1→T1→RI/TI)
CPU响应中断后,自动清除中断请求标志(只有串行口中断请求标志需用软件清除),并将程序计数器PC之值压入堆栈,然后将相应的中断入口地址装入PC,使程序转入相应的中断服务程序。
(五)并行I/O端口(P0、P1、P2、P3)
8031单片机中:
P0口:
作为地址低8位和双向数据总线
P2口:
作为地址高8位总线
1、P1端口
P1口每一位的内部结构如下:
注:
当P1口作输入时,必须先向P1口写"FFH"(即11111111),由于单片机上电或复位后
P0口-P3口皆置为"FFH",故一般不需人为写"FFH"。
说明:
其他端口本设计电路所用甚少,这里不作详细介绍。
(六)串行I/O端口
8031有一个串行端口
1、串行通讯基本方式
⑴异步传送:
⑵同步传送:
2、串行端口的工作方式(方式0、方式1、方式2、方式3)
3、串行端口的控制寄存器
⑴SCON:
串口控制寄存器
⑵PCON:
电源控制寄存器
七、软件设计
(一)主程序模块
主程序主要用于系统初始化:
P1.7初始化清零,P1.0置位,设T1为定时器方式1,计数器方式2,置计数器初始值,然后启动计数器。
定时器/计数器的启停
T0为定时方式,在置TR0=1以后,定时立即开始,但在定时时间到后,还必须用软件再次装入初值,重新启动才能开始新的定时。
T1为计数方式2,在置TR1=1以后,计数开始,在计数次数到以后,自动装入初始值并重新计数,因此软件设计不再考虑装入初值
主程序流程如下图所示。
(二)计数/定时器模块
1、计数/定时器工作方式的选择
根据课题要求,可将T0设定为50ms的定时间隔,才用工作方式1。
当定时时间到后,将P1.0输出反相,再加到T1输入端作计数脉冲。
从T1端输入,需要定时两次才能构成一个完整的计数脉冲。
因此,设T1计数次数为10次,就能完成1S的定时:
(50ms+50ms)×10=1s
由于LED的亮/灭是持续不断的,所以可以将T1设成为方式2,自动装入初值,重复进行计数。
2、定时/计数器初值的计算与装入
X=65536-Focs/12·T
=65536-11.0592/12·1000000×50×0.001=19456=4C00H
即TH0=4CH,TL0=00H
T1计数器在方式2下是8位的,计数10次的初值为:
(256-10)=246=F6H
同时装入TH1和TL1,即TH1=0F6H,TL1=0F6H
(三)硬件接线图
(四)程序
ORG0100H
MAIN:
CLRP1.7
SETBP1.0
MOVTMOD,#61H;定时器方式1,计数器方式2
MOVTH1,#0F6H;置计数器初始值
MOVTL1,#0F6H
SETBTR1;启动计数器
LOOP1:
CPLP1.7
LOOP2:
MOVTH0,#4CH;置定时器初始值
MOVTL0,#00H
SETBTR0;启动定时器
LOOP3:
JBCTF0,LOOP4;定时器溢出判断
SJMPLOOP3;无溢出循环执行LOOP3
LOOP4:
CPLP1.0
JBCTF1,LOOP1;判断计数器是否溢出,溢出跳转LOOP1
SJMPLOOP2
END
八、设计总结
经过一周的课程设计,有很多的心得体会,有关于单片机的,也有关于模电数电等基础科目的。
因为单片机已经很久没复习,刚拿到题目,不知道从哪入手,后来通过对书本的回顾,加深了对单片机的记忆。
有些知识会迁移和联系模电数电。
课堂教学考虑到大多数同学的需求,主要强调“基本”——基本知识、基本理论、基本方法、基本技能。
而这次设计正是为我们提供了一个深入学习、探索的机会,成为课堂教学的有益补充。
我们正面临就业问题,这次课设给了我们一个机会去试验。
单片机理论的学习是为课程的设计作准备的,但有时学习的理论也解决不了实践中的问题。
实践中获得的知识能让我对单片机的知识有更好的认识和理解。
虽然这次的课程设计我参考了一些文献资料,没有做到创新,但在对程序的读写过程中我明白了许多。
这次课程设计的最大收获是只有把理论用到实践中我们才能真正掌握好所学知识。
九、参考文献
1、单片计算机原理与应用,冯毛官,西安:
西安交通大学出版社,1996
2、单片机应用系统设计[M],何立民,北京:
北京航空航天大学出版社,1993.
3、单片机原理及接口技术实验[M],朱定华,北京:
北方交通大学出版社2002.11.
4、单片机原理与应用[M],刘湘涛.江世明,北京:
电子工业出版社,2006.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 定时器 计数器 产生 方波