




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、毕业设计说明书题目:基于89c52的免烧砖配料控制系统设计 目 录1概述31.1研究背景31.2 任务要求32 方案论证42.1 配料控制系统方案42.2 方案设计43 硬件电路设计63.1晶振与复位电路63.2 传感器73.3 放大电路与ad转换电路83.4 配方存储器件103.5 继电器电路113.6 电源电路123.7 按键123.8 显示电路134 系统软件设计154.1 系统主程序流程图154.2 按键的扫描174.3 eeprom的操作174.4 a/d转换的处理194.5 显示电路20总 结23致 谢24参考文献25附录a 原理图26附录b 程序271概述1.1研究背景配料控制系
2、统在目前的工业生产中占据了举足轻重的位置, 由于半导体技术的发展配料控制系统由原来的纯人工操作发展到后来的通过机械以及人工进行半自动控制,随着可编程电子逻辑器件的不断发展,现在的配料控制系统已经逐步采用以微控制器为核心的自动化智能化控制系统,拥有良好的人机界面,便于操作和修改,可靠性能和生产效率大大提高。1.2 任务要求本课题是对物料称重的研究,我们要在系统称量误差上,便于维护、效率上,改变物料配方的操作上,自动化程度上,能耗上,造价上等兼顾。因此,配料控制系统要达到以下要求:本设计属于对不同的配料按照配方的要求进行精确称量的控制系统。尤其是配方的可变性和可修改性。本设计中开发的基于mcu的控
3、制器最新技术,实现物料的称量,配方的替换,系统的启停控制等功能。本设计是一种物料称重系统,在料仓的下方有送料皮带,控制送料的量,皮带下方是称量料斗,物料送入后由重力传感器检测出物料的重量信息并通过放大器,a/d转换后送入mcu中,当mcu检测到物料达到配方要求时,控制停止送料皮带电机,停止送料,并开始下一物料的称量,当所有物料称量完成后启动称量料斗电机转移物料至混合料斗。mcu通过继电器来控制电机的工作状态,电机带动机械装置来控制送料的多少,人机交互界面由键盘和液晶显示电路来实现。2 方案论证 本章先通过对总体方案,传感器、电压放大电路,信号处理方法,人机交互方法,软件的编译环境及其选用的语言
4、等技术方面进行了对比论证和选择,然后提出配料控制系统的主要技术指标,最后确定了配料控制系统的总体设计方案。2.1 配料控制系统方案早期的配料控制系统基本由人工进行操作和控制,精度和快速性都要依靠人工的熟练操作程度,因此系统难以长时间保持高效率的工作,而且因为工作环境的恶劣对工作人员的身心健康有很大的不利的影响。因此这种方法现在已经基本被各个厂家淘汰。随着电子技术、传感技术、计算机技术以及智能控制理论的发展,工业生产过程中对配料的精度、安全、稳定、自动化程度都提出了新的要求。配料控制也有人工控制转向电子自动控制,通过传感器,放大电路,微控制器等电子设备组成自动控制系统,大大提高了配料精确度和生产
5、效率。通过对比,本系统采用第二种设计方案,即以传感器、信号处理电路、微处理器等电子器件构成的自动控制系统。2.2 方案设计配料控制系统实物图如图2-1所示:图2-1配料控制系统实物图上方三个料斗分别为不同物料的存放料斗,料斗下方有一个传送带,最下方的料斗为混合料斗,混合料斗下方的传送带上装有压力传感器,开始工作时,电机带动存放料斗的物料传送皮带将物料下泄到下方的混合料斗中,压力传感器实时检测物料重量并将数据传送给单片机,单片机根据设定好的配方比来确定是否停止送料,当该物料达到配方要求值时控制皮带电机停转,停止送料,并启动下一物料皮带电机开始下一物料的送料,等所有物料按配方要求送到混合料斗时,单
6、片机控制皮带电机将混合料斗物料送给混合搅拌机;并开始准备下一轮送料过程,整个送料过程的实时物料重量数据及其当前的配方序号显示在液晶上,物料配方可通过键盘进行更改。根据以上工作过程,配料控制系统总体框图如图2-2所示: 图2-2 配料控制系统总体框图 由系统总体框图可以看出由四个压力传感器t105组成的电阻桥经过电压放大24位a/d转换芯片hx711-bf芯片进行信号处理后送入微控制器at89c52单片机中进行运算,单片机将处理的实时过程和结果送到12864液晶显示同时控制继电器的吸合和断开。键盘负责命令数据的输入。3 硬件电路设计3.1晶振与复位电路该配料控制系统要求实现对传感器电压信号的采集
7、,放大,a/d转换并交由单片机进行数据处理,从而通过继电器来控制电机达到控制物料重量的目的。结构并不十分复杂,因此可选用stc公司的8位微处理器单元89c52rc40i-pdip。该单片机最高工作频率可达40mhz,片内程序存储空间为512字节;程序存储空间为8k字节;工作电压为5.5v3.8v。单片机复位电路如图3-1所示:图3-1 单片机复位电路复位电路的作用是对单片机进行系统的初始化,确保单片机开始正常工作前所有工作部件都保持在设置的默认状态下。51单片机的复位要求是:rst保持两个机器周期以上的高电平时自动复位。 因为考虑到芯片刚刚上电时由于供电不稳定而做出错误的计算,所以增加一个上电
8、复位以达到延时启动cpu的目的,使芯片能够正常工作。当单片机电源电路开始供电时s0未按下,此时rest因为r15的存在保持高电平状态(保持时间大于两个机器周期)。然后10uf电容开始充电,充电完成后rest恢复为低电平,复位工作完成,单片机开始正常运行。当s0按下时rest为高电平状态(时间大于两个机器周期),松开时又恢复低电平状态,手动复位工作完成。单片机晶振电路如图3-2所示:图3-2 单片机晶振电路晶振电路用来给单片机提供精确的时钟频率,单片机的时钟频率就如一首歌的节拍一样,所有运行在单片机里的指令要按照时钟频率来一步步执行,否则就会出错。容量为30pf电容c1,c2的两端分别接晶振的一
9、段并和gnd相连。其作用是消除单片机外部晶振与单片机直接相连时产生偕波,保持晶振电路的可靠性和稳定性的要求。3.2 传感器本设计为配料控制系统,考虑到工作环境的恶劣多变性,要求压力传感器具有较大的量程,以及比较精确的灵敏度要求,能够很好的适应不同温度下的工作环境,其非线性和重复性以及抑制温漂的能力要强。但鉴于市场上高性能的完全符合要求压力传感器价格较为昂贵。在这里我选择ti公司的半桥式压力传感器t105,量程为50kg,灵敏度1.10.15mv/v,输入电阻10005,推荐激励电压510v,工作温度范围-10+50,尺寸规格34*34*7.8mm。同时为了提高量程,将四个传感器组成电阻桥形式,
10、将单片机电源+5v做激励电压,能实现基本功能。硬件接线图如图3-3所示:图3-3 t105压力传感器接线图其中e+,e-两个引线分别直接接hx711-bf输入端电源正负极,a+,a-引线为差分电压信号,直接接hx711-bf输入端a信号正负极。3.3 放大电路与ad转换电路传感器选择t105,满量程输出=激励电压(5v)*灵敏度(1.1mv/v)=5.5mv由于输出电压较小,不能直接驱动单片机i/o口,因此要对电压进行放大处理,放大过后的电压要转换为数字量才能输送给单片机处理。鉴于以上考虑,我采用海芯科技公司专为高精度电子称设计的24位a/d转换器芯片hx711-bf,片内集成低噪声可编程放大
11、器,通过软件可选择不同增益。hx711芯片内集成了包括稳压电源,片内时钟振荡器等外围电路,也可通过管脚控制选择使用外部时钟电路。控制信号由数据时钟管脚来直接实现,无需对内部寄存器编程,增益可选择128或64,对应满额度差分输入信号幅值分别为20mv,40mv。上电自动复位功能简化了开机初始化过程。工作电压范围2.65.5v,工作温度范围-40+85。hx711-bf实物图如图3-4所示:图3-4 hx711-bf实物图hx711-bf接线原理图如图3-5所示:图3-5 hx711-bf接线原理hx711 芯片内的稳压电路可同时向a/d 转换器和外部传感器提供模拟电源。稳压电源的供电电压(vsu
12、p)和与数字电(dvdd)通过c6滤波电容接vcc。将管脚x1接gnd,hx711将自动选择使用片内的时钟振荡器,并自动关闭外部时钟和晶振相关电路。e+,e-接压力传感器的电源端,在这里,e+通过三极管q2接到电源vcc上,由base控制,e-直接接gnd。信号通道有两个即a通道和b通道(未标出),a通道由a+,a-组成分别接到hx711的ina+,ina-端。c4为a通道滤波电容,r10为限流电阻。串口通讯由管脚pd_sck和dout组成,用来输入数据,选择输入通道和增益。本次设计中选择a通道128倍信号增益,可将压力传感器电桥t105输出的5.5v电压放大128倍(通过软件实现),然后采样
13、输出24bitad转换值,单片机通过时序将24bit数据读出。传感器供电电压计算:应变片电阻桥的供电电压(e+,e-)由hx711-bf提供即avdd和agnd。其中电压v(avdd)=vbg(r1+r2)/r2计算,vbg为模块基准电压1.265v。r1选用阻值为20k的电阻;r2选用阻值为20k的电阻。因此计算得v(avdd)=4.35v。即传感器供电电压为4.35v。在。4.35v供电电压下200kg的传感器最大输出电压是4.35v*1.1mv/v=4.785mv。经过128倍放大后最大电压为4.785mv*128=612.48mv。经过a/d转换后输出的24bit数字值最大为:612.
14、48*224/4.35v=2362232。再交由程序处理数据。3.4 配方存储器件为了实现配方的保存,采用掉电后数据不丢失的存储芯片eeprom,由于配方所占的存储空间并不大,我采用atmel公司的eeprom产品at24c02a,工作电压为1.8v5.5v,具有256*8(2k bits)的存储空间,直流输出5.0ma,采用两线串行接口,完全兼容iic总线。at24c02原理接线图如图3-6所示:图3-6 at24c02原理接线图a0,a1,a2引脚为器件的地址输入引脚器件地址为0x1010 a2a1a0(r/w),用于单片机对器件的寻址操作,由于系统只用一片at24c02a芯片,为了简便操
15、作在这里将地址选择引脚全部接地,地址为0x1010 000(r/w),sda是串行数据输入输出引脚,负责与单片机进行数据交换,sck是串行时钟输入引脚,由单片机来控制时钟的输入来保证数据的输入正常。sda,sck通过两个阻值为10k的电阻与vcc相连,默认保持为高电平。wp引脚为写保护引脚,wp引脚接高电平时at24c02允许单片机进行读写操作;wp接vcc时,使能写保护,芯片的高半存储阵列只能读不能写。由于要对eeprom进行读写,为了方便起见将wp直接接gnd。3.5 继电器电路继电器采用汇科的hk4100f-dc24v-shg,触点负载3a 250v ac/30v dc,工作温度:-25
16、+70阻值(士10%): 2880线圈功耗:0.2w 额定电压:dc24v吸合电压:dc 18v释放电压:dc2.4v,线圈与触点间耐压:4000vac/1分钟触点与触点间耐压:750vac/1分钟。 由于继电器吸合电压为18v,超出了89c52单片机直接的驱动范围,因此需要加一个uln2003功率驱动电路芯片来保证继电器的正常工作。驱动电路原理图如图3-7所示:图3-7 驱动电路原理图驱动芯片由输出端,输入端和两个公共端口组成,com1端口接gnd,com1端口接vcc, in1in5为芯片的输入端,直接接单片机的p23p26口驱动芯片的输出口直接接继电器。继电器接线图如图3-8所示:图3-
17、8 继电器接线图继电器线圈一端直接与vcc相连,另一端并联一个1k的电阻与功率驱动电路芯片uln2003输出端相连。当p22为高电平时rl1线圈不通电,继电器断开,p22为低电平时,rl1线圈通电继电器吸合。3.6 电源电路系统电源电路如图3-9所示:图3-9 系统电源电路直接采用直流适配器供电,供电电压为7.5v12v,作为稳压电源模块采用仙童半导体公司的lm7805芯片。dc7.5-12v经过7805的in端口输入,同时并联一个容量为0.1uf的滤波电容。此电压经过7805的稳压和c12电容的滤波作用后形成一个比较稳定的电压信号。c104作用是消减7805自激振荡副作用。3.7 按键按键电
18、路如图3-10所示:图3-10 按键电路s1s9按键代表数字09;s10代表“确定”;s11代表“取消”;s12代表“修改”;s13代表“+”;s14代表“-”s15代表“开始”。按键电路负责系统的启动,停止;当前物料配方的选择,物料配方的改变。为了节省单片机i/o口的占用,16个按键采用4*4矩阵方式连接成,横向四个引线分别接单片机p30,p31,csda,int1口,竖排引线接单片机lcden,rs,wr,rd端口。按键品牌:海飞ts037;规格:6*6mm直插式3.8 显示电路12864液晶显示电路实物图如图3-11:图3-11 12864实物图jm12864m汉字图形点阵液晶显示模块主
19、要技术参数:逻辑工作电压:4.55.5v工作温度:-1060。12864自带中文字库可以很方便的实现汉字显示,界面更加清楚明白。相比于数码管它在不多占用单片机io口时不用增加额外的数码管段选、位选锁存器。外部接线也大大减少,设计更加简洁。12864液晶显示电路图3-12所示:图3-12 12864液晶显示电路芯片共有20位引脚d0d7为数据的传输引脚负责与单片机进行数据传输,r/w(sid)接单片机p10口负责并行的读写选择,e(sclk)接单片机的p13口负责并行的使能信号,bla+接vcc背光源的正极,bla-接gnd背光源的负极。v com端口通过一个阻值为2k的滑动变阻器分别接vcc和
20、gnd,通过改变滑动变阻器的阻值用来调节12864屏幕的亮度。4 系统软件设计4.1 系统主程序流程图由于真个系统程序较长,为了简便起见采用模块化编程方法,将12864液晶显示程序,按键扫描程序,延时程序,hx711操作程序,eeprom读写操作程序,主程序单独罗列成模块,以便相互调用,使程序更加清晰明朗。系统主流程图如图4-1所示:图4-1 系统主流程图如系统主流程图所示,初始化主要是对12864液晶的显示初始化即显示的初始界面,对eeprom对系统上电后默认配方的设定,继电器的初始化。初始化完成后开始检测按键值,先检测设置键是否被按下,若是,开始检测是否数字键被按下,若被按下则进行数字键处
21、理,再检测确定键是否按下,若是进行确定键处理。系统确定键流程图如图4-2所示:图4-2 系统确定键流程图确定键处理流程图,当检测到开始键按下时单片机控制继电器闭合,从而启动电机开始送物料,称重传感器将实时重量数据传给单片机,单片机将传感器数据实时与配方进行比较看是否达到设定值若达到即可控制继电器断开停止送料,同时检测是否物料全部送完若没送完则继续送物料,若送完即返回主程序继续执行。4.2 按键的扫描按键扫描流程图如图4-3所示:图4-3 按键扫描流程图按键扫描:通过程序将p3.0,p3.1,csda,int1置位为0111,然后检测lcden,rs,wr,rd电平高低得知s1,s2,s3,s4
22、哪个按键被按下,然后再将p3.0,p3.1,csda,int1置位为1011,检测第二横排是否有按键按下,这样循环依次检测完四排按键是否被按下,如果有键被按下则进行消抖,消抖后在检测按键是否按下如果按下再检测是哪个按键被按下,按照程序设定的键值进行操作。4.3 eeprom的操作sda引脚默认为高电平(通过外部电子器件实现)只有在scl为低电平时才允许改变sda,scl为高电平时改变数据引脚sda将被视为开始或终止信号。at24c02a读写开始/停止时序图如图4-4所示:图4-4 at24c02a读写开始/终止时序图在开始对at24c02a进行操作时必须先发送一个开始信号,即当scl保持高电平
23、期间sda从高电平转换为低电平。停止信号:当scl保持高电平期间sda从低电平转换为高电平。停止信号将eeprom保持在待命状态。at24c02a应答信号时序图如图4-5所示:图4-5 at24c02a应答信号时序图当对eeprom进行数据输入完成后由eeprom发送一个应答信号(第9个时钟周期内sda至低电平),单片机通过应答用来判断写操作是否成功。at24c02a按写一个字节操作时序图如图4-6所示:图4-6 at24c02a按字写操作时序图对eeprom进行写操作时按时序图要求依次发送开始信号,8位器件地址(由高到低)且选择写操作,应答信号,8位字节地址(由高到低),8位数据(由高到低)
24、,应答信号,停止信号。应答信号由eeprom发送,单片机通过应答用来判断写操作是否成功。at24c02a按随机读操作时序图如图4-7所示:图4-7 at24c02a按随机读操作时序图 对eeprom进行特定地址读操作时依次发送开始信号,8位地址(由高到低)且选择写操作,应答信号,字节地址,应答信号,开始信号,8位地址(由高到低)且选择读操作,读数据,非应答信号(1),停止信号1。4.4 a/d转换的处理hx711-bf增益选择时序图如图4-8所示:图4-8 hx711-bf增益选择时序图增益的选择:hx711芯片通过软件来实现对内部放大电路增益的选择,每传输一个数据芯片就要求单片机选择处理下一
25、个传感器数据选择的增益。即在每次发送完24位数据后若单片机再发送一个时钟脉冲信号即选择128倍增益,若再发送2个时钟脉冲即选择32倍增益,若发送3个时钟脉冲即选择64位增益。数据的处理:传感器的数据经过放大处理a/d转换后最大值是2362232,程序中通过hx711_buffer=hx711_read();获得当前采样的ad值存放在变量hx711_buffer中,因为24bit数据在8位单片机89c52中存放较为不便,在后续的数据处理中将它除以100,转化为单片机方便处理的数据再结合传感器的特性性能和系统对精度的要求进行操作。由a/d值反算重力值:设重力值为a(kg),测量出的的ad值为b,此
26、时传感器输出的数据为a(kg)*4.35mv/200(kg)=0.02175a(mv);经128倍增益后为128*0.02175a(mv)=2.784a(mv);转换为24bit数字信号为2.784a(mv)*224/4.35v=10737a;因此b=10737a/100=107a;得出a=b/107(kg)由此得出计算公式实际重量=ad转换值/107(kg)。其中107这个数据是理想状态下计算出来的,实际情况还要对传感器进行校准,根据实际情况改变107这个数据以达到精确测量的目的。4.5 显示电路12864原理接线图如图4-9所示:图4-9 12864接线图12864初始化流程图如图4-10
27、所示:图4-10 12864初始化流程图12864液晶的初始化要先进行液晶的功能设定然后延时后开显示再延时然后再清除屏幕内容,最后进行模式设定。12864软件设计中重要通过89c52单片机程序控制12864的数据传输端口及其控制端口。本次设计中12864选择8位并行数据传输模式(将psb并串行接口选择置1,rs为并行数据/指令选择信号,高电平时接受指令,低电平时接收数据。r/w为并行的读写选择信号,高电平时为读,低电平时为写。d0d7接单片机的p0口,通过程序控制单片机相应的i/o即可实现对12864液晶的控制。12864时序图如图4-11所示:图4-11 12864时序图12864时序图分析
28、,单片机对12864进行写命令操作时,先将rs置0,选择命令;接着将r/w置0,选择写方向;完成后即表示可以向12864液晶进行写命令操作。延时后将使能信号e置1,使能12864;紧接着通过d0d7向液晶输送命令。命令在rs,r/w为低电平期间有效。 若要写数据则将rs置高电平;其他步骤与写命令一致。即在对12864进行操作时先要选择命令数据选项,再选择读写选择项,然后才可以向12864进行具体的操作。总 结在4个多月的毕业设计中前期多看一些相关的论文,书籍,对自己的设计有一个大体的了解,难易程度上有一个整体的把握。整体设计方案的规划时元器件的选型很重要,确定正确的合适的元器件对整个设计过程有
29、很大的帮助,可以免去后来的麻烦,用什么样的传感器,传感器是否符合设计要求,传感器的输出数据是否要经过放大处理,要选用多大增益的放大器,传感器的数据要进行怎样的处理,是选用a/d转换还是v/f转换。应该说传感器的选择是确定其它元器件选择的基础,元器件选择也要考虑自己的专长,比如a/d和v/f转换,我选择的是a/d转换,因为v/f转换并没有接触过,而且还要转换后加光电耦合器,设计较为复杂,而a/d转换就很熟悉,选择高位数的a/d转换既能保证转换精度由非常方便。最后确定的是hx711-bf24位a/d转换芯片,集成了放大转换,设计更加方便。显示器件原来选的是数码管,但后来更改为12864,因为128
30、64在显示上比数码管更加的清楚明白,还可以显示汉字,优势巨大,且在程序上个人感觉12864要比数码管来的清楚明白,更适合模块化编程,用到的器件相对于数码管也要少(至少不用段选,位选两个锁存器和限流电阻了)。设计中遇到的最大的困难还是硬件上的焊接,这是我当时所万万想不到的,由于焊接设备的性能问题和焊锡的品质问题以及本人经验不足导致焊接接触不良,系统时灵时不灵,当时由于不知道原因纠结了好长时间(以为是器件焊烧了,程序出错了),不得不从新开始焊接,导致后来的设计时间明显紧张。总之,整个毕业设计过程中,让我真正的有所进步,对专业知识的认识上有了一个飞跃,其中有苦恼有喜悦,真不错。致 谢本次的配料控制系
31、统整体设计过程中得到了老师和同学们的大力帮助,没有他们我的毕业设计也不会这么快完成。从前期的选题xx老师及时帮助我们规划了整个毕业设计时间中各个阶段工作的重点到中期元器件的选型,设计的整体规划,pcb的修改,以及设计过程中遇到的各种问题都给与了极大的耐心与支持,不管xx老师工作有多忙每周都会抽出时间来了解我们的工作进度,对我们遇到的困难进行答疑解惑,印象最深的还是老师因为白天工作忙早上七点半在qq上与我们交流毕业设计中的问题,及时帮我们指出设计中的错误,到后来毕业设计说明书的规范,说明书的一些技巧,小到一个贴图的位置,大小等不妥之处也会很细心的进行指导。而且,在设计的过程中x同学、x同学也对我
32、的软件设计以及在硬件选型优化上提出了宝贵的意见和建议, 再次特谢。同时在设计配料控制系统中也参考了很多专业的参考书籍,引用了数位学者的著作文献,给了我很大的帮助,也让我少走了很多弯路,向他们表示感谢。 此次设计中若有因本人的粗心而造成的阅读上困难和不便请多多包涵。参考文献1邱关源,罗先觉.电路m.北京:高等教育出版社,2006.52阎石.数字电子技术基础m.北京:高等教育出版社,2009.13马镜澄.低压电器m.北京:机械工业出版社,19934强锡福.传感器m.北京:机械工业出版社,19895王兆安,刘进军.电力电子技术m.北京:机械工业出版社,2009.56黄坚.自动控制原理m.北京:高等教
33、育出版社,20047谭浩强. c语言程序设计m.北京:清华大学出版社,2010.68汤蕴璆. 电机学m.北京:机械工业出版社,2011.7 9王静. altium designer winter 09电路设计案例教程m.北京:中国水利水电出版社,2010.2 10夏路易,石宗义.电路原理图与电路板设计教程m.北京:北京希望电子出版社,2002.611david culler, deborab esrtin, mani sivastava. “overview of sensor networks”, ieee computer society, august 2004 12hu ke,guo
34、zhuang-hui,wang lei , research on wireless communicationtechnologyzigbeej; computer knowledgeandt echnology; 2008-06doi:cnki:sun:dnzs.0.2008- 06-025 13m. vainio, p. apppelqvist und a. halme, generic control architecture for a cooperative robot system, in ieee iros, october 1998, p. 1119-p.1125 14e.
35、kruse und f.m. wahl,camera-based monitoring system for mobile robot guidance, in ieee iros,october 1998, p.1248-p.1253 15jing wang1,jia liu ,huan wang .applied mechanicsand mechatronics automation. jun 2012,p.1464-p.1468附录a 原理图附录b 程序main.c#include lcd12864.h#include delay.h#include hx711.h#include k
36、ey.h#include eeprom.h#include uchar shuzi=0123456789;sbit ji1=p23;sbit ji2=p24;sbit ji3=p25;sbit ji4=p26;void main()uint i=0,temp=0,bai,shi,ge,num,a=4,;/12864初始化 init();delay_1ms(10); weight1=read_random(1);weight2=read_random(2);weight3=read_random(3);while(1)/hx711数据转换 temp=hx711_read()/100;num=te
37、mp/107+0.05-58;bai=num/100;shi=(num%100)/10;ge=num%10;while(1)/数字键扫描判断key_luoji();key_scan();if(key=15) break; /显示传感器重量(第二行) write_com(0x0c); delay_ms(1); write_com(0x93); delay_ms(1); write_data(shuzibai); delay_1ms(1);write_data(shuzishi);delay_1ms(1);write_data(shuzige);delay_1ms(1);if(num=weight
38、1)ji1=0;if(num=weight1+weight2)ji2=0;if(num=weight1+weight2+weight3)ji3=0;ji4=0;delay.c#include delay.hvoid delayshu(void)int k;for(k=0;k1000;k+);/*/void delay_1ms(uchar x)uchar i=0,j=0;for(i=0;ix;i+)for(j=0;j113;j+);delay.h#ifndef _delay_h_#define _delay_h_#include #define uchar unsigned char#defin
39、e uint unsigned intvoid delayshu(void);void delay_1ms(uchar x);#endifeeprom.c#include eeprom.h /*/ void delaynop() _nop_();_nop_();_nop_();_nop_(); /*/ void start() /开始位 sda = 1; scl = 1; delaynop(); sda = 0; delaynop(); scl = 0; /*/ void stop() / 停止位 sda = 0; delaynop(); scl = 1; delaynop(); sda =
40、1; /*/ uchar shin() / 从at24c02移出数据到mcu uchar i,read_data; for(i = 0; i 8; i+) scl = 1; read_data = 1; read_data |= sda; scl = 0; return(read_data); /*/ bit shout(uchar write_data) / 从mcu移出数据到at24c02 uchar i; bit ack_bit; for(i = 0; i 8; i+) / 循环移入8个位 sda = (bit)(write_data & 0x80); _nop_(); scl = 1;
41、 delaynop(); scl = 0; write_data = 1; sda = 1; / 读取应答 delaynop(); scl = 1; delaynop(); ack_bit = sda; scl = 0; return ack_bit; / 返回at24c02应答位 /*/ void write_byte(uchar addr, uchar write_data) / 在指定地址addr处写入数据write_data start(); shout(0xa0); shout(addr); shout(write_data); stop(); delayms(10); / 写入周期
42、 /*/ uchar read_current() / 在当前地址读取 uchar read_data; start(); shout(0xa1); read_data = shin(); stop(); return read_data; /*/ uchar read_random(uchar random_addr) / 在指定地址读取 start(); shout(0xa0); shout(random_addr); return(read_current(); /*/ void delayms(uint ms) / 延时子程序 uchar k; while(ms-) for(k = 0
43、; k 120; k+); eeprom.h#ifndef _eeprom_h_#define _eeprom_h_#include #include #define uchar unsigned char #define uint unsigned intsbit sda = p20; sbit scl = p21; void start();/开始位 void stop();/ 停止位 uchar shin(); / 从at24c02移出数据到mcubit shout(uchar write_data);/ 从mcu移出数据到at24c02 void write_byte( uchar a
44、ddr, uchar write_data); / 在指定地址addr处写入数据write_datavoid delayms(uint ms); uchar read_current(); uchar read_random(uchar random_addr);void delaynop();#endifhx711.c#include hx711.h#include/*/void delay_hx711_us(void)_nop_();_nop_();/*/unsigned long hx711_read(void)unsigned long count;unsigned char i;de
45、lay_hx711_us();hx711_sck=0;count=0;while(hx711_dout);for(i=0;i24;i+)hx711_sck=1;count=count1;hx711_sck=0;if(hx711_dout)count+;hx711_sck=1;delay_hx711_us();hx711_sck=0;return(count);hx711.h#ifndef _hx711_h_#define _hx711_h_#includedelay.hsbit hx711_dout=p20;sbit hx711_sck=p21;void delay_hx711_us(void
46、);unsigned long hx711_read(void);#endifkey.c#includekey.hunsigned char key,xiugai,slnum,weight1,weight2,weight3;void key_scan()unsigned char temp = 0;unsigned char com1 = 0 , com2 = 0;p1=0xf0;if(p1!=0xf0)com1=p1;p1=0x0f;com2=p1; p1=0xf0; while(p1!=0xf0)beep=0; beep=1; temp=com1|com2; switch(temp)cas
47、e 0xee:key=1;break;/数字1case 0xed:key=4;break;/数字4case 0xeb:key=7;break;/数字7case 0xe7:key=11;break;/备用键*号键case 0xd7:key=0;break;/数字0case 0xb7:key=14;break;/备用键*号键case 0xde:key=2;break; /数字2case 0xdd:key=5;break; /数字5case 0xdb:key=8;break;/数字8case 0xbe:key=3;break;/数字3case 0xbd:key=6;break; /数字6case 0
48、xbb:key=9;break;/数字9case 0x7e:key=16;slnum+;break;/数字a键修改键,slnum为检测修改键按下的次数 case 0x7d:key=15;break;/数字b键确定键case 0x7b:key=12;break;case 0x77:key=13;break; void key_luoji()uchar i=0; key_scan();if(key=16)if(slnum=1)/修改键按下一次write_com(0x99);delay_1ms(1);write_com(0x0f);if(slnum=2)write_com(0x9c);if(slnum=3)write_com(0x9f);if(slnum=4)slnum=1;write_com(0x99);if(key=15)slnum=0;write_com(0x0c);/关游标if(slnum!=0)/只有修改键按下后,数字键才能用if(slnum=1)key_scan();weight1=key*10;/算重量用write_byte(1, weight1);write_com(0x9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年大学物理考试不可逆过程理解试题及答案
- 2025届新疆乌鲁木齐市高三下学期三模英语试题(原卷版+解析版)
- 2025年大学化学讲座回顾试题及答案
- 2025年精准医学课程考试试卷及答案
- 2022年全国中学生数学奥林匹克竞赛(预赛)暨 2022年全国高中数学联合竞赛一试(A2 卷)参考答案及评分标准
- 2018年全国数学高联A卷-试题
- 楼盘抵押贷款合同协议
- 微信租车库合同协议
- 品质面料采购合同协议
- 比亚迪换车合同协议
- 幼儿园大班主题音乐《想拍就拍》课件
- 西方哲学智慧2024-西方哲学智慧超星尔雅答案
- 反诈知识竞赛题库及答案(共286题)
- 稀土材料技术基础知识单选题100道及答案解析
- 《物业保安培训》课件
- 医疗机构安全生产奖励与举报制度
- 档案管理方案
- 2024至2030年中国手打钉枪数据监测研究报告
- 2024年全国数控车工高级技师技能考试题库(含答案)
- 《PBR次世代游戏建模技术》(微课版)课件 邱雅慧 3 高模制作、4 UV展开
- 中医经络完整课件
评论
0/150
提交评论