四位半多功能数字表_第1页
四位半多功能数字表_第2页
四位半多功能数字表_第3页
四位半多功能数字表_第4页
四位半多功能数字表_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、四位半多功能数字表一基本要求:在Proteus平台上设计并仿真实现一台四位半多功能数字电压表直流电压测量,并具有极性判断和自动量程转换功能。1. 直流电压测量:每秒等效采样次数3次推荐档位:I档(20mV档):最小电压分辨率:2VII档(200mV档):最小电压分辨率:20VIII档(2V档):最小电压分辨率:0.2mVIV档(20V档):最小电压分辨率:2mV2. *交流电压测量:最高频率<=10KHz的正弦波I档(20V档):最小电压分辨率:20mVII档(200V档):最小电压分辨率:200mV3. *交流参数测量:频率、有效值、峰值4. 第1项为基本要求内容,带有“*”的2、3项

2、为选做内容。5. 只能采用通用A/D、集成运放IC、51单片机等器件,不准使用专用电压测量集成电路完成系统设计。6. 推荐一个参考的系统组成框图如下:其中第一级的前置放大级推荐采用AD8551自稳零斩波运算放大器。设计过程:包括元器件选型依据(如前置放大器的设计、A/D分辨率的选择、放大器及滤波器设计、采样率计算、电源设计等)、理论分析及参数计算、系统设计(书面)。系统框图、元件选型、理论计算、模块电路设计二 系统框图整体框图数字电路部分和模拟电路量程初判模块整体电路: 1 .电压极性检测电路电压极性检测电路采用过零比较器检测负电压的方式实现的,运算放大器LM324的反向端接地,同向端通过10

3、0K电阻接输入信号。当输入的测量信号为负时比较器翻转,输出端经过电平转换成TTL信号后送给单片机PA7端口检测,通常情况下输出为高电平,为正电压状态。                                     

4、60;                   2. 电压范围粗测电路为了粗略地得到被测量的电压范围我们采用多组比较器的方式,通过阶梯式比较的方法确定输入电压的范围。其具体电路如下图(2.2.5)所示。3. 量程切换电路量程切换电路包括电压放大电路和无零漂小信号放大电路。电压变换电路电压变换电路由衰减电阻、切换继电器和运算放大器组成,对应的是衰减1/2、1/3、1/4和无零漂放大50倍,切换电路如图(2.2.7

5、)所示。电压变换到0-5V标准信号后,再由A/D转换进行采样,最后由单片机算法还原。4.差分放大电路:对输入的电压进行去除同模干扰。5.50hz陷波器:电路设计,目的是滤去工频交流点,因为电表多由工频电源提供,在50HZ频率段电压干扰很大,所以要滤去。陷波器的频谱分析图:绿色为幅频响应,红色为相位。运放模块1|2放大电路;100倍放大器:测试输出:输入10V:输入5V输入2V:2V输入800mv800mv输入80mv:输入8mv:单片机外围电路2.软件程序流程图单片机控制系统软件流程如图所示。  三 使用器件单片机系统是以89C51单片机为核心;信号采集与量程转换电路是由0

6、P一07和模拟开关CD4051所组成;积分比较与自动回零电路是由双积分型AD转换器和过零比较器所组成;开关逻辑控制电路主要元件是模拟开关CD4051;显示采用了1602字符型液晶显示器:基准电压是由TL431稳压所得。采用双电源可以实现的数模隔离。/*作品 :*/#include <reg51.h>#include <intrins.h>#define addo (20.0/65535.0)#define uchar unsigned char#define uint unsigned intunsigned long temp;bit sys=0;sbit RS =

7、P10;sbit RW = P11;sbit E = P12;sbit CS = P30;sbit BYTE=P13;sbit BUSY=P14;sbit RC = P15; sbit S1 =P16;sbit S2 =P17;unsigned char num18 = 0;unsigned char num2 = "Voltage: "/-延时-void delay(int ms)int x,y;for(x=ms;x>0;x-)for(y=110;y>0;y-);/-bit lcd_bz()bit result;RS = 0;RW = 1;E = 1;_nop

8、_();_nop_();_nop_();_nop_();result = (bit)(P2 & 0x80);E= 0;return result;/-写命令-void lcd_wcmd(unsigned char cmd)while(lcd_bz();/判断LCD是否忙碌RS= 0;RW = 0;E = 0;_nop_();_nop_();P2 = cmd;_nop_();_nop_();_nop_();_nop_();E = 1;_nop_();_nop_();_nop_();_nop_();E = 0;/-写数据-void lcd_wdat(unsigned char dat)wh

9、ile(lcd_bz();/判断LCD是否忙碌RS = 1;RW = 0;E = 0;P2 = dat;_nop_();_nop_();_nop_();_nop_();E = 1;_nop_();_nop_();_nop_();_nop_();E = 0;/-液晶初始化-void lcd_init()lcd_wcmd(0x38);delay(1);lcd_wcmd(0x0c);delay(1);lcd_wcmd(0x06);delay(1);lcd_wcmd(0x01);delay(1);void lcd_pos(unsigned char pos)lcd_wcmd(pos + 0x80);/

10、ADS7825读函数uint ADS7825_READ() uchar temp1,temp2; CS = 0; RC = 1; RC = 0; RC = 1; while(BUSY=0); RC = 1; BYTE = 0; temp1 = P0;if(temp1 & 0X80)=0)temp1 = P0; BYTE = 1; temp2 = P0; CS = 1;sys=1;else temp1 = P0; BYTE = 1; temp2 =P0; CS = 1;sys=0; return (int)(temp1<<8)|temp2); void HEXTOBCD()

11、/uint temp; temp = (unsigned long )(ADS7825_READ()*addo*1000000);/temp11=temp; num10 = temp/10000000+0X30; num11 = temp%10000000/1000000+0X30;/num12 ='.' num12 = temp%1000000/100000+0X30; num13 = temp%100000/10000+0X30; num14 = temp%10000/1000+0X30; num15 = temp%1000/100+0x30; num16 = temp%1

12、00/10+0X30; num17 = temp%10+0X30;/-主函数-void main(void)unsigned char i;S1=0;S2=0;lcd_init(); / 初始化LCDdelay(20); /设置显示位置 lcd_pos(0x00); while(i<16)lcd_wdat(num2i);delay(2);i+;while(1)uchar flage=0; /flage=0为档位不合适i = 0;S1=0;S2=0;HEXTOBCD();if (flage=0)if(temp>200000)lcd_pos(0x40);/delay(2);lcd_wd

13、at('1');/显示字符lcd_pos(0x43);/delay(2);if(sys=0)lcd_wdat('-');delay(2);else if (sys=1)lcd_wdat('+');delay(2);/lcd_wdat(num10);/显示字符delay(2);lcd_wdat(num11);/显示字?delay(2);lcd_wdat(num12);/显示字符delay(2);lcd_wdat('.');/显示字符delay(2);lcd_wdat(num13);/显示字符delay(2);lcd_wdat(num

14、14);/显示字符delay(2);lcd_wdat(num15);/显示字符delay(2);lcd_wdat(num16);/显示字符delay(2);lcd_wdat(num17);/显示字符delay(2);lcd_wdat('v');flage=1;else S1=0;S2=1;delay(50);HEXTOBCD();if (flage=0)if(temp>200000)&&(temp<2000000)lcd_pos(0x40);/delay(2);lcd_wdat('2');/显示字符lcd_pos(0x43);lcd_

15、pos(0x43);if(sys=0)lcd_wdat('-');delay(2);else if (sys=1)lcd_wdat('+');delay(2);lcd_wdat(num10);/显示字符delay(2);lcd_wdat(num11);/显示字?delay(2);lcd_wdat('.');/显示字符delay(2);lcd_wdat(num12);/显示字符delay(2);lcd_wdat(num13);/显示字符delay(2);lcd_wdat(num14);/显示字符delay(2);lcd_wdat(num15);/显

16、示字符delay(2);lcd_wdat(num16);/显示字符delay(2);lcd_wdat(num17);/显示字符delay(2);lcd_wdat('v');flage=1;else S1=1;S2=0;delay(50);HEXTOBCD();if (flage=0)if(temp>200000)&&(temp<2000000)lcd_pos(0x40);/delay(2);lcd_wdat('3');/显示字符lcd_pos(0x43);lcd_pos(0x43);if(sys=0)lcd_wdat('-&#

17、39;);delay(2);else if (sys=1)lcd_wdat('+');delay(2);lcd_wdat(num11);/显示字?delay(2);lcd_wdat(num12);/显示字符delay(2);lcd_wdat(num13);/显示字符delay(2);lcd_wdat('.');/显示字符delay(2);lcd_wdat(num14);/显示字符delay(2);lcd_wdat(num15);/显示字符delay(2);lcd_wdat(num16);/显示字符delay(2);lcd_wdat(num17);/显示字符del

18、ay(2);lcd_wdat('m');delay(2);lcd_wdat('v');flage=1;else S1=1;S2=1;delay(50);HEXTOBCD();if (flage=0)if(temp<2000000)lcd_pos(0x40);/delay(2);lcd_wdat('4');/显示字符lcd_pos(0x43);lcd_pos(0x43);if(sys=0)lcd_wdat('-');delay(2);else if (sys=1)lcd_wdat('+');delay(2);/lcd_wdat(num10);/显示字符delay(2);lcd_wd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论