




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、设计任务及要求:设计任务:达成一个简单的使用数字电子秤的硬件与软件部分的设计。设计要求:利用单片机实现对所设计的电子秤的各项功能的控制。电子秤能够LCD液晶显示出商品的名称、价钱,重量、总价等信息。电子秤拥有储藏几种简单商品价钱的功能。电子秤的丈量范围要求达到5KG,丈量精度要求达到。电子秤能够自动达成商品的价钱计算。指导教师署名:2010年6月16日二、指导教师考语:指导教师署名:2010年7月3日三、成绩查收盖印2010年7月日鉴于单片机的适用电子秤的设计设计目的单片机以其功能强,体积小,功耗低,易开发等好多优势被宽泛应用。本次数字电子秤的设计就是需要经过选择适合的单片机来进行主控,再联合A/D变换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件的设计过程顶用到键盘扫描、液晶显示驱动、模数变换程序及汉字库的的设计,做到对我们所学数电、模电、单片机等知识的综合应用,最后实现所设计数字电子秤的各项功能,达到“稳固知识,培育技术,学而用之”的实践目的。经过此次课程设计,不只要提升我们在工作中的学习能力、研究能力、应用能力和着手能力,还要历练我们不畏困难、不懂便学、有漏必补的仔细谨慎的工作态度,加强我们的社会适应力和社会竞争力,为走向社会提早试水,完美自我。设计的主要内容及要求本设计主要达成一个简单适用数字电子秤的硬件电路部分和软件部分的设计。硬件部分包含数据采集、最小系统板、人机交互界面三大多数。此中,数据采集部分由压力传感器和A/D变换部分构成;人机界面部分为键盘输入、液晶显示。软件部分应用单片机C语言实现了本设计的所有控制功能。本设计的数字电子秤要求能够显示商品的名称、价钱、总量、总价等;能够自动达成商品的价钱计算;能够储藏几种简单商品的价钱;能够拥有超重提示功能,一旦重量超出了自己重量的丈量的范围,发出警报;同时对数字电子秤的丈量范围要达到5KG,丈量精度要求达到。整体设计方案整个数字电子秤电路由压力传感电路(ADC0832采样)、模数变换系统、单片机主控制电路、LM4229显示电路、蜂鸣器报警电路和4*4键盘电路6个部分构成。如下图。LCD显示电路报警电路AT89C51A/D变换器键盘电路压力传感电路图鉴于单片机的适用电子秤构成框图电子秤的丈量过程实质是经过电阻应变传感器将被测物体的重量变换成电压信号输出,电压信号经过模数变换把模拟信号变换成数字量,数字量经过显示器显示重量。翻开电源,数字电子秤开始工作。接通电源时,数字电子秤进入欢迎界面“欢迎使用电子秤设计······”。数字电子秤上MCU开始工作,键盘不停进行扫描,同时经过ADC0832也不停进行外面称量数据采样,LCD上显示“适用电子秤名称单价······”。当载物台上放有物体时,ADC0832立刻将数据采集送给单片机办理。在键盘输入对应商品的代码编号,在240*128的LCD上能够看到相应商品的名称,单价,总重,总价钱等信息。在称量的过程中,一旦物体自己的重量高出电子秤的称量范围,蜂鸣器立刻会发出“滴滴····”警报声告诉工作人员,所称量物件超重。硬件电路设计整体电路图数字电子秤采纳AT89C51单片机作为微办理器,接口电路由晶振、LM4229显示电路、4*4按键电路、ADC0832电路、报警电路、储存器等构成。控制器系统的硬件电路如下图。控制器系统硬件电路的工作过程是:翻开电源时,MCU及各个部分电路开始工作,MCU调用内部储存数据对各部分接口电路初始化。200ms后LM4229进入欢迎界面,ADC0832不停对外面数据进行采样交给MCU进行办理,一旦有物件放入载物台,ADC0832立刻发送中止恳求,并将本次采集数据交给MCU办理,以后LM4229显示相应数据量。在此过程中,键盘也在不停进行扫描,一旦有键按下,单片机也会对其数据进行相应办理,而后将对LM4229进行写操作。图?适用数字电子称的硬件电路图压力传感器本设计要求称量不超出5KG,偏差不大于0.001KG。考虑到秤台自重、振动和冲击重量,还要防止超重破坏传感器,所以传感度量程一定大于额定称重—。我们选择的是L-PSIII型传感器,量程20Kg,精度为%,满量程时偏差±0.002Kg,能够知足本系统的精度要求。其原理如下图。图?传感器电路工作原理称重传感器主要由弹性体、电阻应变片电缆线等构成,内部线路采纳惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出:数模变换系统第一考虑用常用的模数变换芯片adc0809,因为本设计只要采集一路数据,adc0809为并行的8路数据采集芯片,且接线较复杂,所以考虑采纳串行的AD变换芯片adc0832达成设计。ADC0832与MCS-51单片机接口构成了串行的8位通道。微办理器经过软件写入3位串行控制命令决定ADC0832的工作方式。CH0单端输入,输入范围0-5V。非调整偏差为±1LSB。电路仅使用微办理器的两根控制线,两根数据线可方便进行光电隔绝加强抗扰乱能力。合用于智能化信号检测仪器、仪表。键盘显示电路的设计本设计中采纳4*4矩阵是键盘,又称队列式键盘。它有4条I/O线作为行线,用4条作为列线。用AT89S51的并行口P1接4×4矩阵键盘,行线接口,列线接口。内行线与列线每一个交错点设置一个键,键盘设置了“0~15个”按键,此中的“0键”表示撤消,其余键代表可供选择商品品种及价钱。液晶显示器电路的设计LM4229经过CDWRITEREAD三个引脚的电平来确立是读数据仍是读状态,或许是写数据仍是写命令。数据D0-D7连结到单片机的P0口,能够和单片机进行直接的数据互换,P2口为液晶显示的控制端。软件设计本设计中的程序由主控制程序、LM4229液晶显示驱动程序、ADC0832采样程序和4*4键盘程序构成。主控制程序整个设计中采纳由下向上的设计思路。主程序中主要达成对LCM4229、ADC0832、及键盘扫描程序的调用。在编写程序的过程中,各变量一致采纳全局变量方式命名,同时考虑到电子秤对精度的要求,本设计中的价钱及总量有关的变量所有采纳浮点数。主程序流程图如下图。开始MCU初始化、LM4229进入欢迎界面、ADC0832初始化载物台有N物体否YMCU储存ADC0832采样值能否输入商品N代码按键YMCU履行计算,并将结果送LM4229显示N丈量结束键能否按下Y结束图主程序流程图LM4229液晶显示驱动程序write_data(place&0xff);89CEX文件导入到AT89C51中,可在开始开始开始,能清楚地察看到芯片上每一Proteus中单击全速仿真运转按钮,进行现象的查察个引脚的电平变化,红色代表高电平,写蓝入色控代制表字低电平。发送别扫描码拉低CS、拉高CLK适用电子秤初始化仿真写入初始行N发送列扫描码导入文件此后,进入仿真页面DATA,先按右移开始8位,此时数字电子秤进入欢迎界面。YLM4229上显示"欢迎使用电子秤能否换行左移一位YNNN拉高CS、拉低CLK,列扫描完成所有数据已右移一位返回数据DAT写完YNY结束行扫描完成结束Y返回键值结束图适用电子秤初始化仿真图适用电子秤进入称重界面仿真接下来调理压力传感模拟电路电压,将电压设为表示此时载物台上没有物体。此时LM4229切换到称量画面,显示指示“适用电子秤单价:元/千克总重量:0.000千克总价:元”。如下图图适用电子秤进入称重界面仿真图适用电子秤模拟商品选择及最大称量仿真而后,上浮压力传感电压表示已载有商品,同时按下“6号”键,表示选择6号商品“苹果”。此时LM4229上显示“名称:苹果单价:元/千克总重量:3.496千克总价:“元”(实质*=元)。达到基本要求。如下图。图模拟商品选择考证性称量仿真图最后,上浮压力传感电压使载重达到最大,同时按下“5号”键,表示选择5号商品“西瓜”。液晶显示“名称:西瓜单价:元/千克总重量:4.980千克总价:“元”达.到基本要求,最大称量重量4.980KG,如图。图适用电子秤模拟商品最大称量仿真图使用说明利用51系列单片机设计的电子秤不只能够知足并解决现实生活中提出的“迅速、正确、连续、自动”称量要求,同时有效地防止人为偏差。当载物台上放有物体时,在键盘输入对应商品的代码编号,LCD液晶上能够看到相应商品的名称,单价,总重,总价钱等信息。在称量的过程中,一旦物体自己的重量高出电子秤的称量范围,蜂鸣器立刻警报,告诉工作人员,所称量物件超重。在称量过程中还能够经过键盘选择商品不一样的价位。设计总结此次课程设计是对前面所学知识特别系统全面的一次查验。经过此次课程设计与仿真,让我更明确的认识了一些芯片的用途功能,也娴熟了对它们的运用。在这个设计的过程中,我需要不停地思虑,不停地讨教,不停地找寻资料以借鉴,不停的用对知识的深入掌握去解决设计中存在的一些问题和调试时出现的一些故障。固然说这样的设计很难很烦很累人,可是的确是充分的,是让人感觉存心义的。此次课程设计,不只让我认识了一个数字电子秤,更让我收获了专业知识之外的东西,那就是学会了深信、坚持,同时也磨砺了我的意志和耐心。真的,作为一个原来对这个专业不是很感兴趣的学生,让我收获了一份素来没有过的成就感。固然到此刻我对这个设计的部分原理仍是不可以用很专业的语言叙述出来,可是当我最先做成功这个设计的时候,我有一种说不出的激动,我写下一句话:“人很怪,上天赐予每一个人的都是公正的,没有谁没能力去做事,不过在于那个人愿不肯意去做,敢不敢去做,能不可以坚持去做!”是的,这就是我此次课程设计以后最大的收获!固然对这个专业仍旧不是很感兴趣,可是我仍是想经过这份设计报告来建议老师,希望此后能多搞一些像这样很实质的实践课程,我们作为学生,的确需要好的成绩,但更需要用这类对知识特别全面一致的查验来观察自己,证明自己,坚持自己。参照文件[1]郭天祥.51单片机C语言教程[M].北京:电子工业第一版社,2009:342-354.[2]李建忠.单片机原理及应用[M].西安:西安电子科技大学第一版,2002:63-80.[3]张俊谟.单片机中级教程[M].北京:北京航空航天大学第一版,2000:36-44.陈东云,杜敬仓.单片机原理与开发指导[M].北京:机械工业第一版社,2006:122-156.[5]彭伟.单片机C语言程序设计实训100例[M].北京:电子工业第一版社,2009:160-167.附录A:#include<>#include<>#include<>#include<>#include<>#defineucharunsignedchar#defineuintunsignedintsbitADCS=P3^5;sbitADDI=P3^7;sbitADDO=P3^7;sbitADCLK=P3^6;uintx1,y1,z1=0,w1;ucharad_data,k,n,m,e,num,s;//采样值储存uinttemp1;sbitbeep=P3^0;charpress_data;//标度变换储存单元floatpress;unsignedcharad_alarm,temp;//报警值储存单元unsignedcharabc[5]={48,46,48,48,48};unsignedcharprice_all[6]={48,48,46,48,48,48};floatprice_unit[10]={,,,,,,,,,0};//商品初始单价ucharprice_danjia[5]={48,46,48,48,48};floatprice;uintprice_temp1,price_temp2;//商品总价ucharAdc0832(unsignedcharchannel);voidalarm(void);voiddata_pro(void);voiddelay(uintk);voidkeyscan( );voiddisp_init( );voidprice_jisuan( );/************主函数************/voidmain(void){delay(500);//ad_data=0;
//系统延时500ms启动//采样值储存单元初始化为
0lcd_init( );
//显示初始化disp_init( );delay(1000);
//开始进入欢迎界面//延时进入称量画面clear_lcd(0,4,40);clear_lcd(16,0,100);clear_lcd(28,0,40);clear_lcd(44,0,100);clear_lcd(56,0,40);clear_lcd(72,0,100);clear_lcd(84,0,40);clear_lcd(100,0,100);clear_lcd(112,0,40);write_lcd(0,8,"适用电子秤");while(1){ad_data=Adc0832(0);//采样值储存单元初始化为0alarm( );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_jisuan( );//计算出价钱write_lcd(88,10,price_all);write_lcd(88,20,"元");write_lcd(112,0,"设计学生:0712201-23王超");}}/************读ADC0832函数************///采集并返回ucharAdc0832(unsignedcharchannel)
//AD
变换,返回结果{uchari=0;ucharj;uintdat=0;ucharndat=0;if(channel==0)channel=2;if(channel==1)channel=3;ADDI=1;_nop_( );_nop_( );ADCS=0;//拉低CS端_nop_( );_nop_( );ADCLK=1;//拉高CLK_nop_( );_nop_( );ADCLK=0;//拉低CLK_nop_( );_nop_( );ADCLK=1;//拉高CLKADDI=channel&0x1;_nop_( );_nop_( );ADCLK=0;//拉低CLK_nop_( );_nop_( );
端端,形成降落沿端端,形成降落沿
12ADCLK=1;//拉高CLK端ADDI=(channel>>1)&0x1;_nop_( );_nop_( );ADCLK=0;//拉低CLK端,形成降落沿3ADDI=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>>=1;}ADCS=1;//拉搞CS端ADCLK=0;//拉低CLK端ADDO=1;//拉高数据端,回到初始状态dat<<=8;dat|=ndat;return(dat);//returnadk}voiddata_pro(void){unsignedint;if(0<ad_data<256){intvary=ad_data;press=*vary);temp1=(int)(press*1000);
//放大
1000
倍,便于后边的计算abc[0]=temp1/1000+48;
//取压力值百位abc[1]=46;abc[2]=(temp1%1000)/100+48;abc[3]=((temp1%1000)%100)/10+48;abc[4]=((temp1%1000)%100)%10+48;
//取压力值十位//取压力值个位//取压力值十分位}}/*****************
报警子函数
*******************/voidalarm(void){if(ad_data>=256)beep=0;
//则启动报警elsebeep=1;}voiddelay(uintk){uinti,j;for(i=0;i<k;i++)for(j=0;j<100;j++);}开机欢迎界面voiddisp_init( ){write_lcd(0,8,"欢迎使用电子秤");write_lcd(16,0,"------------------------------");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日");}//键盘服务程序voidkeyscan( ){P1=0xfe;temp=P1;temp=temp&0xf0;while(temp!=0xf0){delay(5);temp=P1;temp=temp&0xf0;while(temp!=0xf0){temp=P1;switch(temp){case0xee:num=1,price=price_unit[0],write_lcd(24,0,"
名
称:
杏
仁");break;case0xde:num=2,price=price_unit[1],write_lcd(24,0,"
名
称:
李
子");break;case0xbe:num=3,price=price_unit[2],write_lcd(24,0,"
名
称:
草
莓");break;case0x7e:num=4,price=price_unit[3],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){case0xed:num=5,price=price_unit[4],write_lcd(24,0,"名称:西瓜");break;case0xdd:num=6,price=price_unit[5],write_lcd(24,0,"名称:苹果");break;case0xbd:num=7,price=price_unit[6],write_lcd(24,0,"名称:雪梨");break;case0x7d:num=8,price=price_unit[7],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){case0xeb:num=9,price=price_unit[8],write_lcd(24,0,"
名
称:
香
蕉");break;case0xdb:num=10,price=price_unit[9],write_lcd(24,0,"
名
称:
商品代码
");break;case0xbb:num=11,price=price_unit[1];
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 藤编工艺在生态旅游纪念品开发考核试卷
- 通讯设备租赁市场服务创新考核试卷
- 公路工程气候因素分析试题及答案
- 城市绿化管理管理制度
- 厨房面点卫生管理制度
- 安全监控系统管理制度
- 医院常用设备管理制度
- 工厂复工仓库管理制度
- 处理器架构比较试题及答案
- 大学保安门卫管理制度
- 马拉松赛事运营服务方案
- 跨学科学习:一种基于学科的设计、实施与评价
- 2020年江西省上饶市万年县中小学、幼儿园教师进城考试真题库及答案
- 小区燃气管道施工方案施工方法
- JTT664-2006 公路工程土工合成材料 防水材料
- 教学能力比赛学情分析图(源图可编辑)
- 幼儿园2024-2025学年保教工作计划
- 燕舞集团招聘试题
- 小学心理健康教育《积极心态(1)》优质课教案、教学设计
- 甬统表(工程表格全套)
- 软件架构与系统稳定性
评论
0/150
提交评论