单片机课程方案设计书数字频率计Word下载.docx
- 文档编号:18991816
- 上传时间:2023-01-02
- 格式:DOCX
- 页数:19
- 大小:264.73KB
单片机课程方案设计书数字频率计Word下载.docx
《单片机课程方案设计书数字频率计Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程方案设计书数字频率计Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
在这种模式下,P0口具有内部上拉电阻。
在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。
程序校验时需要外接上拉电阻。
P1口:
P1口是一带有内部上拉电阻的8位双向I/O口。
P1口的输出缓冲能接受或输出4个TTL逻辑门电路。
当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。
当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。
P2口:
P2是一带有内部上拉电阻的8位双向的I/O端口。
P2口的输出缓冲能驱动4个TTL逻辑门电路。
当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。
P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR)时,P2口送出高8位地址数据。
在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。
当利用8位地址线访问外部数据存储器时(例MOVX@R1),P2口输出特殊功能寄存器的内容。
当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。
P3口:
P3是一带有内部上拉电阻的8位双向的I/O端口。
P3口的输出缓冲能驱动4个TTL逻辑门电路。
当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。
P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:
端口引脚
第二功能
P3.0
RXD(串行输入口)
P3.1
TXD(串行输出口)
P3.2
(外部中断0)
P3.3
(外部中断1)
P3.4
T0(定时器0)
P3.5
T1(定时器1)
P3.6
(外部数据存储器写选通)
P3.7
(外部数据存储器都选通)
表1P3口的第二功能
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。
ALE/
:
当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。
当在Flash编程时还可以作为编程脉冲输出(
)。
一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。
但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。
:
程序存储允许时外部程序存储器的读选通信号。
当AT89C52执行外部程序存储器的指令时,每个机器周期
两次有效,除了当访问外部数据存储器时,
将跳过两个信号。
/VPP:
外部访问允许。
为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,
必须同GND相连接。
需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。
当执行内部编程指令时,
应该接到VCC端。
XTAL1:
振荡器反相放大器以及内部时钟电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合D触发器CD4013,分频器CD4060,模拟转换开关CD4051,计数器74LS90等数字处理芯片,主要控制两大硬件模块,量程切换以及显示模块。
下面还将详细说明。
(3)、信号调理及放大整形模块:
放大整形系统包括衰减器、跟随器、放大器、施密特触发器。
它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。
由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。
同相输入的运算放大器的放大倍数为(R1+R2)/R1,改变R1的大小可以改变放大倍数。
系统的整形电路由施密特触发器组成,整形后的方波送到闸门以便计数。
由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图4:
图4信号放大模块电路图
(4)、时基信号产生电路:
CD4013------双上升沿D触发器,引脚及功能见如下图5:
图5D触发器引脚及功能图
CD4013由两个相同的、相互独立的数据型触发器构成。
每个触发器有独立的数据置位复位时钟输入和Q及Q非输出。
此器件可用作移位寄存器,且通过将Q非输出连接到数据输入,可用作计数器和触发器。
在时钟上升沿触发时,加在D输入端的逻辑电平传送到Q输出端。
置位和复位或复位线上的高电平完成。
CD4060------14位二进制串行计数器,引脚及功能见如下图6:
CD4060由一震荡器和14极二进制串行计数器位组成,震荡器的结构可以是RC或晶振电路。
CR为高电平时,计数器清零且振荡器使用无效,所有的计数器位均为主从触发器CP1非(和CP0)的下降沿计数器以二进制进行计数,在时钟脉冲线上使用施密特触发器对时钟上升和下降时间无限制。
图6进制串行计数器引脚及功能图
时基信号的产生原理:
本电路采用32768HZ晶体震荡器,利用CD4060芯片经过14级分频得到2HZ的信号(32768/214),在经过CD4013双D触发器经过二分频得到0.5HZ的方波,即输出秒脉冲信号使单片机进行计数。
(5)、显示模块
1602基本技术:
1)、主要功能
A、40通道点阵LCD驱动。
B、可选择当作行驱动或列驱动。
C、输入/输出信号:
输出,能产生20×
2个LCD驱动波形。
输入,接受控制器送出的串行数据和控制信号,偏压(V1∽V6)。
D、通过单片机控制将所测的频率信号读数显示出来。
2)、技术参数
2.1)极限参数表2:
名称
符号
标准值
单位
MIN
TYPE
MAX
电路电源
VDD-VSS
-0.3
7.0
V
LCD驱动电压
VDD-VEE
VDD-13.5
VDD+0.3
输入电压
VIN
静电电压
-
100
工作温度
-20
+70
°
C
储存温度
-30
+80
表2极限参数表
2.2)电参数表3:
测试条件
单位
输入高电平
VIH
2.2
VDD
输入低电平
VIL
0.6
输出高电平
VOH
IOH=0.2mA
2.4
输出低电平
VOL
IOL=1.2mA
0.4
工作电流
IDD
VDD=5.0V
2.0
mA
液晶驱动电压
VDD-VEE
Ta=0°
4.9
Ta=25°
4.7
Ta=50°
4.5
表3电参数表
3)、时序特性表4:
项目
测试条件
允许时间周期
TCYCE
5.1a5.1b
1000
ns
允许脉冲宽度,高电平
PWEH
450
--
允许上升和下降时间
tErtEf
25
地址建立时间
tAS
140
数据延迟时间
tDDR
320
数据建立时间
tDSW
195
数据保持时间
tH
10
DATAHOLDTIME
tDHR
20
地址保持时间
tAH
表4时序特性表
4)、引脚和指令功能
4.1)模块引脚功能表5:
引线号
功能
1
Vss
接地
0V
2
5V±
10%
3
VEE
保证VDD-VEE=4.5∽5V电压差
4
RS
寄存器选择信号
H:
数据寄存器L:
指令寄存器
5
R/W
读/写信号
读L:
写
6
E
片选信号
下降沿触发,锁存数据
7
|
14
DB0
DB7
数据线
数据传输
表5模块引脚功能表
4.2)寄存器选择功能表6:
操作
指令寄存器(IR)写入
忙标志和地址计数器读出
数据寄存器(DR)写入
数据寄存器读出
表6寄存器功能选择表
4.3)指令功能
格式:
RSR/WDB7DB6DB5DB4DB3DB2DB1DB0
共11种指令:
清除,返回,输入方式设置,显示开关,控制,移位,功能设置,CGRAM地址设
置,DDRAM地址设置,读忙标志,写数据到CG/DDRAM,读数据由CG/DDRAM。
5)、显示位与DDRAM地址的对应关系表7:
显示位序号
12345………………40
DDRAM
地址(HEX)
第一行
0001020304..……………..27
第二行
4041424344…………….....67
表7显示位与DDRAM地址关系表
(6)、软件设计
1)、主程序main流程图
图7主程序流程图
(2)、程序
/*简易数字频率计:
T1定时计器,T0计数器,由P34(/T0)口输入待测频率*/
/*T1定时1S,在这1S内T1的计数值就是待测的频率值。
*/
#include<
reg52.h>
//头文件
intrins.h>
#defineucharunsignedchar//宏定义
#defineuintunsignedint//宏定义
sfr16DPTR=0x82。
//定义DPTR
bitstatus_F=1。
//状态标志位
uintaa,qian,bai,shi,ge,bb,wan,shiwan。
//定义变量
ucharcout。
unsignedlongtemp。
//定义长整型变量
/*数码管显示0-9*/
ucharcode
table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。
/*子函数声明*/
voiddelay(uintz)。
voidinit()。
voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge)。
voidxtimer0()。
voidxtimer1()。
/*主函数*/
voidmain()
{
P0=0XFF。
//初始化P0口
init()。
//调用定时器,计数器初始化
while
(1)
{
if(aa==19)//定时20*50MS=1S
{
aa=0。
//定时完成一次后清0
status_F=1。
//完成计数
TR1=0。
//关闭T1定时槛,定时1S完成
delay(46)。
//延时较正误差
TR0=0。
//关闭T0
DPL=TL0。
//计数量的低8位
DPH=TH0。
//计数量的高8位
temp=DPTR+cout*65535。
//计数值放入变量
shiwan=temp%1000000/100000。
wan=temp%100000/10000。
qian=temp%10000/1000。
//显示千位
bai=temp%1000/100。
//显示百位
shi=temp%100/10。
//显示十位
ge=temp%10。
//显示个位
}
display(shiwan,wan,qian,bai,shi,ge)。
//调用显示函数
}
}
/*定时器,计数器初始化*/
voidinit()
temp=0。
//变量赋初值
aa=0。
cout=0。
IE=0X8A。
//开中断,T0,T1中断
TMOD=0x15。
//T1为定时器工作于方式1,T0为计数器工作于方式1
TH1=0x3c。
//定时器赋高8初值,12M晶振
TL1=0xb0。
//定时器赋低8初值,12M晶振
TH0=0。
//计数器赋高8初值初值
TL0=0。
//计数器赋低8初值
TR1=1。
//开定时器1
TR0=1。
//开计数器0
/*显示子函数*/
voiddisplay(uintshiwan,uintwan,uintqian,uintbai,uintshi,uintge)
P0=0xdf。
//P0口是位选11011111改成11111101==0XDF
P2=table[shiwan]。
//显示shiwan位
delay(5)。
P0=0xef。
//P0口是位选11101111改成11111110==0XFE
P2=table[wan]。
//显示wan位
delay(3)。
P0=0xf7。
//P0口是位选111101111改成01111111==0X7F
P2=table[qian]。
P0=0xfb。
//P0口是位选11111011改成10111111==0XBF
P2=table[bai]。
P0=0xfd。
//P0口是位选11111101改成11011111==0XDF
P2=table[shi]。
P0=0xfe。
//P0口是位选11111110改成11101111==0XEF
P2=table[ge]。
/*定时中断子函数*/
voidxtimer1()interrupt3
//定时器赋高8初值
//定时器赋低8初值
aa++。
/*计数器中断子函数*/
voidxtimer0()interrupt1
{
cout++。
/*延时子函数。
延时1MS*/
voiddelay(uintz)
uinti,j。
for(i=0。
i<
z。
i++)
for(j=0。
j<
110。
j++)。
//j上限为125
3.仿真结果与分析
此间易频率计的特点是由于加入了延时补偿,对于低频率脉冲能够准确计数,对于较高频率,则频率越高,误差越大。
但总体来讲,误差相对较小。
(1).在1~3257HZ,测量结果是准确的,如图8所示1HZ,1KHZ,3257HZ的仿真图:
图81HZ,1KHZ,3257HZ的仿真图
(2).在3258HZ~9.5KHZ的时候测量有误差并且慢慢减少。
在3258HZ时候达到最大误差0.03069%,如图9。
9.5KHZ时候达到最小误差0.01368%。
如图10:
图9测量3258HZ的仿真结果
图10测量95013HZ的仿真结果
(3).从9.6KHZ~999.7629KHZ,测量误差越来越大,在9.6KHZ为0.01458%,在999.7629KHZ
时为0.0237%
图11测量9.6KHZ、999.7629KHZ的仿真结果
四、结论
在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。
在设计时遵循从整体到局部也即自上而下的原则。
把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。
将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。
在程序调试时应按各个功能模块分别调试。
在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。
另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。
通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法。
对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。
在设计过程中,得到了我的指导老师的悉心指导与帮助,在此一并表示衷心的感谢。
参考资料
[1]张毅坤,陈善久.单片微型计算机原理及应用.西安电子科技大学出版社,2002.
[2]张友德,赵志英,徐时亮.单片微机原理应用与实验.复旦大学出版社,2000.
[3]张毅刚,彭善元,董继承.单片机原理及应用.高等教育出版社,2003.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程 方案设计 数字频率计