1、2008 年山东省“ZLG 杯”大学生电子设计竞赛12008 年山东省大学生电子设计大赛 编号 F 乙 7602 F 题 多功能计数器 参赛学生:周明明 杨金伟 曹旗开指导老师:刘晓明 孙玉梅 田敬成参赛院校:烟 台 南 山 学 院所学专业:应 用 电 子 技 术2008 年山东省“ZLG 杯”大学生电子设计竞赛22008 年山东省“ZLG 杯”大学生电子设计竞赛F 题 简易多功能计数器摘要本设计共分电源、单片机控制模块、信号前向通道处理模块、键盘、液晶显示模块、模数(A/D)转换模块、语音播报模块、测温及时钟八个模块。以 AT89C52 单片机为控制模块核心,对多功能计数器可编程控制,实现周
2、期、频率、时间间隔的测量。同时可实现对测量结果、时钟、温度及被测信号幅度的液晶显示及语音播报。关键词:多功能 周期 频率 时间间隔 测量 语音播报Abstract The design consists of power, MCU control module, before the signal to channel processing module, keyboard, LCD Module (A / D) converter modules, voice on several modules, temperature and clock module eight modules. AT
3、89C52 MCU to control module for the control of the core, the counter-programmable control, and cycle, frequency, time interval measurement. At the same time can be realized on the measurement results, clock, temperature of the liquid crystal display and voice broadcast.Key words: cycle-time interval
4、 measurement frequency voice broadcast2008 年山东省“ZLG 杯”大学生电子设计竞赛3目 录摘要-2一 方案设计与论证-41.1计数法测量周期原理-41.2计数法测量时间间隔原理-51.3总体设计方案比较与选择-5二 模块电路设计及比较-72.1 电源模块-72.2 前向信号通道处理模块-82.3 液晶显示模块-92.4 键盘控制模块-112.5 A/D 转换模块 -112.6 语音报温模块(发挥)-122.7 时钟模块(发挥)-132.8 测温模块(发挥)-14三 软件方案设计-153.1 主程序流程方框图-153.2 语音播报程序方框图-163.3
5、 Keil C 程序-17四 数据处理-224.1 测试数据分析-224.2 实测中误差分析与处理-22五 电路原理图-245.1 系统原理图-245.2 系统 PCB 图-255.3 Multisim 仿真图-265.4 作品实物图-292008 年山东省“ZLG 杯”大学生电子设计竞赛4参考文献-30一.总体方案设计比较与选择1.1 计数法测量周期原理周期是频率的倒数,电子计数器能测量信号周期,通过计算得到待测信号的频率。具体原理如下:图 1.1 计数法测量周期原理流程图当输入信号为正弦波时,波形如图 22 所示。可以看出,被测信号经整形、M 分频后,形成控制闸门脉冲信号,其宽度等于被测信
6、号的周期 MTx。晶体振荡器的输出经分频后得到的频率为 fc 的标准信号,其周期为 Tc,加入主门输入端,在闸门时间 Tx 内,标准频率脉冲信号通过闸门形成技术脉冲,送至计数器计数,经译码显示计数值 N。由图 2.2所示的波形图可得2008 年山东省“ZLG 杯”大学生电子设计竞赛5MTx=NTc; Tx=NTc/ M当 Tc 为一定时,计数结果可直接表示为 Tx 值。例如Tc=1us, N=1000,M=1 时,则Tx=1000us=1ms,fx=1kHz ;Tc=1us,N=1000,M=10 时,则Tx=100us=0.1ms,fx=10kHz。在实际电子计数器中,根据需要,M 可以有几
7、种数值,用有若干个档位的开关实施转换,显示器能自动显示时间单位和小数点,使用起来非常方便。1.2 计数法测量时间间隔原理单片机定时器/计数器的方式控制寄存器 TMOD 中的GATE 位=1 时,可以很方便的进行 INT0 引脚的外部输入信号的时间间隔测量。将被测信号由 INT0 引脚的外部输入,当输入信号为高电平时启动定时,高电平结束自动停止计数,计算后可得被测信号的时间间隔,当测量时间间隔时输入信号经数据选择器 74LS153 不分频直接送 INT0 引脚。1.3 多功能计数器总体设计方案方案一:采用多种数字逻辑电路来实现原理图中的逻辑控制、主门、门控、计数单元的设计要求,这样设计的电路整体
8、比较复杂,而且不宜完成发挥部分的功能要求。所以方案一不采用。方案二:可以采用 FPGA 来实现原理图中的逻辑控制、主门、门控、计数单元的设计要求,并且设计方便,但由于对 FPGA 的技术原理掌握不够熟练,所以放弃方案二。方案三:系统采用 89c52 为核心的单片机控制系统,实现原理图中的逻辑控制、主门、门控、计数、晶振、分频单元的设计要求,多功能计数器系统的基本原理流程框图 如 图 1.1。2008 年山东省“ZLG 杯”大学生电子设计竞赛6单片机晶振产生的 12MHz 经内部 12 分频后作为基准信号,由被测输入整形后信号的下降沿触发单片机的外部中断 INT0,从而形成闸门脉冲。前一周期信号
9、的下降沿触发中断后,在中断服务程序中开启定时器 T0 进行定时;此周期信号的下降沿再次触发中断后,在中断服务程序中关闭定时器。计算两次中断的时间间隔,即可得被测信号的周期 Tx,而 fx=1/Tx。单片机定时器/计数器的方式控制寄存器 TMOD 中的 GATE 位=1 时,可以很方便的进行INT0 引脚的外部输入信号的时间间隔测量。且单片机的控制电路很容易实现扩展,比如语音模块、测温 I2C 模块、时钟模块、A/D 模块等。依据大赛题目的设计要求,并结合自身情况采用方案三。通过测量周期方法来实现对周期、频率、时间间隔的测量,并能所测值显示,测量值语音播报、温度显示、时间显示、显示被测信号的峰值
10、、记忆 10 个历史数据并可以随时查看的功能。2008 年山东省“ZLG 杯”大学生电子设计竞赛7图 1.2 方案原理模块框图二 模块电路设计及比较系统硬件以 89c52 单片机为核心,外围包括电源模块、信号处理模块、液晶显示模块、键盘模块、A/D 转换模块、语音报数模块、及时钟芯片模块。2.1 电源模块稳压电源由电源变压器、整流电路、滤波电路和稳压电路组成,如图 2.12008 年山东省“ZLG 杯”大学生电子设计竞赛8图 2.1 电源方框图a 整流和滤波电路:整流作用是将交流电压 U2变换成脉动电压 U3。滤波电路一般由电容组成,其作用是脉动电压 U3中的大部分纹波加以滤除,以得到较平滑的
11、直流电压 U4。b 稳压电路:由于得到的输出电压 U4受负载、输入电 压 和 温度的影响不稳定,为了得到更为稳定电压添加了稳压电路,从而得到稳定的电压 U0。图 2.3 中电路提供+5V 的电源;主要用于单片机(AT89C52) 、液晶显示(包括74LS164,CC7107) 、键盘、 。图 2.2 5V 电源原理图图 2.3 +5V 电源原理图2.2 前向信号通道处理模块方案一:OP07 比较器整形,74LS161 计数器分频2008 年山东省“ZLG 杯”大学生电子设计竞赛9实验验证此电路整形输出波形前后沿均上冲,毛刺较多,易引起误触发。而计数器74LS161 为十六进制计数,需加与非门改
12、为十进制,电路略复杂,后找到 CD4017 十进制计数器,取代了 74LS161。此方案不采用。方案二:施密特整形,计数器分频实验验证此电路在 200K 以下时,波形良好,但超出 200K 时输出信号幅度大幅衰减,不能满足后继电路的设计要求。从而无法实现发挥部分测频要求。故此方案不采用。 方案三:非门整形,计数器分频2008 年山东省“ZLG 杯”大学生电子设计竞赛10图 2.4 前向信号通道原理图分波段测量:第四波段:1MHz10MHz 1000 分频10MHz1000 分频10 4Hz10KT=0.1ms启用中断、定时器1MHz1000 分频10 3Hz1K T=1ms 启用中断、定时器第
13、三波段:100KHz 1MHz 100 分频1MHz100 分频10 4Hz10KT=0.1ms启用中断、定时器100KHz100 分频10 3Hz1K T=1ms 启用中断、定时器第二波段:10KHz100KHz 10 分频100KHz10 分频10 4Hz10KT=0.1ms 启用中断、定时器10KHz10 分频10 3Hz1K T=1ms 启用中断、定时器第一波段:0.01Hz10KHz 1 分频10KHz 1 分频10 4Hz10KT=0.1ms启用中断、定时器0.01Hz1 分频10 -2HzT=100s启用中断、定时器2.3 显示模块方案一:LED 七段数码管 电路需译码和驱动,电
14、路结构较复杂,电路布线连接繁杂,而且显示频率,周期时不是太方便,显示内容单一且不美观。所以对本电路设计要求不宜采用2008 年山东省“ZLG 杯”大学生电子设计竞赛11图 2.5 数码显示模块原理图方案二:1602LCDLCD1602 字符型液晶主控制驱动电路为 HD44780,可以显示 32 个(16*2)5*8 点阵字符,模块结构紧凑轻巧,装配容易,单+5V 电源供电,低功耗长寿命高可靠性。硬件部分简单,符合设计要求,能快速简便的显示周期、频率、时间,而且做工美观,显示效果较好。2008 年山东省“ZLG 杯”大学生电子设计竞赛12用软件编写更加方便系统的扩展,节省了更多的 I/O 端口。
15、综合对两种方案的分析,我们采用方案二。图图 2.6 液晶显示模块2.4 键盘控制模块图 2.7 键盘控制原理图键盘对单片机输入数据,键盘为单行排列,用 AT89c52 的 P1 扩展口接键盘,以P1.0P1.4 作独立按键。键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。通过软件查表,查出该键的功能。2.5 A/D 转换模块采用了 TLC1543。TLC1543 是多通道,低价格十位逐次 A/D 逼近模数转换器。采用串行通信接口,具有输入通道多,性价比高,易于和单片机接口。引脚图 2.8。芯片内部有一个 14 通道多路选择器可选择 11
16、 个模拟输入通道或 3 个内部自测电压的任意一个进行测试,2008 年山东省“ZLG 杯”大学生电子设计竞赛13可广泛应用于各种数据采集系统。TLC1543 的三个控制输入端 CS、I/O 、Clock、ADDRESS和一个数据输出段 DATA OUT 遵循串行外设接口 SPI 协议,要求微处理器具有 SPI 接口。工作过程分两个周期:访问周期和采样周期。工作时 CS 必须置低电平, CS 为高电平时 I/O 、Clock 、ADRESS 被禁止,同时 DATA OUT 为高阻状态。当 CPU 使 CS 变低时,TLC1543开始数据的转换。 图 2.8 TLC1543 引脚图 2.6 语音报
17、数模块(发挥)Isd2560 是系列单片语音录放集成电路的一种。这是一种永久记忆型语音录放电路,录音时间为,可重复录放万次。该芯片采用多电平直接模拟量存储专利技术,每个采样值可直接存储在片内单个单元中,因此能够非常真实、自然地再现语音、音乐、音调和效果声,从而避免了一般固体录音电路因量化和压缩造成的量化噪声和“金属声”。该器件的采样频率为,同一系列的产品采样频率越低,录放时间越长,但通频带和音质会有所降低。此外,还省去了和转换器。其集成度较高,内部包括前置放大器、内部时钟、定时器、采样时钟、滤波器、自动增益控制、逻辑控制、模拟收发器、解码器和 字节的。内部存储单元均匀分为行,有个地址单元,每个
18、地址单元指向其中一行,每一个地址单元的地址分辨率为 。此外,还具备微控制器所需的控制接口。通过操纵地址和控制线可完成不同的任务,以实现复杂的信息处理功能,如信息的组合、连接、设定固定的信息段和信息管理等。可不分段,也可按最小段长为单位来任意组合分段。.本系统中的语音芯片工作在放音状态下,其片内的信息可通过专用的2560录音2008 年山东省“ZLG 杯”大学生电子设计竞赛14编程器录音,因此放音质量非常好,也可以通过它来读取每段语音的存储地址。本设计中分段存储:0,1,2,3,4,5,6,7,8,9,十,百,千,兆,赫兹,度,伏特等语音信息。根据测量数据进行组合输出。2.7 时钟模块(发挥)
19、DS12C887 实时时钟芯片功能丰富,可以用来直接代替IBM PC 上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、 DS12887 相兼容。由于 DS12C887 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS12C887 中自带有锂电池,外部掉电时,其内部时间信息还能够保持10 年之久;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD 码表示;DS12C887 中带有 128 字节RAM,其中有11 字节RAM用来存储时间信息,4 字节RAM用来存储DS12C887 的控制信息,称为控
20、制寄存器,113 字节通用RAM 供用户使用;此外用户还可对DS12C887 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。2008 年山东省“ZLG 杯”大学生电子设计竞赛15图2.9 时钟信号模块DS12C887 可以轻松记忆存储 10 个历史记录数据,并可以随时调用查看。时钟芯片DS12C887 功能丰富,使用简单,可能性高,是时间产生电路的良好选择。2.8 测温模块(发挥) DS18B20 “一线总线” 数字化温度传感器是 DALLAS 最新单线数字 温度传感器, 支持“一线总线 ”接口,测量温度范围为 -55C+125C,在-10+85C 范围内,精度为0.5C
21、 。DS18B20 的精度较差为 2C 。现场温度直接以“一线总线 ”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,支持 3V5.5V的电压范围,使系统设计更灵活、方便。而且价格便宜,体积较小。 DS18B20 可以程序设定 912 位的分辨率,精度为0.5C。可选更小的封装方式,更宽的电压适用范围。分辨率设定,及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。DS18B20 的性能稳定,性价比非常高。DS18B20 能软件兼容,省略了存储用户定义报警温度、分辨率参数的 EEPROM,精度降低为2C ,适用于对性能要求不高,成本控制严格的应用,是经济型产品
22、。 继“一线总线 ”的早期产品后,DS18B20 开辟了温度传感器技术的新概念。可以构建的经济的测温系统。测量结果直接输出数字温度信号,以“ 一线总线” 串行传送给 CPU,同时可传送 CRC 校验码,具有极强的抗干扰纠错能力。2008 年山东省“ZLG 杯”大学生电子设计竞赛16三 软件方案设计3.1 主程序流程方框图开 始初 始 化无 显示时钟 键盘识别 有k=5 k=2 k=1 k=3 k=4 启动测量 调时钟 测量功能的设定 测温 测峰值2008 年山东省“ZLG 杯”大学生电子设计竞赛17k=3 k=4显示测量值 + - 显示测量值播报测量结果3.2语音播报子程序流程方框图开始数据选
23、择语音起始点 逐位放音输出 结束2008 年山东省“ZLG 杯”大学生电子设计竞赛18语音播报子程序3.3Keil C 程序#include #include #include /使用 XBYTE 必须使用的头文件 #include main()Dy_Qu=0;JQ_int0=0;Dy_T1CountL=0;flag_AddCycle=0;Dy_Frequence=0;Reg_A=0x20; Reg_B=0x06; lcd1602init( );lcd_clear();TMOD=0x12; TH0=0;TL0=0;TH1=-2400/256;TL1=-2400%256;SCON=0x40;PC
24、ON=0;IT0=1;EA=1;PT0=1;ET0=0; ET1=1;TR0=0;2008 年山东省“ZLG 杯”大学生电子设计竞赛19TR1=1;while(1) if(flag_AddCycle)Dy_Frequence=0;Dy_Cycle=0; Dy_Cycle=(Dy_T1CountL*255+TL0)/30;Dy_Frequence=1000000/Dy_Cycle; flag_AddCycle=0;delay(400);display();void display()uchar i;switch(Dy_disMode)case 0:lcd_string( “FrQ:0.01Hz-
25、10MHz“, 1);lcd_string( “Value:“, 2);translate(Dy_Frequence);wrd(0x30+Dy_SMwei);wrd(0x30+Dy_Mwei);wrd(0x30+Dy_SWwei);wrd(0x30+Dy_Wwei);wrd(0x30+Dy_Qwei); wrd(0x30+Dy_Baiwei);wrd(0x30+Dy_Shiwei); wrd(0x30+Dy_Gewei); wrd(H); wrd(z);break;case 1:lcd_string( “CyQ:1us-10s“, 1);lcd_string( “Value:“, 2);tra
26、nslate(Dy_Cycle);wrd(0x30+Dy_SMwei);wrd(0x30+Dy_Mwei);wrd(0x30+Dy_SWwei);2008 年山东省“ZLG 杯”大学生电子设计竞赛20wrd(0x30+Dy_Wwei);wrd(0x30+Dy_Qwei); wrd(0x30+Dy_Baiwei);wrd(0x30+Dy_Shiwei); wrd(0x30+Dy_Gewei); wrd(u); wrd(s);break;case 2:lcd_string( “InQ:1us-10s“, 1);lcd_string( “Value:“, 2);translate(Dy_Cycle)
27、;wrd(0x30+Dy_SMwei);wrd(0x30+Dy_Mwei);wrd(0x30+Dy_SWwei);wrd(0x30+Dy_Wwei);wrd(0x30+Dy_Qwei); wrd(0x30+Dy_Baiwei);wrd(0x30+Dy_Shiwei); wrd(0x30+Dy_Gewei); wrd(u); wrd(s);break;/* case 3:break; */case 4:lcd_string( “Beijing Time: “, 1);lcd_string(“ “,2);/if(Dy_disTime=200)/i=Dy_Hour;Ttranslate(Dy_Hou
28、r);wrd(0x30+Dy_CH);wrd(0x30+Dy_CL);wrd(:);i=Dy_Minute;Ttranslate(Dy_Minute);wrd(0x30+Dy_CH);wrd(0x30+Dy_CL);wrd(:);i=Dy_Second;Ttranslate(Dy_Second);wrd(0x30+Dy_CH);wrd(0x30+Dy_CL);2008 年山东省“ZLG 杯”大学生电子设计竞赛21/ /* elseif(Dy_Qu=1)wrd(0xff);wrd(0xff);elseTtranslate(Dy_Hour);wrd(0x30+Dy_CH);wrd(0x30+Dy_
29、CL);wrd(:);if(Dy_Qu=2)wrd(0xff);wrd(0xff);elseTtranslate(Dy_Minute);wrd(0x30+Dy_CH);wrd(0x30+Dy_CL);wrd(:);if(Dy_Qu=3)wrd(0xff);wrd(0xff);elseTtranslate(Dy_Second);wrd(0x30+Dy_CH);wrd(0x30+Dy_CL); */wrd(0x20);wrd(0x20);wrd(0x20);2008 年山东省“ZLG 杯”大学生电子设计竞赛22wrd(0x20);break;case 5:lcd_string( “Temperat
30、ure: “, 1);lcd_string( “VALUE:“, 2);Ctranslate(75.3);wrd(0x30+Dy_Baiwei);wrd(0x30+Dy_Shiwei);wrd(.);wrd(0x30+Dy_Gewei);wrd(0x86);wrd(C);wrd(0x20);wrd(0x20);wrd(0x20);wrd(0x20);default:break; void serv_T1() interrupt 3 using 3TH1=-(2500/256);TL1=-(2500%256);Dy_disTime=Dy_disTime+1;if(Dy_disTime=400)D
31、y_disTime=0;serv_key(); void serv_key()P1=0xff;Dy_KeyValue=P1;Dy_KeyValue=Dy_KeyValue|0xe0;Dy_KeyValue=Dy_KeyValue;if(Dy_KeyValue!=0) /*key down*/JQ_keydown=JQ_keydown+1;JQ_keyup=0;if(JQ_keydown=3)flag_keydown=1;KeyValue=Dy_KeyValue;2008 年山东省“ZLG 杯”大学生电子设计竞赛23 else /*key up*/JQ_keydown=0;if(flag_key
32、down)JQ_keyup=JQ_keyup+1;elseJQ_keyup=0;if(JQ_keyup=3)flag_keydown=0;switch(KeyValue) case 0x1:Key_Func();break;case 0x2:Key_Qu();break;case 0x4:Key_Add();break;case 0x8:Key_Dec();break;case 0x10:Key_Start();default:break; void serv_EX0() interrupt 0 using 1JQ_int0=JQ_int0+1;switch(JQ_int0)case 1:TR
33、0=1; break;case 31:TR0=0;ET0=0;EX0=0; flag_AddCycle=1;JQ_int0=0;break;default:break; void serv_T0() interrupt 1 using 22008 年山东省“ZLG 杯”大学生电子设计竞赛24/* if(Dy_T1CountL=65535)Dy_T1CountL=0;Dy_T1CountH=Dy_T1CountH+1; else */Dy_T1CountL=Dy_T1CountL+1; 四 数据处理4.1 测试数据分析1.在测量周期时,由于 Tx 和 Tc 之间不同步,所以计数值 N 带有1 量
34、化误差;此外,由于晶振的不确定度,时标周期 Tc 也存在误差;最后由于被测输入信号前向通道整形也存在触发误差。对误差累积和合成的测周期误差的计算公式如下:Tx/Tx=Nx/N-Tc/Tc+ 上式右边第一项为量化误差的相对值,其中计数误差Nx=1;第二项为时标的相对误差;第三项为触发误差 。为消除第一项误差采用提高系统晶振的方法,并采用多周期测量从而增大计数值 N;为减小第二项误差采用温补晶振;为消除第三项触发误差我们采用多周期测量(K1) ,实测中采用 K=30;同时为消除系统合成误差采用多次测量取平均值的方法:N=5 NiT1X2. 在测量时间间隔时XTS2008 年山东省“ZLG 杯”大学
35、生电子设计竞赛25当测量 0.1ms 时误差为 1%,测量 1s 时误差为 ,采用温补晶振后完全达到发挥部610分误差要求。4.2 实测中误差分析与处理 充分考虑上述系统合成误差因素编程测试中依然存在误差,分析并采取措施如下:1.测量 1000Hz,显示 1056Hz多次测量误差均较大,修改程序将定时器 T0 设为高优先级中断,其他为低级后精度提升。测量 1000Hz,显示 1002Hz2.多次测量后进行系统误差修订千分之一。数据测量结果显示,频率分界处误差稍大,但仍在设计要求的范围内,即全频段误差达标。五 电路原理图5.1 系统原理图本系统以单片机最小系统为核心,进行外围的扩展模块,以下是系统的原理图和 PCB 版图。2008 年山东省“ZLG 杯”大学生电子设计竞赛26图 5.1 单片机最小系统模块5.2 系统 PCB 图2008 年山东省“ZLG 杯”大学生电子设计竞赛27图 5.2 系统 PCB 图5.3 Multisim 仿真原理图和仿真结果2008 年山东省“ZLG 杯”大学生电子设计竞赛282008 年山东省“ZLG 杯”大学生电子设计竞赛292008 年山东省“ZLG 杯”大学生电子设计竞赛30图 5.4 测量结果与真实值的比较