《手提数字显示电子秤设计课程设计任务书.doc》由会员分享,可在线阅读,更多相关《手提数字显示电子秤设计课程设计任务书.doc(28页珍藏版)》请在三一办公上搜索。
1、专业综合课程设计任务书学生姓名: 杨 柳 专业班级: 电信 1005 班 指导教师: 李 达 工作单位: 信息工程学院 题 目: 手提数字显示电子秤设计初始条件:(1) 提供实验室机房;(2) 模拟、数字电子技术的基本理论学习。要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求):(1)电路由测量电路,差动放大电路,A/D转换电路,显示电路组成;(2)测量电路采用电阻应变式传感器;(3)采用差动放大电路把传感器输出的微弱的模拟信号进行一定倍数的放大,以满足A/D转换器对输入信号电平的要求;(4)重范围为5kg;(5)对结果进行分析;(6)要求阅读相关参考文献不少于5
2、篇;(7)根据课程设计有关规范,按时、独立完成课程设计说明书。时间安排: (1) 布置课程设计任务,查阅资料,确定方案 四天; (2) 进行编程设计 一周; (3) 完成课程设计报告书 三天;指导教师签名: 年 月 日系主任(或责任教师)签名: 年 月 日 目录摘要I1.绪论11.1 电子称的简介11.2 电子称的发展趋势11.3 设计总体思路21.3.1 整体功能21.3.2 主要技术指标22.系统方案原理与选型32.1 电子秤的工作原理32.2 电子秤的原理框图32.3 控制器部分的选择42.4 传感器的选择42.5 放大电路的选择52.6 A/D转换器的选择62.7 键盘处理部分的选择6
3、2.8 显示电路部分的选择72.9 报警电路部分的选择72.10 电源电路部分的选择73.系统原理框图83.1 单片机AT89C51控制电路83.2 称重传感器模拟电路83.3 放大电路93.4 AD转换电路103.5 矩阵键盘电路103.6 液晶屏电路113.7 声音报警电路113.8 电源电路124.系统软件设计流程134.1 系统主程序的设计134.2 A/D转换模块的设计144.3 键盘模块的设计144.4 声光报警模块的设计154.5 显示模块的设计155.系统集成环境165.1 Keil编译环境165.2 Protues仿真165.3 键盘定义说明165.3 键盘定义说明166.结
4、果分析与改进166.1 结果分析176.2 改进措施17总结与展望18参考文献19附录一:系统仿真效果图20附录二:系统程序代码21摘要电子秤是将检测与转换技术、计算机技术、信息处理、数字技术等技术综合一体的现代新型称重仪器,它与我们日常生活紧密结合成为一种方便、快捷、称量精确的工具,广泛应用于商业、工厂生厂、集贸市场、超市、大型商场、及零售业等公共场所的信息显示和重量计算。电子称主要以单片机作为中心控制单元,通过称重传感器进行模数转换单元,在配以键盘、显示电路及强大软件来组成。电子称不但计量准确、快速方便,更重要的自动称重、数字显示,对人们生活的影响越来越大,广受欢迎。 本系统针对电子称的自
5、动称重、数据处理等进行了设计和制作。为了阐明用单片机是如何对采样数据进行处理,对数据的采集和转换、计算问题进行了研究,讨论了单片机控制系统中关键的计算问题。本文在给出智能电子称硬件设计的基础上,详细分析了电子称的软件控制方法。单片机控制的电子称结构简单,成本低廉,深受人们的喜爱,本文将对此进行详细讨论。本课题设计的电子秤以AT89C51单片机为主要部件,通过对硬件和软件进行设计而成。硬件由电阻应变式称重传感器、AT89C51单片机、DAC0832和LCD1602液晶组成电子秤(测量范围05Kg)。设计结果证明,该系统显示误差小,性能稳定,结构合理,扩展能力强。关键词:S型称重传感器、AT89C
6、51单片机、A/D转换、矩阵键盘、1602液晶1.绪论1.1 电子称的简介称重仪是电子衡器的一种,电子衡器是自动化称重控制和贸易计量的重要手段,对加强企业管理、严格生产、贸易结算、交通运输、港口计量和科学研究都起到了重要作用。电子衡器具有反应速度快、测量范围广、应用面广、结构简单、使用操作方便、信号远传便于计算机控制等特点,被广泛应用于煤炭、石油、化工、电力、轻工、冶金、矿山、交通运输、港口建筑机械制造和国防等各个领域。 在工业现场和环境中干扰源是各种各样的,如噪音干扰、工频干扰等,抗工频干扰能力成为衡量电子衡器性能的重要指标。为了具备这一性能,市场上的电子衡器的电路普遍较复杂,相对地,成本也
7、较高。而本产品电路简单,成本低,抗工频干扰强,具有很好的推广价值。1.2 电子称的发展趋势电子秤的发展过程与其它事物一样,也经历了由简单到复杂、由粗糙到精密、由机械到机电结合再到全电子化、由单一功能到多功能的过程。近年来,电子秤已愈来愈多地参与到数据处理和过程控制中。现代称重技术和数据系统已经成为工艺技术、储运技术、预包装技术、收货业务及商业销售领域中不可缺少的组成部分。国外如美国、西欧等一些国家在20世纪60年代就出现了0.1 %称量准确度的电子秤。我国电子衡器从最初的机电结合型发展到现在的全电子型和数字智能型,我国电子衡器的技术装备和检测试验手段基本达到国际90年代中期的水平,少数产品的技
8、术已处于国际领先水平。随着自动化测试技术的发展,传统的称重系统在功能、精度、性价比等方面已难以满足人们的需要,尤其在智能化、便捷式、对微小质量的测量方面更显得力不从心。1.3 设计总体思路目前,台式电子秤在商业贸易中的使用已相当普遍,但存在较大的局限性。现有的便携秤为杆秤或以弹簧,一旦超过弹簧弹性限度,弹簧秤就会产生很大误差以至损坏,影响到称重的准确性和可靠性。由于现在智能控制系统比较流行,在大多数智能控制系统中微控制器部分选择兼容性比较好的AT89系列单片机,并且在系统更新换代的时候,只需要增加很少的硬件电路,甚至仅仅删改系统控制程序就能够实现。另外由于实际应用当中,称可以有一定量的过载,但
9、不能超出要求的范围,为此还应设计过载提示和声光报警功能。综上所述,本课题的主要设计思路是:利用电阻应变传感器采集因压力变化产生的电压信号,经过电压放大电路放大,然后再经过模数转换器转换为数字信号,最后把数字信号送入单片机。单片机经过相应的处理后,得出当前所称物品的重量,然后通过液晶显示出来。此外,还可通过键盘设定所称物品的单价,最后将总金额显示出来。当超重就会有报警信号提示。这种高精度智能电子秤体积小、计量准确、携带方便,集质量称量功能与价格计算功能于一体,能够满足商业贸易和居民家庭的使用需求。1.3.1 整体功能1、采用高精度电阻应变式压力传感器,测量量程0-5kg,测量精度可达5g。2、采
10、用模拟/数字(A/D)转换器ADC0832对传感器信号进行调理转换。3、采用AT89C51单片机作为主控芯片,实现称重、计算价格等主控功能。4、采用LCD1602液晶屏显示称重重量、单价、总价等信息。5、采用4*4矩阵键盘进行人机交互,实现单价的输入过程。6、具有超量程报警功能,可以通过蜂鸣器报警。1.3.2 主要技术指标称量范围05kg;分度值0.01kg;精度等级级。2.系统方案原理与选型2.1 电子秤的工作原理当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器随之产生力一电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)
11、。此信号由放大电路进行放大、经滤波后再由模数( A/D)器进行转换,数字信号再送到微处器的CPU处理,CPU不断扫描键盘和各功能开关,根据键盘输入内容和各种功能开关的状态进行必要的判断、分析、由仪表的软件来控制各种运算,最后数据显示部分根据需要实现显示功能。2.2 电子秤的原理框图按照本设计功能的要求,系统由8个部分组成:控制器部分、传感部分、放大部分、A/D转换部分、键盘部分、数据显示部分、报警部分和电路电源部分,系统设计总体方案框图如图2-1所示。放大电路压力传感器AD转换电路AT89C51单片机控制模块声音报警电路键盘检测电路电源电路液晶显示电路图2-1 设计思路框图2.3 控制器部分的
12、选择以单片机为主控制器的设计,可以容易地将计算机技术和测量控制技术结合在一起,组成新型的只需要改变软件程序就可以更新换代。这种新型的智能仪表近几年取得了巨大的进展。再加之系统没有其它高标准的要求,根据总体方案设计的分析,可以选用带EPROM的单片机。INTEL公司的AT89C51功能齐全,片内数据存储器容量大,带有可编程阵列,使用灵活,电磁兼容性好,能够很好地实现本仪器的测量和控制要求。所以最后我选择了AT89C51这个单片机来实现系统的功能要求。2.4 传感器的选择传感器量程的选择可依据秤的最大称量值、秤体的自重、可能产生的最大偏载及动载等因素综合评价来确定。传感器量程的计算公式是在充分考虑
13、到影响秤体的各个因素后,经过大量的实验而确定的。其公式如下:CK0K1K2K3(WmaxW)/N (2.1)C单个传感器的额定量程;W秤体自重;Wmax被称物体净重的最大值;N秤体所采用支撑点的数量;K0保险系数,一般取值在1.21.3之间;K1冲击系数;K2秤体的重心偏移系数;K3风压系数。本设计要求称重范围05kg,重量误差不大于0.01kg,根据传感器量程计算公式(2.1)可知:C1.2511.031(201.9)19.01205(2-1)综合考虑,本设计采用SP20C-G501电阻应变式传感器,称重传感器由组合式S型梁结构及金属箔式应变计构成,具有过载保护装置。由于惠斯登电桥具诸如抑制
14、温度变化的影响,抑制干扰,补偿方便等优点,广泛用于各种结构的动、静态测量及各种电子秤的一次仪表。其测量原理:用应变片测量时,将其粘贴在弹性体上。当弹性体受力变形时,应变片的敏感栅也随同变形,其电阻值发生相应变化,通过转换电路转换为电压或电流的变化。由于内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出: (2-2)上式说明电桥的输出电压V和四个桥臂的应变片感受的应变量的和成正比。R1等于Rd,R2等于Ra,R3等于Rb,R4等于Rc。其工作原理如图2-2所示。 图2-2 称重传感器原理图2.5 放大电路的选择称重传感器输出电压振幅范围025mV,而A/D转换的输入电压
15、要求为05V,因此放大环节要有200倍左右的增益。本设计可以设计两级放大,第一级放大约13倍,第二级放大8倍,由于差分放大是反向的,所以再加上一个2倍的反相器,最后有接近200倍的放大倍数。按照输入电压25mV,分辨率20000码的情况,漂移要小于1V。由于其具有极低的失调电压的温漂和时漂(1V),从而保证了放大环节对零点漂移的要求。残余的一点漂移依靠软件的自动零点跟踪来彻底解决。稳定的增益量可以保证其负反馈回路的稳定性,并且最好选用高阻值的电阻和多圈电位器。由于高精度低漂移运算放大器构成差动放大器,而构成的前级处理电路;差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放(如OP07)做
16、成一个差动放大器。根据运算放大器的虚短虚断得,第一级放大倍数为1+(R4+R5)/R3;第二级放大倍数为R8/R7。其设计电路如图2-3所示。 图2-3 利用OP07运放设计的差动放大器2.6 A/D转换器的选择 A/D转换部分是整个设计的关键,这一部分处理不好,会使得整个设计毫无意义。目前,世界上有多种类型的ADC,有传统的并行、逐次逼近型、积分型ADC,也有近年来新发展起来的-型和流水线型ADC,多种类型的ADC各有其优缺点并能满足不同的具体应用要求。并行比较A/D转换器:如ADC0808、ADC0832等 。并行比较ADC是现今速度最快的模/数转换器,采样速率在1GSPS以上,称为“闪烁
17、式”ADC。它由电阻分压器、比较器、缓冲器及编码器四种分组成。这种结构的ADC所有位的转换同时完成,其转换时间主取决于比较器的开关速度、编码器的传输时间延迟。根据系统的精度要求以及综合的分析其优点和缺点,本设计采用了8位A/D转换器ADC0832。2.7 键盘处理部分的选择 由于电子秤需要设置单价(十个数字键),还具有确认、删除等功能。因此采用矩阵式键盘,矩阵式键盘的特点是把检测线分成两组,一组为行线,一组列线,按键放在行线和列线的交叉点上。44的矩阵键盘结构的键盘接口电路中,每一个按键都通过不同的行线和列线与主机相连,共可以安装16个键,但只需要8条测试线。44的矩阵键盘结构如图2-4所示。
18、图2-4 矩阵式键盘2.8 显示电路部分的选择数据显示是电子秤的一项重要功能,是人机交换的主要组成部分,它可以将测量电路测得的数据经过微处理器处理后直观的显示出来。数据显示部分可以有以下两种方案供选择:一是 LED数码管显示,二是LCD液晶显示两种选择。这里需要显示重量和单价以及总额,所以LED实现比较复杂,所以选择LCD1602来实现。2.9 报警电路部分的选择报警模块在电路中随是不可缺少的,但有它的指示会使结果更直观,报警一般可以使用发光二极管,还可以使用蜂鸣器,但蜂鸣器更直观更人性化。所以我选择了蜂鸣器报警。2.10 电源电路部分的选择电源模块在电路中是不可缺少的,不管是数字电路还是模拟
19、电路,都需要电源来提供能量。电路中需要9V和5V直流电源,实际中使用的是220V的交流电,所以需要使用电源模块来供电。其中9V是给放大器供电;5V给AD转换供电。3.系统原理框图3.1 单片机AT89C51控制电路它的作用是对AD芯片和键盘进行控制,完成AD转换以及控制LCD显示。AT89C51单片机各个引脚分布如下图,有基本的复位电路和晶振电路;P0口需接上拉电阻,并和LCD1602相连驱动液晶;P1口检测按键按下的状态;P2部分口控制1602的控制端口;P3部分口用以对AD芯片进行控制。原理如图3-1。图3-1 单片机控制模块原理图3.2 称重传感器模拟电路当垂直正压力P作用于梁上时,梁产
20、生形变,电阻应变片R1、R3受压弯拉伸,阻值增加;R2、R4受压缩,阻值减小。电桥失去平衡,产生不平衡电压,不平衡电压与载菏P成正比,从而将非电量转化成电量输出。这里通过两个滑动变阻器来模拟电阻桥。此电压值为两个电阻器的差值电压;当两个电阻处于同一地方时,电压差值为0;当一个上,一个下时,差值最大为25mV。传感模块如图3-2。图3-2 传感器模拟模块原理图3.3 放大电路本设计采用了三级放大,第一级为差动放大器由U3,U4组成,为13倍放大;(1+(R3+R4)/R2=12.7);第二级放大由U5组成,为8倍(R7/R5=8.1)放大;第三级放大由U6组成,为-2倍(R9/R1=2)的反向放
21、大器;总200倍。电路如图3-3。图3-3 传感器模拟模块原理图3.4 AD转换电路ADC0832是美国国家半导体公司生产的一种8位分辨率、逐次逼近式、双通道A/D转换芯片,需5V电源供电。通过将0-25mv放大了200V倍的传感信号输入AD,再把电压信号转换为数字信号,传入单片机进行数据处理。如图3-4所示。图3-4 AD转换模块原理图3.5 矩阵键盘电路矩阵键盘可以显示0-9数字、小数点和五个功能键。键盘行扫描信号为ROW1ROW4,列扫描信号为COL1COL4。行信号为输入信号,低电平有效;列信号为输出信号。当没有键按下时,即使行扫描输入低电平信号,列信号仍为高电平;当行扫描为低电平并且
22、有键按下时,相应的列输出低电平。该低电平信号可以定位至按下键的位置。键盘可以输入单价,并计算出总额。在Protues中仿真使用集成的矩阵按键模块即可。矩阵键盘如图3-5所示。图3-5 矩阵键盘模块原理图3.6 液晶屏电路单片机处理后的数据最终要将重量Weight(4.765Kg)信息显示出来,在矩阵键盘输入单价Price(2Kg/¥)以后将计算的总额Total(9.53¥)也显示出来,显示电路选用的是LCD1602。LCD1602中的RS为寄存器选择,高电平时选择数据寄存器,低电平时选择指令寄存器;R/W为读写信号线;E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令;D0D7为8位
23、双向数据线,可以传输数据。需要注意的是,P0口驱动液晶需加上拉电阻。数据/命令等选择端等接的是单片机P2口上的P2.0、P2.1、P2.2三个口。液晶显示电路原理如图3-6所示。图3-6 液晶显示模块原理图3.7 声音报警电路当测量重量超过量程时,beep(P3.0)给出低电平信号,驱动蜂鸣器鸣响;当单价超过规定值时,显示输入错误,P3.0给低电平信号,蜂鸣器响。从而达到报警的目的。报警模块如图3-7所示。图3-7 报警模块原理图3.8 电源电路电源模块在电路中是不可缺少的,不管是数字电路还是模拟电路,都需要电源来提供能量。电源模块见图3-8所示。实际中使用的是220V交流电,而电路需要用稳压
24、的数字电源供电,所以就需要设计电源电路。更具模块可知,放大器需要9V的直流电源可供电。ADC0832需要5V直流电源供电。所以可以利用LM7809稳压片将220V先转化为9V,然后经过LM7805稳压芯片稳压到5V左右。9V是给放大器供电,5V是给数字电路提供电源。电容起到滤波作用。图3-8 电源模块原理图4.系统软件设计流程4.1 系统主程序的设计开始定义端口变量函数声明主程序液晶初始化中断初始化进入while循环AD转换采样采样值处理液晶重量、单价、总额显示键盘扫描分析主程序模块主要完成编程芯片的初始化及按需要调用各模块,在系统初始化过程中,将系统设置成5Kg量程。主程序软件流程如图4-1
25、所示。图 4-1 主流程图4.2 A/D转换模块的设计开始AD转换是否结束启动AD转换存储转换结果A/D转换子程序主要是指在系统开始运行时,不断的把称重传感器传递过来的模拟信号转换成数字信号并传递到单片机处理程序。设计流程图如图4-2所示。图 4-2 AD转换流程图4.3 键盘模块的设计开始是否有键按下延时是否结束键盘分析程序结束是是否否在程序中可以先判断按键编码,然后根据编码将键盘代表的数值送到相应的存储单元,再进行功能选择或数据处理。键盘模块流程图如图4-3所示。图4-3 键盘检测模块4.4 声光报警模块的设计开始重量是否超过5Kg单价是否超过20声音报警是是否否当测量重量超过量程时,be
26、ep(P3.0)给出低电平信号,驱动蜂鸣器鸣响;当单价超过规定值时,显示输入错误,P3.0给低电平信号,蜂鸣器响。从而达到报警的目的。其流程设计如下图4-3所示。图4-4 报警模块流程图4.5 显示模块的设计结束开始声音报警声音报警声音报警通过LCD显示物品的重量、单价以及金额。显示模块流程图如图4-4所示。图4-4 显示模块流程图5.系统集成环境5.1 Keil编译环境Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。只需要在Keil中将源程序写好,编译就可以生成.hex文件。本程序软
27、件主要有三个方面:一是AD数据转换采集、二是按键检测、三是数据处理并显示。这三个方面的功能分别在主程序中来进行调用。程序采用模块化的结构,这样程序结构清楚,易编程和易读性好,也便于调试和修改。5.2 Protues仿真Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。在仿真过程中也只需要按各个模块设计,即8个模块,一个一个模块的进行调试,这样更容易成功。5.3 键盘定义说明4*4矩阵键盘定义如下: 7 8 9 / 4 5 6 X(删除) 1 2 3 - ON/C清0 0 = +其中:l
28、键09为数字键,用于单价设定。l 键ON/C为清零键,每次确定单价之前,请先按清零键,使价格回零。l 键X为乘键,将单价与重量相乘。l 键=为计算键,完成单价与重量计算,开始计算总价。6.结果分析与改进6.1 结果分析根据仿真结果,可以看到随着输入电压的增加(用电阻桥来模拟传感器),差分放大电路完成固定200倍的放大,液晶也将当前的电压转换为重量后的值显示出来。为了称重更精准,加入了更方便的软件校准方法,其校准前后对应数据如下表6-1所示。重量指标值(K)0.0001.0002.0003.0004.0005.000电压值(mV)0.004.979.9715.020.024.9重量值(Kg)0.
29、0001.0352.0603.0754.1014.980误差值00.0350.0600.0750.101-0.020相对误差值00.0330.0290.0240.0240.004校准重量值0.0001.0012.0053.0134.0295.061相对误差值00.0010.0020.0040.0070.012表6-1 重量值的误差对应表由此表可知在未校准前误差为2.3%,校准后为0.5%,完成设计目标。6.2 改进措施改进一:传感器输出电压范围为0-20mV,而它有线性范围限制,应该取大一点的,仿真中我们选择的传感器输出电压为0-25mV,即选用更好的传感器。改进二:传感器输出电压范围为0-2
30、0mV,而AD转换需要5V的输入电压,所以直接将传感器输出电压送AD,会使转换误差变大,所以选择200倍的放大电路;由于AD是差分输入的,所以放大电路选择差分放大电路;最后,因为差分放大电路的放大结果是反向的,所以还需要一个反向器。改进三:因为放大器的放大倍数是个近似值,电路中存在漂移损耗,所以不能够完全按照要求放大,再加上传感器本身是近线性,中间有误差。根据查阅可知5kg重量经电阻应变传感器并放大后为4.6V,在本程序中放大倍数略高于200,但放大后为4.7V,再加上软件的校准,使其达到5.061Kg,近似完成指定功能。建议:选择精度高的传感器,选用分辨率高的AD,进行分段校准。总结与展望智
31、能电子秤以具有良好的可靠性、准确性、技术先进性和结构简单等特点,受到广大用户的青睐。在商业活动中用途越来越广,给人们的经济生活带来了便利。本文采用AT89C51单片机计的电子计重秤, 无论是计量精度, 还是稳定性都满足国家对A级电子秤的要求, 它具有较好的标定校准方法, 性能稳定, 操作简单, 价格低廉。该电子秤集传感器技术、微计算机技术、数字显示技术于一体、其反应灵敏、准确度高、显示直观,便于使用。通过硬件的少量扩展和软件的修改, 能设计出性能优越的计价秤、电子台秤等, 满足各行各业对现代电子衡器的需求。另外稍加扩展,该电子秤还可与其它生产质量管理系统项连接,具有推广应用价值。理论和实际必须
32、紧密结合,在设计中要针对不同的系统根据理论给与不同的方案,综合考虑各方面的因素和需要,选择出最佳的方案与结论。要大量广泛的收集资料,然后认真地研究其思路,和指导老师保持联系,和同学共同研究遇到的问题,坚持笑到最后。参考文献【1】梁森,王侃夫,黄杭美编著.自动检测与转换技术.北京:机械工业出版社,2010【2】张志良.单片机原理与控制技术(第2版).北京:机械工业出版社,2005【3】谭浩强.C程序设计(第三版).北京:清华大学出版社,2007【4】何道清,张禾等.传感器与传感器技术M.科学出版社,2011年第2版【5】张琳娜,刘武发.传感检测技术及应用M.中国计量出版社,1999【6】康华光等
33、.电子技术基础模拟部分M.高等教育出版社,2010年第4版【7】马家辰.单片机原理及其接口技术M.哈尔滨工业大学出版社,1997【8】张毅刚等.单片机原理及应用M.高等教育出版社,2011年第2版【9】松井邦彦.传感器实用电路设计与制作.科学出版社,2007年第4版附录一:系统仿真效果图附录二:系统程序代码#include#include#define uchar unsigned char#define uint unsigned int#define BUSY 0x80 /常量定义#define DATAPORT P0sbit ADCS =P35; sbit ADDI =P37; sbit
34、 ADDO =P37; sbit ADCLK =P36; sbit LCM_RS=P20;sbit LCM_RW=P21;sbit LCM_EN=P22;uint temp1;/temp1表示重量的整数值 uchar ad_data;/ad_data采样值存储 uchar press_ge=0; /显示值百位uchar press_shifen=0; /显示值十位uchar press_baifen=0; /显示值个位uchar press_qianfen=0; /显示值十分位uchar code str0=Weight: . Kg ;void delay(uint);/LCD延时子程序voi
35、d initLCM( void); /LCD初始化子程序void lcd_wait(void); /LCD检测忙子程序void WriteCommandLCM(uchar WCLCM,uchar BusyC); /写指令到ICM子函数void WriteDataLCM(uchar WDLCM); /写数据到LCM子函数void DisplayOneChar(uchar X,uchar Y,uchar DData);/显示指定坐标的一个字符子函数void DisplayListChar(uchar X,uchar Y,uchar code *DData);/显示指定坐标的一串字符子函数 ucha
36、r Adc0832(unsigned char channel);/ADC处理程序,完成AD转换,返回转换结果void data_pro(void);/将ADC转换结果进行处理,便于显示void display(void); /显示处理后的AD值,即重量值void main(void) delay(500); /系统延时500ms启动 initLCM( ); WriteCommandLCM(0x01,1); /清显示屏 DisplayListChar(0,0,str0);/预先显示第一行重量值前面的数据while(1) ad_data =Adc0832(0); /采样值存储单元初始化为0dat
37、a_pro();/将采样的值进行处理,便于下面的显示display();/显示经处理后的重量值void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j110;j+);void WriteCommandLCM(uchar WCLCM,uchar BusyC)if(BusyC) lcd_wait();DATAPORT=WCLCM; LCM_RS=0; / 选中指令寄存器 LCM_RW=0; LCM_RW=0; / 写模式 LCM_EN=1; _nop_(); LCM_EN=0; void WriteDataLCM(uchar WDLCM) lcd_
38、wait( ); /检测忙信号 DATAPORT=WDLCM; LCM_RS=1; / 选中数据寄存器 LCM_RW=0; / 写模式 LCM_EN=1; _nop_(); LCM_EN=0;void initLCM( ) LCM_EN=0; DATAPORT=0;delay(15);WriteCommandLCM(0x38,0);delay(5); WriteCommandLCM(0x38,0);delay(5); WriteCommandLCM(0x38,0);delay(5); WriteCommandLCM(0x38,1); /8bit数据传送,2行显示,5*7字型,检测忙信号 Wri
39、teCommandLCM(0x08,1); /关闭显示,检测忙信号 WriteCommandLCM(0x01,1); /清屏,检测忙信号 WriteCommandLCM(0x06,1); /显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号void display(void)WriteCommandLCM(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号DisplayListChar(0,0,str0);DisplayOneChar(8,0,press_ge+0x30);DisplayOneChar(10,
40、0,press_shifen+0x30);DisplayOneChar(11,0,press_baifen+0x30); DisplayOneChar(12,0,press_qianfen+0x30);delay(1000); /稳定void data_pro(void)float press; if(0ad_data256) int vary=ad_data;press=(0.019531*vary); temp1=(uint)(press*1000); /放大1000倍,便于后面的计算press_ge=temp1/1000; /取压力值百位press_shifen=(temp1%1000)/100; /取压力值十位press_baifen=(temp1%1000)%100)/10; /取压力值个位press_qianfen=(temp1%1000)%100)%10;/取压力值十分位