单片基的方波周期的测量.docx
- 文档编号:30171910
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:19
- 大小:671.77KB
单片基的方波周期的测量.docx
《单片基的方波周期的测量.docx》由会员分享,可在线阅读,更多相关《单片基的方波周期的测量.docx(19页珍藏版)》请在冰豆网上搜索。
单片基的方波周期的测量
课程设计任务书
学生姓名:
甘丽专业班级:
电信0901班
指导教师:
陈德军工作单位:
信息工程学院
题目:
简易波形计数
初始条件:
具备编程基础知识和设计能力;具备查阅资料的基本方法;熟悉常用的电子器件;熟悉电子设计常用软件的使用;
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、设计简易波形计数的程序;
2、频率测量范围为100Hz~10KHz;
3、制作并调试所设计电路;
4、掌握单片机的基本使用;
5、撰写符合学校要求的课程设计说明书。
时间安排:
时间一周,其中2天原理设计,3天电路调试
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
近年来,单片微型计算机以其强大的生命力飞速发展,在工业控制、智能仪器仪表、智能化设备和家用电器等领域得到了广泛的应用,因而引起了各行各业的极大关注,有着广阔的发展前景。
本次课设的是简易波形计数。
其设计目的是使学生通过这一实践环节,增强单片机扩展接口设计及其实际应用能力。
在设计中,我是设计一个4位数显频计数器,通过显示给定频率来计算其周期。
并且通过两个外部中断来控制单片机的计数和暂停。
编程时用keil软件编程,要求熟练运用protues软件进行仿真。
关键字:
计数器、keil编程、protues仿真
18051单片机简介
1.18051单片机概述
51单片机是对目前所有兼容Intel8031指令系统的单片机的统称。
该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为目前应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。
目前很多公司都有51系列的兼容机型推出,在目前乃至今后很长的一段时间内将占有大量市场。
51单片机是基础入门的一个单片机,还是应用最广泛的一种。
需要注意的是52系列的单片机一般不具备自编程能力。
1.251单片机主要功能
51单片机的主要参数和功能功能如下:
8位CPU
4kbytes程序存储器(ROM)(52为8K)
256bytes的数据存储器(RAM)(52有384bytes的RAM)
2条I/O口线·111条指令,大部分为单字节指令
21个专用寄存器
2个可编程定时/计数器
5个中断源,2个优先级(52有6个)
一个全双工串行通信口
外部数据存储器寻址空间为64kB外部程序存储器寻址空间为64kB
逻辑操作位寻址功能
双列直插40PinDIP封装
单一+5V电源供电
CPU:
由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:
用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据;
ROM:
用以存放程序、一些原始数据和表格;
I/O口:
四个8位并行I/O口,既可用作输入,也可用作输出;
T/C:
两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式;
五个中断源的中断控制系统;
一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信;
片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。
最高振荡频率为12M。
2软件简介
2.1PROTUES软件简介
2.1.1PROTUES概述
Protues软件是英国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等多种编译器。
2.1.2PROTUES功能特点
Protues软件除了具有其它EDA工具软件(例:
multisim)的功能外,可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。
2.1.3PROTUES电路功能仿真
在PROTUES绘制好原理图后,调入已编译好的目标代码文件:
*.HEX,可以在PROTUES的原理图中看到模拟的实物运行状态和过程。
PROTUES是单片机课堂教学的先进助手。
PROTUES不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。
前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。
它的元器件、连接线路等却和传统的单片机实验硬件高度对应。
这在相当程度上替代了传统的单片机实验教学的功能,例:
元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。
由于PROTUES提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。
它具有设计灵活,结果、过程的统一的特点。
可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。
相信在单片机开发应用中PROTUES也能茯得愈来愈广泛的应用。
2.1Keil简介
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。
3设计思路及原理
3.1设计思路
本次课程设计要求测定一方波的周期,由方波周期的公式T=1/F可知,要求输入方波的周期,需要知道在1s内计数的方波的个数,所以现在面临两个问题:
第一、单片机怎么设定一秒钟的定时,第二、单片机怎么确定在这一秒钟内计数的方波的个数。
对于第一个问题,可以使用定时器0的方式2自动重装模式,在晶振主频为12MHz的情况下,得到准确的定时结果。
在定时器0在方式2模式下,最大得到计数值为
28(256个脉冲)。
在这种方式下,在TH0和TL0两个寄存器中,TH0专用于寄存器8为计数初值并保持不变,TL0进行8位加1计数,当TL0计数溢出是,除产生溢出中断请求外,还自动将TH0中不变的初值重新转载到TL0。
对于第二个问题,由于不知道在一秒钟将要计数的脉冲的个数,所以应使用计数器所能达到的最大的模式,即计数器1的方式1。
在方式1下,计数寄存器的位数是16位,由TH1和TL1寄存器个提供8位计数初值,当TL1低8位计数满回零时TH1进位,即TH1中的1代表256。
在定时器0定时满1秒时,读取TH1和TL1中的数值,然后将TH1乘以256加上TL1中的数值,即为计数的总的脉冲数,脉冲数的倒数即为周期值。
但考虑到单片机不易显示小数值,所以可将一秒钟转换为106微秒,用106除以计数的脉冲数,得到所测量脉冲周期的微秒表示形式,并使用四位数码管显示出来。
计数方式:
外部输入信号是加到T1(P3.5)。
外部输入脉冲信号产生由1至0的下降沿时,定时器加1,外部输入信号最高的计数速率是晶振频率的1/24。
3.2程序流程图
3.3定时器/计数器的工作原理
当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。
显然,定时器的定时时间与系统的振荡频率有关。
因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。
如果晶振为12MHz,则计数周期为:
T=1/(12×106)Hz×1/12=1μs
这是最短的定时周期。
若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
TMOD定时器/计数器方式寄存器
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。
TMOD的格式如表3.3.1所示。
D7
D6
D5
D4
D3
D2
D1
D0
符号
GATE
C/T
M1
M0
GATE
C/T
M1
M0
表3.3.1TMOD定时器/计数器方式寄存器
由上可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下:
GATE:
门控制位。
GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器计数器的打开或关闭。
C/T:
定时器/计数器选择位。
C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:
工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
其工作方式如表3.3.2所示:
M1M0
工作方式
功能描述
00
工作方式0
13位计数器
01
工作方式1
16位计数器
10
工作方式2
自动再装入8位计数器
11
工作方式3
定时器0:
分成两个8位计数器;
定时器1:
停止计数
表3.3.2TMOD工作方式
定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。
复位时,TMOD所有位均为0。
TCON定时器/计数器控制寄存器
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH。
TCON是一个多功能的寄存器,其格式如表3.3.3所示:
地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H
符号位
TF1
TR1
TF0
TR0
ID1
IT1
IE0
IT0
表3.3.3TCON定时器/计数器控制寄存器TCON
在TCON寄存器中,定时/计数器的控制仅用了其中的高4位,其意义如下:
TF1:
T1溢出中断请求标志。
TF1=1,T1有溢出中断请求。
TF1=0,T1无溢出中断请求。
TR1:
T1运行控制位。
TR1=1,启动T1工作。
TR1=0,停止T1工作。
TF0:
T0溢出中断请求标志。
其功能及操作情况同TF1。
TR0:
T0运行控制位。
其功能及操作情况同TR1。
IE1:
外部中断1请求标志。
IT1:
外部中断1触发方式选择位。
IE0:
外部中断0请求标志。
IT0:
外部中断0触发方式选择位。
4单片机模块电路分析
4.1单片机最小系统模块
图4.1.1单片机最小模块电路图
89C51是片内有ROM/EPROM的单片机,因此,这种芯片构成的最小系统简单﹑可靠。
用80C51单片机构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可,如上图89C51单片机最小系统所示。
由于集成度的限制,最小应用系统只能用作一些小型的控制单元。
其应用特点:
有可供用户使用的大量I/O口线。
内部存储器容量有限。
应用系统开发具有特殊性。
本次课设用到单片机的P0和P1口管脚,P0口管脚接数码管段码的显示,P1口管脚的P1.0~P1.3控制四个数码管的选通信号,另外,外部中断用来暂停和复位的信号通过P3.2和P3.3控制,当外部中断1开启时定时器关闭,数码管显示数值0,当外部中断0时,开启定时器,中断返回。
并且通过P3.5输入方波信号。
所用的晶振的频率为12MHz。
4.2数码管显示电路
图4.2.1数码管显示电路
在本次课程设计中采用的是四位七段共阳数码管,由于单片机输出的电流小,难以驱动四位数码管,因此,在数码管的位选端加入反相器作为对数码管的驱动,段选信号由P0口提供,由于是共阳数码管,所以流经P0口的电流为灌电流,所以不需要加驱动电路。
在程序中不断地对数码管的端口进行刷新,当刷新的频率达到某一值时,由于人眼的视觉暂留效应,会感觉到数码管上显示的是连续的数字。
4.3独立键盘
图4.3.1键盘电路
在本次课程设计中需要用到外部中断来停止计数,外部中断由独立按键引入,按键没有按下去时,输入端为高电平,当按键被按下去后,输入端立刻被拉为低电平,此时将产生一个下降沿,并引发单片机产生中断命令。
本次课设用到两个外部中断,分别控制暂停和复位。
5总电路图
6程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
图5.1总体电路图
6程序代码
#include
#defineuintunsignedint
#defineucharunsignedchar
/*共阳数码管段码表*/
ucharcodesmgd[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e};
/***数码管位选表***/
ucharcodesmgw[]=
{0xf7,0xfb,0xfd,0xfe};
uintcount=0,n=0,prd=0;
uintread()
{
uchartl1,th1;
uintt1;
tl1=TL1;
TL1=0;
th1=TH1;
TH1=0;
t1=th1*256+tl1;
returnt1;
}
voiddelayms(uintt)
{
uintx,y;
for(x=t;x>0;x--)
{
for(y=114;y>1;y--);
}
}
voidT0timer()interrupt1
{
n=n+1;
if(n==10000)
{
n=0;
count=read();
prd=2000000/count;
}
}
voidsmgdisplay(uintsmgdata)
{
uchars0,s1,s2,s3;
s3=smgdata/1000;
if(s3>15)
{
s3=15;
}
s2=smgdata%1000/100;
s1=smgdata%100/10;
s0=smgdata%10;
P1=smgw[0];
P0=smgd[s0];
delayms(5);
P1=smgw[1];
P0=smgd[s1];
delayms(5);
P1=smgw[2];
P0=smgd[s2];
delayms(5);
P1=smgw[3];
P0=smgd[s3];
delayms(5);
}
voidEXint0()interrupt0//外部中断0
{
ET0=1;
}
voidEXint1()interrupt2//外部中断1
{
ET0=0;
prd=0;
}
voidmain()
{
EA=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
ET0=1;
ET1=1;
TMOD=0x52;
TH0=56;
TL0=56;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
while
(1)
{
smgdisplay(prd);
}
}
7仿真效果
利用protues画出仿真电路图,外部通过管脚P3.5加入方波信号,方波的频率可以任意设置,方波幅值设置为5v,在确认电路图正确的情况下,可以调节频率为2.5kHz,频率的倒数即为周期,显示周期为399us。
8实物图
图8.1实物图
在实验室用函数信号发生器产生方波,频率可调,先用示波器测量示波器的输出信号的幅度为5v,在频率调为500Hz的情况下,单片机上的数码管显示周期为1998us接近理论值2000us,存在微小的误差,在实验室的这种条件下,误差不可消除,可以认为测量值准确。
9心得体会
通过这次课设,我深刻的体会到只有将课本知识运用到实践中去才能融会贯通,平时的理论知识学的再好,在真正动手做起来时总会碰到这样或者那样的问题,编程,仿真,做实物,都需要将平时学到的零散的知识联合起来。
在设计过程中,我先是想到用汇编语言写程序,发现所学的理论知识还没有达到熟练运用的程度,只好用我已经熟悉了的C语言。
用protues画好仿真图后,发现无法将keil软件所编程的程序连接到仿真中,为了这个问题,我上网查了很多资料,最后在一个朋友的不经意间说下恍然大悟,原来就是一个很小的问题,我还费了很多精力,看来“三人行,必有我师”,要虚心向身边的人讨教。
而在做单片机时,发现实际频率跟所显示的频率有一点误差,我想能不能换个晶振,减小甚至没有误差呢,于是把单片机原来的晶振卸下来,不好卸,犯了个很傻的错误,用打火机去烧单片机板子,结果给烧坏了,只能从新买个单片机。
这也给我我一个教训,凡事在动手做之前要想清楚原理,不然很容易导致不良后果。
做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解各个知识点,而且考试内容有限,所以在这次课程设计过程中,我从根本上了解了很多很多知识点,并且对于它们在实际中的应用有了更多的认识。
平时看课本时,有时问题老是弄不懂,做完课程设计,那些问题就迎刃而解了。
而且还可以记住很多东西。
平时看课本,这次看了,下次就忘了,认识来源于实践,实践是认识的动力和最终目的,实践是检验真理的唯一标准。
参考资料
[1]李群芳,张士军,黄建.单片微型计算机与接口技术.北京:
电子工业出版社;
[2]孙育才主编,MCS-51系列单片微型计算机及其应用.东南大学出版社;
[3]张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:
哈尔滨工业大学出版社;
[4]李群芳,肖看。
单片机原理借口与应用.北京:
清华大学出版社,2005;
[5]黄智伟,朱卫华.单片机与嵌入式系统应用[M].南华大学.2005.3;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片 方波 周期 测量