




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
综合课程设计报告基于at89c51的数字电子秤的设计学生姓名: 苏超超、刘煜、傅赟 指导教师: 张 辉 所 在 系:电 子 信 息 系 所学专业:电 子 信 息 工 程 年 级:10 电 子 一 班 2013年6月-24-目录1、设计目的12、设计的主要内容和要求13、整体设计方案23.1设计方案23.2工作原理24、硬件电路的设计45、软件设计55.1主程序设计65.2 lm4229液晶显示65.3 adc0832采样程序85.4 4*4键盘程序96、系统仿真97、使用说明138、设计总结149、元器件1410、参考文献14附录a15附录b24基于at89c51的数字电子秤的设计1、设计目的 单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。但单片机不是万能的,也存在不适合的场合,我们要充分利用单片机的内部资源和选择合适的单片机来完成我们的设计。本数字电子秤的设计过程中需要用到a/d转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件的设计过程中需要用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计,可以很好的将数电、模电、单片机知识进行综合应用。在综合应用中进一步熟悉单片机设计的开发各个流程,最终达到巩固基础、注重设计、培养技能、追求创新、走向实用的目的。2、设计的主要内容和要求 本文主要完成一个简单实用数字电子秤的硬件电路部分和软件部分的设计。在设计的过程学会使用单片机对数字电子秤的各种功能进行控制。本设计中的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能,一旦重量超出了自身重量的测量的范围,发出警报;同时对数字电子秤的测量范围要达到5kg,测量精度要求达到0.001。 3、整体设计方案3.1设计方案整个数字电子秤电路由电源电路、单片机主控制电路、lm4229显示电路、蜂鸣器报警电路、4*4键盘电路和压力传感电路(adc0832采样)6个部分组成。如图3.1所示。3.2工作原理 打开电源开关,数字电子秤开始工作。接通电源时,数字电子秤进入欢迎界面“欢迎使用电子秤 设计”。此时数字电子秤上mcu开始工作,键盘不断进行扫描,同时 通过adc0832也不断进行外部称量数据采样,lcd上显示“实用电子秤 名称 单价”。当载物台上放有物体时,adc0832立即将数据收集送给单片机处理。此时工作人员只要输入对应商品的代码编号,在240*128的lcd上可以看到相应商品的名称,单价,总重,总价格等信息。在称量的过程中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即会发出“滴滴”警报声告诉工作人员,所称量物品超重。图3.1 整体设计方框图4、硬件电路的设计数字电子秤采用at89c51单片机作为微处理器,接口电路由晶振、lm4229显示电路、4*4按键电路、adc0832电路、报警电路、存储器等组成。控制器系统的硬件电路原理图如图4.1所示。控制器系统硬件电路的工作过程是:打开电源时,mcu及各个部分电路开始工作,mcu调用内部存储数据对各部分接口电路初始化。200ms后lm4229进入欢迎界面,adc0832不断对外部数据进行采样交给mcu进行处理,一旦有物品放入载物台,adc0832立即发送中断请求,并将本次采集数据交给mcu处理,之后lm4229显示相应数据量。在此过程中,键盘也在不断进行扫描,一旦有键按下,单片机也会对其数据进行相应处理,然后将对lm4229进行写操作。图4.1 数字电子秤硬件电路图5、软件设计本设计中的程序由主控制程序、lm4229液晶显示驱动程序、adc0832采样程序和4*4键盘程序组成。5.1主程序设计 整个设计中采用由下向上的设计思路。主程序中主要完成对lcm4229、adc0832、及键盘扫描程序的调用。在编写程序的过程中,各变量统一采用全局变量方式命名,同时考虑到电子秤对精度的要求,本设计中的价格及总量相关的变量全部采用浮点数。主程序流程图如图5.1所示图5.1 主程序流程图5.2 lm4229液晶显示图5.2 lm4229液晶显示驱动程序流程图 lm4229液晶能够显示比较复杂的汉字和图形,首先必须对其写入控制操作字,包括图形的显示方式,字体的模式。然后写入初始行地址,指针自动左移,直到写完全部数据为止。 write_data(place&0xff); /写入地址高位 write_data(place/256); /写入地址低位 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;5.3 adc0832采样程序 图5.3 adc0832采样程序程序流程图mcu通过拉低cs、拉高clk来启动adc0832进行外部压力传感转换后的电压信号进行采样,每产生8个clk脉冲,data获得一位完整的8bit数据,此时mcu发送中断请求,拉高cs,拉低clk,并将数据dat返回。5.4 4*4键盘程序图5.4 4*4键盘程序本设计中采用了4*4矩阵式键盘,单片机定时进行查询。首先单片机发送行扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘值。若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描。mcu根据相应的键值,即可确定被按下的键。6、系统仿真在protues的isis 7.4sp2软件环境下画出电路原理图,接下来就是将设计的程序在keil c51 vision3开发集成环境上编译成机器语言,进入protues的isis,双击at89c51,在program file中添加main.hex文件到at89c51中,如图6.1所示。 图6.1 数字电子秤仿真设置图 该仿真验证的过程:首先按开始按,此时数字电子秤进入欢迎界面。lm4229上显示欢迎使用电子秤。如图6.2所示(如下)。接下来调节压力传感模拟电路电压,将电压设为0.00表示此时载物台上没有物体。此时lm4229切换到称量画面。显示指示“实用电子秤 名称单价:0.000元/千克 总重量:0.000千克 总价:00.000元”。如图6.3所示。图6.3 数字电子秤模拟空载图注:同组成员傅赟同学姓名在汉字中较为复杂在lm4229屏幕中无法显示,未予写入最后,上调压力传感电压表示已载有商品,同时按下“5”号键,表示选择6号商品“苹果”。此时lm4229上显示“名称:苹果 单价:6.800元/千克 总重量:3.652千克 总价:“24.835元”。达到基本要求。如图6.4所示图6.4 数字电子秤模拟载物显示仿真图图6.5数字电子秤最大载物显示仿真图7、使用说明在使用仿真的过程中,首先打开仿真电路图,并加载好“hex”文件到单片机中。后将压力传感电压调制0.00,点击按钮,开始仿真。(为了能够看到清晰的演示过程,请将电路的背景设为无。)整个电子秤设置了“015”个按键,其中的“0”键表示取消,其他键代表15种可供选择商品价格。8、设计总结通过本次电子技能课程数字电子秤的设计,让我更加熟悉了单片机的整个设计流程。在设计过程中,我也意识到好的编程书写习惯对软件设计的重要性。刚刚开始由于自己变量大部分采用的是局部变量,导致程序仿真出错,给自己的修改创造不小的麻烦。经过一天的努力,统一采用全局变量终于实现最终的仿真结果和设计的全部任务和要求。当然本数字电子秤还有很多可以改进的地方,例如可以改进按键功能方便工作人员随时对各数据进行修改等等。由于设计时间有限,只能在以后的学习过程中做更进一步的改进。9、元器件atmel89c52一只,蜂鸣器一只,4*4键盘一只,压力传感器一只(最大5kg),lm4229显示器一只,晶振一只,adc0832一只,22pf电容两只,22f电解电容一只,10k电阻一只,510电阻一只,排阻一只10、参考文献1 戴佳,戴卫恒,刘博文 51单片机c语言应用程序设计实例精讲.第二版 电子工业出版社 2008.122徐爱钧.单片机原理实用教程基于proteus虚拟仿真【m】.北京:电子工业出版社,20093侯玉宝,陈忠平,李成群.基于proteus的51系列单片机设计与仿真【j】. 北京:电子工业出版社,20084赵建领,薛园园. 51单片机开发与应用技术详解【n】.北京:电子工业出版社,20095单片机原理及应用技术(第一版).中国矿业大学出版社,20086 阎石.数字电子技术基础(第四版)m.高等教育出版社.1998.117 张毅刚等.mcs-51单片机应用设计.哈尔滨工业电子出版社,19968 何立民.单片机应用技术选编.北京航空航天大学出版社,20009 张友德等.单片微型机原理应用与实验,复旦大学出版社,199610 邬宽明.单片机外围器件实用手册.北京航空航天大学出版社,1998附录a#include#include#include #include #include#define uchar unsigned char#define uint unsigned intsbit adcs =p35; sbit addi =p37; sbit addo =p37; sbit adclk =p36; uint x1,y1,z1=0,w1;uchar ad_data,k,n,m,e,num,s; /采样值存储uint temp1;sbit beep =p30; 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,5.8,6.8,7.9,8.0,9.5,0; /商品初始单价uchar 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); /系统延时500ms启动 /ad_data=0; /采样值存储单元初始化为0 lcd_init(); /显示初始化 disp_init(); /开始进入欢迎界面 delay(100); /延时进入称量画面 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); /采样值存储单元初始化为0 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_jisuan(); /计算出价格 write_lcd(88,10,price_all); write_lcd(88,20,元); write_lcd(112,0,作者:刘煜 苏超超 );/*读adc0832函数*/采集并返回uchar adc0832(unsigned char channel) /ad转换,返回结果 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_(); 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=(channel1)&0x1; _nop_(); _nop_(); adclk=0;/拉低clk端,形成下降沿3 addi=1;/控制命令结束 _nop_(); _nop_(); dat=0; for(i=0;i8;i+) dat|=addo;/收数据 adclk=1; _nop_(); _nop_(); adclk=0;/形成一次时钟脉冲 _nop_(); _nop_(); dat=1; if(i=7)dat|=addo; for(i=0;i8;i+) j=0; j=j|addo;/收数据 adclk=1; _nop_(); _nop_(); adclk=0;/形成一次时钟脉冲 _nop_(); _nop_(); j=j7; ndat=ndat|j; if(i=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(0ad_data=230) beep=0; /则启动报警 else beep=1; void delay(uint k) uint i,j; for(i=0;ik;i+) for(j=0;j100;j+); /开机欢迎界面void disp_init() write_lcd(0,8,欢迎使用电子秤); write_lcd(16,0,-); write_lcd(28,0, ); write_lcd(44,0,-); write_lcd(56,0, ); write_lcd(72,0,-); write_lcd(84,0,指导老师:张辉); write_lcd(100,0,-); write_lcd(112,0,设计日期:2013年6月8日); /键盘服务程序void keyscan()p1=0xfe;temp=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;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)case 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_unit8,write_lcd(24,0,名 称: 香 蕉);break;case 0xdb:num=10,price=price_unit9,write_lcd(24,0,名 称: 商品代码);break;case 0xbb:num=11,price=price_unit1;break;case 0x7b:num=12,price=price_unit2;break;while(temp!=0xf0)temp=p1;temp=temp&0xf0;p1=0xf7;temp=p1;temp=temp&0xf0;while(temp!=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 押题宝典教师招聘之《幼儿教师招聘》题库及参考答案详解【综合卷】
- 2025内蒙古呼伦贝尔陆港国际有限公司招聘递补笔试备考及答案详解(各地真题)
- 教师招聘之《小学教师招聘》模拟题库(模拟题)附答案详解
- 2025呼伦贝尔海拉尔区建设街道办事处招聘城镇公益性岗位人员笔试备考及答案详解(名校卷)
- 预防学生欺凌预案
- 教师招聘之《小学教师招聘》通关训练试卷详解附完整答案详解(夺冠系列)
- 2025年贵州省考试题及答案
- 2025年教师招聘之《小学教师招聘》题库综合试卷含答案详解(能力提升)
- 押题宝典教师招聘之《小学教师招聘》考试题库含完整答案详解【名师系列】
- 2025年教师招聘之《小学教师招聘》练习题(一)【培优b卷】附答案详解
- 《麦克风培训资料》课件
- 口腔综合治疗台水路清洗消毒技术规范
- 心理课堂-情绪ABC理论教案
- 村消防安全管理工作制度
- 虚拟电厂控制系统用户手册
- 资金使用合作协议书范本
- 《江苏省工程勘察设计收费导则》2024
- 2025年全国禁毒知识竞赛题库(共100题附答案)
- 储能站施工组织设计施工技术方案(技术标)
- ktv消防安全培训制度
- GB/T 44923-2024成年人三维头部模型
评论
0/150
提交评论