




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数字频率计的设计日期:2008-05-05 来源:网络 作者:佚名字体:大 中 小 (投递新闻)频率计是我们经常会用到的实验仪器之一,本实验要使用单片机和计数电路及液晶器件来设计一个宽频的频率计。期望达到10Hz1.1G范围的频率精确测量。实验电路图(初步方案)1) 计数及显示电路:2)前置放大及分频电路:设计思路频率的测量实际上就是在1S时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。由于单片机自带计数器输入时钟的频率通常只能是系统时钟频率的几分之一甚至几十分之一,因此采用单片机的计数器直接测量信号频率就受到了很大的限制。本实验电路采用方式2,使用一片74LS393四位双二进制计数器和Atmega8的 T1计数器组成了24位计数器,最大计数值为16777215。如果输入信号经过MB501分频器进行64分频后再进行测量,则固定1S时基下最高测量频率为1073.741760Mhz。为了方便得到准确的1秒钟测量闸门信号,我们使用了Atmega8的异步实时时钟功能,采用32.768Khz的晶振由TC2产生1秒钟的定时信号。测量原理:单片机打开测量闸门,即PB1输出高电平,同时TC2定时器启动。74LS393开始对输入脉冲进行计数,74LS393每计数达256时,Atmega8的T1计数器也向上计数1次。当1S定时到达时,单片机产生中断,PB1输出低电平关闭测量闸门,然后Atmega8读取74LS393和T1的计数值,然后送LCD显示。实验进展2004-09-27根据设计思路编写程序初步获得了一些实验结果,如下图所示。下图是测量8M有源晶振的输出结果。由于1S的测量闸门时间在业余条件下不好测试,因此,实验程序中在LCD上同时显示实时时钟用于判断1S闸门时间的准确性。实验中,我使用CDMA手机上显示的GPS卫星精确时间进行比较。手机时间显示的最小单位是分钟,测量时一旦手机分钟值发生跳变,则立即记录下LCD显示的秒值,这样的话让频率计运行一段时间后,再多次记录下LCD显示的秒,就可以准确判断频率计的异步时钟是否准确。实验过程中,我让频率计走了10个小数左右,测量的1S时钟还是非常准确的。#include #include #include lcd.h#include 6x8.h#include chinese.h/*-LCD_init : 3310LCD初始化编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_init(void)PORTB &= LCD_RST; / 产生一个让LCD复位的低电平脉冲delay_1us();PORTB |= LCD_RST;PORTB &= LCD_CE ; / 关闭LCDdelay_1us();PORTB |= LCD_CE; / 使能LCDdelay_1us();LCD_write_byte(0x21, 0); / 使用扩展命令设置LCD模式LCD_write_byte(0xc8, 0); / 设置偏置电压LCD_write_byte(0x06, 0); / 温度校正LCD_write_byte(0x13, 0); / 1:48LCD_write_byte(0x20, 0); / 使用基本命令LCD_clear(); / 清屏LCD_write_byte(0x0c, 0); / 设定显示模式,正常显示PORTB &= LCD_CE ; / 关闭LCD/LCD_clear();/*-LCD_clear : LCD清屏函数编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_clear(void)unsigned int i;LCD_write_byte(0x0c, 0); LCD_write_byte(0x80, 0); for (i=0; i504; i+)LCD_write_byte(0, 1); /*-LCD_set_XY : 设置LCD坐标函数输入参数:X :083Y :05编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_set_XY(unsigned char X, unsigned char Y)LCD_write_byte(0x40 | Y, 0); / columnLCD_write_byte(0x80 | X, 0); / row/*-LCD_write_char : 显示英文字符输入参数:c :显示的字符;编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_char(unsigned char c)unsigned char line;/c -= 32;/for (line=0; line6; line+)/LCD_write_byte(font6x8cline, 1);for (line=0; line7; line+)LCD_write_byte(font7x13cline, 1);for (line=7; line14; line+)LCD_write_byte(font7x13cline, 1);/*-LCD_write_char : 英文字符串显示函数输入参数:*s :英文字符串指针;X、Y : 显示字符串的位置编写日期 :2004-8-10 最后修改日期 :2004-8-10 -*/void LCD_write_String(unsigned char X,unsigned char Y,char *s)unsigned char line;unsigned char i=0;while (*s) LCD_set_XY(X+i*7,Y);for (line=0; line7; line+)LCD_write_byte(font7x13*s-0X30line, 1);LCD_set_XY(X+i*7,Y+1);for (line=7; line14; line+)LCD_write_byte(font7x13*s-0X30line, 1);s+;i+;/*-LCD_write_chi: 在LCD上显示汉字输入参数:X、Y :显示汉字的起始X、Y坐标;ch_with :汉字点阵的宽度num :显示汉字的个数; line :汉字点阵数组中的起始行数row :汉字显示的行间距编写日期 :2004-8-11 最后修改日期 :2004-8-12 -*/ void LCD_write_chi(unsigned char X, unsigned char Y, unsigned char ch_with,unsigned char num,unsigned char line,unsigned char row)unsigned char i,n;LCD_set_XY(X,Y); /设置初始位置for (i=0;iNUM;)for (n=0; n if (n=ch_with) /写汉字的下半部分if (i=0) LCD_set_XY(X,Y+1);elseLCD_set_XY(X+(ch_with+row)*i),Y+1);LCD_write_byte(china_charline+in,1);i+;LCD_set_XY(X+(ch_with+row)*i),Y);/*-LCD_write_chi: 汉字移动输入参数:X、Y :显示汉字的起始X、Y坐标;T :移动速度;编写日期 :2004-8-13 最后修改日期 :2004-8-13 -*/ void LCD_MOVe_chi (unsigned char X, unsigned char Y, unsigned char T)unsigned char i,n,j=0;unsigned char buffer_h84=0;unsigned char buffer_l84=0;for (i=0; i156; i+)buffer_h83 = china_chari/12j;buffer_l83 = china_chari/12j+12;j+;if (j=12) j=0;for (n=0; n83; n+) buffer_hn=buffer_hn+1;buffer_ln=buffer_ln+1; LCD_set_XY(X,Y);for (n=0; n83; n+) LCD_write_byte(buffer_hn,1); LCD_set_XY(X,Y+1); for (n=0; n83; n+) LCD_write_byte(buffer_ln,1); delay_nms(T);/*-LCD_draw_map : 位图绘制函数输入参数:X、Y :位图绘制的起始X、Y坐标;*map :位图点阵数据;Pix_x :位图像素(长)Pix_y :位图像素(宽)编写日期 :2004-8-13最后修改日期 :2004-8-13 -*/void LCD_draw_map(unsigned char X,unsigned char Y,unsigned char *map,unsigned char Pix_x,unsigned char Pix_y)unsigned int i,n;unsigned char row;if (Pix_y%8=0) row=Pix_y/8; /计算位图所占行数elserow=Pix_y/8+1;for (n=0;nROW;N+)LCD_set_XY(X,Y);for(i=0; iLCD_write_byte(mapi+n*Pix_x, 1);Y+; /换行 /*-LCD_write_byte : 使用SPI接口写数据到LCD输入参数:data :写入的数据;command :写数据/命令选择;编写日期 :2004-8-10 最后修改日期 :2004-8-13 -*/void LCD_write_byte(u
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子耗材销售合同
- 双十一彩妆店活动策划书
- 工作计划清单格制作
- 电子版采购合同书常用版样式
- 食堂安全管理制度
- 食堂消防应急预案
- 供应链反欺诈管理制度
- 供暖泵站安全管理制度
- 供水公司卫生管理制度
- 供热公司保洁管理制度
- 期末试卷(五)(含答案含听力原文无听力音频)-2024-2025学年人教PEP版英语(新教材)三年级下册
- 养老护理员四级考试题库及答案
- 2024-2025 学年八年级英语下学期期末模拟卷 (苏州专用)原卷
- 湖南2024生地会考试卷及答案
- 广东省深圳市2024年中考英语真题(含答案)
- 奇瑞入职在线测评题库
- 新闻发布系统-需求规格说明书
- (完整word版)最新防雷装置检测工程质量管理手册
- DL_5000-2000_火力发电厂设计技术规程
- 四害密度监测工作实施方案
- 单相桥式整流电路通用课件
评论
0/150
提交评论