




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2011年春季西南交通大学大学生电子设计竞赛设计报告有效值检波器2011年5月27日有效值检波器引言单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机因为体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,被广泛应用于仪器仪表中。目前市场上的便携式仪表大多都是以单片机为核心。 LCD1602为工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)单片机加LCD1602液晶显示器,基本可以满足本次单片机控制的数显频率计的设计与制作。ADC0832是NS(National Semiconductor)公司生产的串行接口8位A/D转换器,通过三线接口与单片机连接,功耗低,性能价格比较高,适宜在袖珍式的智能仪器仪表中使用。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。芯片具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件连接和处理器控制变得更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。一.方案认证1.单片机部分:考虑到电子设计竞赛的内容和设计的目的,决定选取STC89C52。此单片机虽然属于低端机型,但足以满足设计的要求。选取其它的高端机型有些浪费。 所以使用STC89C52。2.显示部分:此次电子设计大赛要求地显示部分能够完成数字和常用字符的显示。若用数码管则只能显示0-F,不能显示其它的字符及符号。所以不能用数码管。而选用LCD1602恰好符合要求。所以应用LCD1602。3.A/D转换部分:ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。芯片具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件连接和处理器控制变得更加方便。通过DI 数据输入端,可以轻易的实现通道功能的选择。所以应用ADC0832。二、硬件电路的设计1.工作原理及系统框图此次课程设计的要求如下:一方面,单片机要通过I/O中接收输入信号,另一方面要通过I/O口控制液晶的初始化、显示方式以及要显示的字符。因此,设计必须以单片机为核心,显示器为外围设备。硬件上,单片机通过电路板电路与液晶显示电路相连;软件上,单片机要下载完整的程序对二者进行适时的控制。5V单片机液晶模块电源模块5V12V频率信号输入电压信号输入单片机控制的数显频率计电路系统框图从图中可以看出,单片机控制的有效值检波器的主要功能模块分为4类:l 液晶显示:是指在单片机的控制下,液晶模块显示被测信号的频率与有效值。l 电源模块:为单片机和液晶显示器提供工作电源。l A/D模块:将交流电压由模拟量转换为数字量。l 放大模块:将微小交流电压量放大。单片机电路主要是通过编写程序来控制硬件电路。因此,可以通过改变程序,提高测量精度。2.各部分电路设计2.1 单片机控制电路单片机控制电路由STC89C52单片机、晶振时序电路、复位电路构成。2.2.1 单片机STC89C52 STC89C52 是一种带8K 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,STC89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本次设计主要用到单片机4个I/O口中的3个,其中P3口及P1.0-P1.2与液晶显示器相接,18、19脚外界晶振电容为单片机提供时序。 2.2.2 晶振时序电路 XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。2.2.3 复位电路常见的复位电路有两种:上电复位电路和开关复位电路,可根据电路的需要选择复位电路。2.3 液晶显示电路字符型液晶显示模块LCD1602是一种用5x7点阵图形来显示字符的液晶显示器,其引脚功能如下表所示。编号符号引脚说明编号符号引脚说明1VSS电源地9D2Data I/O2VDD电源正极10D3Data I/O3VL液晶显示偏压信号11D4Data I/O4RS数据/命令选择端(H/L)12D5Data I/O5R/W读写选择端(H/L)13D6Data I/O6E使能信号14D7Data I/O7D0Data I/O15BLA背光源正极8D1Data I/O16BLK背光源负极读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无根据1602液晶显示器的读写时序操作,编写相应的单片机驱动程序,便可以实现液晶显示器的显示输出。2.4 A/D转换电路 ADC0832有DIP和SOIC两种封装,DIP封装的ADC0832引脚排列如图所示。各引脚说明如下:CS片选端,低电平有效。CH0,CH1两路模拟信号输入端。DI两路模拟输入选择输入端。DO模数转换结果串行输出端。ADC0832引脚图CLK串行时钟输入端。Vcc/REF正电源端和基准电压输入端。GND电源地。2.4 电压放大及整流电路 在本设计中,采用LM324运放组成放大电路,对微量交流电压信号进行放大。同时,对交流信号全波整流。三、系统的软件设计软件调试主要是编写相应的程序,在电路仿真软件上仿真,直至到预期效果。1.程序框图主程序及各子程序的框图见图。开始初始化 被测信号输入测量电压和频率显示结束 主程序框图 LCD程序流程图2.程序清单根据程序流程图,编写相应的子程序和主程序。程序清单见附录3。四、测试数据1.同一频率在不同电压时的测量。40mV100mV500mV1V5V20 Hz200.0%200%200%200%200%50 Hz500.0%500%524%500%536%100Hz1000.0%1077%1011%1000%1011%200Hz1990.5%2042%2000%1990.5%1990.5%500Hz5265.2%4990.2%4990.2%4990.2%4980.4%1k Hz10040.4%9980.2%9980.2%9990.1%9980.2%2k Hz19950.2%19970.1%19930.3%19950.2%19980.1%5k Hz 49900.2%49990.1%49860.3%49900.2%49830.4%10k99760.2%99860.1%99920.1%99820.1%99750.2%20k199870.6%199780.7%199940.1%199860.6%199551%100k999670.1%999360.1%999670.1%999570.1%998490.1%误差平均在0.2%以内。2.同一电压在不同频率时的测量。10 Hz100 Hz1000 Hz10KHz50KHz50 mV50.81.4%50.81.4%50.41.4%484%468%100 mV106.46.4%1066%1044%928%8416%200 mV2136.5%2105%2042%2010.5%1895.5%500 mV5020.4%5000%5000%5000%4588.2%1V1.033%1.022%1.011%1.011%0.928%2V2.10.5%2.042%2.010.5%1.943%1.857.5%5V5.081.6%5.000%4.921.6%4.762.8%4.529.6%20V200%200%200%200%18.50.7%误差平均在3%以内。五心得体会在这次电子设计竞赛中我们使用了STC89C52单片机。这让我对于单片机有了更多的了解。同时在找资料的过程中学到了许多单片机课本上没有讲到的知识。在这次电子设计竞赛过程中,我们通过在原有的输入系统进行了改进,使之测量频率和电压有效值精度更高,使之成为一个更加适用,功能更加完备的属于自己的一个系统。在这个过程中让我对于C语言的编写有了更深入的体会。在这次电子设计竞赛中,虽然花费了大量的时间和精力,但我却学到了许多在理论课程中无法学到的知识。最重要的是让我懂得了合作的重要性,学会了如何与人更好的合作。六、参考文献2李广弟.单片机基础.北京:北京航空航天大学出版社,19943阎石.数字电子技术基础(第三版). 北京:高等教育出版社,1989 1版 6张毅刚等编著.单片机原理及应用. 北京:高等教育出版社.2004年1月第1版附录1 电路简图附录2 元器件清单 元器件描述数量STC89C52单片机1液晶显示器LCD16021按键开关2电阻1003电容342uF1晶振11.0592MHz1ADC08321电路板210mm铜柱10mm12LM3241电位器103,1046拨码开关6合11指示灯红色1二极管IN40074附录3 程序清单:#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#define uchar unsigned char #define uint unsigned int sbit CS=P12; /将CS位定义为P3.4引脚sbit CLK=P10; /将CLK位定义为P1.0引脚sbit DIO=P11; /将DIO位定义为P1.1引脚unsigned char code digit10=0123456789; /定义字符数组显示数字unsigned char code Str=Volt= ; /说明显示的是电压/以下是对液晶模块的操作程序sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚/频率uchar code table1= Freq= Hz ;unsigned char codetable2=0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39;bit flag; /定义标志位,确定是否到了1sunsigned long x; uchar T0count; /从T0的计数单元中读取计数的数值 uchar timecount; void delay(uint z)uint x,y;for(x=z;x0;x-) for(y=110;y0;y-);void write_date(uchar date) /写数据 P0=0xFF;delay(5);RS=1;E=0;P0=date;delay(5);E=1;delay(5);E=0; void write_com(uchar com) P0=0xFF;delay(5);RS=0;E=0;P0=com;delay(5);E=1;delay(5);E=0; void init() /写位 uchar num;E=0;write_com(0x80+0x40);for(num=0;num16;num+) write_date(table1num); delay(5); void LcdPos(uchar xPos,uchar yPos)/设置第(xPos,yPos)个字符的DDRAM地址 unsigned char tmp; xPos&=0x0f; /x位置范围是015 yPos&=0x01; /y位置范围是01 if(yPos=0) /显示第一行 tmp=xPos; else tmp=xPos+0x40; tmp|=0x80; write_com(tmp); void write_char(uchar c,uchar xPos,uchar yPos) LcdPos(xPos,yPos); write_date(c); void delay1ms() /函数功能:延时1ms unsigned char i,j; for(i=0;i10;i+) for(j=0;j33;j+) ; void delaynms(unsigned char n)/函数功能:延时若干毫秒 ,入口参数:n unsigned char i; for(i=0;in;i+) delay1ms(); bit BusyTest(void) /函数功能:判断液晶模块的忙碌状态 bit result; RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给result E=0; /将E恢复低电平 return result; /函数功能:将模式设置指令或显示地址写入液晶模块void WriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 void WriteAddress(unsigned char x) /函数功能:指定字符显示的实际地址 WriteInstruction(x|0x80); /显示位置的确定方法规定为80H+地址码x void WriteData(unsigned char y) /函数功能:将数据(字符的标准ASCII码)写入液晶模块 while(BusyTest()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 void LcdInitiate(void) /函数功能:对LCD的显示模式进行初始化设置 delaynms(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 WriteInstruction(0x38); /显示模式设置:162显示,57点阵,8位数据接口 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x38); delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x38); /连续三次,确保初始化成功 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x0c); /显示模式设置:显示开,无光标,光标不闪烁 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x06); /显示模式设置:光标右移,字符不移 delaynms(5); /延时5ms,给硬件一点反应时间 WriteInstruction(0x01); /清屏幕指令,将以前的显示内容清除 delaynms(5); /延时5ms,给硬件一点反应时间 void display_volt(void) /函数功能:显示电压符号数功能:显示电压符号 unsigned char i; WriteAddress(0x01); /写显示地址,将在第2行第1列开始显示 i = 0; /从第一个字符开始显示 while(Stri != 0) /只要没有写到结束标志,就继续写 WriteData(Stri); /将字符常量写入LCD i+; /指向下一个字符 void display_dot(void)/函数功能:显示电压的小数点 WriteAddress(0x09); /写显示地址,将在第1行第10列开始显示 WriteData(.); /将小数点的字符常量写入LCD void display_V(void) /函数功能:显示电压的单位(V) WriteAddress(0x0d); /写显示地址,将在第2行第13列开始显示 WriteData(V); /将字符常量写入LCD void display1(unsigned char x)/函数功能:显示电压的整数部分 WriteAddress(0x08); /写显示地址,将在第2行第7列开始显示 WriteData(digitx); /将百位数字的字符常量写入LCD void display2(unsigned char x)/函数功能:显示电压的小数数部分 unsigned char i,j; i=x/10; /取十位(小数点后第一位) j=x%10; /取个位(小数点后第二位) WriteAddress(0x0a); /写显示地址,将在第1行第11列开始显示 WriteData(digiti); /将小数部分的第一位数字字符常量写入LCD WriteData(digitj); /将小数部分的第一位数字字符常量写入LCDunsigned char A_D() /函数功能:将模拟信号转换成数字信号 unsigned char i,dat; CS=1; /一个转换周期开始 CLK=0; /为第一个脉冲作准备 CS=0; /CS置0,片选有效 DIO=1; /DIO置1,规定的起始信号 CLK=1; /第一个脉冲 CLK=0; /第一个脉冲的下降沿,此前DIO必须是高电平 DIO=1; /DIO置1, 通道选择信号 CLK=1; /第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0 CLK=0; /第二个脉冲下降沿 DIO=0; /DI置0,选择通道0 CLK=1; /第三个脉冲 CLK=0; /第三个脉冲下降沿 DIO=1; /第三个脉冲下沉之后,输入端DIO失去作用,应置1 CLK=1; /第四个脉冲 for(i=0;i8;i+) /高位在前 CLK=1; /第四个脉冲 CLK=0; dat=1; /将下面储存的低位数据向右移 dat|=(unsigned char)DIO; /将输出数据DIO通过或运算储存在dat最低位 CS=1; /片选无效 return dat; /将读书的数据返回 void main() /函数功能:主函数 while(1) unsigned int AD_val; /储存A/D转换后的值 unsigned char Int,Dec; /分别储存转换后的整数部分与小数部分 LcdInitiate(); /将液晶初始化 delaynms(5); /延时5ms给硬件一点反应时间 display_volt(); /显示温度说明 display_dot(); /显示温度的小数点 display_V(); /显示温度的单位 RW=0; init(); TMOD=0x15; /T0工作为16位计数器(方式1),T1工作方式为16位定时器 TH0=0; /计数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基因编辑专利无效宣告代理与咨询服务协议
- 讲课的体态与装扮规范
- 2025年安全月活动规划
- 儿科临床医学概论
- brand kpis fuer autos citroen in deutschland-外文版培训课件(2025.2)-worldreportmarket
- 八年级上册美术《第14课 如何欣赏书法作品(选修)》课件
- 教务处教师培训体系构建
- 养殖业成本管理
- 《谷歌企业文化》课件
- 呼吸道管理指南
- 潜在失效模式及后果分析(FMEA)作业规范全套
- 社会稳定风险评估 投标方案(技术标)
- 肝硬化伴胃底静脉曲张破裂出血的护理查房
- 2024年江苏省凤凰出版传媒集团招聘笔试参考题库含答案解析
- 高三作文思辨性训练公开课
- 2023年高中劳动节主题班会课件
- 【语文】四川省成都市泡桐树小学四年级下册期末复习试卷(含答案)
- 友善用脑课堂教学范式介绍
- 违反公务用车管理制度谈心谈话记录内容
- 办理证件协议书
- PAC(流产后关爱)项目之流产与避孕培训课件
评论
0/150
提交评论