基于51单片机的称重系统设计
基于-51单片机的称重系统设计

单片机作业学院计算机与控制工程学院专业自动化132学号2013022030 王伟基于51单片机的称重系统一动态称重所谓动态称重是指通过分析和测量车胎运动中的力,来计算该运动车辆的总重量、轴重、轮重和部分重量数据的过程。
动态称重系统按经过车辆行驶的速度划分,可分为低速动态称重系统与高速动态称重系统。
因为我国高速公路的限速最高是120,所以高速动态称重系统在理论上可对5到120之间时速通过称量装置的车辆进行动态称重。
而低速动态称重系统则一定要限制通过车辆的行驶速度,要想有较高的测量精度,理论要求车辆在5km/h以下时速匀速通过。
在我国,车辆动态称重一般都使用低速动态称重来完成,在很多收费站和车辆检测站都有应用,国家也出台了相关的测量标准。
与传统意义上的静态称重相比,动态称重可以在车辆缓慢运动情况下直接进行称重,这样动态称重的高效率、测量时间短、能流畅交通等主要特点就凸显出来了。
动态称重的问世,不但使车辆的管理上有了很大的促进作用,而且还对我国的公路管理和维护起到了至关重要的作用。
二系统总体结构及其功能设计总体结构是以51单片机为处理器的系统,如图3.1所示。
图3.1本设计要求能判断出车辆是否超载,如果车辆超载,本系统能够提供该车辆的超载信息并发出警报。
本设计采用STC89C52单片机作为系统的处理核心,利用桥式称重传感器采集到车辆重量并转换成电压信号,然后通过放大电路将电压信号进行放大处理后,传送到A/D转换器中转换为数字信号,再经过单片机处理、传输到接口电路,最后送到上位机,该数据可以与上位机里用键盘事先输入设定的总重量作比较并判断出该车辆是否超载,如果超载,则可通过显示器、蜂鸣器作显示超载信息并报警,当然,键盘的作用除了输入设定值还可以解除和开启警报。
三动态称重系统的组成动态称重系统主要由车辆重量(含超载、偏载检测)检测子系统、货车长、宽、高三维尺寸超限检测子系统、自动触发摄像拍照子系统、车辆类型自动判别子系统、系统配置及系统维护子系统、行驶车辆速度测量子系统、数据统计、报表处理子系统和单据输出打印子系统这几部分组成。
2021基于51单片机的电子秤系统设计范文2

2021基于51单片机的电子秤系统设计范文微机原理论文第八篇:基于51单片机的电子秤系统设计 摘要:本文主要分析51单片机下的数字电子秤。
在设计过程中,这种电子秤具体包括电源、传感器、蓝牙、转换器、单片机、键盘、开关、显示器等组成部分,在实践过程中,这种应用51单片机的数字电子秤能够实现准确的称重、计价、过载报警等功能,具有良好的实用性和适应性,可以满足人们多种日常称重需要,极具市场发展前景和价值。
关键词:电子秤;A/D转换器; 单片机; 上个世纪五十年代,电子技术得以产生并被用于多个领域,部分研究人员将电子技术应用到称重器械中,进一步促进了称重器械的发展。
此后,电子秤的发展得到加速。
我国的电子秤发展较快,并在较短时间内达到国际先进水平。
需要注意的是,我国的电子秤与西方先进设备相比,依然存在一定局限性和差距,具体表现为工艺水平较低、电子秤技术开发发展不足等,电子秤功能相对匮乏等。
1设计需求 对物品的称重计量是社会生活和工业生产等活动过程中非常关键的一个环节,为了达到良好的称重计量效果,需要使用科学有效准确的称重设备或者装置。
随着社会生产的进一步发展,以及商品流通的进一步扩大,需要使用称重计量的场合和环节越来越多,而且对各种称重器具的要求也越来越多样化。
这种情况下,为了适应市场需要,各种新的称重计量器具得到设计和生产,并发挥出积极作用。
传统的称重计量器具一般是机械杠杆秤,这种机械杠杆秤操作不便,而且功能单一,已经难以满足实际称重需要。
近年来,基于传感技术和电子技术的发展和应用,一种新的称重设备电子秤得到设计和制造,并在社会社会和生产活动中得到有效应用。
电子秤应用简单,功能多样,而且操作简单,具有良好的实践应用效果,因此得到广泛应用,逐渐取得传统的机械电子秤。
随着微处理机的发展以及应用,这也促进电子称重技术得到进一步发展,促使电子秤的应用效果更上一层楼。
在使用过程中,电子秤具有称重快速准确的特点,而且操作很简单,同时称重过程中一般不会出现较大误差,具有良好准确性。
基于51单片机的称重系统设计

杭州电子科技大学设计报告课程名称:短学期PCB电路设计学生姓名:学生学号:学生班级:专业:实验日期:基于51单片机的称重系统设计设计要求:1.89C52单片机最小系统的构成及设计;(包括:时钟、复位、电源、单片机、按键和显示等)2.在此基础上完成称重系统的设计,称重量程为0~80吨,误差正负100kg。
A 为称重系统选择合适的4个压力传感器,注意量程和误差。
B 设计放大电路,以便单片机对其信号进行后续处理。
C 用7段数码管或其他显示模块进行重量的显示,单位为:kg。
D 根据应用场合设计扩展功能(加分选做设计部分)主要设计内容和功能:本设计研究的是一基于51单片机的称重系统,称重范围为0到80吨,承重范围较大,可以广泛地运用于汽车过磅,货物称重,也可以用来测体重。
本设计主要通过压力传感器采集货物重量信息,产生电压信号,通过运算放大器的放大,再经过一系列的A/D转换、单片机的处理,把货物的重量显示到数码管上。
如果有需要,也可以通过串口通信模块把数据到PC上位机中,再由计算机分析处理数据。
本设计可以通过按键来选择称重的最大量程,如果超过选择的最大量程,则会有蜂鸣器发出警报。
方案论证:传感器:压力传感器选用MPX2200压强为200KPa时对应的最大电压为40mv,所以传感器底座面积设置为1平方米。
40mv 时对应的重量为20吨。
放大器设计:量程为80吨,最大电压对应20吨,故需要4个放大器,由于器件及参数限制,输出电压为4V左右,最大输入电压40mV,故放大倍数为100倍。
故电阻成100倍关系。
传感器采集的信号从Header2端口输入。
仿真结果:从图中可以看到增益为101倍。
A/D转换:因为设计要求为误差100kg,最大电压时对应重量为20吨,20×1000/100=200。
2^8=256>200。
故采用8位A/D转换器。
本设计可以采用ADC0809转换器。
ADC0809各引脚说明:IN0~IN3:从四个运放接四路模拟量输入。
51单片机电子秤程序设计

51单片机电子秤程序设计概述本文档介绍了如何使用51单片机(AT89C51)设计一个简单的电子秤程序。
通过该程序,电子秤能够测量物体的重量并实时显示在液晶显示屏上。
硬件准备在开始编写程序之前,我们需要准备以下硬件设备:- AT89C51单片机开发板- 电子秤传感器模块- 16x2液晶显示屏- 连接线程序设计以下是该电子秤的主要程序设计步骤:1. 引入必要的头文件include <reg51.h>include <lcd.h>2. 定义端口和变量sbit DOUT = P3^7; // 电子秤传感器数据接口float weight = 0; // 测量到的重量3. 初始化液晶显示屏void lcd_init(){// 在这里初始化液晶显示屏的相关设置}4. 启动AD转换void start_conversion(){// 在这里启动AD转换,将传感器的模拟数据转换为数字数据}5. 读取AD转换结果float read_conversion(){// 在这里读取AD转换结果并返回}6. 主程序void main(){lcd_init(); // 初始化液晶显示屏while (1){start_conversion(); // 启动AD转换weight = read_conversion(); // 读取AD转换结果// 将重量显示在液晶显示屏上lcd_gotoxy(1, 1); // 设置光标位置lcd_print("Weight: %.2f kg", weight); // 显示重量delay(500); // 延时一段时间,以控制刷新速度}}总结通过以上步骤,我们可以设计一个简单的51单片机电子秤程序。
该程序可以实时获取电子秤传感器的数据,并将测量到的重量显示在液晶显示屏上。
我们可以根据实际需求进行进一步的功能扩展和优化。
请注意,本文档仅提供了程序设计的概述,并未包含具体的代码实现。
基于MCS-51的电子称设计1

【设计题目】基于MCS-51的电子称设计【设计要求】(1)设计一款电子秤,用LED液晶显示器显示被称物体的质量(2)可以设定该秤所称的上限(3)当物体超重时,能自动报警(4)具有较小的误差率(5)可以进行清零操作【设计过程】1.方案设计本方案利用电阻应变式压力传感器和MCS-51单片机等器件制作的电子秤。
该秤可以对量程范围内的物体进行称量,能实现称重、数码显示、清零等功能。
该电子秤利用电桥测量原理,将压力应变传感器阻值转换为电压值,再经过放大器将电压放大,通过确定输出电压和标准重量的关系,形成一台原始电子秤。
本设计由以下几部分组成:电阻应变传感器、信号放大器、模数转换、单片机、显示器。
其流程图如图1所示。
图1 电子称的流程图由电阻应变式传感器感受被测物体的质量,通过电桥输出电压信号,通过放大电路将输出信号放大,而后送入A/D转换单元进行模数转换,将转换后的数字信号送给单片机;单片机接收数据后,对数据进行处理,将其转换为对应的重量信息,送液晶显示模块进行显示。
单片机同时也可以进行去皮调零操作,因此单片机还需查寻键盘是否有输入,执行相应的功能。
2.硬件详细设计2.1电阻应变传感器设计电阻应变式传感器是将被测量的力,通过它产生的金属弹性变形转换成电阻变化的元件。
由电阻应变片和测量线路两部分组成。
电阻应变片产生的误差,主要来源于温度的影响,本设计主要在实验室内进行,温度的影响暂不处理。
电阻应变式传感器结构图如图2所示。
图2 电阻应变式传感器结构图在电桥测量电路中,将一对变化相反的应变片接入电桥一臂,另一臂接两个相同的阻值作为基准值;当桥臂电阻初始值R1=R2=R3=R4=350时平衡,其变化值为ΔR1=ΔR2=ΔR3=ΔR4=d 时,其桥路输出电压Uout 与d 成正比。
2.2放大电路硬件设计由于传感器输出的信号比较微弱,必须通过一个放大器对其进行放大,才能满足A/D 转换器对输入信号电平的要求。
本设计中选用由三运放构成的具有高输入阻抗,高共模抑制比的仪表放大器作为前级,再接一个反相比例放大器作为后级输出。
基于51单片机的电子秤设计实施计划

基于51单片机的电子秤设计实施计划下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help yousolve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts,other materials and so on, want to know different data formats and writing methods, please pay attention!电子称是一种在现代生活中广泛应用的设备,可以用来准确测量物体的重量。
基于51单片机电子秤设计

摘要电子秤是日常生活中常用的称重设备,广泛应用于超市、大中型商场、物流配送中心。
电子秤在结构和原理上取代了以杠杆平衡为原理的传统机械式称量工具。
相比传统的机械式称量工具,电子秤具有称量精度高、装机体积小、应用范围广、易于操作使用等优点,在外形布局、工作原理、结构和材料上都是全新的计量衡器。
微电子技术的发展为电子秤提出了改进的空间。
电子秤向着简单、便宜发展,智能化、精确的电子秤成为了人们的追求。
本简易电子秤以常见的AT89C51为核心,以电阻应变片采集应变数据,通过HX711放大并进行AD转换供单片机处理,用LCD1602显示所测量的重量,同时本电子秤系统还提供单价设置进行求价格的计算以及去皮功能,通过一些简单低成本的元器件就完成了一个功能齐全的电子秤的制作,将传统电子秤的成本进行了缩减。
关键词:电阻应变片 AT89C51 HX711 电子秤第一章方案与论证一、方案类型(一)方案一通过单片机为主控芯片,用应变片采集应变数据,通过专用仪表放大器INA128对采集到的信号进行放大,在配上模数转换芯片对放大了的模拟信号转化为数字信号,传入单片机中进行数据处理,找出函数关系并转化关系。
通过数字信号转化为重量值显示在LDC1602上,同时通过键盘进行数据输入,输入单价、去皮等功能。
通过蜂鸣器和二极管实现超额报警功能。
(二)方案二以单片机为主控芯片,应变片采集应变数据,将放大和模数转换用HX711芯片来同时进行实现,将模拟量传入主控芯片单片机中进行数据转换,通过函数关系转换为重量显示到LED 上或者LCD1602上,同时通过键盘按键进行数据输入,输入单价、去皮等功能,并通过蜂鸣器进行数据处理。
(三)方案三运用PLC作为主控制器,PLC运用广泛,它具有接线简单,通用性好,编程简单,使用方便,可连接为控制网络系统,易于安装,便于维护等优点。
二、方案论证与选定运用51单片机作为主控芯片,AT89C51是一种高效微控制器。
基于51单片机的电子秤设计

毕业设计(论文)(2015届)题目:基于51单片机的电子秤设计专业名称:应用电子技术******学号:**********班级:2012级应用电子技术指导教师:***2014年 12 月 30 日摘要称重技术是人类生活中不可缺少的部分,自古以来就被人们所重视。
作为一种计量手段,被广泛应用于工业、农业、贸易等各个领域。
随着现代文明和科学技术的不断进步,人们对称重技术的准确度要求也越来越高,电子秤产品技术水平的高低,直接影响各行各业的现代化水平和社会经济效益的提高。
近年来,电子称重技术取得了突飞猛进的发展,电子秤在称重计量领域中也占有越来越重要的地位,其应用领域也在不断地扩大。
尤其是商用电子秤,由于其具有准确度高、反应灵敏、结构简单等优点,被广泛应用于工商贸易、轻工食品、医药卫生等领域。
目前,机械秤正在逐步被电子秤取代,这就促使电子秤的研究需要进一步的深入。
本设计是以AT89S51为核心的一种高精度电子秤,系统采用模块化设计法,其硬件结构主要包括:数据采集模块、最小系统模块、电源模块、键盘和显示模块。
其中,数据采集模块包括称重传感器和A/D转换电路;最小系统部分主要包括AT89S51和扩展的外部数据存储器;键盘由4×4位矩阵键盘组成;显示部分LM4229液晶显示。
软件部分由C语言编程,实现对各部分的控制。
该电子秤可以能够显示商品的名称、价格、总量、总价等;能够自动完成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能。
其称重范围为0~5Kg,分度值为0.001g。
整个系统结构简单,使用方便。
关键词:电子秤;AT89S51单片机;称重传感器;A/D转换电路;液晶显示目录1绪论 (1)1.1选题的背景与意义 (1)1.1.1选题的背景 (1)1.1.2选题的意义 (2)1.2电子秤的研究现状及发展趋势 (2)1.2.1电子秤的研究现状 (2)1.2.2电子秤的发展趋势 (3)1.3本文的结构 (4)2系统总体方案设计 (5)2.1电子秤的基本知识介绍 (5)2.1.1电子秤的基本结构 (5)2.1.2电子秤的工作原理 (5)2.1.3电子秤的计量参数 (6)2.2总体方案设计 (7)2.3系统各部分设计方案论证 (8)2.3.1电子秤分度数的设定 (8)2.3.2称重传感器的选定 (8)2.3.3A/D转换器的选定 (14)2.3.4单片机型号的选定 (16)3硬件设计 (18)3.1系统硬件结构图 (18)3.2单片机主控单元的设计 (18)3.2.1单片机引脚说明 (18)3.2.2AT89S51最小系统设计 (20)3.3数据采集模块设计 (22)3.3.1传感器单元设计 (22)3.3.2A/D转换单元设计 (22)3.4键盘和显示电路单元设计 (24)3.4.1键盘电路设计 (24)3.4.2显示电路设计 (25)3.5系统总体原理图 (25)3.6硬件抗干扰设计 (26)4系统软件设计 (29)4.1主程序设计 (29)4.2LM4229液晶显示驱动程序 (30)4.3ADC0832采样程序 (31)4.4键盘程序 (31)5系统仿真 (33)5.1欢迎界面的仿真 (33)5.2无重物情况仿真 (34)5.3称量物体仿真 (35)5.4最大量程仿真 (36)5.5仿真总结与问题补充 (37)5.5.1仿真总结 (37)5.5.2问题补充 (37)6总结与展望 (39)附录程序 (40)参考文献 (49)1 绪论1.1选题的背景与意义1.1.1选题的背景(1)电子技术渗入衡器制造业随着第二次世界大战后的经济繁荣,为了把称重技术引入生产工艺过程中去,对称重技术提出了新的要求,希望称重过程自动化,为此电子技术不断渗入衡器制造业。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机作业学院计算机与控制工程学院专业自动化132学号2013022030姓名王伟基于 51 单片机的称重系统一动态称重所谓动态称重是指通过分析和测量车胎运动中的力,来计算该运动车辆的总重量、轴重、轮重和部分重量数据的过程。
动态称重系统按经过车辆行驶的速度划分,可分为低速动态称重系统与高速动态称重系统。
因为我国高速公路的限速最高是120,所以高速动态称重系统在理论上可对 5 到 120 之间时速通过称量装置的车辆进行动态称重。
而低速动态称重系统则一定要限制通过车辆的行驶速度,要想有较高的测量精度,理论要求车辆在5km/h 以下时速匀速通过。
在我国,车辆动态称重一般都使用低速动态称重来完成,在很多收费站和车辆检测站都有应用,国家也出台了相关的测量标准。
与传统意义上的静态称重相比,动态称重可以在车辆缓慢运动情况下直接进行称重,这样动态称重的高效率、测量时间短、能流畅交通等主要特点就凸显出来了。
动态称重的问世,不但使车辆的管理上有了很大的促进作用,而且还对我国的公路管理和维护起到了至关重要的作用。
二系统总体结构及其功能设计总体结构是以51 单片机为处理器的系统,如图 3.1 所示。
上位机键盘输入A/D转换器放大器ADC0832OP07AT89C51桥式称重传感器RS232转换器单片机WPL110蜂鸣器LED显示图3.1本设计要求能判断出车辆是否超载,如果车辆超载,本系统能够提供该车辆的超载信息并发出警报。
本设计采用STC89C52单片机作为系统的处理核心,利用桥式称重传感器到A/D 转换器中转换为数字信号,再经过单片机处理、传输到接口电路,最后送到上位机,该数据可以与上位机里用键盘事先输入设定的总重量作比较并判断出该车辆是否超载,如果超载,则可通过显示器、蜂鸣器作显示超载信息并报警,当然,键盘的作用除了输入设定值还可以解除和开启警报。
三动态称重系统的组成动态称重系统主要由车辆重量(含超载、偏载检测)检测子系统、货车长、宽、高三维尺寸超限检测子系统、自动触发摄像拍照子系统、车辆类型自动判别子系统、系统配置及系统维护子系统、行驶车辆速度测量子系统、数据统计、报表处理子系统和单据输出打印子系统这几部分组成。
该系统组成完善,部件考虑周全,能很好的完成称重任务。
四动态称重系统的主要功能(1)动态检测出通过车辆的轴数、轴重、轴距、轮数、车速等;(2)能自动检测出车辆的高、宽、长等外围尺寸是否超出最大标准,并能给出超出部位的具体位置和具体数据;(3)拍摄机器在车辆经过时能自行对要被检测的车辆进行拍照,该机器能对车牌号码、车辆种类进行识别,最终作为图像证据;(4)可以将不合格车辆的处理记录、超限情况进行打印,根据车辆超限的程度来计算罚款数额并打印收据或罚款单;(5)检测到的数据全部存入数据库中,并对被监测到的数据进行分析、统计。
便于汇总上报、日常管理和进行查询。
五单片机的选用本设计采用的是INTEL 公司研究开发生产的STC89C52单片机,其内部置有256 字节的内部数据存储器、 8 位中央处理单元、 8K 片内程序存储器、 3 个 16 位定时 / 计数器、 32个双向 I/O 口和一个片内时钟振荡电路,全双工串行通信口, 5 个两级中断结构。
89C52的引脚图如图 4.1 所示。
图4.1 89C52 引脚图本设计使用的是单片机的最小系统,其中电路包括下载口电路、复位电路和晶振电路。
复位电路中,电阻在下接地,电容在上接高电平,中间为 RST。
复位电路工作原理是:通电时,由于电流很大,从而相当于电容被短路,这样 RST引脚上处于高电平,这时的单片机为禁止工作状态。
如果要使单片机正常工作,就要使 RST端电压慢慢下降并到一定程度,也就是RST端为低电平,这就需要通过电源对电容进行充电。
复位电路复位的方式有手动复位、上电复位两种。
所谓上电复位,就是通电瞬间,由于电流很大,从而相当于电容被短路,这样 RST引脚上处于高电平,自动复位;相反,通过对改变电容电流,当电流很小的时候,我们就可以把电容当做开路状态, RST 端就处于低电平,程序就能正常的运行。
而手动复位要在上电复位的基础上,按下复位按键,使 VCC直接与 RST相连,电容处于放电状态,以高电平形成复位;松开复位按键, RST仍旧是高电平,这时充电电流作用于电阻上, VCC给电容进行充电,还是复位状态,充电结束后,RST为低电平,能够正常工作。
A/D 转换器通道 A/D 转换芯片和8 位分辨率。
它的优点有体积小,兼容性强,性价比高,从而深受个人的欢迎和企业的认可,目前在世界上也已经有了较高的使用率。
ADC0832具有能够进行双通道A/D 转换,分辨率高达8 位;当供电电源为5V 时,输入电压能稳定的保持在0~5V 之间;TTL/CMOS与输出输入电平兼容;功耗很低,只有 15mW;转换工作时间只有32 μS,也就是频率仅有 250KHZ 等特点。
其引脚功能图如图 4.6 所示,芯片引脚接口说明如表 4 所示。
CS18Vcc/REFCH027CLKCH136DOADC0832GND45DI图 4.6 引脚排列表 4 ADC0832 引脚说明接口说明CS片选使能,输入低电平能使芯片工作CH1模拟的输入通道1 ,或作为 IN+/- 使用CH0模拟的输入通道0 ,或作为 IN+/- 使用GND接地DO转换数据输出,数据信号输出DI选择通道控制,数据信号输入CLK芯片时钟脉冲输入Vcc/REF5V 参考电压输入和电源输入通常情况下的单片机和 ADC0832的接口的数据线应为 4 条,分别是 CS、CLK、DO、DI 。
由于 ADC0832的数据信号输入输出口与单片机具有双向接口通信,输入输出口也不同时使用,所以可以将数据信号输入输出口并联后当一条数据线进行使用。
它们的硬件接口电路与单片机连接的原理如图 4.7 所示。
最后将以上的惠思登电桥、放大器、ADC0832转换器和 STC89C52单片机连接起来,就组成了系统的采集模块。
VccADC0832AT89C51 CS VccU0CLK P1.1CH0CH1DIP1.2GND DO P1.3图 4.7 ADC0832与单片机的接口电路报警模块本系统要实现一旦检测到车辆超载超限,就会立刻鸣笛报警,通过操作人员的检查处理后,解除报警。
本设计选用蜂鸣器作为发声装置,蜂鸣器可利用三极管来进行放大驱动。
该接口电路如图 4.15 所示:5VR4SpeakerR3P2.7VT1图 4.15报警接口电路5.系统的软件设计5.1 主程序设计当系统上电复位后,系统开始初始化,包括端口等;初始化完毕后,调用串口输出提示语,开始准备串口输出电压;准备完毕后,调用串口输出电压值,开始从串口输出电压值;输出完毕后,调用串口输出换行值;最后开始延时200ms。
根据系统方案,设计出本设计的主程序流程,可以用框图表示。
开始串口初始化串口输出提示语串口输出电压值串口输出换行值延时 200ms图 5.1主程序流程图5.3 ADC0832 软件设计首先要将芯片开始使能,即CS使能端置于低电平,然后通过DI 和 DO的同一数据输入端口,可实现通道功能的选择,再调用通道初始化程序,初始化完毕后,在8 个时钟边沿获得正序和反序8 位数据,最后返回数据。
根据此方案,设计出本设计中A/D 转换程序流程,如图 5.2 所示。
当两位数据都为0 时, CH1作为负输入端 IN- ,而 CH0就作为正输入端IN+来进行相0 和 1 时, CH1作为正输入端 IN+,CH0作为负输入端 IN- 来进行相关输入。
当两位数据为分别为 1 和 0 时, CH0进行单通道转换而 CH1不转换。
ADC0832的功能项如表 7 所示。
开始芯片使能通道选择通道初始化在8 个时钟边沿获得正序 8 位数据在8 个时钟边沿获得反序 8 位数据返回数据图5.2 ADC0832 转换流程图表7 AD0832 功能项MUX Address Channe#SGL/DIF ODD/SIGN0110+11+00+_01_+ADC0832没有工作时, DO/DI 和 CLK的电平可高可低,但CS的输入端口应必须显示高电平,此时芯片处于禁用状态。
当A/D 转换进行时, CS端口必须处于低电平并且一直将低电平保持到转换全部结束。
当芯片转换工作开始,芯片的CLK端口会接收到处理器传送来的一时钟脉冲, DO/DI 并联端口将使用数据输入信号的DI 端口。
第一个时钟脉冲的下沉出现之前,DI 端口一定要是高电平,表示启始信号的发出,在第二、三个脉冲的下沉出现之前,DI 端口要输入两位数据来选择通道。
第三个脉冲出现下沉之后, DI 端口就不再起任何作用,此后DO/DI 并联端口则是被DO端口占领进行读取转换数据。
第四个下沉脉冲出现开始,DO端口输出最高位的转换数据DATA7,接下来每个脉冲下沉之后 DO端口都会输出下一位的转换数据。
直到发出最低位数据DATA0,也就是由第十一个脉冲发出的数据之后,这样一个字节的数据输出就完成了。
再从第十一个脉冲下沉开始从 DATD0开始输出下一个相反数据字节。
然后一直到第十九个脉冲完成数据的输出,这样一次 A/D 转换才结束。
最后,要想将转换后的数据进行相关处理就必须将芯片禁用,也就是将 CS端口输入高电平。
5.4 LCD 显示程序设计首先设置显示模式,设置第( x,y )个字符的 DDRAM的地址,为 15×2 显示,因为液晶显示为 15 列,所以 x 位置的范围是 0 到 15,同理,因为显示 2 行,所以 y 位置的范围是 0 到 1。
显示程序如下:void Lcd_Pos(uchar yPos,uchar xPos){uchar tmp;xPos &= 0x0f;//x位置范围是0~15,因为显示15列yPos &= 0x01;//y位置范围是0~1,因为显示2行if(yPos==0)//显示第一行{tmp = xPos;}else{tmp = xPos + 0x40;//显示第二行}tmp |= 0x80;Write_com(tmp);}5.5 主函数软件主要分成四个部分:串口配置,ADC0832的初始化,等待接受数据和输出数据。
程序如下:void main(void){InitUART(); //串口初始化Lcd_init();Write_String("Weight: ", 0, 0);Write_String("H=", 1, 0);Write_String("L=", 1, 6);Beep = 1;while(1){Process10ms();DispVal(Wh, 1, 2);DispVal(Wl, 1, 8);CheckProcess();if (flagget10s == 1){flagget10s = 0;Get_temp(sum*100);ET0 = 1;TR0 = 1;Disp_Voltage();//采集电压并发送}}}参考文献[1]周杏鹏,传感器与检测技术,清华大学出版社,2010[2]赵燕,传感器原理及应用,北京大学出版社,2009[3]王幸之、钟爱琴、王雷、王闪,AT89 系列单片机原理与接口技术,北京航天大学出版社,2004[4]高玉芹,单片机原理与应用及C51 编程技术,机械工业出版社, 2011[5]张毅刚、彭喜元、彭宇,单片机原理与应用,高等教育出版社,2010[6]刘小成、吴清、夏春明,单片机原理及C51 应用,华东理工大学出版社,2009[7]国务院全国治理车辆超限超载领导工作小组,全国治理车辆超限超载工作简报[Z] , 2004( 1)[8]张勇、吴文兵、谢竹生、张雨,汽车轮重动态检测中的单片机,汽车科技,2004( 3)[9]张积东,单片机 51/98 开发与应用,电子工业出版社,1994[10]周航慈,单片机程序设计基础,北京航空航天大学出版社,1997单片机系统部分硬件原理图单片机程序#include "reg52.h"#include "My_type.h" //数据类型头文件#include <intrins.h>#define nop() _nop_()#define uchar unsigned char#define uint unsigned intsbit Lcd_rs=P2^0;sbit Lcd_rw=P2^1;sbit Lcd_en=P2^2;sbit key1 = P3^5;sbit key2 = P3^6;sbit key3 = P3^7;sbit Beep = P2^7;sbit Led = P2^6;sbit CS=P1^3;//使能sbit CLK=P1^1;//时钟sbit Do=P1^2;//数据输出sbit Di=P1^2;//数据输入#define first_channel0x02 //通道 1#define second_channel 0x03 //通道 2uchar CH = first_channel;#define Fclk11059200UL/* 使用 11.0592M 晶体 */ #define BitRate9600UL/* 波特率定义为 9600*/uint8 Sending;// 发送标志code uint16 AD_Tab[41] = {512, 2048, 2970, 3840, 4659, 5581,6349, 7117, 7782, 8397, 9165, 9830,10291, 11162, 11520, 11981, 12749, 13210, 13926, 14490, 15206, 15821, 16538, 17357,17971, 18842, 19814, 20838, 21760, 22477,23091, 23603, 23962, 24371, 24678, 24883,25037, 25190, 25293, 25395, 25600};uint8 temp_zheng;float temp_xiao;uint8 flag10ms = 0;uint8 flag50ms = 0;uint8 get10s = 0;uint8 flagget10s = 0;uint8 Alarmflag = 1;uint16 sum = 0;uint8 count5ms = 0;uint8 Wh = 40;uint8 Wl = 20;void Delay_lcd1602(uint dly){uint i;for(; dly>0; dly--)for(i=0; i<100; i++);}bit Lcd_busy(){bit result;Lcd_rw = 1;Lcd_rs = 0;Lcd_en = 1;nop();nop();nop();nop();result = (bit)(P0&0x80);Lcd_en = 0;return(result);}void Write_com(uchar com){while(Lcd_busy());//LCD忙等待Lcd_rs = 0;Lcd_rw = 0;P0 = com;Delay_lcd1602(5);Lcd_en = 1;Delay_lcd1602(5);Lcd_en = 0;}void Write_data(uchar date){while(Lcd_busy());//LCD忙等待Lcd_rs = 1;Lcd_rw = 0;P0 = date;Delay_lcd1602(5);Lcd_en = 1;Delay_lcd1602(5);Lcd_en = 0;}void Lcd_init(){Lcd_en = 0;Write_com(0x38);Delay_lcd1602(5);Write_com(0x0c);Delay_lcd1602(5);Write_com(0x04);Delay_lcd1602(5);Write_com(0x01);Delay_lcd1602(5);}void Lcd_Pos(uchar yPos,uchar xPos)// 设置第( xPos,yPos )个字符的 DDRAM地址{uchar tmp;xPos &= 0x0f;//x位置范围是0~15,因为显示15列yPos &= 0x01;//y位置范围是0~1,因为显示2行if(yPos==0)//显示第一行{tmp = xPos;}else{tmp = xPos + 0x40;//显示第二行}tmp |= 0x80;Write_com(tmp);}void Write_char(uchar c,uchar xPos,uchar yPos)//定义Write_Char函数{Lcd_Pos(xPos,yPos);Write_data(c);}void Write_String(uchar *s,uchar xPos,uchar yPos) //定义Write_String函数{uchar i = 0;Lcd_Pos(xPos,yPos);while(*s){Write_data(*(s++));if(++i>16) break;}}void InitUART(void){EA=0;TMOD|=0x21; //定时器1工作在模式2 SCON=0x50; //串口工作在模式1TCON=0x05;TH1=256-Fclk/(BitRate*12*16);TL1=256-Fclk/(BitRate*12*16);TH0 = (65535 - 1000)/256;TL0 = (65535 - 1000)%256;ET0 = 1;TR0 = 1;PCON=0x80;// 串口波特率加倍ES=1;//串行中断允许TR1=1;//启动定时器 1REN=1;//允许接收EA=1;//允许中断}void UartISR(void) interrupt 4{if(RI) //收到数据{RI=0; //清中断请求}else//发送完一字节数据{TI=0;Sending=0; //清正在发送标志}}void PutChar_to_Uart(uint8 d){Sending=1;SBUF=d;while(Sending);}void Prints(uint8 *pd){while((*pd)!='\0'){PutChar_to_Uart(*pd);pd++;}}unsigned char ADconv(void){unsigned char i;unsigned int data_f=0,data_c=0;ET0 = 0;TR0 = 0;Di=1;CS=1;_nop_();CS=0;Di=1; ;//芯片使能之前的初始化。