电子秤的proteus仿真设计_第1页
电子秤的proteus仿真设计_第2页
电子秤的proteus仿真设计_第3页
电子秤的proteus仿真设计_第4页
电子秤的proteus仿真设计_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

1、一、设计任务及要求:设计任务:完成一个简单的使用数字电子秤的硬件与软件部分的设计。设计要求:1 .利用单片机实现对所设计的电子秤的各项功能的控制。2 .电子秤能够LCD液晶显示出商品的名称、价格,重量、总价等信息。3 .电子秤具有储存几种简单商品价格的功能。4 .电子秤的测量范围要求达到5KG测量精度要求达到0.001。5 .电子秤能够自动完成商品的价格计算。指导教师签名:2010年 6 月 16日二、指导教师评语:指导教师签名:2010年7 月3 日三、成绩验收盖章2010年7月 日基于单片机的实用电子秤的设计1 设计目的单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。本次数字

2、电子秤的设计就是需要通过选择合适的单片机来进行主控,再结合A/D 转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件的设计过程中用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计,做到对我们所学数电、模电、单片机等知识的综合应用,最终实现所设计数字电子秤的各项功能,达到 “巩固知识,培养技能,学而用之” 的实践目的。通过这次课程设计,不但要提高我们在工作中的学习能力、探究能力、应用能力和动手能力,还要历练我们不畏艰难、不懂便学、 有漏必补的认真严谨的工作态度, 强化我们的社会适应力和社会竞争力,为走向社会提前试水,完善自我。2 设计的主要内容及要求本设计主要完成一个简单

3、实用数字电子秤的硬件电路部分和软件部分的设计。硬件部分包括数据采集、最小系统板、人机交互界面三大部分。其中,数据采集部分由压力传感器和A/D 转换部分组成;人机界面部分为键盘输入、液晶显示。软件部分应用单片机C 语言实现了本设计的全部控制功能。本设计的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完成商品的价格计算;能够储存几种简单商品的价格; 能够具有超重提醒功能, 一旦重量超出了自身重量的测量的范围,发出警报;同时对数字电子秤的测量范围要达到5KG ,测量精度要求达到 0.001。3 整体设计方案整个数字电子秤电路由压力传感电路(ADC0832 采样) 、模数转换系统、单片

4、机主控制电路、 LM4229 显示电路、蜂鸣器报警电路和 4*4 键盘电路 6 个部分组成。如图3.1所示图3.1基于单片机的实用电子秤组成框图电子秤的测量过程实际是通过电阻应变传感器将被测物体的重量转换成电 压信号输出,电压信号经过模数转换把模拟信号转换成数字量,数字量通过显示 器显示重量。打开电源,数字电子秤开始工作。接通电源时,数字电子秤进入欢 迎界面 欢迎使用电子秤 设计 数字电子秤上 MCU开始工作,键盘不断 进行扫描,同时通过 ADC0832也不断进行外部称量数据采样,LCD上显示实 用电子秤名称单价。当载物台上放有物体时,ADC0832立即将数据收集 送给单片机处理。在键盘输入对

5、应商品的代码编号,在 240*128的LCD上可以 看到相应商品的名称,单价,总重,总价格等信息。在称量的过程中,一旦物体 自身的重量超出电子秤的称量范围,蜂鸣器立即会发出滴滴警报声告诉工作人员,所称量物品超重。4硬件电路设计4.1 整体电路图数字电子秤采用AT89C51单片机作为微处理器,接口电路由晶振、LM4229 显示电路、4*4按键电路、ADC0832电路、报警电路、存储器等组成。控制器系 统的硬件电路如图4.1所示。控制器系统硬件电路的工作过程是:打开电源时, MCU及各个部分电路开 始工作,MCU调用内部存储数据对各部分接口电路初始化。 200ms后LM4229 进入欢迎界面,AD

6、C0832不断对外部数据进行采样交给 MCU进行处理,一旦 有物品放入载物台,ADC0832立即发送中断请求,并将本次采集数据交给MCU处理,之后LM4229显示相应数据量。在此过程中,键盘也在不断进行扫描,一且有键按下,单片机也会对其数据进行相应处理,然后将对LM4229进行写操作一务TWPl'IlmXI汽y必pn ”心Pi。wPOf!防TH能TFT.h阳IMRiPHI不FRF2L+riIEP2MpePl7prnHI J:KDPI JO (PI1怅其PIJU.h ?Pl *txpPI .7K:n31IMV台在PI12 F&dltOilSil.-I'llDO |KII.

7、U1 iU2 !_sr"i£U iIM 5M h_A AJl _H_J87_!£_im >;市mu|金|HUjWCl ILUl>)TW尔扣图4.1实用数字电子称的硬件电路图4.2 压力传感器本设计要求称量不超过 5KG,误差不大于0.001KG。考虑到秤台自重、振 动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重 一 我们选择的是L-PSIII型传感器,量程20Kg,精度为0.01%,满量程时误差士 0.002Kg ,可以满足本系统的精度要求。其原理如图 4.2所示。图 4.2 传感器电路工作原理称重传感器主要由弹性体、 电阻应变片

8、电缆线等组成, 内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:4.3 数模转换系统首先考虑用常用的模数转换芯片adc0809,由于本设计只需采集一路数据,adc0809 为并行的 8 路数据采集芯片,且接线较复杂,因此考虑采用串行的 AD 转换芯片adc0832 完成设计。ADC0832 与 MCS- 51 单片机接口构成了串行的8位通道。微处理器通过软件写入3位用行控制命令决定ADC0832的工作方式。CH0单端输入,输入范围0-5V。非调整误差为土L SB。电路仅使用微处理器的两根控制线,两根数据线可方便进行光电隔离增强抗干扰能力。适用于智能化信号检测仪器、

9、仪表。4.4 键盘显示电路的设计本设计中采用 4*4 矩阵是键盘, 又称行列式键盘。 它有 4 条 I/O 线作为行线,用4条作为列线。用AT89S51的并行口 P1接4必矩阵键盘,行线接P1.0-P1.3口,列线接P1.4-P1.7 口。在行线与列线每一个交叉点设置一个键,键盘设置了“ 015个按键,其中的”“ 0键表示取消,其他键代表可供选择商品品种及价格。”4.5 液晶显示器电路的设计LM4229 通过 CD WRITE READ 三个引脚的电平来确定是读数据还是读状态,或者是写数据还是写命令。数据D0-D7 连接到单片机的 P0 口,可以和单片机进行直接的数据交换, P2 口为液晶显示

10、的控制端。5 软件设计本设计中的程序由主控制程序、 LM4229 液晶显示驱动程序、 ADC0832 采样程序和 4*4 键盘程序组成。5.1 主控制程序整个设计中采用由下向上的设计思路。主程序中主要完成对LCM4229 、ADC0832 、 及键盘扫描程序的调用。 在编写程序的过程中, 各变量统一采用全局变量方式命名, 同时考虑到电子秤对精度的要求, 本设计中的价格及总量相关的变量全部采用浮点数。主程序流程图如图 5.1 所示。4图5.1主程序流程图5.2 LM4229液晶显示驱动程序write_data(place&0xff);/写入地址高位write_data(place/256

11、);/写入地址低位write_com(0x24);/地址设置write_com(0xb0);/设置数据自动写write_data(ASC_MSK(c1-0x20)*16+k);/*-例如:0的ASCII码为0x30,在ASC MSK中的位置为0x10*16 -16字节字码依次写入LCD-*/write_com(0xb2);/自动复位place=place+30;LM4229液晶显示驱动程序流程图如图 5.2所示。图5.2 LM4229液晶显示驱动程序流程图5.3 ADC0832采样程序MCU通过拉低CS、拉高CLK来启动ADC0832进行外部压力传感转换后的电 压信号进行采样,每产生8个CLK

12、脉冲,DATA获得一位完整的8bit数据,此时MCU 发送中断请求,拉高CS,拉低CLK,并将数据DAT返回。ADC0832采样程序的程 序流程图如图5.3所示。N图5.3 ADC0832采样程序程序流程图5.4 4*4键盘程序本设计中采用了 4*4矩阵式键盘,单片机定时进行查询。首先单片机发送行 扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘值。若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描MC限据相应的键值,即可确定被按下的键。4*4键盘程序如图5.4所示。图5.4 4*4键盘程序6系统仿真在protues的ISIS 7.6sp4软件环境下画出电路

13、原理图,接下来就是将设计的 程序在Keil C51 n Vision3发集成环境上编译成机器语言,进入Proteus的ISIS, 鼠标左键点击菜单 Debug”,选中use romote debuger monitor,便可实现KeilC 与Proteus连接调试。首先在 Proteus中双击单片机AT89C51,将KeilC下编程生 成的.HEX文件导入到AT89C51中,可在Proteus中单击全速仿真运行按钮,进 行现象的查看,能清楚地观察到芯片上每一个引脚的电平变化,红色代表高电平, 蓝色代表低电平。1.1 实用电子秤初始化仿真导入main.HEX文件以后,进入仿真页面,先按开始,此时

14、数字电子秤进入 欢迎界面。LM4229上显示"欢迎使用电子秤 % 如图6.1所示。23图 6.1 实用电子秤初始化仿真图1.2 实用电子秤进入称重界面仿真接下来调节压力传感模拟电路电压,将电压设为 0.00 表示此时载物台上没有物体。此时LM4229 切换到称量画面,显示指示 “实用电子秤单价:0.000 元/千克 总重量: 0.000千克 总价: 00.000元”。如图 6.2所示图 6.2 实用电子秤进入称重界面仿真图1.3 实用电子秤模拟商品选择及最大称量仿真然后,上调压力传感电压表示已载有商品,同时按下“ 6号键,表示选择”6号商品 “苹果 ”。此时 LM4229 上显示 “

15、名称:苹果单价:4.200元/千克总重量:3.496千克 总价:“14.683元” (实际4.200*3.496=14.6832元) 。达到基本要求。如图 6.3所示。图 6.3 模拟商品选择验证性称量仿真图最后,上调压力传感电压使载重达到最大,同时按下“ 5号键,表示选择”5号商品 “西瓜 ”。 液晶显示 “名称: 西瓜 单价: 2.400 元/千克 总重量: 4.980千克 总 价:”11.95况”达到基本要求,最大称量重量 4.980KG,如图6.4。图 6.4 实用电子秤模拟商品最大称量仿真图7 使用说明利用 51 系列单片机设计的电子秤不但可以满足并解决现实生活中提出的 “快速、准确

16、、连续、自动 ”称量要求,同时有效地避免人为误差。当载物台上放有物体时,在键盘输入对应商品的代码编号, LCD 液晶上可以看到相应商品的名称,单价,总重,总价格等信息。在称量的过程中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即警报,告诉工作人员,所称量物品超重。在称量过程中还可以通过键盘选择商品不同的价位。8 设计总结这次课程设计是对前面所学知识非常系统全面的一次检验。 通过这次课程设计与仿真,让我更明确的了解了一些芯片的用途功能,也熟练了对它们的运用。在这个设计的过程中, 我需要不断地思考, 不断地请教, 不断地寻找资料以借鉴,不断的用对知识的深入掌握去解决设计中存在的一些问题和调试

17、时出现的一些故障。虽然说这样的设计很难很烦很累人, 但是确实是充实的, 是让人感到有意义的。这次课程设计, 不但让我了解了一个数字电子秤, 更让我收获了专业知识以外的东西,那就是学会了坚信、坚持,同时也磨砺了我的意志和耐心。真的,作为一个本来对这个专业不是很感兴趣的学生, 让我收获了一份从来没有过的成就感。 虽然到现在我对这个设计的部分原理还是不能用很专业的语言讲述出来, 但是当我最初做成功这个设计的时候, 我有一种说不出的激动, 我写下一句话: “人很怪,上天给予每个人的都是公平的,没有谁没能力去做事, 只是在于那个人愿不愿意去做,敢不敢去做,能不能坚持去做! ”是的,这就是我这次课程设计之

18、后最大的收获!虽然对这个专业依旧不是很感兴趣, 但是我还是想通过这份设计报告来建议老师,希望以后能多搞一些像这样很实际的实践课程,我们作为学生, 的确需要好的成绩,但更需要用这种对知识非常全面统一的检验来考察自己,证明自己,坚持自己。参考文献1 郭天祥 .51 单片机 C 语言教程 M. 北京:电子工业出版社, 2009 : 342-354.2 李建忠 .单片机原理及应用 M. 西安:西安电子科技大学出版, 2002: 63-80.3 张俊谟 .单片机中级教程M. 北京:北京航空航天大学出版, 2000 : 36-44.4 陈东云 ,杜敬仓.单片机原理与开发指导M. 北京 :机械工业出版社,

19、2006:122-156.5彭伟.单片机C语言程序设计实训100例M.北京:电子工业出版社, 2009: 160-167.附录 A:#include<reg51.h>#include<intrins.h>#include <absacc.h>#include <math.h>#include<lm4229.h>#define uchar unsigned char #define uint unsigned int sbit ADCS =P3A5;sbit ADDI =P3A7;sbit ADDO =P3A7;sbit ADCLK =

20、P3A6;uint x1,y1,z1=0,w1;uchar ad_data,k,n,m,e,num,s;uint temp1;sbit beep =P3A0;char press_data;float press;unsigned char ad_alarm,temp;unsigned char abc5=48,46,48,48,48;unsigned char price_all6=48,48,46,48,48,48;/采样值存储/标度变换存储单元/报警值存储单元float price_unit10=5.5,2.8,3.6,4.5,2.4,4.2,3.8,6.0,1.5,0;/商品初始单价u

21、char price_danjia5=48,46,48,48,48;float price;uint price_temp1,price_temp2;/商品总价uchar Adc0832(unsigned char channel);void alarm(void);void data_pro(void);void delay(uint k);void keyscan();void disp_init();void price_jisuan();/*主函数*/void main(void)delay(500);/ad_data=0;lcd_init();disp_init();delay(10

22、00);clear_lcd(0,4,40);clear_lcd(16,0,100);clear_lcd(28,0,40);/系统延时 500ms 启动/ 采样值存储单元初始化为 0/显示初始化/开始进入欢迎界面/延时进入称量画面clearclearclearclearclearclearwritecd(44,0,100);cd(56,0,40);cd(72,0,100);cd(84,0,40);cd(100,0,100);cd(112,0,40);cd(0,8," 实用电子秤");while(1)/采样值存储单元初始化为");ad_data =Adc0832(0)

23、;alarm();data_pro(); / 读取重量keyscan(); /查询商品种类write_lcd(40,0,"write_lcd(56,0," 单 价 :");write_lcd(56,11,price_danjia);write_lcd(56,20," 元/千克");write_lcd(72,0," 总重量 :");write_lcd(72,11,abc);write_lcd(72,20," 千克 ");write_lcd(88,0," 总 价 :");price_jis

24、uan();/ 计算出价格write_lcd(88,10,price_all);write_lcd(88,20," 元");write_lcd(112,0," 设计学生 :0712201-23 王超");/*读 ADC0832 函数*/采集并返回/AD 转换,返回结果uchar Adc0832(unsigned char channel) uchar i=0;uchar j;uint dat=0;uchar ndat=0;if(channel=0)channel=2;if(channel=1)channel=3;ADDI=1;_nop_();_nop_(

25、);ADCS=0;/ 拉低 CS 端_nop_();_nop_();ADCLK=1;/ 拉高 CLK 端_nop_();_nop_();ADCLK=0;/ 拉低 CLK 端 ,形成下降沿1_nop_();_nop_();ADCLK=1;/ 拉高 CLK 端ADDI=channel&0x1;_nop_();_nop_();ADCLK=0;/ 拉低 CLK 端 ,形成下降沿2_nop_();_nop_();ADCLK=1;/ 拉高 CLK 端ADDI=(channel>>1)&0x1;_nop_();_nop_();ADCLK=0;/ 拉低 CLK 端 ,形成下降沿3A

26、DDI=1;/ 控制命令结束_nop_();_nop_();dat=0;for(i=0;i<8;i+)dat|=ADDO;/ 收数据ADCLK=1;_nop_();_nop_();ADCLK=0;/ 形成一次时钟脉冲_nop_();_nop_();dat<<=1;if(i=7)dat|=ADDO;for(i=0;i<8;i+)j=0;j=j|ADDO;/ 收数据ADCLK=1;_nop_();_nop_();ADCLK=0;/ 形成一次时钟脉冲_nop_();_nop_();j=j<<7;ndat=ndat|j;if(i<7)ndat>>=

27、1;ADCS=1;/ 拉搞 CS 端ADCLK=0;/ 拉低 CLK 端ADDO=1;/ 拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat);/return ad k void data_pro(void)unsigned int;if(0<ad_data<256)int vary=ad_data;press=(0.019531*vary);temp1=(int)(press*1000);/ 放大 1000 倍,便于后面的计算/取压力值百位/取压力值十位/取压力值个位/取压力值十分位abc0=temp1/1000+48;abc1=46;a

28、bc2=(temp1%1000)/100+48;abc3=(temp1%1000)%100)/10+48;abc4=(temp1%1000)%100)%10+48;/*报警子函数*/ void alarm(void)if(ad_data>=256)beep=0;/ 则启动报警elsebeep=1; void delay(uint k)uint i,j;for(i=0;i<k;i+)for(j=0;j<100;j+);/开机欢迎界面void disp_init()write_lcd(0,8," 欢迎使用电子秤");write_lcd(16,0,"&

29、quot;);write_lcd(28,0," 设计学生:王 超 ");write_lcd(44,0,"");write_lcd(56,0," 班级学号:0712201-23");write_lcd(72,0,"");write_lcd(84,0," 指导老师:谭 跃 ");write_lcd(100,0,"");write_lcd(112,0," 设计日期 :2010 年 6月 29 日");/键盘服务程序void keyscan()P1=0xfe;te

30、mp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0) temp=P1;switch(temp) case 0xee:num=1,price=price_unit0, write_lcd(24,0," 名 称 : 杏 仁 "); break;case 0xde:num=2,price=price_unit1,write_lcd(24,0," 名 称 : 李 子");break;名称:草莓");名称:葡萄&quo

31、t;);case 0xbe:num=3,price=price_unit2,write_lcd(24,0," break;case 0x7e:num=4,price=price_unit3,write_lcd(24,0," break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfd;temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0; while(temp!=0xf0) temp=P1;switch(temp)c

32、ase 0xed:num=5,price=price_unit4,write_lcd(24,0," break;名称:西瓜");case 0xdd:num=6,price=price_unit5,write_lcd(24,0,"名称:苹果");break;case 0xbd:num=7,price=price_unit6,write_lcd(24,0,"名称:雪梨");break;case 0x7d:num=8,price=price_unit7,write_lcd(24,0,"名称:核桃");break;while(temp!=0xf0)temp=P1;temp=temp&0xf0;P1=0xfb;temp=P1;temp=temp&0xf0;while(temp!=0xf0)delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0) temp=P1;switch(temp)case 0xeb:num=9,price=price_u

温馨提示

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

评论

0/150

提交评论