ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:503.37KB ,
资源ID:22304997      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22304997.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于R的失重秤设计Word格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于R的失重秤设计Word格式.docx

1、为放入砝码的重量,为放入未知重物后的AD值, 为未知重物的重量)计算出托盘里面重物的重量,然后输出到键盘显示板上进行显示。具体方案:a、 每隔20ms通过A/D对输入的电压进行采样,在采样50次以后求出所有采样和的平均值b、 在每次系统启动后自动进入校零和校满程序并保存, c、 在校零和校满以后进入测量程序,根据每次采样出来的AD值运用计算公式将重量通过键盘显示板显示出来4 器件选择4.1 稳压电源器件的选择在本系统中需要两种不同电压值的直流电源,分别为12V和3.3V。a、稳压管LM7812具有输出稳定性好、使用方便、输出过流、过热自动保护,最大输入电压为35V,最大输出电流为1.5A,最高

2、结温为150,适用于各种电源稳压电路,而且采用TO-220封装形式,便于在万能板上进行焊接,故采用LM7812作为电桥及放大电路的供电稳压管。b、LM317是通过调节端口1的电压就可以调节输出电压的可调稳压管,最大输出可调电压可达37V,最大输出电流可达2A,因此选择将其输出调为3.3V为逻辑控制器件提供电压。4.2 八位移位寄存器芯片与数码显示管的选择键盘显示板的核心部分是八位移位寄存器芯片,它完成了数码显示与按键扫描这两个任务。74LS164为8位移位寄存器(串行输入,并行输出),串行数据输入端可控制数据,当清除端(CLEAR)为低电平时,输出端(QAQH)均为低电平。当A、B任意一个为低

3、电平是可禁止新的数据输入,在时钟端(CLOCK)脉冲上升沿的作用下QA为低电平。当A、B端有一个为高电平,则另一个允许输入数据,并在CLOCK上升沿的作用下决定QB的状态。其时序图如下:图1 74LS164 时序图四共阴极的LED数码显示管,四个共阴极数码显示管的a h段是分别连接在一起,共同引出公共的a h段的控制线。其连接图如下:图2 四共阴极LED数码显示管连接图4.3 压力传感器与运算放大器的选择a、将压力的信号转换为电信号需要使用压力传感器来进行转换,在这里使用应变片压力传感器(图3),将压力信号转换为差动电压信号输出,只需要在传感器的电源端接入12V的电压,两条信号输出端就会输出差

4、动电压信号。b、LM324是四运放集成电路,它采用14脚双列直插塑料封装,便于在万用板上焊接。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。每一组运算放大器可用 图4 所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的相位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同。图3应变片压力传感器 图4 运算放大器4.4 逻辑控制器的选择LPC2131是基于一个支持实时仿真和嵌入式跟踪的3216

5、位 ARMTTDMI-STM CPU的微控制器,并带有32KB的嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30,而性能的损失却很小。LPC21 31的主要特性如下:a)8KB片内静态RAMlb)32KB片内Flash程序存储器。c)1个8路10位AD转换器共包含816个模拟输入,每个通道的转换时间低至244us。d)2个32位定时器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。e)多个串行接口,包括2个16C550工业UART、2个高速I2C接口

6、(400Kbitss)、SPI接口。f)向量中断控制器。可配置优先级和向量地址。g)多达47个可承受5V的通用IO口(LQFP64封装)。h)多达9个边沿或电平触发的外部中断引脚。5 硬件电路及分析5.1稳压电源电路图5为12V稳压电源的电路图。经过变压器后将220V的市电降压为16V的交流电,经过C1将交流电中的高次谐波过滤后接入到整流桥整流后再经过1000uF的C2和220uF的C3平波后接入稳压管LM7812,后面输出为稳定的12V直流压,C4和C5的作用是进一步滤除直流电压中的高频交流成分,使电源更稳定。图5 12V稳压电源的电路图图6为运用LM317输出可调电源的电路图。将经过LM7

7、812稳压输出的12V电压输入到该电路的端,经电容C1滤波后送入LM317第3脚(输入端),二脚输出稳定的直流电压,调正端(一脚)与输出端的电压为1.25V的基准电 压为了保证稳压管的输出特性,R1的电阻应小于240。为了输出电压可调,调整端与地之间接可变电阻器R2,调节R2的值可将输出电压调整为3.3V。输出电压的计算公式为: 电路中C1是为了滤除输入电压存在的交流成分,C3是为了旁路基准电压的纹波,提高电源的纹波抑制性能。图6 LM317输出可调电源5.2 键盘输入与显示电路图7为键盘输入与显示的电路图。数据通过JP1接口中的DATA在CLK的上升沿作用下以串行的方式输入到移位寄存器,可以

8、将CLK端接在SPI的时钟端上,将DATA端接在SPI的MOSI(主出从入)端口上,这样通过SPI就能将所要存入移位寄存器的数发送出去。从图中可见,第一片移位寄存器控制的是数码管的位码,第二位移位寄存器控制的是数码管的段码。因此,在SPI发送数据时应该先将8位段码发送到第一片寄存器中,然后发送8位位码。这样,第一片寄存器中的段码被移入到第二片中,第一片寄存器中保存的是数码管的位码。同时,8个按键的公共端是通过上拉电阻电阻R9接到VCC,而且在JP1中还有一个端口KEY作为按键到ARM的输入端。图7 键盘显示板电路5.3 差动信号放大电路图8为用于对输入的差动电压信号进行放大的电路。将3个差动信

9、号的正负分别通过10K的电阻接入到运算放大器的正负端,就会通过第一级差动放大器将差动信号放大10倍,然后放大信号输入到第二级的放大电路。电路里接入了一个滑动变阻器,用于调节输出信号的零点。在电路的最后接入了一个470uF的平波电容,是为了使输出的信号更加稳定,减少各种因素带来的电路输出信号的波动。图 8 差动信号放大电路5.4 使用到的ARM内部功能模块系统中使用到的ARM的内部硬件模块与外部器件的连接如图 9 所示。图 9 6 软件设计本系统软件部分的主要功能是完成对外部输入信号的AD采样,并且在对重量自校零和校满后使AD值与重量的量纲相对应,并且将所测得的重量通过SPI发送到键盘显示板上进

10、行显示,其流程图(图10)如下:图10 程序流程图7 调试与分析 系统程序是在ARM公司的集成开发环境ADS1.2中完成开发与调试。软件设计,是基于嵌入式系统程序设计的前后台设计思想(即传统的主函数加中断的程序设计思想),整个系统的运行是在一个while(1)加上若干个中断服务程序。中断部分主要是完成2ms的精确定时和SPI的定时发送的功能。在整个while(1)里面完成了按键检测和AD值与重量量纲的转化和将所需要显示的数转换为BCD码的功能。8 参考文献1 周立功等.深入浅出ARM7:LPC213X/214X 上册.北京航空航天大学出版社.2005.62 华成英,童诗白等.模拟电子技术基础(

11、第四版).高等教育出版社. 2006.1 3 日铃木雅臣 编著.晶体管电路设计(上).北京:科学出版社, 2004.9 4 谭浩强,C程序设计M,清华大学出版社 5 韩亚萍编著.Protel DXP 基础教程. 北京:清华大学出版社, 2005.56 张珺,王祖麟.基于LPC2131的失重秤配料系统设计.自动化技术与应用,2007(6)9 附录9.1 总电路图输出12V直流电压输出3.3V直流电压应变片压力传感器差动信号放大电路9.2元器件清单序号元件名参数数量(个)1蒸馏二极管IN4001最大电流1A、电压50V42电解电容1000uF 耐压50V3470uF47uf5陶瓷电容0.1uF(1

12、04)6稳压管LM317最大电流1A、电压35V7稳压管LM78128散热片铝制9运算放大器LM324单、双电源供电10电阻1K欧姆若干11240欧姆1210K欧姆13500欧姆14可调变阻器0 100K欧姆15移位寄存器74LS1648位串入并处16LED共阴数码管4位8段LED数码管17按键18二极管19变压器输出16V以上的交流电压20插针9.3主要程序清单#include config.huint8 const wm8 = 0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80;uint8 const dm10 = 0x3f,0x06,0x5b,0x4f,0x6

13、6,0x6d,0x7d,0x07,0x7f,0x6f;uint8 const M_8pai8 = 0x01,0x03,0x02,0x06,0x04,0x0C,0x08,0x09;uint8 data_buf8;uint32 xs_cs=0; /需要显示的数值 uint32 ADC_Data=0;uint8 count; /正在发送第几位段码 uint32 time_ds = 0; /定时共用变量uint8 time_20ms_flag = 0; /定时20ms标志uint8 time_2ms_flag = 0; /2ms定时标志uint8 key_n=9; /保存第几号键被按下/*uint8

14、dw0 (uint8 n) /对IO0PIN 第n位进行读操作 uint8 i; if(IO0PIN&(10; dly-) for (i=0; i5000; i+);uint8 key_sm(void) /按键函数,在使用完key_n后 /要将key_n置为大于7的数 uint8 static key; uint8 static key_befor=0,key_now=0,ax_flag=0; key_befor = key_now; key_now = dw0(3); if(key_befor=1) & (key_now=0) & (ax_flag=0) ax_flag=1; key=cou

15、nt; (key_now=1)& (ax_flag=1) & (key=count)ax_flag=0; return key; return 9;void ad_int(void) /AD初始化函数 PINSEL1 = 1 28; / P0.30连接到AD0.3 /* 进行ADC模块设置 */ AD0CR = (1 3) | / SEL=8,选择通道3 (Fpclk / 1000000 - 1) 8) | /转换时钟为1MHz (0 16) | / BURST=0,软件控制转换操作 17) | / CLKS=0, 使用11clock转换 (1 21) | / PDN=1,正常工作模式 22)

16、 | / TEST1:0=00,正常工作模式 24) | / START=1,直接启动ADC转换 27); / 直接启动ADC转换时,此位无效 DelayNS(10); ADC_Data = AD0DR; / 读取ADC结果,并清除DONE标志位void bin_bcd (uint32 xs_data) /二进制转BCD码函数 uint32 sum; uint8 i; sum=xs_data; for(i=0;i=8) count=0; time_2ms_flag = 1; /2ms定时,置1 time_ds+; if(time_ds = 5001) /最长定时10s time_ds = 0;

17、 if(time_ds % 10 = 0) /20ms定时 time_20ms_flag = 1; T0IR = 0x01; VICVectAddr = 0x00;void vic_timer0_int(void) /定时器0中断初始化函数 VICIntSelect &= 14; VICVectCntl0 = 0x20|4; VICVectAddr0 = (uint32)timer0_isr; VICIntEnable |= 1 IRQEnable();void mspi_int(void) /SPI初始化函数 PINSEL0 = (PINSEL0 & (0xFF 8) | (0x55 8)

18、; S0PCR = (03)| (14)| (15)| (06)|7); S0PCCR = 10;int main(void) uint8 key_7_n = 0; uint16 adc_base = 0; uint16 adc_base_400 = 0; uint8 adc_count = 0; uint16 ad_data_50 = 0; /求50平均值后的AD值 uint16 zl_g = 0; /重量,单位为g uint32 adc_data_buf = 0; PINSEL0 &= (36); /将p0.3设为gpio IO0DIR &= (13); /p0.3设为输入功能 PINSEL2 & /选择P1.16P1.25为GPIO功能 IO1DIR |= 0xFF18; /将P1.18P1.25设为输出功能 IO1CLR |= 0xFF /输出低电平 timer0int(); vic_timer0_int(); mspi_int(); ad_int(); while(1) if(time_20ms_flag = 1) time_20ms_flag = 0; if(adc_count 50) AD0CR |= 1 24; / 进行第一次转换 while (ADDR & 0x80000000) = 0); / 等待转换结束 AD0CR |= 1 6) & 0x3f

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1