课 程 设 计Word文档格式.docx

上传人:b****1 文档编号:816094 上传时间:2023-04-29 格式:DOCX 页数:22 大小:390.31KB
下载 相关 举报
课 程 设 计Word文档格式.docx_第1页
第1页 / 共22页
课 程 设 计Word文档格式.docx_第2页
第2页 / 共22页
课 程 设 计Word文档格式.docx_第3页
第3页 / 共22页
课 程 设 计Word文档格式.docx_第4页
第4页 / 共22页
课 程 设 计Word文档格式.docx_第5页
第5页 / 共22页
课 程 设 计Word文档格式.docx_第6页
第6页 / 共22页
课 程 设 计Word文档格式.docx_第7页
第7页 / 共22页
课 程 设 计Word文档格式.docx_第8页
第8页 / 共22页
课 程 设 计Word文档格式.docx_第9页
第9页 / 共22页
课 程 设 计Word文档格式.docx_第10页
第10页 / 共22页
课 程 设 计Word文档格式.docx_第11页
第11页 / 共22页
课 程 设 计Word文档格式.docx_第12页
第12页 / 共22页
课 程 设 计Word文档格式.docx_第13页
第13页 / 共22页
课 程 设 计Word文档格式.docx_第14页
第14页 / 共22页
课 程 设 计Word文档格式.docx_第15页
第15页 / 共22页
课 程 设 计Word文档格式.docx_第16页
第16页 / 共22页
课 程 设 计Word文档格式.docx_第17页
第17页 / 共22页
课 程 设 计Word文档格式.docx_第18页
第18页 / 共22页
课 程 设 计Word文档格式.docx_第19页
第19页 / 共22页
课 程 设 计Word文档格式.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

课 程 设 计Word文档格式.docx

《课 程 设 计Word文档格式.docx》由会员分享,可在线阅读,更多相关《课 程 设 计Word文档格式.docx(22页珍藏版)》请在冰点文库上搜索。

课 程 设 计Word文档格式.docx

频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

测速、测V/I、测相位等一般都要用到频率信号,特别是在工业控制中。

很多变送器如电压、电量变速器,功率、行程变速器等都有频率信号或者说脉冲信号的输出。

频率信号抗干扰性能好,适于远距离传送,并且频率信号所需的接口简单,占用资源少,一般它只占用一路计数器接口直接进行计数或一个中断源输入接口,在中断服务程序中对脉冲进行计数,当然也可利用外部计数装置输入若干路通用I/O接口中。

频率测量是电子行业的主要测量参数之一。

很多应用场合,如学生的电子手工制作,业余发烧友的实验设备等都需要用到简易频率计。

因此,对于我们大学生而言,掌握将单片机设计为频率计的方法是很重要的。

此次课程设计旨在加深对课本的理解与拓展。

1.要求学生采用MCS—51系列单片机实现TTL(<

50KHz)信号频率的测量,并对测量信号进行显示。

2.该设计要求绘制系统的总体结构图,完成电路的PCB设计,并编写控制软件(用C51源代码完成)。

3.采用8位七段LED显示。

显示格式:

五位整数,三位小数。

4.按键功能(设为A,B,C)

1)保持键A:

按下则锁定测量值;

2)记忆键B:

记录16组测量结果;

3)回放键C:

显示记录内容;

由于许多程序的设计是由硬件来支持的,因此我们的思路是先硬件后软件。

1频率测量的实现方法:

1.内部计数器计数法:

使用单片机自带的计数器对输入脉冲进行计数。

优点:

系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。

缺点:

受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一。

由于定时不能达到ls,所以要多次引起片内定时器的溢出中断,而由此会引起测频的误差。

2.部计数器计数法:

单片机使用外部计数器对脉冲信号进行计数,计数值再由单片机读取。

输入的时钟信号频率可以不受单片机晶振频率的限制,可以对相对较高频率进行测量。

成本比第一种方法高,硬件系统结构比较复杂。

3.测周期法:

通过求取被测信号的周期从而导出其频率值。

该方法适合于低频测量,因为测量误差一般为一个时钟信号,而其误差e=1/N,当N较大时,所测量的误差e较小。

而且要用到BCD码位权除法算法,软件实现较为复杂。

经过小组讨论,我们选用的测量方法为测周期法。

2频率采样实现方式:

我们小组对于频率采样提出了2种方案。

方案一:

采用定时计数器T0与T1,其中一个作为计数器,另一个作为定时器,在设定的时间内对脉冲数进行累加。

方案二:

采用一个定时器(T0或T1),一个中端口(INT0或INT1),设置为下降沿触发,在中断程序中计数。

两种方案的都有定时误差,会影响测量精度,因此对于精度要求不高的场合适用。

我们小组采取了第二种采样方式,具体过程为:

这时,当下降沿来临时,系统发出一个中断请求,并对设置的变量t进行自加运算。

每当接受到20个下降沿脉冲时,定时器T1会得出一个数据T,所测量脉冲的频率可通过公式

得出。

3数据的存储与读取:

1.建立一个数组,其容量为16。

2.按下A键时,判断变量与15的关系:

若大于15,则将数组中第一组数据丢弃,将第二组数据放入第一组中,第三组数据放入第二组中,以此类推;

若小于等于15,则将数据放入对应的数组中,保存数据。

3.按下B键时,判断局域自变量与0的关系:

若不小于0,则从数组的最后一个数据读出,且经运算后发送至P1口,实现数据显示。

4.数码管的编程思路:

八位八段数码管动态显示原理:

动态显示需要有两组信号控制:

一组是字段输出口(设计中选择P0口)输出的字形代码,用来控制显示的字形,称为段码。

另一组是位选信号。

设计中采用74LS138应译码器,0~7分别对应八位数码管。

由于各位数码管的段线是并联的,且段码的输出对各位数码管来说都是相通的,因此,在同一时刻如果各位数码管的位选线都处于宣统状态的话,八位数码管将显示相同的字符。

若要各位数码管能够显示出与本位相对应的字符,就必须采用扫描显示方式。

即在某一时刻,只让其一位的位选线处于导通状态。

同时,段线上输出响应位要显示字符的字型码。

这样在同一时刻,只有选通的那一位显示出字符,而其他各位则是熄灭的,如此循环下去,就可以是各位数码管的显示出将要显示的字符。

由于数码管具有余辉特征和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定的显示。

编程思路:

①频率计要求显示的仅仅是数字字符和小数点部分,所以采取十进制,查表找出0~9对应的字模,建立数组;

②确定扫描方式为动态扫描,扫描位数为8位,方向为从左往右,此处主要使用if判断语句及swich跳转指令;

③将需要显示的数据转化为字模发送给数码管显示,第五位需要小数点,只需将数据与0x80进行或运算即可;

④合理选则延时子函数的延时时间。

一硬件设计方案

1.MC-51系列单片机选用

我们小组选用的单片机为现在主流的89S52单片机,相比89S51性价比方面更好一些。

AT89S52单片机是一种低功耗高性能的CMOS8位微控制器,内置8KB可在线编程闪存,采用Atmel公司的高密度非易失性存储技术生产,其指令与工业标准的80C51指令集兼容。

片内程序存储器允许重复在线编程,允许程序存储器在系统内通过SPI串行口改写或用同用的非易失性存储器改写。

通过把通用的8位CPU与可在线下载的Flash集成在一个芯片上,便成为一个高效的微型计算机。

它的应用范围广,可用于解决复杂的控制问题,且成本较低。

其结构框图如图所示。

AT89S52的主要特性如下:

1兼容MCS51产品。

28K字节可擦写1000次的在线可编程ISP闪存。

34.0V到5.5V的工作电源范围,全静态工作:

0Hz~24MHz。

43级程序存储器加密。

5256字节内部RAM,32条可编程I/O线,3个16位定时器/计数器。

68个中断源,UART串行通道。

7低功耗空闲方式和掉电方式,通过中断终止掉电方式。

8看门狗定时器,双数据指针,灵活的在线编程(字节和页模式)

2.数码管及其工作方式选择

数码管:

选用八段八位数码管。

选择原因:

七位数码管不能实现小数点的显示。

工作方式:

有两种,一是静态显示,二是动态显示。

我们小组选择的是第二种方式:

动态显示。

静态显示的优点是编程简单,显示亮度高,缺点是占用I/O接口多,如驱动8个数码管静态显示则需要8×

8=64根I/O接口来驱动,因此实际应用时必须增加驱动器进行驱动,增加了硬体电路的复杂性。

动态显示的效果和静态显示是一样的,能够节省大量的I/O接口,而且功耗更低。

因此我们小组选用的方式为动态显示方式。

片选方式:

一是单片机直接片选,二是采用译码器进行片选。

我们小组选择的是第二种方式,使用74LS138译码器进行片选。

单片机直接片选时,需使用16个引脚,使用74LS138译码器片选时,需使用11个引脚,节约了单片机的引脚。

初始选择:

外部存储器,即EEPROM(电可擦可编程只读存储器)。

型号初步订为24C20。

与单机的通信选择IIC通信协议。

能够实现断电保护,是存储数据掉电不丢失。

对于我们实现起来难度很大,难以在有限的时间内熟练掌握并实现编程。

而根据设计要求,系统需要存储16组数据,由于测量频率

所以有16位数据显示,每组数据占据2个字节,总共需要32个字节,因此一般存储器均可以满足设计的需要。

所以我们小组放弃了使用外部存储器,选择了AT89S52单片机内部的片内数据存储区,存储空间256字节,满足要求,但缺点是无法实现断电保护。

我们小组经过计算与分析,最后选择的晶振频率为12M。

计算:

检测一个脉冲由1到0跳变至少需要2个机器周期,1个周期等于6个状态周期,1个状态周期等于2个晶振周期,因此有

,即外部输入的脉冲的最高频率为晶振频率的1/24。

根据要求,测量的最高频率为50KHZ,由公式

可以算出

HZ。

分析:

频率采样时,可以通过硬件分频,可实现对更高频率的检测,以降低对系统的硬件要求。

由上面的计算可知,我们设计的频率计可以不使用分频方式,一次减少了外围的硬件。

所以12M的晶振频率足以满足系统设计的要求。

小组讨论采用的是独立式键盘。

原因:

由于设计中仅使用三个按键,可以直接用AT89S52的通用I/O口作为键盘接口。

采用独立式时占据三个引脚,且外部电路简单,电路理解和编程较矩阵式更为简便。

原理图如下:

二软件设计方案

1.软件流程图

2.软件编程

#include<

reg52.h>

intrins.h>

sbitLS138A=P2^2;

sbitLS138B=P2^3;

sbitLS138C=P2^4;

sbitK1=P2^5;

sbitK2=P2^6;

sbitK3=P2^7;

unsignedchartem[16];

unsignedcharLedNumVal;

unsignedcharcount;

//此处为运算后的频率

unsignedintt;

floatfre;

unsignedcharcodeDisp_Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};

//此表为LED的字模,共阴数码管0-9-

voidsystem_Ini()

{

TMOD|=0x11;

TH1=0x00;

//12.000M

TL1=0x00;

IE=0x00;

TR1=1;

}//初始化程序,设定t1计数

voidwrite_read()

{

inti,j;

if(K1==0)

{

if(i<

16)

{

tem[i++]=LedNumVal;

//LedNumVal为所测频率

}

elseif(i>

=16)

{

for(j=16;

j>

=2;

j--)

{

tem[j-2]=tem[j-1];

tem[15]=LedNumVal;

}

}

if(K2==0)

intk=i;

if(k>

=0)

{

LedNumVal=tem[k--];

elseif(k<

0)

LedNumVal=tem[0];

}//写入与读出

}

voidhold()

if(K3==0)

EX0=0;

elseEX0=1;

}//此处假设为T1计数,即控制T1的工作与否*/

voiddelay(unsignedinti)

charj;

for(i;

i>

0;

i--)

for(j=200;

j>

j--);

}

main()

inte,f,g,h,i,j,k,l;

floatm;

unsignedintLedOut[8];

IT0=1;

//下降沿触发

EX0=1;

EA=1;

system_Ini();

while

(1)//进入循环状态

if(t%20==0)//每20个下降沿执行一次

count=(TH1*256+TL1)*0.000001-count;

//得出频率

fre=20/count;

LedNumVal=fre;

write_read();

hold();

e=LedNumVal/10000;

f=(LedNumVal-e*10000)/1000;

g=(LedNumVal-f*1000-e*10000)/100;

h=(LedNumVal-g*100-f*1000-e*10000)/10;

i=(LedNumVal-h*10-g*100-f*1000-e*10000)/1;

m=(LedNumVal-i*1-h*10-g*100-f*1000-e*10000)*1000;

j=m/100;

k=(m-j*100)/10;

l=(m-k*10-j*100)/1;

LedOut[0]=Disp_Tab[e];

LedOut[1]=Disp_Tab[f];

LedOut[2]=Disp_Tab[g];

LedOut[3]=Disp_Tab[h];

LedOut[4]=Disp_Tab[i]|0x80;

LedOut[5]=Disp_Tab[j];

LedOut[6]=Disp_Tab[k];

LedOut[7]=Disp_Tab[l];

for(i=0;

i<

9;

i++)//实现8位动态扫描循环

P0=LedOut[i];

//将字模送到P0口显示

switch(i)//使用switch语句控制位选

case0:

LS138A=0;

LS138B=0;

break;

case1:

LS138A=1;

case2:

LS138B=1;

case3:

case4:

case5:

case6:

case7:

delay(150);

}

voidcounter(void)interrupt0

EX0=0;

t++;

附录1:

单片机结构框图

附录2:

AT89S52引脚功能与封装

附录3:

单片机封装尺寸

附录4数码管封装尺寸

参考文献:

①单片机应用程序设计 [M].北京:

北京航空航天大学出版社,1991.周航慈著

②李华等编著.MCS-51系列单片机实用接口技术[M].北京:

北京航空航天大学出版社,1993.李华等编著

③ProtelDXP电路原理图与PCB设计.机械工业出版社.黄炜等编著

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2