| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

基于51单片机压力检测系统设计毕业设计

z***u

贡献于2019-04-16

字数:31127

 学号:

xx 学
毕业设计(文)
(xxxx届)



题 目 基51单片机压力检测系统设计

学 生
学 院 专业班级
校指导教师 专业技术职务
校外指导老师 专业技术职务


二〇xxx年X月


基51单片机压力检测系统设计

摘 :设计助压力传感器压力信号转换成电信号信号放高精度AD转换器件模拟信号转换成数字信号单片机运算处理转换成LCD液晶识信息显示输出初始化重设阈值系统够实现手动存储八数查询历史记录存储数进行统计分析实时压力检测程中预警电路直监视系统运行
设计根压力传感器零点补偿非线性补偿原理设计出测量压力传感器硬件电路采单片机设计实现具精度高功强等特点身稳定性测量结果存误差课题设计压力检测系统具压力测量超重报警压力存储历史数查阅压力值数统计分析该系统压力检测范围010Kg测量精度达10g具高精度低成易携带特点采LCD12864液晶显示测量结果传统压力检测系统精确度更高直观性更外该系统电路简单成低寿命长应范围广等优点
关键词:压力传感器AD转换器LCD12864






















Design of pressure detection system based on MCU 51

Abstract:Using pressure sensor converts the pressure signal into electrical signal after amplification using high precision AD conversion device that converts analog signals into digital signals in this design then through single chip microcomputer processing into the information that LCD can identify at last displaying and outputting information After initialization the system can reset the threshold achieve storing within eight data manually and can query the history records the statistic analysis the stored data and in the process of realtime pressure detection early warning circuit has been monitoring the operation of the system
This paper according to the principle of zero compensation and nonlinear compensation for pressure sensor designing measuring pressure sensor hardware Singlechip implementation has the characteristics of high precision strong function Because of its stability errors still exist in the measurement The topic functions for pressure detection system are overweight alarm storage statistical analysis of historical data access and pressure value The measurement range of the system is from 0 to 10 kg measurement accuracy can reach to 10 g It has the advantage of high precision low cost easy to carry Measurement results display with LCD 12864 Contrast to the traditional pressure test system it has higher accuracy and intuitive In addition the system circuit is simple low cost long service life and wide scope of application
Key words:Pressure sensor AD converter LCD12864

















目 录

摘 I
Abstract II
目 录 III
1 引言 1
11 研究背景意义 1
12 压力检测系统研究现状 1
13 课题务 2
2 系统分析总体方案设计 3
21 压力检测系统整体设计 3
22 压力检测系统设计方案 3
221 实时压力测量显示方案 4
222 实时压力监控预警方案 4
3 系统硬件电路设计 5
31 单片机系统 5
311 单片机选型 5
312 单片机晶振电路复位电路 7
32 数采集模块 8
321 压力传感器 9
322 信号放电路 10
323 AD模数转换 11
33 机交互模块 15
331 液晶显示单元 15
332 矩阵键盘单元 17
34 声光报警模块 18
35 电源供电模块 18
4 软件程序设计 20
41 软件开发环境 20
42 IO端口分配 21
43 软件程序构架 22
44 功子程序设计 23
441 AD子程序设计 24
442 中断子程序设计 25
443 查询历史数子程序设计 25
444 数统计分析子程序设计 26
445 阈值重设子程序设计 27
446 机交互子程序设计 28
5 系统调试 33
51 数采集调试 33
52 数统计分析调试 33
53 声光报警调试 34
54 软件调试 34
55 实物展示 34
6 结束语 39
参 考 文 献 40
致 谢 41
附 录 A 42
附 录 B 44


1 引言
11 研究背景意义
年微型计算机越越普遍应日常工作生活中计算机工业程控制生产中重环节越越关注单片机构成嵌入式系统毫夸张说高端先进仪器构造中含微型计算机系统微型计算机控制系统产生促现代控制系统时代
信息高速发展时代传感器检测系统发展两重方分智化集成化传感器检测系统智化集成化程度取决系统部微处理器性[1]前国外开发研究热点具数处理力够进行动检测动校准动误差补偿动抽样标度变换功智压力传感器检测系统传感器技术现代测量动化技术重技术
压力测量工业安全生产实时监测中具重意义确保工业制造程中高效安全必须精确控制生产程中诸压力流量温度等参数中良控制压力保障生产程中安全准确测量压力显尤重压力生产程中四重参数实时检测压力判断生产程中机器否安全运行[2]:确保密闭容器压力安全指标范围确保易燃易爆介质压力超标
压力检测工业生产环节中控制生产正常运行非常重工业装置时常见压力表实时监测压力失常报警保证生产安全运作通测取压力知晓液面高度
总言保证生产正常运行必须工艺求保持稳定压力准确测量压力实际程非常重
12 压力检测系统研究现状
压力检测系统压力传感器采集压力信号传感器探索宇宙海洋开发生产程控制现代科技文明中面涵盖项现代科技产物世界国家十分重视发展传感器技术传感器技术应工业农业国防科技等领域着极广阔前景例日传感器技术列六核心技术五项核心技术通信激光半导体超导计算机日传感器列六技术首美国世纪90年代作传感器时代传感器技术列90年代22项关键技术国传感器研究已二十年历史取成21世纪提出科学技术第生产力口号项科学技术浪潮取突飞猛进发展进步传感器技术越越受方面重视然某领域国已赶者接世界先进水总体国传感器技术研究生产落国外传感器技术正处方兴未艾阶段智传感器系统研究起步较晚方面理缺乏实践够离实际应需求差距尤压力测量压力传感器生产高性体积低成智压力传感器系统需进步开发研究研究开发高性智压力传感器系统利促进信息技术动化技术发展提高设备性动化水具重意义
压力实时检测控制够保证生产设备安全运行压力传感器工业仪器仪表控制中常种传感器广泛应种工业生产环境中涉众行业通压力传感器测物体压力信号转化电信号放器进行信号放送24位AD转换器然模拟信号转换成单片机识数字信号单片机转换成LCD显示器识信息显示输出
13 课题务
该设计够实现压力检测系统智检测实时压力测量手动存储压力值压力预警数统计分析等该课题STC89C51RC单片机控制核心配合电阻应变式压力传感器AD模数转换芯片HX71112864液晶显示等外围器件压力检测系统进行控制数采集LCD液晶设备显示压力值测量结果数统计分析结果等配合蜂鸣器LED二极进行声光报警压力传感器采集测物体压力信号传输单片机进行分析处理外系统配键盘实现手动存储预警值设定系统复位数统计分析关功

























2 系统分析总体方案设计
21 压力检测系统整体设计
压力检测系统装置五模块组成:
1数采集模块该模块作检测模拟信号转换成数字信号电保护输出数处理部分
2信号处理模块单片机作信息处理单元实现数采样数分析运
算发出控制指令
3机交互模块4*3矩阵键盘液晶显示单元组成通4*3矩阵键盘单片机达指令实现系统控制显示采12864液晶模块提供丰富直观友信息界面
4声光报警模块报警程序启动时蜂鸣器发出声音发光二极点亮
5电源供电模块系统通USB电源供电单片机程序通USB线串行载助键开关操作控制电源通断实现系统良性运作通电电源指示灯点亮
压力检测系统框图图21示:

图21 压力检测系统框图
22 压力检测系统设计方案
实时压力测量实时压力监控预警压力检测系统装置重两部分实现功基条件两部分性坏关系整系统性设计成低性高测量精度高安装调试方便压力检测系统该设计关键
221 实时压力测量显示方案
装置中系统压力检测采量程10kg高精度电阻应变式压力传感器压力信号转换模拟信号传送AD模数转换芯片HX711输出数字信号单片机进行处理分析压力传感器次单片机复位动校准零放物体进行压力测量显示器实时显示前测物体质量户根需压力值进行手动存储然通键查询存储历史数
222 实时压力监控预警方案
实时监控压力预先程序中设定阈值9999kg系统开启默认阈值9999kg户根需通键操作0000~9999kg区间修改阈值然确认键完成阈值重设操作放置测物体压力托盘压力超设定压力值时系统报警LED灯点亮蜂鸣器发出声音测物体压力传感器变模拟信号模数转换芯片HX711转换数字信号输出单片机然运算处理判断检测压力阈值该压力阈值系统显示出时压力值发出报警提示液晶正常显示前压力值

















3 系统硬件电路设计
31 单片机系统
单片机集成块芯片完整计算机系统单片机功集成块芯片具完整计算机需部分组件:外部总线系统存CPU时集成实时时钟通讯接口定时器实时时钟等外围设备单片机称作单片微电脑单片微型计算机中央处理器(CPU)机存取存储器(RAM)读存储器(ROM)输入输出端口(IO)等计算机功部件集成块集成电路芯片微型计算机
311 单片机选型
世界芯片制造公司推出单片机8位16位32位数胜数应流C51系列兼容兼容具特色相辅相成单片机应提供广阔天
世纪80年代初Intel公司推出MCS51系列单片机全球诸著名半导体厂商相继生产51系列兼容单片机单片机型号断增加功断增强品种断丰富[3]系统采STC89C51RC作核心单片机系统STC89C51RC种高性低功耗8位微控制器引脚图图31示

图31 单片机引脚图
单片机引脚介绍:
l IO口引脚P0(第32脚~39脚):双8位三态IO口接外部存储器时总线复仅作数总线作址总线低8位
l IO口引脚P1(第1脚~8脚):8位准双IO口端口没高阻态法输入进行锁存真正意义双IO
l IO口引脚P2(第21脚~28脚):8位准双IO口外部存储器时总线复仅作数总线作址总线高8位
l IO口引脚P3(第10脚~17脚):8位准双IO口P3口仅作般数总线8引脚特殊功属复双功口作第二功时引脚定义表31示值强调P3口条引脚均独立定义第功输入输出第二功
表31 P3口第二功表
引脚
特殊功
P30
RXD(串行输入端)
P31
TXD(行输入端)
P32
INT0(外部中断0)
P33
INT1(外部中断1)
P34
T0(定时器计数器0输入端)
P35
T1(定时器计数器1输入端)
P36
WR(外部数存储器写选通信号输出端)
P37
RD(外部数存储器读选通信号输出端)
l 电源引脚Vcc(第40脚):接+5V电压
l 电源引脚Vss(第20脚):接
l 外部晶振引脚XTAL1XTAL2(第19脚18脚):接外部晶振时振荡信号输入单片机部时钟发生器
l EA(第31脚):EA低电时部否程序存储器(8031型号单片机没部存储器)单片机访问外部程序存储器EA高电时先访问部程序存储器寻址址超容量时动访问外部程序存储器
l PSEN(第29脚):外部程序存储器读取指令时机器周期PSEN两次效时外部程序存储器读选通信号
l ALE(第30脚):访问外部存储器时ALE引脚周期性输入正脉信号作外输出时钟频率振荡器频率16访问外部存储器时ALE址低位字节锁存
l RST(第9脚):RST出项两机器周期高电时单片机复位
单片机STC89C51RC部ROM空间4K址范围0000H0FFFHRAM空间128字节址范围00HFFH址80HFFH特殊功寄存器区计数器定时器串行通信累加器特殊控制寄存器
312 单片机晶振电路复位电路
(1)晶振电路
晶振晶体振荡器简称电气等效成电容电阻联串联电容二端网络晶振种电机械相互转化晶体振状态工作单片机提供工作需时钟信号[4]理说振荡频率越高表示单片机运行速度越快时存储器速度印刷电路板求越高木桶原理时单片机性坏仅CPU运算速度关存储器速度外设速度等关系般选6~12MHZ联谐振电路电容值没严格求会影响振荡器稳定振荡器频率高低起振快速性等陶瓷封装电容进步提高温度稳定性STC89C51RC部高增益反相放器构成振荡器
晶振重参数负载电容值选择负载电容值相等联电容晶振标称谐振频率般晶振振荡电路反相放器两端接入晶振两电容分接晶振两端电容端接两电容串联容量值应该等负载电容
般晶振负载电容15pF125pF 果考虑元件引脚等效输入电容两22pF电容构成晶振振荡电路较选择
晶振单片机脚XTAL0脚XTAL1构成振荡电路中会产生偕波波电路影响会降低电路时钟振荡器稳定性电路稳定性起见 ATMEL公司建议晶振两引脚处接入两10pf50pf瓷片电容接削减偕波电路稳定性影响晶振配电容10pf50pf间系统采12 MHZ晶振

图32 单片机时钟原理图
(2)复位电路
单片机复位电路两种电动复位方式手动复位方式系统已具备电源开关键电动复位方式复位单片机初始化操作功单片机0000H单元开始执行程序51单片机高电复
位单片机加5V电源(电)启动时情况:时电容充电相短路(电容特性:通交流隔直流电瞬间相交流)认RST电压VCC单片机复位状态着时间推移电容两端电压升高造成RST电压降低低阈值电压时完成复位程外部复位电路提供两机器周期高电设计RST脚保持10ms高电系统会效复位电容C1取10~33μFR取10kΩ充电时间常数10×106×10×103100ms电路图33示:

图33 单片机复位原理图
电容作缓RST端保持高电段时间达效复位电容越保持时间越久单片机复位需少持续两机器周期高电时间刚开始电时候图33中电容C1 充电单片机复位引脚RST会出现2机器周期高电单片机复位
32 数采集模块
型号CZLA量程10kg电阻应变式压力传感器测物体进行压力采集转换成电压信号输出电压信号通常时需利HX711转换模块中编程放器进行放放模拟电压信号24位AD转换芯片HX711电路转换成数字量通2线串行方式单片机通信完成数采集工作数字采集模块原理图图34示

图34数采集模块图
321 压力传感器
(1)压力传感器选择
设计中需压力传感器物品重量进行测量压力传感器压力检测系统中重元件选择压力传感器时需考虑量程参数考虑性价兼容性等等压力传感器测压力信号转换成容易测量电信号输出AD转换单片机处理传送液晶显示压力值供报警压力传感器种类应变式传感器电容式压力传感器压电传感器谐振式压力传感器直接位移式传感器利磁弹性压阻等物理效应传感器
压电传感器利某电介质受力产生压电效应制成传感器[5]压电传感器动态测量外力作压电元件产生电荷泄漏情况保存需测量回路具限输入阻抗实际压电式传感器静态测量压电传感器应加速度压力力等测量中
电阻应变式传感器具悠久历史电阻应变式传感器具金属应变效应果外力存金属会发生微弱形变改变电阻值具结构简单精度高易实现型化等特点目前应广泛传感器应变较非线性输出信号较弱通措施补偿
电阻应变片机械应变信号转换△RR压力传感器工作时应变片形变量导致电阻变化微弱测量结果未必准确结果数值导致处理起会十分困难测量结果某电路电阻变化形变量转化电信号提高测量效率精确度[6]处通常选测量电桥作转换电路
处测量电桥选直流电桥直流电桥抗干扰力强输出信号需转换电信号通高效放电路进行放R1R2R3R4组成惠更斯电桥两电阻应变片阻值变化转变成输出电压工作原理图35示

图35 测量电桥原理图
(2) 电阻应变式传感器测量原理
电阻应变式压力传感器弹性元件电阻应变片等组成传感器部线路采惠更斯电桥弹性体承受载荷产生变形时转换元件电阻应变片会受拉伸变形阻值发生变化电桥失衡产生相应差动信号供续电路测量处理电
阻应变式传感器测量原理图图36示

图36 电阻应变式传感器测量结构图
外界施加垂直正压力P作金属横梁时横梁产生形变电阻应变片R1R3受压弯拉伸阻值增加R2R4受压缩阻值减电桥失衡产生衡电压衡电压作传感器载菏P成正非电量转化成电量输出[7]
(3) 电阻应变片基结构
电阻应变式压力传感器测物体压力变化转换成电阻值变化进行测量应变片该型传感器核心金属导体半导体制成电阻体种测件应变变化转换成种电信号敏感器件通常应变片通特殊方式紧密粘合应变基体基体受力发生应力变化时电阻应变片着产生形变应变片阻值改变加电阻电压发生变化[7]
电阻应变片四部分组成基结构图37示电阻丝应变片敏感元件基片覆盖片起定位保护电阻丝作电阻丝测试件间绝缘引出线连接测量导线


图 37电阻应变片基结构
322 信号放电路
压力传感器输出电压范围0~20mVAD转换输入电压需0~2V放环节100倍左右增益放环节求增益调(70~150倍)根设计实际情况增益设100倍
压力传感器测量原理知电阻应变片组成传感器机械应变转换成电阻相变化率ΔRR应变电阻变化般微例传感器应变片电阻值200Ω灵敏系数 K3弹性体额定载荷作产生应变1000ε应变电阻相变化率:
ΔRR K×ε 3×1000×10-6 0003 (31)
式31出电阻变化ΔR06Ω电阻变化率03电阻变化难直接准确测量便直接处理必须采转换电路应变片ΔRR变化转换成电压电流变化电压电流信号需增加增益放电路电压电流信号转换成AD转换芯片接收信号采结合HX711芯片放电路图38示:


图38 HX711芯片放电路
323 AD模数转换
模拟量输入通道务模拟量转换成数字量够完成务器件称模数转换器简称AD转换器次设计中AD转换器务放器输出模拟信号转换位数字量进行输出
(1)AD转换模块器件选择
目前许类型单片机部已带AD转换电路类单片机会AD转换功单片机价格高出节约成采51单片机加AD转换器实现模数转换功AD转换部分整设计关键部分处理会整设计毫意义目前世界种类型AD转换芯片传统行串行逐次逼型积分型ADC年新发展起∑Δ型流水线型ADC种类型ADC优缺点满足应求
里AD转换芯片选ADC0832ADC0809HX711等AD转换芯片种类常见属串行行接口模式接口模式选择器件项重指标样转换分辨率转换速度接口方式会电路结构采周期产生影响次设计没选择常见行接口AD转换器ADC0809者串行接口AD转换器ADC0832根系统精度求综合分析较设计采24位AD转换器HX711芯片封装图39示类型芯片相该芯片集成包括稳压电源片时钟振荡器等类型芯片需外围电路具集成度高响应速度快抗干扰力强等优点降低系统整机成提高整机性性

图39 HX711封装图
(2)AD转换芯片HX711简介
HX711芯片采海芯科技集成电路专利技术款专高精度压力测量设计24 位AD 转换器芯片该芯片单片机接口电路设计程序编写非常简单控制信号脚驱动需芯片部寄存器编程输入选择开关意选取通道A 通道B部低噪声编程放器相连通道A 编程增益128 64应满额度差分输入信号电压值分±20mV±40mV通道B 固定32 增益系统参数检测芯片提供稳压电源直接外部传感器芯片AD 转换器提供电源系统板需外模拟电源[8]芯片时钟振荡器需外接器件电动复位功简化开机初始化程关引脚说明表32示:



表32 HX711引脚说明
脚号
名称

描述
1
VSUP
电源
稳压电路供电电源:26V~55V
2
BASE
模拟输出
稳压电路控制输出(稳压电路时连接)
3
AVDD
电源
模拟电源:26V~55V
4
VFB
模拟输入
稳压电路控制输入(稳压电路时应接)
5
AGND

模拟
6
VBG
模拟输出
参考电源输出
7
INA
模拟输入
通道A负输入端
8
INA+
模拟输入
通道A正输入端
9
INB
模拟输入
通道B负输入端
10
INB+
模拟输入
通道B正输入端
11
PD_SCK
数字输入
断电控制(高电效)串口时钟输入
12
DOUT
数字输出
串口数输出
13
XO
数字输入输出
晶振输入(晶振时连接)
14
XI
数字输入
外部时钟晶振输入0:片振荡器
15
RATE
数字输入
输出数速率控制010HZ180HZ
16
DVDD
电源
数字电源:26V~55V
正常情况HX711单片机接口应2条数线分PD_SCKDOUT结构示意图图310示

图310 HX711部方框图
芯片串口通讯线PD_SCK DOUT 两端口构成输出数选择输入通道增益数输出脚DOUT 高电时表明AD 转换器未准备输出数时串口时钟输入信号PD_SCK 应低电DOUT 高电变低电PD_SCK 应输入25 27 等时钟脉(图二)中第时钟脉升读出输出24 位数高位(MSB)直第24 时钟脉完成24 位输出数高位低位逐位输出完成第2527 时钟脉选择次AD 转换输入通道增益参见表33
表33 输入通道增益选择
PD_SCK脉数
输入通道
增益
25
A
128
26
B
32
27
A
64
PD_SCK 输入时钟脉数应少25 27否会造成串口通讯错误AD 转换器输入通道增益改变时AD 转换器需4 数输出周期稳定DOUT 4 数输出周期会高电变低电输出效数
(4) HX711数输出输入通道增益选择时序图图311示


T3:PD_SCK正脉电时间

T4:PD_SCK正脉电时间
T1:DOUT降PD_SCK脉升

T2PD_SCK脉升DOUT数效





图311 数输出输入通道增益选择时序图
芯片电时芯片电动复位电路会芯片动复位脚PD_SCK 控制HX711 断电PD_SCK 低电时芯片处正常工作状态断电控制图图312示

图312 断电控制
芯片复位断电状态进入正常工作状态AD 转换器需4 数输出周期稳定DOUT 4 数输出周期会高电变低电输出效数
33 机交互模块
矩阵键盘液晶显示电路压力检测系统户交互接口户通显示观察压力数统计分析处理系统状态参数根观察值通键盘单片机进行控制节设计较合理键盘显示电路完成功
331 液晶显示单元
LCD12864显示实时压力值液晶屏电路图313示LCD_CSLCD_RESLCD_RSLCD_SDALCD_SCK液晶模块单片机接口控制线CS_ZKSCK_ZKSO_ZKSI_ZK字库单片机接口控制线

图313 12864液晶
该LCD液晶晶联讯公司生产128*64汉字屏JLX12864G086PC显示模块该显示模块成普通图型液晶显示模块含JLXGB2312 字库IC字库IC 中读取置字库点阵数写入LCD 驱动IC 中达显示汉字目
JLX12864G086显示128列*64行点阵单色图片显示8行*4行16*16点阵汉字显示16行*8行8*8点阵英文数字符号采点阵型液晶显示器(LCD)显示128*64点阵84行汉字点尺寸 048*048(WXH)mm置ST7920接口型液晶显示控制器带GB2312码简体中文字库(16*16点阵)MCU单片机直接连接具8位行串行连接方式广泛应类仪器仪表电子设备晶联讯电子生产JLX12864G086型液晶模块方便显示清晰广泛应种机交流面板接口引脚功介绍表34示
技术参数显示特性:
l 电源:VDD 33V~+5V(置升压电路需负压)
l 显示容:128列×64行
l LCD类型:STN
l 种功:光标显示画面移位睡眠模式等
表34 LCD12864引脚说明
脚号
脚符号
名称
脚功描述
1
ROMIN
字库IC接口
串行数输出
2
ROMOUT
字库IC接口
串行数输入
3
ROMSCK
字库IC接口
串行时钟输入
4
ROMCS
字库IC接口
片选输入
5
LEDA
背光电源
背光电源正极VDD电压(5V33V)
6
VSS

0V
7
VDD
电路电源
5V33V选
8
SCK
IO
串行时钟
9
SDA
IO
串行数
10
RS
寄存器选择信号
H:数寄存器0:指令寄存器
11
RST
复位
低电复位复位回高电液晶工作
12
CS
片选
低电片选
点阵LCD显示原理
数字电路中数01保存LCD控制器进行数操作结果显示英文操作英文字母种类少需8位(字节)中文常6000DOS前辈想办法ASCII表高128少数值两组表示汉字汉字码剩低128位留英文字符英文码汉字码仅组数字屏幕显示涉文字字模字模然组数字意义数字意义根变化数字位信息记载英文汉字形状英文'A'字模记载方式图314示:

图314 A字模图
中文字模中记载图315示:

图315 字模图
332 矩阵键盘单元
图316示4*3矩阵键盘包含左右四方选择键加减键六功键存储键手动存储压力值清空键清空存储历史数相应数统计值均0调零键压力传感器调零前压力值显示0000kg修改阈值键修改系统预设阈值9999kg意0~9999kg设计阈值返回键前操作返回级确认键中功确定传送系统执行相应程序矩阵键盘行扫描信号ROW1~ROW3列扫描信号COL1~COL4行信号输入信号低电效列信号输出信号没键时行扫描输入低电信号列信号高电行扫描低电键时应列输出低电该低电信号定位键位置

图316 4*3矩阵键盘电路
34 声光报警模块
报警电路选8550 PNP型三极基极低电时导通测量重量超量程时beepalert出低电信号驱动蜂鸣器鸣响报警灯亮图317示:


图317 声光报警电路图

35 电源供电模块
系统通USB电源供电电源电压5V单片机程序通USB线串行载助键开关操作控制电源通断实现系统良性运作通电电源指示灯点亮系统开始工作断电电源指示灯熄灭系统停止运行电源供电开关模块图318示

图318 电源供电模块电路

































4 软件程序设计
根设计求次软件设计程序子程序模块组成样方便编写运行整理软件部分程序AD转换数子程序LCD显示子程序历史查询子程序数统计分析子程序中断延时子程序等组成系统工作时单片机路电压电流采样数统计分析实时显示时测试程中监控压力值达预警作
41 软件开发环境
系统单片机开发环境Keil μVision4Keil μVision4德国Keil Software公司出品51系列C语言软件开发系统传统C语言语法开发C语言维护性结构性读性着明显优势提高工作效率项目开发周期Keil C518051单片机软件开发提供C语言环境时着汇编代码高效快速特点C51编译器更加贴CPU身C51已完全集成uVision4集成开发环境中集成开发环境包含:实时操作系统编译器调试器等等uVision4 IDE提供单灵活开发环境
Keil μVision4 IDE开发界面图图41示

图41 Keil μVision4 开发界面
Keil C51软件提供丰富库函数C51工具包完成编辑编译连接调试等整流程程序员IDE编辑器编辑C文件
编写单片机程序三种常见方式C语言编程汇编语言编程混合编程前两种编程方式相C语言更加通俗易懂容易手C语言属高级语言着编译器强支持动优化编程者软件设计时候花费太时间研究单片机底层硬件资源然汇编语言某方面然着优势突出点效率优化操作性C语言编译器支持编译链接生成汇编文件性优化方面完全受制编译器C语言层面法做优化直接汇编语言编写程序汇编级具体执行条汇编指令具体寄存器完全透明性求特高场合果丰富汇编验般汇编语言编写
单片机程序
克服C语言编程汇编语言编程缺点混合编程方式完美结合两者优点做优势互补通常单片机合编程技术程序框架体部分C语言编写频率高求执行效率高延时精确部分汇编语言编写[9]样保证整程序读性保证单片机应系统性
系统性求般采C语言方式编写单片机程序通编译选项设置Keil软件编译链接动生成HEX16进制文件方便单片机程序直接烧写
42 IO端口分配
STC89C51RC40引脚P0~P3四引脚组8引脚系统言引脚数量够[10]引脚功分配
l P20~P27P16P17接LCD中液晶单片机控制端口字库单片机控制端口
l P34~P37P134*3矩阵键盘键包括功选择键参数设置键工作启停等功控制
l P14P15 接AD转换芯片HX711数采集端口串行工作方式节省IO口
单独接口振荡电路接口声光报警电路接口单片机带烧录程序串口通讯接口TXDRXD等
程序中端口定义功:
sbit ADDO P1^5 串行数输出端口
sbit ADSK P1^4 断电控制(高电效)串口时钟输入端口
sbit lcd_sclkP2^3 LCDsclk接口
sbit lcd_sidP2^4 LCDsid接口
sbit lcd_rsP2^5 LCDrs接口
sbit lcd_resetP2^ LCDreset接口
sbit lcd_cs1P2^ LCDcs1接口
sbit Rom_INP1^7 字库ICSI接口
sbit Rom_OUTP1^6 字库ICSO接口
sbit Rom_SCKP2^0 字库ICSCK接口
sbit Rom_CSP2^1 字库ICCS接口
sbit LedA P2^2 LCD液晶背光电源接口
sbit beep P1^0 报警电路蜂鸣器接口
sbit alert P1^1 LED发光二极接口
sbit ROW1P3^3 矩阵键盘第行接口
sbit ROW2P3^2 矩阵键盘第二行接口
sbit ROW3P1^3 矩阵键盘第三行接口
sbit COL1P3^4 矩阵键盘第列接口
sbit COL2P3^5 矩阵键盘第二列接口
sbit COL3P3^6 矩阵键盘第三列接口
sbit COL4P3^7 矩阵键盘第四列接口
43 软件程序构架
系统设计五模块构成软件程序实现功模块控制终数进行分析计算出性测量结果程序执行时首先整系统进行初始化部分包括参数初始化IO初始化器件初始化三操作参数初始化时全局系统参数进行初始化保证程序执行性IO初始化IO电功设置关闭状态防止发生误操作器件初始化外围AD芯片模拟开关LCD进行初始化保证器件够正常运行果程中发生错误调报警电路进行报警程序流程图图42示

图42 系统程序构架框图
初始化完毕延时等模块准备液晶显示器发送数显示初始机界面时整系统开始进行数采集工作参数均处默认状态果需调整实时通键盘控制系统根读取键盘键值执行相应操作分执行修改阈值参数读取AD采样值压力测量手动存储超重预警发出报警信号查阅历史数统计分析等
等部分操作完成系统屏幕根需实时刷新显示数状态显示新参数采样信息
44 功子程序设计
先进行系统初始化初始化模块单片机堆栈指针中断寄存器全局变量定义赋初值定时器初始化定时器作AD转换时间设定然进行模数转换判断否超设定阈值转换压力字符通液晶显示参数设定完毕系统启动数采集控制程序实现压力实时检测
441 AD子程序设计
通压力传感器输出数信号放器处理AD转换芯片转换数字信号中模拟信号放倍数放电路控制软件方面单片机通发送时序命令方式AD芯片进行控制选型AD芯片需启动命令动转换次采集前程序通延时等转换完成然发送低电片选信号数读取功数读取整程中保持变然发送时钟读取采样值数保存存储器设定空间存储空间指针移位时片选信号置高等读取组数完成程序功AD采集部分流程图图43示:

图43 AD转换流程图
442 中断子程序设计
系统称重间隔05S05S置标志位累加器计数满400次延时时间05S置称重标志位中断子程序流程图图44示



图44 中断流程图
443 查询历史数子程序设计
预先手动存储八压力值(超阈值)存储第九数时存储历史数会动第位存储数挤掉面存储数均次前移位键进行选择光标停查询历史数功菜单前确认键确定调该子程序判断否0显示历史读取显示存储压力值序次NO1~8显示输出查询历史数流程图图45示

图45 查询历史数流程图
444 数统计分析子程序设计
预先手动存储八压力值(超阈值)存储第九数时存储历史数会动第位存储数挤掉面存储数均次前移位键选择数统计分析系统会压力值进行数分析处理(求均值值排序求中位数判断众数)然次显示输出均值值值中位数众数显示出现次显示该众数四种情况abcdefgh型aabbccdd型aaaaaaaa型aaaabbbb型显示众数图46示





图46 数统计分析流程图
445 阈值重设子程序设计
系统开启系统会默认显示程序中预先设定阈值9999kg阈值重设键键盘程序读取键码调该子程序界面跳修改阈值界面光标第9面通左右选择键光标左右移动该光标停意数面通加减键该数字进行修改完成阈值修改确认键跳转菜单图47示


图47 阈值重设功流程图
446 机交互子程序设计
机交互单元包括键盘处理12864显示模块两部分机交互设计性化便捷操作必操作硬件设计基础必须软件灵活控制显示时序均时序建模方式实现控制驱动简化软件设计软件仅需求出拟显示图位置
(1)液晶显示控制程序设计
液晶显示控制程序框图图48示液晶总线接口P20~P27P27定义CS片选口次液晶操作必须先拉高CS信号P25定义液晶复位接口开始先液晶显示初始化功液晶背光时间背光等级字符显示格式汉字显示格式界面初始化等初始化完毕步项参数显示







图48 液晶显示初始化控制流程图
(2)键盘驱动程序设计
键盘处理程序单片机控制口读取键状态消抖键状态根键状态户输入键值进行相应参数设定通键重设系统阈值键盘驱动程序框图图49示


图49 键驱动流程图
矩阵键盘处理方法较简单单片机电引脚默认电高点键时候变低电单片机读取低电状态段时间延时消抖读取电状态确保键时候会误读然处理续程序代码键盘控制程序代码:
#include keyboardh
键扫描函数
功扫描键键号优先
返回键值:
1(save) 2(clearHistory) 3(to_zero) 4(limit)
5(plus) 6(up) 7(sub) 8(return)
9(left) 10(down) 11(right) 12(enter)


unsigned char Getkeyboard(void)
{
unsigned char number 0
unsigned char i

行输入低电
ROW1ROW2ROW30
果列输出全高说明键
if ((COL11)||(COL21)||(COL31)||(COL41))
{
输入011
ROW10
ROW2ROW31
for (i0i<30i++)
if (COL10) return 1
else if (COL20) return 2
else if (COL30) return 3
else if (COL40) return 4
输入101
ROW20
ROW1ROW31
for (i0i<30i++)
if (COL10) return 5
else if (COL20) return 6
else if (COL30) return 7
else if (COL40) return 8
输入110
ROW30
ROW1ROW21
for (i0i<30i++)
if (COL10) return 9
else if (COL20) return 10
else if (COL30) return 11
else if (COL40) return 12
没检测列低电
return 99
}
return 99
}

























5 系统调试
51 数采集调试
压力传感器数采集压力检测系统关键部分压力采集电阻应变式压力传感器传感器接相应端口观察采集压力否正常应变片形变电阻值改变输出变化电压值放输送单片机显示前压力分已知质量砝码物体放置压力托盘观察液晶显示判断误差否控范围表51示
表51 数采集结果记录表
序号
测物体质量(kg)
测量结果(kg)
绝误差(kg)
引误差()
1
01
0092
0008
008
2
02
0191
0009
009
3
05
0490
0010
010
4
10
0990
0010
010
5
15
1489
0011
011
6
20
1988
0012
012
7
30
2988
0012
012
8
40
3987
0013
013
9
50
4986
0014
014
10
60
5985
0015
015
11
70
6984
0016
016
12
80
7984
0016
016
测量结果单片机AD芯片输出端读取转换结果结果24位AD芯片HX711系统数采集精度较高实际数偏差值较测量数真值测物体质量较时测量结果误差较测物体质量越测量误差越测物体质量01~20kg时精度达96g测物体质量20~60kg时精度达1275g测物体60~10kg时精度达157g求该系统精度概12g左右基满足设计求
52 数统计分析调试
连续放置物体托盘手动存储前测物体实时压力值保存系统存储次数超八次键选择数统计分析功程序调相应子程序开始运行处理数计算均值值中位数众数首先存储数排序均值计算存储数相加求均值值选中排序数组直接读取输出显示()值中位数选择排序中间数输出奇数排序中间数中位数偶数排序中间两数求均值求中位数众数求法次数面数进行较找出相数出现次数数显示输出显示出现次数原数两数出现次数相(出现次数1次)两数全部显示输出调试键均准确进行系统功选择功实现
53 声光报警调试
程序中已设定阈值9999kg进入系统界面显示前阈值9999kg阈值重设键界面切换阈值重设状态左右键选择想修改数字接着加减键阈值设户想值设2000kg然放置物体达2000kg时声光报警模块启动蜂鸣器发声LED点亮报警调试成功
54 软件调试
软件调试中需先分模块调试软件中子程序确保模块正常工作情况调试整软件系统果直接调试整系统旦中某模块出现问题会难发现问题源头会影响整系统调试效率
1 ADC数采集程序模块
系统中采ADC模块HX711获取压力传感器电压电流信息数采集精准度直接影响整系统工作精度进入中断等ADC转换结束定义压力时long型调试程中发现压力调423kg左右调显示乱码检查错误发现long型范围够数溢出压力修改UNSIGNED LONG型
2 显示模块程序
12864该系统液晶液晶KEIL 0XFD编程时漏洞汉字显示解决问题网搜索找方法①晓奇工作室出补丁②十六进制编辑软件HexEdit开c51exe搜索80FBFD改80FBFF采第种方法解决问题显示模块函数整程序中单独取出进行软件独立调试程序中设定LCD显示字符数运行程序观察LCD否程序设定显示字符重新检查程序编写否正确调整程序然继续检测直LCD显示结果符合预定值
3 键交互单元
键模块独立出键设定功LCD显示键值运行程序键观察LCD显示结果否正常否程序设定键值致致调试程序直键结果符合预定值
55 实物展示
系统硬件终实物图图51示



图51 整体系统实物
系统模块详细特写图图52示


(a)数采集模块 (b)单片机系统 (c)矩阵键盘模块
图52 系统模块特写图
系统开机会进入菜单界面图53示





图53 菜单界面
阈值9999kg系统程序预设值户根需修改阈值键进入阈值重设界面图54(a)示通左右键分光标位移数三位加减键光标指数字实现更改阈值重设1000kg图54(b)示

(a)阈值重设前 (b)阈值重设
图54 阈值重设界面
确认键系统界面跳转菜单时阈值已显示1000kg放置重量超1kg物体托盘系统声光报警显示前压力图55示







图55 声光报警显示
移物体分测7组数手动存储键进行存储键时速度宜快05秒刷新次光标时指查询历史数功确认键进入查询历史界面选择键翻页查询历史图56示

图56 查询历史数界面显示
液晶显示界面出0089kg出现3次0179kg出现4次返回键菜单选择键光标指数统计分析功确认键进入该界面次显示均值值值中位数键翻页查众数显示出现次值图57示

图57 数统计分析界面显示
存储数众数显示众数图58示

图58 显示众数界面
未存储数查询历史数显示图59数统计分析显示图510图58示

图59 历史数界面 图510 数统计分析界面












6 结束语
次设计收获做基51单片机压力检测系统设计芯片STC89C51RCHX711实现功电阻应变式压力传感器通称重采集模拟信号转换成51单片机识数字信号单片机运算处理输出LCD液晶显示信息矩阵键盘实现系统实时控制单片机达指令实现压力检测声光报警手动存储历史数查询数统计分析等功更加精确物体进行称重测量前未接触新AD芯片HX71124位高精度AD转换器HX711种专压力测量设计制造高精度芯片网搜索资料帮助遇懂问题解决家起讨学芯片功外解芯片串行输出控制里软件设计难点前电视实期间学Protel99SE绘图软件鉴该软件模块易找次Altium designer绘图软件该软件Protel升级版入手快通书学老师帮忙画原理图系统程序设计点难度12864液晶显示前基1602更直观显示测量结果选显示汉字12864液晶编程方面点难处理外系统实现功较复杂需进行排序求众数处理修改程序时候花少时间终显示想结果
次毕业设计更加解C51程序强功前学单片机程中漏洞修补Keil加深种软件理解程度HX711PROTEUS软件没仿真元件没实现KeilProteus软件联调仿真然学该仿真软件熟悉仿真流程次毕设暴露时学中足知识缺乏融会贯通力毕业设计程中断发现问题断修改断领悟断获取实践出真知亲动手做知道知识匮乏


















参 考 文 献

[1] 沙占友编.集成化智传感器原理应.北京: 电子工业出版社 20043656.
[2] 赵德安.单片机原理应[M].北京:机械工业出版社2009.
[3] 清源计算机工作室.Protel 99SE 原理图PCB仿真.北京:机械工业出版社2001.
[4] 李广第.单片机基础.北京:北京航空航天学出版社19953364.
[5] 徐恕宏.传感器原理设计基础.北京:机械工业出版社19883045.
[6] 彭军.传感器检测技术[M].西安:西安电子科技学出版社2003.
[7] 周航慈.单片机应程序设计技术.北京: 北京航空航天学出版社19911827.
[8]民.卢惠林.汇编语言程序设计教程[M].北京:清华学出版社2009.
[9] Stephen G Kochan著.Programming in ANSI CHagden Books Indianapolis:IndianaUSA1994.
[10] E.VargasRodrigueza.H.N.RutteSensors and Actuators B.Sensors and Actuators B
137 (2009)





















致 谢

次设计导师xxx老师悉心指导完成回想二学高频电子技术xx老师兢兢业业认真负责直感染着毕业设计开始阶段xx老师学设计实施选择创造许利条件方案设计中建议灵感畏难时xx老师直鼓励着令毕设功完整实现xx老师严谨细致工作作风宽高尚品质谆谆教诲终身难忘感谢四年传业解惑育成材位老师感谢辛劳私学生成长付出量心血导师表示衷心感谢
感谢设计程中帮助学朋友学中互相帮助互相鼓励够利完成学业帮助发现设计误区时发现问题设计利进行监督设计程中时完成定务次设计尤感谢班蔡涛学软件设计帮助帮解决问题没帮助样利结稿感谢陪伴四年学四年学生活充满精彩请接受真诚谢意
  特感谢家正支持教育机会坐学课堂里完成科四年学感谢母校xx学走入社会资心理准备终生受益



















附 录 A
附:电路总原理图






附 录 B
附:系统程序
#includemainh


定义标识
volatile bit FlagTest 0 定时测试标志05秒置位测完清0
volatile bit FlagKeyPress 0 键标志处理完毕清0
volatile bit FlagSetPrice 0 价格设置状态标志设置1

显示变量
int Counter 0
uchar idata str1[6] 000000
unsigned long idata limit 9999

阈值设置
unsigned char idata local[4] {688492100}
unsigned char idata local_index 0

称重变量
unsigned long idata FullScale 满量程AD值1000


历史记录
unsigned long idata history[8] {0}
int idata hisCount 0


void main(void)
{
Rom_CS1
initial_lcd()
EA 0
beep 1
alert 1
Timer0_Init()
初始化完成开中断
EA 1
背光
LedA 1
clear_screen() clear all dots
display_GB2312_string(11 压力检测系统 )
display_GB2312_string(31 loADing )
To_Zero()
delay(120)
funcList()
}



整型转字符串函数转换范围065536
void int2str(int x char* str)
{
int i1
int tmp10
while(xtmp0)
{
i++
tmp*10
}
tmpx
str[i]'\0'
while(i>1)
{
str[i]'0'+(tmp10)
tmp10
}
str[0]tmp+'0'
}

重新找回零点次测量前调
void To_Zero()
{
FullScaleReADCount()1000
}


显示重量单位kg两位整数三位数
void displayPress(unsigned long weightunsigned char lineNum)
{
unsigned int ij

display_GB2312_string(lineNum60 )
weight单位g
i weight1000 整数部分
j weight i*1000数部分
memset(str106)
int2str(istr1)
if (i>10)
{
display_GB2312_string(lineNum60str1)
}
else
{
display_GB2312_string(lineNum68str1)
}
display_GB2312_string(lineNum76)
memset(str106)
int2str(jstr1)
if (j<10)
{
display_GB2312_string(lineNum8400)
display_GB2312_string(lineNum100str1)
}
else if (j<100)
{
display_GB2312_string(lineNum840)
display_GB2312_string(lineNum92str1)

}
else
{
display_GB2312_string(lineNum84str1)
}
}


定时器0初始化
void Timer0_Init()
{
ET0 1 允许定时器0中断
TMOD 1 定时器工作方式选择
TL0 0x06
TH0 0xf8 定时器赋予初值
TR0 1 启动定时器
}

定时器0中断
void Timer0_ISR (void) interrupt 1 using 0
{
TL0 0x06
TH0 0xf8 定时器赋予初值

05秒钟刷新重量
Counter ++
if (Counter > 400)
{
FlagTest 1
Counter 0
}
}
void funcList()
{
unsigned long press 0
unsigned char keyValue 0
unsigned char flag 0

interface()

while(1)
{
if (FlagTest1)
{
To_Zero()
press getPress()
if (press > limit)
{
beep 0
alert 0
display_GB2312_string(160******)
}
else
{
beep 1
alert 1
display_GB2312_string(160 )
}
displayPress(press1)
}
if (beep 1)
{
keyValue Getkeyboard()
if (FlagKeyPress 0)
{
FlagKeyPress 1
switch(keyValue)
{
case 1 save(press)
break
case 2 clear()
break
case 3 To_Zero()
break
case 4 setLimit()
clear_screen()
interface()
break
case 6 display_GB2312_string(51 )
display_GB2312_string(51 >查询历史数 )
display_GB2312_string(71 数统计分析 )
flag 0
break
case 10display_GB2312_string(71 )
display_GB2312_string(51 查询历史数 )
display_GB2312_string(71 >数统计分析 )
flag 1
break
case 12if(flag 0)
checkHistory()
else
analysis()
flag 0
clear_screen()
interface()
break
defaultbreak
}
FlagKeyPress 0
}
delay(20)
}
}
}

void interface()
{
display_GB2312_string(11压力 kg)
display_GB2312_string(31阈值 kg)
displayPress(limit3)
display_GB2312_string(51 >查询历史数 )
display_GB2312_string(71 数统计分析 )
}

unsigned long getPress()
{
unsigned long weight 0
unsigned long ADval 0

称重重量值weight单位g
ADval ReADCount()
weight FullScale ADval 1000
if (weight>0x8000)
weight 0
weight 10000 * weight FullScale
weight weight * RATIO

return weight
}

void checkHistory()
{
unsigned char keyValue 99

clear_screen()
if(hisCount 0)
{
display_GB2312_string(11 前 )
display_GB2312_string(31 历史数 )
display_GB2312_string(51 )
display_GB2312_string(71 return键返回)
while(1)
{
keyValue Getkeyboard()
if(keyValue 8) break
delay(20)
}
}
else
{
if (hisCount < 4)
{
firstPage()
while(1)
{
keyValue Getkeyboard()
if(keyValue 8) break
delay(20)
}
}
else if(hisCount > 4)
{
firstPage()
while(1)
{
keyValue Getkeyboard()
if (keyValue 8)
break
else if(keyValue 10)
secondPage()
else if(keyValue 6)
firstPage()
}
}
}

return
}

void firstPage()
{
char i

clear_screen()
for(i 1i < hisCounti++)
{
display_GB2312_string(i5*211NO Kg)
memset(str106)
int2str(istr1)
display_GB2312_string(i5*2117str1)
displayPress(history[i1]i5*21)
if (i 4) break
}

return
}

void secondPage()
{
char i

clear_screen()
for(i 5i < hisCounti++)
{
display_GB2312_string((i4)5*211NO Kg)
memset(str106)
int2str(istr1)
display_GB2312_string((i4)5*2117str1)
displayPress(history[i1](i4)5*21)
}

return
}
void analysis()
{
unsigned char keyValue 0
unsigned long idata temp[9]
int idata num_num[4]
int idata num_index[4]
int ijkab
int idata zhongweijunzhizhongshu

memset(temp09)
memset(num_index04)
zhongwei 0
junzhi 0
zhongshu 0

for(i 0i < hisCounti++)
temp[i] history[i]

for(i 0i < 4i++)
num_num[i] 1

排序获值值
if(hisCount > 1)
{
for(i 0i < hisCount1 i++)
{
for(j 0j < hisCount1i j++)
{
if(temp[j] > temp[j+1])
{
temp[8] temp[j]
temp[j] temp[j+1]
temp[j+1] temp[8]
}
}
}
}

均值
for(i 0i < hisCounti++)
{
temp[8] + temp[i]hisCount
junzhi + (int)temp[i]
}
if(hisCount 0)
junzhi junzhihisCount

中位数
if(hisCount 0)
{
if(hisCount21)
{
zhongwei (int)temp[hisCount2]
}
else
{
a(int)temp[hisCount21]
b(int)temp[hisCount2]
zhongwei (a+b)2
temp[9] b
}
}

众数
if(hisCount > 1)
{
k 0
for(i 0i < hisCount 1i++)
{
for(j ij < hisCount 1j++)
{
if(history[j] history[j+1])
break

num_num[k]++
num_index[k] i
}
if(i j)
k++
i j
}
}
if(k 0)
{
i 0
j i
if(k > 1)
{
while(1)
{
if(num_num[i] < num_num[i+1])
j i + 1
if(i + 1 k 1)
break
i++
}
}
}

clear_screen()
display_GB2312_string(11均值 Kg)
displayPress(junzhi1)
display_GB2312_string(31值 Kg)
if(hisCount > 1)
displayPress(temp[hisCount 1]3)
else
displayPress(temp[0]3)

display_GB2312_string(51值 Kg)
displayPress(temp[0]5)

display_GB2312_string(71中位数 Kg)
displayPress(zhongwei7)

while(1)
{

keyValue Getkeyboard()
if(keyValue 8)
break
else if(keyValue 6)
{
clear_screen()
display_GB2312_string(11均值 Kg)
displayPress(junzhi1)
display_GB2312_string(31值 Kg)
if(hisCount > 1)
displayPress(temp[hisCount 1]3)
else
displayPress(temp[0]3)

display_GB2312_string(51值 Kg)
displayPress(temp[0]5)

display_GB2312_string(71中位数 Kg)
displayPress(zhongwei7)
}
else if(keyValue 10)
{
clear_screen()
if(k0 ||
k4 ||
((k1)&&(num_num[0]hisCount)) ||
((k2)&&(hisCount num_num[0]+num_num[1])))
display_GB2312_string(31 众数 )
else
{
display_GB2312_string(11 众数 )
for(i 0i < ki++)
{
if(num_num[i] num_num[j])
{
a num_num[i]
zhongshu (int)temp[num_index[i]]
memset(str106)
int2str(astr1)
display_GB2312_string((i+1)*2+11 次 kg)
display_GB2312_string((i+1)*2+11str1)
displayPress(zhongshu(i+1)*2+1)
}
}
}
}
}

return
}
void setLimit()
{
unsigned char idata keyValue 99
unsigned char idata flag 0
local_index 0

clear_screen()
display_GB2312_string(11 阈值设置 )
display_GB2312_string(31阈值 Kg)
displayPress(limit3)
display_GB2312_string(5local[0]^)

while(1)
{
keyValue Getkeyboard()
if(flag 0)
{
flag 1
if(keyValue 9)
{
if(local_index > 0)
{
local_index
display_GB2312_string(51 )
display_GB2312_string(5local[local_index]^)
}
}
else if(keyValue 11)
{
if(local_index < 3)
{
local_index++
display_GB2312_string(51 )
display_GB2312_string(5local[local_index]^)
}
}
else if(keyValue 2)
{
local_index 0
limit 0
display_GB2312_string(31阈值 0000Kg)
display_GB2312_string(5local[0]^)
}
else if(keyValue 5 || keyValue 7)
compute(keyValue)
else if(keyValue 12)
break
flag 0
}
delay(20)
}
delay(20)
return
}
void compute(unsigned char key)
{
unsigned long idata index_num[4] {1000100101}
unsigned long temp

temp limit(index_num[local_index]*10)
if(key 5)
{
if(temp > 9*index_num[local_index])
limit limit 9*index_num[local_index]
else
limit limit + index_num[local_index]
}
else if(key 7)
{
if(temp < index_num[local_index])
limit limit + 9*index_num[local_index]
else
limit limit index_num[local_index]
}
temp limit(index_num[local_index]*10)
temp tempindex_num[local_index]
memset(str106)
int2str(tempstr1)
display_GB2312_string(3local[local_index]str1)
display_GB2312_string(51 )
display_GB2312_string(5local[local_index]^)
return
}
void save(unsigned long press)
{
unsigned char i
if (hisCount 8)
{
for (i 0i <8i++ )
history[i] history[i+1]
history[7] press
}
else
{
history[hisCount] press
hisCount++
}
}
void clear()
{
hisCount 0
memset(history0sizeof(history))

}


文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

基于AT89S51单片机无线传输系统设计毕业设计

毕业论文(设计) 题 目: 单片机无线传输系统设计 完 成 人: 班 级: 学 制: 专

文***享 4年前 上传871   0

基于51单片机的智能窗户设计毕业设计

基于51单片机的智能窗户设计【摘 要】 随着电子技术的发展和人民生活水平的不断提高,智能窗已经越来越多地被用到了现代智能化建筑中,提供住户一个安全、方便的环境。据统计,在未来的几年内,安装智能窗的用户将不断增加。本次设计的智能窗户系统能通过其数据检测传感电路不断循环检测室外湿度及温度,当室外湿度达到一定时(下雨时)窗户自动关闭,防止潮湿空气或雨水进入房间;另外可设置自动关闭窗户或开启窗户时

文***品 5个月前 上传113   0

基于51单片机的数字温度计毕业设计

数字测温计设计摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。在工业生产中温度是常用的被控参数,而采用单片机来对这些被控参数进行控制已成为当今的主流。本文介绍了基于AT89S51单片机的测温系统,描述了利用DS18B20开发测温系统的过程,对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详实的分析,对各部分的电路也逐

文***享 3年前 上传1195   0

基于51单片机红外迎宾及人数检测报警系统

红外感应式门铃如今常用于店铺门口用于迎接顾客。它可依据顾客的进出状况作出有所差别的反应。主要研究了红外感应技术在我们日常生活中的应用,即感应式门铃。通过对它的研究,学会红外接近开关的原理、电路设计制作流程以及常用元器件的应用情况。

爱***享 3年前 上传832   0

基于51单片机的定时闹钟设计单片机课程设计

单片机 课 程 设 计 报 告 院系: 信息工程学院 专业: 电子信息工程 课程设计题目: 基于51单片机的定时闹钟设计

文***品 1年前 上传487   0

基于单片机的空调温度控制系统设计毕业设计

 毕业设计  题 目 基于单片机的空调温度控制系统设计 学生姓名 学 号 学 院 计算机与信息工程系 专业班级 指导教师 职 称   年 月 内容摘要 空调是一种能够改善室内温度、湿度、洁净度和空气流速等参数的电器装置。它在生产生活中用途非常广泛。空调

z***u 5年前 上传2543   0

基于单片机智能小车毕业设计

毕 业 设 计(论 文)设计(论文)题目: 基于单片机的智能小车 学 院 名 称: 电子与信息工程学院 专 业: 电子与信息工程

文***品 6个月前 上传197   0

基于51单片机的俄罗斯方块游戏毕业设计论文

基于单片机的俄罗斯方块游戏设计摘 要俄罗斯方块是一款风靡全球的益智游戏。它规则简单,容易上手,且游戏过程变化无穷,使用户在游戏中得到乐趣。本文讨论了一种基于增强型单片机硬件平台和实时操作系统的智能俄罗斯方块游戏的设计与实现。该设计选用的处理器型号为STC12C5A60S2的单片机,实时操作系统采用适用于8051处理器的RTX51 Tiny多任务实时操作系统。重点从软件工程角度论

文***享 3年前 上传893   0

基于51单片机数字温度计设计课程设计

课 题: 基于51单片机数字温度计设计专 业: 电子信息工程班 级: 班学 号: 姓 名: 指导教师: 设计日期:成 绩:XX大学XX学院电气学院 基于51单片机数字温度计设计一、设计目的 1、掌握单片机电路的设计原理

文***品 3年前 上传970   0

基于单片机的土壤温湿度检测计设计毕业设计

基于单片机的土壤温湿度检测计设计毕业设计 目 录 1 绪论 1 1.1选题背景及意义 1 1.2设计任务与要求 1 2 总体方案设计 2 3单元模块设计 5 3.1各单元模块功能介绍及电路设计 5 3.1.1时钟模块简介 5 3.1.2 复位模块简介 6 3.1.3 报警模块简介 6 3.1.4 显示模块简介 7 3.2特殊器件的介绍 8 3.3.1 土壤湿度传

文***品 5年前 上传1816   0

基于安卓系统的点餐系统毕业设计

 本科毕业论文(设计) 题 目: 基于安卓系统的点餐系统 专 业: 姓 名: 指导教师: 职 称: 答辩日期: 基于安卓系统的点餐系统 摘 要 现如今我们生活在一个信息化的时代,信息数据随处可见。特别是无线数据传输

z***u 5年前 上传1686   0

基于51单片机的智能窗帘控制系统

 毕业论文(设计) 学 院: 工学院 专 业: 通信工程 年 级: 20XX级 题 目: 基于单片机

文***品 3年前 上传1106   0

基于51单片机的教室智能照明控制系统

目 录绪论1 教室灯光自动控制整体描述 1.1 灯光控制总体思想 ....................................................................................7 1.2 灯光控制方案分析 ............................................................

平***苏 3年前 上传869   0

基于51单片机的智能家居报警系统

随着网络和信息技术的飞速发展以及生活水平的提高,现在的社会有了很大的发展,信息化的概念已经越来越贴近我们的生活。伴随着社会的发展,家庭安全问题也被更加重视了。

爱***享 3年前 上传857   0

基于AT89C51单片机的简易计算器的设计

 毕 业 设 计 题目 简易计算器的制作 专 业 通信工程 目 录 摘 要 1 Abstract 2 第一章 绪论 3 1.1 开发背景 3 1.2

山***1 5年前 上传2340   0

论文:基于51单片机的智能充电器的设计

在我们的日常生活中,手机已经变得越来越重要了。我们经常需要使用手机,打电话、发短信、上网、看电影、听歌、玩游戏等等。随着大屏幕和高主频的手机出现,锂离子电池就变得更加重要了,其锂离子电池充电器也受到广大消费者的重视。

z***u 5年前 上传1658   0

学士论文开题报告基于51单片机的数字示波器设计

XX学院信息工程学院学士学位论文开题报告课题名称 基于51单片机的数字示波器设计 学生姓名 导师姓名 所在系部 信息工程学院 学科专业 电子信息科学与技术 年 级 级 论文工作的 起止时间 2008.11.15-2009.5.

文***品 2年前 上传743   0

基于51单片机音乐盒课程设计

基于51单片机音乐盒课程设计 课程名称: 微机原理课程设计 题 目: 基于51单片机的音乐盒设计 摘要 随着人类社会的发展,人们对视觉、听觉方面的享受提出了越来越高的要求。小小的音乐盒可以给人们带来美好的回忆,提高人们的精神文化享受。传统音乐盒多是机械型的,体积笨重,发音单调,不能实现批量生产。本设计是一个基于STC89C52RC系列单片机的音乐盒,依据单片机技术原理,通过硬件电路

l***金 5年前 上传1265   0

基于51单片机红外感应家用小夜灯的设计

 本科毕业论文(设计)题 目: 基于51单片机红外感应家用小夜灯的设计 院 系:物理与电子信息科学系 专 业:电子信息科学与技术 姓 名: 学 号: 指导教师:

文***品 2年前 上传554   0

基于51单片机的智能充电器的设计

课题:基于51单片机的智能充电技术基于51单片机的智能充电器设计摘 要:智能充电器的设计第一步需要解决的就是选择什么样的芯片来进行工作,其本身需要将51单片机作为基本的设计基础,这里选择的充电芯片是MAX1898,这个芯片是Maxim公司生产的。本文目标是设计出一款智能充电设备,这个设备要能够运用单片机AT89C52进行控制。首先本文会对于锂电池的一些基本的参数进行一个基本的介绍,

平***苏 7个月前 上传224   0

基于51单片机的电子密码锁设计

近年来,在我国社会经济不断进步和迅猛发展的背景下,人们的生活水平越来越高,更多的人开始享受高质量的生活。就拿我们家家离不开的锁具来说,从我国古代历史上就有了各种锁的记载和使用,发展到今天人们追求的不单单只是用来锁门的一个工具。

爱***享 3年前 上传667   0

基于51单片机的LED点阵显示屏设计

目录摘要 IIAbstract III第一章 绪论 11.1 课题背景 11.2 选题意义 11.3 论文主要内容 1第二章 方法论证对比 32.1 单片机编程语言 32.2 控制系统设计 32.3 显示方式 3第三章 系统硬件设计 43.1 总体硬件设计 43.2 系统各硬件电路介绍 53.2.1 电源电路设计介绍 53.2.2 复位电路 53.2.3 晶振电路

平***苏 3年前 上传614   0

基于单片机的智能鱼缸的设计与实现毕业设计

近年来嵌入式发展迅速,智能家居也进入了人们的生活。智能鱼缸却没有快速发展。我根据市场上相关设备现状的分析和研究,从系统集成角度进行设计和开发,提出了一套多功能的智能观赏鱼缸控制系统的设计方案。

z***u 5年前 上传4251   0

基于单片机的语音门铃设计毕业设计

在现代电子产品中, 由于电子音乐门铃具有悦耳动听,价格低廉,耗电少等优点,在现代家居中的应用越来越流行。本毕业设计是基于单片机的“叮咚”门铃,通过单片机控制输出频率,由音频功率放大器LM386放大给扬声器,使之发出不再是单调的提示音,而是不同凡响的流行音乐旋律。

z***u 4年前 上传1255   0

基于单片机的电子密码锁设计毕业设计

 ####工业大学城市学院 毕业设计说明书 作 者: 李xx 学 号: 09xx 系: 信息工程 专业: 电子信息工程 题 目: 基于单片机的电子密码锁设计 指导者:

文***品 5年前 上传1430   0