F题 简易多功能计数器3.docx
- 文档编号:7001927
- 上传时间:2023-05-10
- 格式:DOCX
- 页数:13
- 大小:105.10KB
F题 简易多功能计数器3.docx
《F题 简易多功能计数器3.docx》由会员分享,可在线阅读,更多相关《F题 简易多功能计数器3.docx(13页珍藏版)》请在冰点文库上搜索。
F题简易多功能计数器3
F乙简易多功能计数器
泰山学院马运龙,房大伟,张燕
专家点评:
该作品采用功耗低、运算速度快,并具有EEPROM功能的AVR系列Atmega64单片机为主控CPU。
选择AlteraCPLDMAXIIEPM570实现输入信号的频率/周期测量,以保证频率/周期测量结果的稳定性和准确性。
采用AD8611对输入信号整形,将结果送入Atmega64中进行结果的显示以及功能的切换和语音播放。
该方案设计报告完整,元件选择比较合理,具有结构简单、测量精度高、运算速度快等优点。
经测试,该作品的性能指标全部达到了题目的基本要求,同时较好的完成了存储、语音、测温等多项创新功能。
哈尔滨工业大学(威海)麻志滨高级工程师
2008/9/24
摘要:
该简易多功能计数器以Atmega64和ALTERAMAXIICPLD技术为核心,由信号整形模块、CPLD微处理模块、语音模块、液晶显示模块、信号测量模块、以及功能切换模块组成。
采用AD8611对输入信号的整形,CPLD进行测频以及结果的运算,采用AD采样原理对信号峰值的测量,最终将结果送入Atmega64中进行结果的显示以及功能的切换和语音播放等。
总之,用CPLD处理信号,Atmega64实现数据的采集和人机交互,通过数码管显示测量结果并通过语音播报测量数据。
关键词:
多功能计数器;CPLD;语音播放;Atmega64
一、方案论证与选择
1.1设计方案
1.1.1各种方案的比较
方案一:
采用S51+逻辑门电路方案。
由于S51工作频率低,利用其内部的计数器不能直接测量高频信号,所以必须外扩大量的逻辑门电路。
电路制作麻烦,不便保证测量精度。
方案二:
直接采用AVR+AlteraCPLD方案。
AVR单片机内部资源丰富,工作速度快,开发简便,同时用CPLD代替普通的逻辑门电路,省去了复杂的连线,工作速度快,能保证测量精度。
1.1.2设计方案
根据题目的要求,经过仔细的分析,充分考虑各种因素,最终确定选方案二作为本设计的整体方案:
以AVR单片机Atmega64和AlteraCPLDMAXIIEPM570为中心,进行该设计题目:
其中单片机ATMEGA64用于按键控制、温度测量、时钟提取、显示控制、语音播放。
EPM570用于实现输入信号的频率/周期测量。
利用CPLD的强大的逻辑处理能力,保证了频率/周期测量结果的稳定和准确。
信号调理电路采用高速比较器AD8611对输入的信号进行整形,然后送
CPLD进行频率/周期测量,确保了测量精度。
语音播放模块可以对测量结果进行实时播报。
数字显示模块采用LED数码管进行显示。
EPM570通过I/O口与Atmega64通信后将数据传给Atmega64,通过选择Atmega64再将其结果进行转换并输出显示以及语音播放。
另外通过外围电路(如键盘电路)可以对其功能进行选择以及时间、温度等的显示。
系统框图参见图1:
图1简易多功能计数器系统框图
二、频率/周期测量原理分析
测量原理如图2所示
图2频率/周期测量
量化时钟频率为
,对应的周期
,在待测脉冲上升沿计数器输出计数脉冲个数
,
,
为待测脉冲上升沿与下一个量化时钟脉冲上升沿之间的时间间隔,则待测脉冲时间间隔
为:
三、具体设计与实现
3.1系统的硬件设计
3.1.1电源输出模块
原理图如图3所示:
图3电源原理框图
220伏50HZ的市电经过变压器之后产生12伏左右的交流电,又经过整流桥之后输出直流电,电容C1和C2滤除了其中的交流成分,经过稳压管之后,输出幅度比较稳定15伏左右的直流电。
L7805,L7812,以及L7912是三态稳压器,只要给他们大于一定电压的电压值(小于最大输入电压)他们就可以分别输出+5伏,+12伏和-12伏的电压。
3.1.2信号调理模块
原理图如图4所示:
图4方波整形原理图
使用方波整形是为了产生计数信号,是为后续的VHDL计数、测频工作做准备的。
AD8611是高速比较器,100MHz信号输入,单/双路4nS传输延迟,具有锁存和互补输出功能。
AD8611对很宽的频率范围的输入波形都有良好的整形效果。
AD8611能够在低频和高频都能产生波形比较正确的方波,能够满足设计的要求,因此,在此系统中采用了AD8611作为电压比较器的核心。
3.1.3信号频率/周期测量模块
采用ALTERA的CPLDEPM570对输入信号进行测量。
CPLD的基本特点主要有:
核心电压3.3V、144引脚(其中116个GPIO)的EPM570T144C5作为实现控制电路的CPLD。
EPM570T144C5内部有570个逻辑单元(LogicElement),相当于440个宏单元(Macrocell)。
EPM570T144C5内部分为两个I/Obank,共116个通用I/O,引脚延时为8.8ns,满足系统的设计要求。
具体测量方法如图5所示:
输入信号经过AD8611整形后,送到CPLD进行测量。
首先进行判断,频率大于1KHZ测频,方法是通过精确定时1秒钟,进行测频,测量精度大于0.1%。
低于1000Hz采用周期测量法,因为采用25MHz的标准时钟源,测周的精度大于0.1%。
满足了题目要求。
图5测量方法及硬件连接图
3.1.4ATmega64单片机
ATmega64是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由于其先进的指令集以及单时钟周期指令执行时间,ATmega64的数据吞吐率高达1MIPS/MHz,从而可以缓减系统在功耗和处理速度之间的矛盾。
具有2K字节EEPROM,对本设计的记忆功能有很大的帮助。
本设计中用CPLD来测量频率/周期,然后将结果送到ATMEGA64进行显示,保存。
M64作为控制中心,对键盘、显示、以及记忆的读取、计数值得读取等进行控制,以实现人机交互。
3.1.5语音模块
语音模块采用BMP5008系列多段语音录放板采用了上海奔流电子有限公司全新设计的专用录音控制MCU外加SPI接口FLASH的全新设计思路,通过外挂不同容量的FLASH,可以获得从30秒—32分钟的录音容量。
有8KHZ和12KHZ两种采样频率用户可选;录音信息掉电不会丢失。
板上自带MIC/LINEIN线路输入口,可外接多种音源录音。
板上自带稳压电路,支持5V—6V电压直接输入;主芯片自带0.5w功放;用户可自由定义6个I/O口的触发功能为单端发放音还是63段(8421并行编码)地址选段放音。
如图6所示。
图6单片机和语音模块的接口
3.1.6温度模块和时钟模块
图7温度和时钟模块
温度测量:
采用单总线温度传感器DS18B20,连线简单,测量结果准确。
时钟测量:
采用时钟芯片DS1302进行时间测量和显示。
3.1.7键盘和显示模块
键盘:
采用6个独立按键,分别控制如图所示6种功能:
温度/时间切换、数据保存、数据回显、频率/周期切换和语音播放。
显示模块:
包括12个数码管和4个LED小灯。
12个数码管分成8个和4个两组。
8个数码管用于显示频率/周期测量值,4个数码管显示时间和温度。
4个LED发光管用于指示测量单位。
具体连线如图8所示
图8键盘及显示模块
四、系统的流程图
4.1主程序的流程图如图9
图9主程序流程图
五、系统测试与结果分析
5.1、调试与测试所用仪器
(1)数字万用表
(2) 数字示波器 (3)信号发生器Agilent33120A
5.2、测试数据
表1周期频率数据测量
标称频率HZ
频率测量HZ
周期测量us
平均频率
平均周期
误差
第一次
第二次
第一次
第二次
HZ
us
0.1
0.101
0.102
9900900.990
9803921.568
0.102
9852216.748
0.02
10
9.571
9.862
10448.253
10139.271
9.715
10293.262
0.025
1K
1000
999
100.000
100.001
999.5
100.001
0.0001
500K
499930
499925
2.0001
2.0001
499927
2.001
0.0001
1M
999984
999985
1.0001
1.0001
999984
1.000
0.0001
5M
4999921
4999920
2.0000
2.OOOO
4999921
2.000
0.0001
10M
9999841
9999972
1.0000
1.0000
9999906
10.000
0.0001
5.3、结果分析
经过分析,在高频端数据的精度完全符合要求,甚至高于所求的精度,但在低频段刚刚满足设计的要求。
该多功能计数器实现了频率/周期测量,测量结果达到了题目要求。
发挥部分完全实现。
能语音报数、能测量温度、采集时间,能保存数据,能显示历史数据。
六、结束语
本系统完成了题目基本部分和发挥部分的全部内容,在完成的项目中大部分指标都优于题目的要求,个别指标由于时间有限做得不是非常完善。
本系统的测试运行效果良好,达到了预期目的。
CPLD实现了该系统不可比拟的优越性,集中体现在实现功能齐全,外围电路简单,时间计算精确,以及可维护性强。
在这次比赛中,我们经过四天三夜的拼搏,通过完成这件作品,大大提高了我们的创新精神,动手能力,团队协作和竞争意识。
期间我们也遇到很多困难,使我们认识到处理问题可以用多方法多角度地处理,而且懂了联系实际的重要性,这对我们以后的学习和工作是不无裨益的。
当然我们受到时间地域和价格的限制,还有可以改进的地方,希望老师给予指正。
此外,在比赛期间辅导老师给我们极大的帮助和支持,从下来元器件开始就积极的为我们准备一个宽松的比赛环境,可以说没有老师的帮助我们呢就不可能在这么短时间内出色的完成作品。
在这里我们小组向辅导老师致以深深的感谢之情!
最后感谢山东电子大赛的组委会老师们!
参考文献:
[1]童诗白.华成英.模拟电子技术基础[M].北京:
高等教育出版社,2000.
[2]杨兴瑶.张益清,杨震绪.新编电子实用电路[M].北京:
化学工业出版社,2006.
[3]求是科技.单片机典型模块设计实例导航[M].北京:
人民邮电出版社,2004.
[4]阎石.数字电子技术基础第四版[M].北京:
高等教育出版社,2006.
[5]黄任.AVR单片机与CPLD/FPGA综合应用入门[M].北京:
北京航空航天大学出版社,2004.
附件:
主要程序清单
/*****************控制处理主程序************************/
//ICC-AVRapplicationbuilder:
2008-9-1311:
20:
46
//Target:
M64
//Crystal:
1.0000Mhz
#include
#include
#include"init_devices.h"
#include"display.h"
#include"usart.h"
externunsignedchardata0[13];
externunsignedcharuartCNT;
//unsignedchardata1[10];
/*//externdata1[12];
voidwtab1(unsignedchari,unsignedchar*num)
{
unsignedcharj;
for(j=1;j<17;j++)
{
tab1[i*16+j]=num[j];
}
}
voidwtab2(unsignedchari,unsignedchar*num)
{
unsignedcharj;
for(j=1;j<17;j++)
{
tab2[i*16+j]=num[j];
}
}
voidwtab3(unsignedchari,unsignedchar*num)
{
unsignedcharj;
for(j=1;j<17;j++)
{
tab3[i*16+j]=num[j];
}
}*/
/*voidchange(void)
{
unsignedchari;
if((data0[0]!
=0)&(data0[11]!
=0))
{
for(i=0;i<10;i++)
{
data1[i]=data0[i+1];
}
}
}*/
voidsongxian(unsignedchar*tab1)
{
unsignedchari;
//tab1[2]=data0[0];
//tab1[3]=data0[12];
//for(i=0;i<10;i++)tab1[18+i]=data0[2+i];
if((data0[0]=='S')&&(data0[12]=='E'))
{
if(data0[1]=='0')
{for(i=0;i<10;i++)tab1[18+i]=data0[2+i];}
elseif(data0[1]=='1')
{for(i=0;i<9;i++)tab1[18+i]=data0[2+i];tab1[27]='.';tab1[28]=data0[11];}
elseif(data0[1]=='2')
{for(i=0;i<8;i++)tab1[18+i]=data0[2+i];tab1[26]='.';
tab1[27]=data0[10];tab1[28]=data0[11];}
elseif(data0[1]=='3')
{for(i=0;i<7;i++)tab1[18+i]=data0[2+i];tab1[25]='.';
tab1[26]=data0[9];tab1[27]=data0[10];tab1[28]=data0[11];}
elseif(data0[1]=='4')
{for(i=0;i<6;i++)tab1[18+i]=data0[2+i];tab1[24]='.';tab1[25]=data0[8];
tab1[26]=data0[9];tab1[27]=data0[10];tab1[28]=data0[11];}
data0[0]=0;
data0[12]=0;
}
}
/*****************键盘控制************************/
unsignedcharscankey(void)
{
unsignedcharKey;
if((PINA&0x01)==0x00)
{Key=1;
delay1(5);}
elseif((PINA&0x02)==0X00)
{Key=2;
delay1(5);}
elseif((PINA&0X04)==0X00)
{Key=3;
delay1(5);}
elseif((PINA&0x08)==0x00)
{Key=4;
delay1(5);}
elseif((PINA&0x10)==0x00)
{Key=5;
delay1(5);}
elseif((PINA&0x20)==0x00)
{Key=6;
delay1(5);}
return(Key);
}
voidKeycontrol(void)
{
unsignedcharKeynum=0;
//unsignedchar
unsignedchari;
unsignedcharflag1,flag2,flag3;
Keynum=scankey();
if(Keynum==1)
{
flag1=1;
while(flag1)
{delay1
(2);
uartCNT=0;
USART_TX(0xAA);
delay1(250);
songxian(tab1);
chn_disp(tab1);
delay1(250);
Keynum=scankey();
if(Keynum!
=1)
flag1=0;
}
}
elseif(Keynum==2)
{
flag2=1;
while(flag2)
{
USART_TX(0x55);
/*for(i=0;i<7;i++)
{tab2[50+i]=data0[i+1];}
tab2[57]=data0[8];
tab2[59]=data0[9];
tab2[60]=data0[10];*/
//songxian(tab2);
//chn_disp(tab2);
delay1(500);
Keynum=scankey();
if(Keynum!
=2)
flag2=0;
}
}
elseif(Keynum==3)
{
flag3=1;
while(flag3)
{
USART_TX(0xA5);
/*for(i=0;i<7;i++)
{tab3[50+i]=data0[i+1];}
tab3[58]=data0[8];
tab3[59]=data0[9];
tab3[60]=data0[10];*/
//songxian(tab3);
//chn_disp(tab3);
delay1(500);
Keynum=scankey();
if(Keynum!
=3)
flag3=0;
}
}
}
voidmain(void)
{
unsignedchartemp;
init_devices();
init_lcd();
lat_disp(0x00,0x00);
chn_disp(tab0);
while
(1)
{
lat_disp(0x00,0x00);
Keycontrol();
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- F题 简易多功能计数器3 简易 多功能 计数器
![提示](https://static.bingdoc.com/images/bang_tan.gif)