《手提数字显示电子秤设计课程设计(论文).doc》由会员分享,可在线阅读,更多相关《手提数字显示电子秤设计课程设计(论文).doc(23页珍藏版)》请在三一办公上搜索。
1、课程设计任务书题 目:手提数字显示电子秤设计初始条件:具备电子电路的设计知识和能力;具备单片机系统的设计方法;具备单片机软件编程技术;熟悉单片机常用软件的使用;要求完成的主要任务: 其电路构成主要有测量电路,差动放大电路,A/D转换,显示电路。其中测量电路中最主要的元器件就是电阻应变式传感器。电阻应变式传感器是传感器中应用最多的一种,广泛应用于电子秤以及各种新型结构的测量装置。而差动放大电路的作用就是把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足A/D转换器对输入信号电平的要求。A/D转换的作用是把模拟信号转变成数字信号,进行模数转换,然后把数字信号输送到显示电路中去,最后由显示电路显
2、示出测量结果。(1)用电阻应变式传感器(2)重范围为5kg(3)电路由测量电桥,差动放大电路,A/D转换电路,显示电路组成时间安排: 设计时间2周,其中3天原理设计,3天仿真,3天电路调试,1天答辩指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日目录摘要21. 手提数字显示电子秤总体设计方案31.1数字显示电子称的组成31.2电阻应变片传感器工作原理32. 系统具体实现设计52.1测量电路设计52.2差分放大电路设计52.3 A/D芯片的选型和实现63. 系统主要电路设计74.系统程序设计85. 心得体会9参考文献10附录:11本科生课程设计成绩评定表22摘要本文介绍了一种简单
3、手提数字显示电子秤的设计,系统主要利用了电阻应变片传感器来将物体重量转化为相应的电信号,然后经过差分放大电路将微小的电信号进行线性放大,只有由A/D转换电路采集放大后的信号,再将采集的数字信息传送给单片机,由单片机将数字信号通过数码管显示出来,从而完成系统电子称的设计。整个系统中关键的元件是电阻应变式传感器,由传感器感知外界信息并将其转化为便于处理的电信号。此外系统包含了基本信号放大和处理电路,以及需要熟练掌握单片机程序调试的方法和技巧。关键词:电阻应变式传感器 ,A/D转换,单片机1. 手提数字显示电子秤总体设计方案1.1数字显示电子称的组成首先,数字显示电子称需要一个重量传感器,利用这个传
4、感器将物体的质量信号转换为电信号,然后再利用一些测量电路,差动放大电路,A/D转换和显示电路,即可构成一个简易的数字电子称。其具体实现框图1.1如下:显示电路A/D转换电路差分放大电路电阻应变传感器 单片机作为系统控制器图1.1数字显示电子称基本结构图1.2电阻应变片传感器工作原理整个系统设计的核心元件是电阻应变式传感器,其基本组成是由弹性敏感元件、电阻应变计、补偿电阻和外壳组成。弹性敏感元件受到所测量的力而产生变形,并使附着其上的电阻应变计一起变形,电阻应变计就会将变形值转换为电阻值的变化,从而通过具体电路就会转换为电信号的变化。电阻应变片应用在电桥中主要有三种接法,即单臂桥、半桥和全桥。以
5、下以图1.2单臂桥电路来说明电阻应变片传感器的应用原理。 R2 R4 R3 图1.2单臂桥电路应变片单臂桥如图1.2所示,桥臂AD为工作臂,接应变片;R1为应变片静态电阻,为工作时应变片电阻的变化量。此变化量可以是正值,称之为正应变,此时应变片承受拉应变,图中符号箭头向上表示为正应变;当变化量为负值时,称之为负应变,此时应变片承受压应变。单桥臂只有一个桥臂接应变片,其它桥臂均接性能参数稳定的标准电阻,为便于进行简化分析,一般都是先取,按照电路理论分析,可得电桥的输出表达式如下: (式1-1),由式1-1得到单臂桥输出表达式为:(式1-2)单臂电桥的灵敏度为 (式1-3)当时,由式1-2和式1-
6、3可得,由该关系,输出与输入呈近似线性关系,输出电压与应变量成正比,应变量越大,则输出电压越大,也即将物体的重量信息转化为电阻应变片上的应变量,进而转化为输出电压信号的变化,最终经过后续的信号差分放大电路,A/D测量电路,以及单片机控制电路和显示电路,即完成了数字显示电子称设计。2. 系统具体实现设计2.1测量电路设计测量电路中主要电路结构类似上图1.2所示,主要由电阻应变片传感器将物体重量信号转为电信号的变化。系统为了提高灵敏度,采用全桥电路实现。当系统输入电压,输出电压,则输出电压大小随应变量的成线性变化,物体越重,应变量越大,输出电压随之增大,则测量输出电压的大小,即可知物体重量。2.2
7、差分放大电路设计由于通过电阻应变式传感器转换的得到的电信号比较小,为此设计差分放大电路将微小信号进行线性放大,便于后续中A/D转换进行采集和处理。差放电路具体实现可通过运放来实现,由于考虑到微小信号的放大,设计中可以考虑用高精度仪表放大器或者精密型运放来实现。为便于实现简单,此次系统实现选择用高精度的仪表放大器OPA128来实现,其电路结构简单 图2.2差分放大电路2.3 A/D芯片的选型和实现本次要求设计数字显示电子称没有明确的精度要求,为此A/D芯片的选择可以考虑简单8位或者10位精度的A/D芯片,常用的有ADC0809,AD7810,TLC549等芯片。系统实现以TLC549为例说明系统
8、实现电路及其实现原理,其基本的电路图如下图2.3所示:图2.3 A/D转换电路2.4显示电路实现系统的数字显示可以用八段数码管或者液晶显示器来进行显示,为便于观察的方便和显眼,常用的数字显示电子称一般为便于显眼会选择用高亮度的数码管进行显示,其基本显示电路如下图所示 图2.4数码管显示电路3. 系统主要电路设计整个系统的设计主要包含了如下图3.1所示的电路结构,主要由差分放大电路来放大电阻应变片传感器的微弱信号,再经过A/D转换电路,以及由单片机作为控制器处理电路和显示电路构成。图3.1系统整体主要电路4.系统程序设计系统在程序上主要是单片机上的控制程序,程序部分比较简单,主要包括数码管显示电
9、路和A/D转换中读取TLC549转换结果。主体程序框图如下图4.1所示: 开始 结束 分别送予数码管各位显示 将读取值按千百十个位分离 读取A/D转换寄存器结果 启动A/D转换 配置数码管位选和段选位初始化A/D芯片 图4.1系统主要程序结构框图5. 心得体会为期一个星期的综合课程设计已经结束,在这一星期的学习了基本电路设计和单片机编程调试。通过本次课题数字电子称的设计,掌握了基本电路调试和单片机的应用技巧和调试方法。专业综合课设本来就是一个实践性很强的课程,只有在理论的指导下,在付诸于实践,才能真正掌握设计电路的窍门。我们需要多动手,多实际连接一些电路,分析电路,才能在理论的基础上,学到实用
10、的电路。综合课程设计正是为了提高我们的实践能力,才要求大家去实际地设计电路,调试电路,学到更实用的知识。只有在真正弄懂其原理,以及每个参数怎么得来的,理论计算与实际测量之间的差距的原因到底是什么原因造成的。实际的波形与理论预测的不相符合时,该怎么去调试,只有把理论与实践相结合在一起时,才能真正的设计出实用的电路。数字显示电子称本身是生活中常用的器件,通过学习联系实际制作,提高动手能力,有利于促进我们学习的兴趣。本课题数字显示电子称本来就是一个实践性很强的课程,只有在理论的指导下,在付诸于实践,才能真正掌握设计电路的窍门。学好电子技术,我们需要多动手,多实际连接一些电路,分析电路,才能在理论的基
11、础上,学到实用的电路。综合课程设计正是为了提高我们的实践能力,才要求大家去实际地设计电路,调试电路,学到更实用的知识。由此看来,此次综合课程设计意义重大。参考文献1吴友宇主编.模拟电子技术基础.北京:清华大学出版社,20092李群芳,肖看.单片机原理接口与应用.北京:清华大学出版社,20053陈光东,赵性初.单片微型计算机原理与接口技术.武汉:华中科技大学出版 社,1999 4李万臣主编模拟电子技术基础与课程设计.哈尔滨:哈尔滨工程大学出版社,20015康华光主编. 电子技术之模拟部分.武汉:华中科技大学出版社,20056陈大钦,电子技术基础实验电子电路实验、设计、仿真.高等教育出版社,200
12、4附录:主程序:#include #include cry1602.h#include ADC_Func.htypedef unsigned int uint;typedef unsigned char uchar;static uint result33; /定义其元素的个数uchar DC=Quality=;uchar ptr= ;uint sum;void main() /*下面六行程序关闭所有的IO口*/ P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0X
13、FF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; WDTCTL=WDTPW+WDTHOLD; /关闭看门狗 LcdReset(); /初始化液晶 P6SEL|=BIT0; /选择A0作为转换通道 ADC12CTL0|=ADC12ON+SHT0_1+MSC;/采样周期为四倍的ADC12CLK的周期 ADC12CTL1|=CONSEQ_2+SHP;/采样源来自定时器 ADC12MCTL2= SREF_2; / ADC12MCTL0=INCH_0; ADC12CTL0|=ENC; ADC12IE|=BIT0;
14、 /enble interrupt ADC12CTL0|=ADC12SC; /strat covert DispStr(0,0,DC); while(1) Delay5ms(); Delay5ms(); Delay5ms(); Delay5ms(); sum=ADC12MEM0; sum=(sum*3.3)-270; if(sum/1000=0) ptr0=sum/100+0x30; ptr1=(sum%100)/10+0x30; ptr2=sum%10+0x30; ptr3=g; ptr4= ; else ptr0=sum/1000+0x30; ptr1=(sum%1000)/100+0x3
15、0; ptr2 = (sum/10)%10+0x30; /shuzi表中第10位对应符号. ptr3=sum%10+0x30; ptr4=g; DispStr(8,0,ptr); _EINT(); LPM0; 液晶显示程序:#include #include cry1602.htypedef unsigned char uchar;typedef unsigned int uint;/*宏定义*/#define DataDir P2DIR#define DataPort P2OUT#define Busy 0x80#define CtrlDir P6DIR#define CLR_RS P6OU
16、T&=BIT3; /RS = P3.0#define SET_RS P6OUT|=BIT3;#define CLR_RW P6OUT&=BIT4;/RW = P3.1#define SET_RW P6OUT|=BIT4;#define CLR_EN P6OUT&=BIT5;/EN = P3.2#define SET_EN P6OUT|=BIT5;/*函数名称:DispStr功 能:让液晶从某个位置起连续显示一个字符串参 数:x-位置的列坐标 y-位置的行坐标 ptr-指向字符串存放位置的指针返回值 :无*/void DispStr(uchar x,uchar y,uchar *ptr) uch
17、ar *temp; uchar i,n = 0; temp = ptr; while(*ptr+ != 0) n+; /计算字符串有效字符的个数 for (i=0;in;i+) Disp1Char(x+,y,tempi); if (x = 0x0f) x = 0; y = 1; /*函数名称:DispNchar功 能:让液晶从某个位置起连续显示N个字符参 数:x-位置的列坐标 y-位置的行坐标 n-字符个数 ptr-指向字符存放位置的指针返回值 :无*/void DispNChar(uchar x,uchar y, uchar n,uchar *ptr) uchar i; for (i=0;i
18、n;i+) Disp1Char(x+,y,ptri); if (x = 0x0f) x = 0; y = 1; /*函数名称:LocateXY功 能:向液晶输入显示字符位置的坐标信息参 数:x-位置的列坐标 y-位置的行坐标返回值 :无*/void LocateXY(uchar x,uchar y) uchar temp;temp = x&0x0f; y &= 0x01; if(y) temp |= 0x40; /如果在第2行 temp |= 0x80; LcdWriteCommand(temp,1);/*函数名称:Disp1Char功 能:在某个位置显示一个字符参 数:x-位置的列坐标 y-
19、位置的行坐标 data-显示的字符数据返回值 :无*/void Disp1Char(uchar x,uchar y,uchar data) LocateXY( x, y ); LcdWriteData( data );/*函数名称:LcdReset功 能:对1602液晶模块进行复位操作参 数:无返回值 :无*/void LcdReset(void) CtrlDir |= 0x38; /控制线端口设为输出状态 DataDir = 0xFF; /数据端口设为输出状态 LcdWriteCommand(0x38, 0); /规定的复位操作 Delay5ms(); LcdWriteCommand(0x3
20、8, 0); Delay5ms(); LcdWriteCommand(0x38, 0);Delay5ms();LcdWriteCommand(0x38, 1);/显示模式设置 LcdWriteCommand(0x08, 1);/显示关闭 LcdWriteCommand(0x01, 1); /显示清屏 LcdWriteCommand(0x06, 1);/写字符时整体不移动 LcdWriteCommand(0x0c, 1);/显示开,不开游标,不闪烁/*函数名称:LcdWriteCommand功 能:向液晶模块写入命令参 数:cmd-命令, chk-是否判忙的标志,1:判忙,0:不判返回值 :无*
21、/void LcdWriteCommand(uchar cmd,uchar chk) if (chk) WaitForEnable(); / 检测忙信号? CLR_RS; CLR_RW; _NOP();DataPort = cmd; /将命令字写入数据端口 _NOP(); SET_EN; /产生使能脉冲信号 _NOP(); _NOP(); CLR_EN;/*函数名称:LcdWriteData功 能:向液晶显示的当前地址写入显示数据参 数:data-显示字符数据返回值 :无*/void LcdWriteData( uchar data ) WaitForEnable(); /等待液晶不忙SET_
22、RS; CLR_RW; _NOP();DataPort = data; /将显示数据写入数据端口 _NOP();SET_EN; /产生使能脉冲信号 _NOP(); _NOP(); CLR_EN;/*函数名称:WaitForEnable功 能:等待1602液晶完成内部操作参 数:无返回值 :无*/void WaitForEnable(void) P2DIR &= 0x00; /将P4口切换为输入状态CLR_RS; SET_RW; _NOP(); SET_EN; _NOP(); _NOP();while(P2IN & Busy)!=0); /检测忙标志CLR_EN;P2DIR |= 0xFF; /
23、将P4口切换为输出状态/*函数名称:Delay5ms功 能:延时约5ms参 数:无返回值 :无*/void Delay5ms(void) uint i=40000; while (i != 0) i-; A/D转换程序:#include typedef unsigned int uint;typedef unsigned char uchar;/*函数名称:Init_ADC功 能:初始化ADC参 数:无返回值 :无*/void Init_ADC(void) P6SEL |= 0x01; / 使能ADC通道 ADC12CTL0 = ADC12ON+SHT0_15+MSC; / 打开ADC,设置采
24、样时间 ADC12CTL1 = SHP+CONSEQ_2; / 使用采样定时器 ADC12IE = 0x01; / 使能ADC中断 ADC12CTL0 |= ENC; / 使能转换 ADC12CTL0 |= ADC12SC; / 开始转换/*函数名称:Hex2Dec功 能:将16进制ADC转换数据变换成十进制 表示形式参 数:Hex_Val-16进制数据 ptr-指向存放转换结果的指针返回值 :无*/void Hex2Dec(uint Hex_val,uchar *ptr) ptr0 = Hex_val / 1000; ptr1 = (Hex_val - ptr0*1000)/100; ptr
25、2 = (Hex_val - ptr0*1000 - ptr1*100)/10; ptr3 = (Hex_val - ptr0*1000 - ptr1*100 - ptr2*10); /*函数名称:Trans_val功 能:将16进制ADC转换数据变换成三位10进制 真实的模拟电压数据,并在液晶上显示参 数:Hex_Val-16进制数据 返回值 :无*/void Trans_val(uint Hex_Val,uchar *ptr) unsigned long caltmp; uint Curr_Volt; uchar t1; caltmp = Hex_Val; caltmp = (caltmp 5) + Hex_Val; /caltmp = Hex_Val * 33 caltmp = (caltmp 3) + (caltmp 12; /Curr_Volt = caltmp / 2n ptr0 = Curr_Volt / 100; /Hex-Dec变换 t1 = Curr_Volt - (ptr0 * 100); ptr1 = t1 / 10; ptr2 = t1 - (ptr1 * 10);本科生课程设计成绩评定表姓 名刘潇性 别 男专业、班级电信1104课程设计题目: 课程设计答辩或质疑记录:成绩评定依据:最终评定成绩(以优、良、中、及格、不及格评定)指导教师签字: 年 月 日