单片机课程设计论文多物体重量自动测试系统设计_第1页
单片机课程设计论文多物体重量自动测试系统设计_第2页
单片机课程设计论文多物体重量自动测试系统设计_第3页
单片机课程设计论文多物体重量自动测试系统设计_第4页
单片机课程设计论文多物体重量自动测试系统设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、郑州轻工业学院课 程 设 计 任 务 书题目 多物体重量自动测试系统设计专业、班级 学号 姓名 主要内容、基本要求、主要参考资料等:主要内容及基本要求设计一个重量(0500克)自动测试系统,要求该系统能自动测试物体的重量并能显示测量数据。另外,可设置扩展功能,如:键盘输入,打印等,要求完成以下几个环节:1检索资料,论证方案2设计系统硬件电路图,要求采用抗干扰措施3画出主要程序流程图4编写主要程序5完成课程设计说明书主要参考资料: 智能仪器,程德福,北京:机械工业出版社,2005智能仪器原理及应用,赵茂泰,北京:电子工业出版社,2004单片机应用系统开发实例导航,靳达,北京:人民邮电出版社,20

2、04基于单片机的智能系统设计与实现,沈红卫,北京:电子工业出版社,2005完 成 期 限:2008.1.7 - 2008.1.11指导教师签名: 专业负责人签名: 2008年 1 月 4 日目 录摘 要-11 硬件组成-11.1 硬件结构框图-11.2 各部分硬件电路实现-11.2.1 前端信号处理-21.2.2 a/d转换器-31.2.3 lcd显示接口电路-52 软件组成-62.1 流程图-62.2 软件说明-8总 结-8参考书目-8附 录-9摘 要本系统采用单片机80c51为控制核心,实现多物体重量自动测试系统的基本控制功能。系统的硬件部分包括最小系统板,数据采集、人机交互界面三大部分。

3、最小系统部分主要是扩展了外部数据存储器,数据采集部分由压力传感器、信号的前级处理和a/d转换部分组成。12864点阵式液晶显示。1、硬件组成:1.1、硬件结构框图:图1 硬件结构框图1.2、各部分硬件电路实现主控电路以80c51为核心扩展32k ram;单片机使用6m晶振,p0口外接上拉电阻,增大了带负载能力;a12a15接74ls138译码器,输出作外部片选信号。 扩展了几个接口用于其它部分于单片机的通信1.2.1 前端信号处理ina126构成的放大器及滤波电路:图2 放大器及滤波器通过调节的阻值来改变放大倍数。微弱信号vi1和vi2被分别放大后从ina126的第6脚输出。a/d转换器icl

4、7135的输入电压变化范围是-2v+2v,传感器的输出电压信号在020mv左右,因此放大器的放大倍数在200300左右,可将接成的滑动变阻器。由于icl7135对高频干扰不敏感,所以滤波电路主要针对工频及其低次谐波引入的干扰。因为压力信号变化十分缓慢,所以滤波电路可以把频率做得很低。1.2.2 a/d转换器基于icl7135的a/d转换器实现电路:图3 a/d转换器实现电路由于icl7135内部没有振荡器,所以需要外接。但a/d转换器精度与时钟频率的漂移无关。正向积分时间t1和反向积分时间t2按相同比例增加并不影响测量的结果。icl7135的时钟频率典型值为200khz最高允许为1200khz

5、,时钟频率越高,转换速度越快。每输出一位bcd码的时间为200个时钟周期,选通脉冲位于数据脉冲的中部,如果时钟频率太高,则数据的接受程序还没有接受完毕,数据就已经消失了。考虑到此系统频率要求不是太高,且单片机的工作频率也不是很高,因此我们取时钟频率的典型值:200khz。由于频率比较低,对时钟漂移要求不高,采用阻容方式实现了。如下:图4 a/d转换器振荡电路此外icl7135外部还需要外接积分电阻、积分电容,但a/d转换器精度与外接的积分电阻、积分电容的精度无关,故可以降低对元件质量的要求。不过积分电容和积分电容的介质损耗会影响到a/d转换器的精度,所以应采用介质损耗较小的聚丙乙烯电容icl7

6、135还需要外接基准电源,这是因为芯片内部的基准源一般容易受到温度的影响,而基准电源的变化会直接影响转换精度。所以当精度要求较高时,应采用外接基准源。一般接其典型值1v。1.2.4 lcd显示接口电路.图5 lcd显示接口电路lcd复位信号通过反相器接到单片机的reset上,上电或手动复位时将随单片机同时复位。由于复位后并行口输出高电平,lcd处于选中状态,此时lcd将输出内部状态字,将会影响数据总线上的数据传输。所以外接一个反相器。2、软件组成:2.1、流程图主程序流程如图所示:主程序流程如图中断服务程序流程图如下:中断服务程序流程图2.2 软件说明由于涉及到大量数据的运算,程序不宜采用汇编

7、语言,c语言大大缩短了开发时间,且程序可读性非常好。程序中对ad采入的数据进行了数字滤波,进一步减小ad读入数据的误差。总 结单片机课程设计是一次理论联系实际的训练,它在我们大学生活中占有重要的地位。   就我个人而言,我希望能通过这次课程设计为将来工作进行一次适应性训练,从中锻炼自己分析问题、解决问题的能力,为今后自己的研究生生活打下一个良好的基础。但是这次课程设计的确显得有点心有余而力不足:最重要的就是基本知识问题,由于平时只对书本知识进行学习,对单片机技术的实际应用没有太多的关注,导致在拿到课题的时候,有些束手无策,后来对相关知识进行了复习,才找到了思路。从这次设计也

8、可以看出一些问题:1.心态:应该保持认真的态度,坚持冷静独立的解决问题2.基本:认真学好基本知识,扎实自己的基本知识,使面对问题时不会遇到很多挫折,从而打击自己的信心,结果使自己很浮躁,越来越不想搞这设计,故应该好好学习基本知识,一步一步的来,不要急功近利!总的说来,虽然在这次设计中自己学到了很多的东西,取得一定的成绩,但同时也存在一定的不足和缺陷,我想这都是这次设计的价值所在,以后的日子以后自己应该更加努力认真,以冷静沉着的心态去办好每一件事情!参考书目:单片微型计算机原理与接口技术 科学出版社 高锋著c+程序设计与数据结构基础教程天津大学出版社 赵国瑞 主编附 录主控电路图电子秤的信号采集

9、、处理、显示的程序.#include <reg52.h>#include<absacc.h> /ad控制线#define ad_244 xbyte0xbfff;sbit ad_stb=p33; /ad转换器的26管脚,strbsbit ad_start=p11; /lcd控制线sbit lcd_di=p17;sbit lcd_rw=p12;sbit lcd_e=p10;/7289控制线sbit cs7289=p13;sbit clk7289=p14;sbit dio7289=p15;/sbit key7289=p16; /7289查询方式sbit key7289=p32

10、; /7289中断方式sbit baoja=p35;/7289子程序void ini_7289(void);void send7289(short);short receive(void);void keyin(void);/lcd子程序void ini_lcd(void);void lcdd_send(short);void lcdi_send(short);void chk_busy(void);/ad子程序void ad(void);void baojing(void);void ini();void error1(void);void nop1()void change(s)int d

11、ealy; /全局变量short dot=0; /小数点标志bit list=0;short qb=0;char xdata shuju7=""short xdata bcd5;char xdata s116="单价: 元"char xdata s216="重量: kg"char xdata s316="金额: 元"*void main()short i,j; long int x,z; int y; int xdata duilie3=0; p1=0xff; ini_lcd(); /初始化lcd lcdi_sen

12、d(0x8a); /lcd命令字ini_7289(); /初始化7289 pizhong=ad1(); lcdi_send(0x1); /总清 屏 ini(); /初始页面 lcdi_send(0x1); /总清 屏 ea=1;ex0=1; /中断 /ex1=1; /ad_start=1; while(1) if(list)lcdi_send(0x80); /显示单位名称 for(i=0;i<16;i+) lcdd_send(message3i); for(i=0;i<4;i+) s1i=shangpinxi; x=qingdan01; d_change(x); change(s1

13、); lcdi_send(0x90); for(i=0;i<16;i+) lcdd_send(s1i); x=qingdan02; /显示重量 d_change(x); change(s2); s210=s29;s29='.' if(s28=32) s28=0x30; lcdi_send(0x88); for(i=0;i<16;i+) lcdd_send(s2i); x=qingdan03; d_change(x); change(s3); lcdi_send(0x98); for(i=0;i<16;i+) lcdd_send(s3i); for(j=1;j&

14、lt;qb;j+) while(key7289); x=qingdanj2; d_change(x); change(s2); /显示数据 s210=s29; s29='.' if(s28=32) s28=0x30; lcdi_send(0x90); for(i=0;i<16;i+) lcdd_send(s2i); x=qingdanj1; d_change(x); change(s1); x=qingdanj0; for(i=0;i<4;i+) s1i=shangpinxi; lcdi_send(0x80); for(i=0;i<16;i+) lcdd_se

15、nd(s1i); while(key7289=0); while(key7289); d_change(zongjia); change(s4); lcdi_send(0x80); for(i=0;i<16;i+) lcdd_send(s4i); lcdi_send(0x90); for(i=0;i<16;i+) lcdd_send(bianhaoi); lcdi_send(0x88); for(i=0;i<16;i+) lcdd_send(message5i); lcdi_send(0x98); for(i=0;i<16;i+) lcdd_send(riqii); l

16、ist=0; while(key7289=0); while(key7289=1); while(key7289=0); ea=1;ex0=1; else y=0; /* duilie2=duilie1; /数字滤波 duilie1=duilie0; y=ad1(); duilie0=y>>1; x=duilie0; x=x<<1; x=x+duilie1+duilie2; zhongliang=ad1(); shizhong=zhongliang-pizhong; /数据转换 x=danjiash; jine1=shizhong*x; jine=jine1/1000;

17、 d_change(shizhong); change(s2); /显示数据 s210=s29; s29='.' if(s28=32) s28=0x30; lcdi_send(0x90); for(i=0;i<16;i+) lcdd_send(s2i); d_change(danjiash); change(s1); for(i=0;i<4;i+) s1i=shangpinshi; lcdi_send(0x80); for(i=0;i<16;i+) lcdd_send(s1i); d_change(jine); change(s3); lcdi_send(0x

18、88); for(i=0;i<16;i+) lcdd_send(s3i); d_change(zongjia); change(s4); lcdi_send(0x98); for(i=0;i<16;i+) lcdd_send(s4i); lcdi_send(0x98); /while(1); /lcd子程序void ini_lcd() /lcd初始化子程序 lcdi_send(0x30); lcdi_send(0x1); /总清 lcdi_send(0xc); lcdi_send(0x2); /光标右移,ac+1void lcdd_send(short x) /lcd发送数据子程序

19、chk_busy(); nop1(); lcd_di=1;lcd_rw=0;lcd_e=0; p0=x; for(dealy=0;dealy<5;dealy+);/ lcd_e=1; x=x; p0=0xff;void lcdi_send(short x) /lcd发送指令子程序chk_busy(); nop1(); lcd_di=0;lcd_rw=0;lcd_e=0; p0=x; for(dealy=0;dealy<5;dealy+);/ lcd_e=1; x=x; p0=0xff; void chk_busy()short i=0xff; while(i&0x80) l

20、cd_di=0; lcd_rw=1; lcd_e=0; i=p0; lcd_e=1; /7289子程序void ini_7289()short i; cs7289=1; key7289=1; dio7289=1; /7289初始化子程序 for(i=0;i<50;i+) for(dealy=0;dealy<5000;dealy+); /延时25ms send7289(0xa4); cs7289=1;void send7289(short x) /7289发送数据子程序short i,j=1; cs7289=0; for(dealy=0;dealy<6;dealy+); /延时

21、50us for(i=7;i>=0;i-) j=j<<i; dio7289=x&j; j=1;j=1;clk7289=1; for(dealy=0;dealy<1;dealy+) ; /延时10us clk7289=0; for(dealy=0;dealy<1;dealy+) ; /延时10us dio7289=0;short receive() /7289接收数据子程序short i,x=0; dio7289=1; for(dealy=0;dealy<6;dealy+); /延时50us for(i=0;i<=7;i+) clk7289=1; for(dealy=0;dealy<1;dealy+); /延时10us x=x<<1; if(dio7289)x+; clk7289=0; for(dealy=0;dealy<1;dealy+); /延时10us dio7289=0; return(x);/ad/ad子程序int ad1()short k,x; int ad_zhi=0,xz; ea=0; ad_start=1; for(k=0;k<5;k+) while(ad_stb); x=ad_244; x=x&0xf; ad_zhi=ad_zhi*10+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论