1、并通过STC89C51单片机进行频率测量和计算以及对系统的控制,实现对电阻、电容的测试并在LCD1602上显示其测试结果。 1.3项目进展情况:1.3.1资料收集 通过在图书馆的查询和网上浏览,我们找到了有关单片机的书籍MCS_51单片机原理及应用,51单片机系统开发与实践和单片机微型计算机原理、借口及应用;同时通过电子实验的课题学习,我们掌握了555多谐振荡器的功能。1.3.2硬件资源规划和购买 根据设计所需,资金问题及市场上资源购买可行性的综合考虑,我们把将要购买的物品选定为51单片机,555芯片,显示屏,电阻电容若干等等。1.3.3硬件设计及仿真1.3.3.1电阻测量 本设计采用555多
2、谐振荡器的振荡频率由构成它的电容电阻确定的原理,确定其中电容的值,并由单片机识别振荡频率的方法,求出未知电阻。电容C1的充电所需的时间,即脉冲维持时间: (2-1)放电所用时间,即脉冲低电平时间: (2-2)所以由公式(2-1)和(2-2)可得脉冲周期时间为: (2-3)根据公式(2-3)可得输出脉冲频率为: (2-4)则,第一个量程100Rx10000:R1=330,C1=4.7uF,如图2-1所示:图2-1 电阻小量程测试第二个量程10000Rx10MR1=18K,C1=1nF,如图2-2所示:图2-2 电阻大量程测量 1.3.3.2电容测量知其振荡周期为: (2-5)得出: (2-6)即
3、: (2-7)为使频率在单片机高精度测量范围内,我们同样设计了两路电路,取值分别为第一量程: 选取:;如图2-3所示。图2-3 电容小量程测量实现图第二量程:如图2-4所示。图2-4 电容大量程测量实现图1.3.3.3 控制模块及显示模块设计图2-5 1602与单片机接口的连接图本设计使用的1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。1602与单片机接口的连接图如图2-5所示。单片机引脚说明(如图2-6所示):图2-6 单片机引脚说明图1602接口说明:(如表2-1所示)表2-1 1602液晶
4、模块接口说明编号符号引脚说明1VSS电源地9D2数据口2VDD电源正极D33VQ液晶显示对比度调节11D44RS数据/命令选择端(H/L)12D55R/W读写选择端(H/L)13D66E使能信号14D77D015BLA背光灯电源正极8D116BLK背光灯电源负极1602写操作时序图:(如图2-7所示)图2-7 1602写操作时序图1602读操作时序图:(如图2-8所示)图2-8 1602读操作时序图1.3.4软件程序设计(如表2-9所示)图2-9针对51单片机控制部分所编写的程序见附录。1.3.5 实物焊接一,整理元件清单如图2-10所示:图2-10 元件清单二,焊接硬件电路部分如图2-11所
5、示:图2-11硬件电路焊接部分目前由于无法完成对针对51单片机程序的烧写,故电路的软件部分尚无法完成,无法调试。2.项目中采取的主要技术手段和方法,取得的重要成果2.1主要技术及方法主要技术:本项目实验过程中主要用到的技术有:multisim的电路设计与仿真技术,电路焊接技术与51单片机开发技术。主要方法: 利用RC和555定时器组成的多谐振荡电路,通过测量输出振荡频率的大小即可求得电阻、电容的大小,如果固定电路参数值,该方案硬件电路实现简单,能测出较宽的量程范围,能够较好满足题目的要求。 我们把电子元件的集中参数R、C转换成频率信号f,然后用单片机计数后在运算求出R、C的值,并送显示,转换的
6、原理分别是RC振荡。其实,这种转换就是把模拟量进拟地转化为数字量,频率f是单片机很容易处理的数字量,这种数字化处理一方面便于使仪表实现智能化,另一方面也避免了由指针读数引起的误差。2.2取得成果 本次项目所取得的成果有:一、顺利完成电路的设计和仿真,并在电路板上实现;二、通过对电路的总体统筹,将51单片机的程序编写完成。2.3硬件实物照片:(如图2-12和2-13所示)图2-12 实物正面图图2-13 实物反面图3.项目组成员各自的工作和贡献3.1项目前期刘佳妮:在图书馆查询相关书籍如:MCS_51单片机原理及应用,51单片机系统开发与实践和单片机微型计算机原理、借口及应用;李金蓉:通过上网查
7、询相关技术及原理3.2项目中期主要负责方案的电路设计及仿真、报告的编写拟出项目所需元器件、报告的修改3.3项目后期负责元器件的购买、元器件焊接、程序编写、程序的调试、报告的编写元器件组装、程序调试、报告完善4.工作总结通过本次项目实践,对测量电阻、电容电路的设计、仿真、电路实现等过程,进一步巩固了对multisim的熟练使用,了解了电路排版,焊接的一些注意事项,并学习单片机的有关内容以及单片机的C语言开发实现等等,但是项目的进行仍然遇到一些问题和困难,致使最后项目的预期成果没有完成。附录:/初始化#include #define uint unsigned int#define uchar u
8、nsigned char#define ulong unsigned long#define PI 3.1415926uchar code table18=Welcome!;uchar table216=f(Hz)=uchar table316=R(Ohm)=uchar table416=C(pF)=uchar num,a=0,th0,tl0;uint C;ulong f,R;sbit lcden=P24; /液晶使能端 sbit lcdrs=P25; /液晶数据命令选择端sbit key_Rl=P10; /测量电阻小量程按键sbit key_Rb=P11; /测量电阻大量程按键sbit ke
9、y_Cl=P12; /测量电容小量程按键 sbit key_Cb=P13; /测量电容大量程按键sbit Rl_out=P14; /测量电阻小量程信号输入sbit Rb_out=P15; /测量电阻大量程信号输入sbit Cl_out=P16; /测量电容小量程信号输入sbit Cb_out=P17; /测量电容大量程信号输入/声明子函数void delayms(uint xms); /延时函数void write_com(uchar com); /液晶写命令函数void write_data(uchar date); /液晶写数据函数 void led_init(); /液晶初始化函数voi
10、d t_init(); /定时器0初始化函数void keyscan(); /键盘检测函数(确定被测元件为电阻、电容或电感)void display_f(ulong f); /频率显示函数void display_R(ulong R); /电阻显示函数void display_C(uint C); /电容显示函数void display_L(uint L); /电感显示函数/主函数void main() led_init(); t_init(); keyscan(); write_com(0x01); while(1) display_f(f); switch(a) case 1:R=(ulo
11、ng)(5000000.0/0.6931472/f-150+0.5);display_R(R);break; case 2: R=(ulong)(5000000.0/0.6931472/f-150+0.5); case 3: C=(int)(100000000.0/153/0.6931472/f+0.5);display_C(C); case 4: /中断函数void T0_count() interrupt 1while(Rl_out); while(!Rl _out); TH0=0; TL0=0; while(Rl _out); while(! th0=TH0; tl0=TL0; TR0=
12、0; break;while(Rb_out);Rb_out); while(Rb _out);Rb _out);while(Cl_out);Cl _out); while(Cl _out);case 4:while(Cb_out);Cb _out); while(Cb _out); f=1000000.0/1.085069/(th0*256+tl0)+0.5;/延时函数void delayms(uint xms) uint i,j; for(i=xms;i0;i-) for(j=110;jj-);/液晶写命令函数void write_com(uchar com) lcdrs=0; P0=com
13、; delayms(5); lcden=1; lcden=0;/液晶写数据函数void write_data(uchar date) lcdrs=1; P0=date;/液晶初始化函数void led_init() write_com(0x38); /设置162显示,57点阵,8位数据接口 write_com(0x0c); /设置开显示,不显示光标 write_com(0x06); /写一个字符后地址指针加1 /显示清0,数据指针清0 write_com(0x80); /显示欢迎界面 for(num=0;num5;num-) table2num=f0%10+48; f0=f0/10;6+cou
14、nt;num+) write_data(table2num);/电阻显示函数void display_R(ulong R) ulong R0; R0=R; while(R) R=R/10; for(num=6+count;6; table3num=R0%10+48; R0=R0/10; write_com(0x80+0x40);7+count; write_data(table3num);/电容显示函数void display_C(uint C) uint C0; C0=C; while(C) C=C/10; table4num=C0%10+48; C0=C0/10; write_data(table4num);以下内容由专家组填写评审情况综合评定:组长签名 年 月 日成绩姓名:说明:1、本表由学生、验收专家如实填写;2、学院教务科汇总后,与有关论文、成果实物及其证明材料等一起备案。3、专家组以答辩会的形式,根据项目组提交的报告及成果实物对项目进行评审
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1