数字电子秤论文_第1页
数字电子秤论文_第2页
数字电子秤论文_第3页
数字电子秤论文_第4页
数字电子秤论文_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

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

文档简介

1、 派2006级学生电子技能生 某 课程设计 生米 米 电子技能课程设计报告书基于AT89C51的数字电子科 课题名称的设计姓 名朱珍奇学号0612201*16院 系物理与电信工程系专业电子信息工程指导教师龚伦峰讲师2009年6月16日一、设计任务及要求:设计任务:完成一个简单数字电子科的硬件电路部分和软件部分的设计要 求:1 .利用单片机对数字电子秤的各种功能进行控制。2 .数字电子秤能够显示商品的名称,价格,总重,总价。3 .数字电子秤能够自动完成商品的价格计算。4 .数字电子秤具有储存儿种简单商品价格的功能。5 .数字电子秤具有超重提醒功能,一旦重量超出了自身测量重量的范围, 即发出警报八

2、6 .嬴字电子秤的测量范围要求达到5KG,测量精度要求达到0.001。指导教师签名:2009年6月16日二、指导教师评语:指导教师签名:2009年6月28日三、成绩验收盖章2009年6月28日-1-目录电子技能课程设计报告书1基于AT89C51的数字电子秤的设计11、设计目的12、设计的主要内容和要求13、整体设计方案16.1 设计方案16.2 工作原理14、硬件电路的设计25、软件设计351主程序设计35.2 LM4229液晶显示驱动程序45.3 ADC0832采样程序55.4 4*4键盘程序66、系统仿真67、使用说明98、设计总结9参考文献9附录A 10基于AT89C51的数字电子秤的设

3、计朱珍奇(湖南城市学院物理与电信工程系电子信息工程专业,益阳,413000)1、设计目的单片机以其功能强,体积小,功耗低,易开发等很多优势被广泛应用。但 单片机不是万能的,也存在不适合的场合,我们要充分利用单片机的内部资源和 选择合适的单片机来完成我们的设计。本数字电子秤的设计过程中需要用到A/D 转换、键盘、液晶显示、复位电路和蜂鸣器报警驱动电路的知识,同时在软件的 设计过程中需要用到键盘扫描、液晶显示驱动、模数转换程序及汉字库的的设计, 可以很好的将数电、模电、单片机知识进行综合应用。在综合应用中进一步熟悉 单片机设计的开发各个流程,最终达到“巩固基础、注重设计、培养技能、追求 创新、走向

4、实用的目的。2、设计的主要内容和要求本文主要完成一个简单实用数字电子秤的硬件电路部分和软件部分的设 计。在设计的过程学会使用单片机对数字电子秤的各种功能进行控制。本设计中 的数字电子秤要求能够显示商品的名称、价格、总量、总价等;能够自动完成商 品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能,一旦重 量超出了自身重量的测量的范围,发出警报:同时对数字电子秤的测量范围要达 到5KG,测量精度要求达到0.001。3、整体设计方案3.1设计方案整个数字电子秤电路由电源电路、单片机主控制电路、LM4229显示电路、 蜂鸣器报警电路、4*4键盘电路和压力传感电路(ADC0832采样)6个部

5、分组成。 如图3. 1所示。3. 2工作原理打开电源开关,数字电子秤开始工作。接通电源时,数字电子秤进入欢迎界面“欢迎使用电子秤 设计”。此时数字电子秤上MCU开始工作,键盘不断进行扫描,同时通过ADC0832也不断进行外部称量数据采样,LCD上显示“实 用电子秤名称单价当载物台上放有物体时,ADC0832立即将数据收集送给单片机处理。此时工作人员只要输入对应商品的代码编号,在240*128 的LCD上可以看到相应商品的名称,单价,总重,总价格等信息。在称量的过程 中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即会发出“滴滴” 警报声告诉工作人员,所称量物品超重。图3.1整体设计方框图4

6、、硬件电路的设计数字电子秤采用AT89c51单片机作为微处理器,接口电路由晶振、LM4229 显示电路、4*4按键电路、ADC0832电路、报警电路、存储器等组成。控制器系 统的硬件电路原理图如图4.1所示。控制器系统硬件电路的工作过程是:打开电源时,MCU及各个部分电路开始 工作,MCU调用内部存储数据对各部分接口电路初始化。200ms后LM4229进入欢 迎界面,ADC0832不断对外部数据进行采样交给进行处理,一旦有物品放入 载物台,ADC0832立即发送中断请求,并将本次采集数据交给MCU处理,之后LM4229显示相应数据量。在此过程中,键盘也在不断进行扫描,一旦有键按下, 单片机也会

7、对其数据进行相应处理,然后将对LM4229进行写操作。LM4229HHR6ICOINTO INTI TO TlQ) 2N5W4pi.o r 1.1 PU Pl.3Pl 4O1A w- n.5霜S3QQSW-PBSW.PBQSW-FHPIO-S?SKa 0 o SW-l'h1一oSw-rt*k , c,O0sw-rttPH510SH一r"uSI2 xzu.$11rx_ W-PHSW-PBSW-PBSW-.FHP)2Si 4SIgSIT"1ooSW-PB00 SW-PBk «0oSW-FHPJJ1*14,15PIOPITS5 AIX9C5IMO M KQ M3

8、 P04 iXU1X161120IQ I 心 P23 P?4 125 1*26R w PSLN A由, 1XI> RXDHALT £5 Tip?1X11KI一1)121>21154_J2_5IM S- i1>56H JD” 7_J2_JP*工J 1¥n>IkJ/ZCfAIK0KJ2110 CHIGM)"CHO ci”图4.1数字电子秤硬件电路图5、软件设计本设计中的程序由主控制程序、LM4229液晶显示驱动程序、ADC0832采样程 序和4*4键盘程序组成。5.1主程序设计整个设计中采用由下向上的设计思路。主程序中主要完成对LCM4229、

9、 ADC0832、及键盘扫描程序的调用。在编写程序的过程中,各变量统一采用全局 变量方式命名,同时考虑到电子秤对精度的要求,本设计中的价格及总量相关的 变量全部采用浮点数。主程序流程图如图5.1所示。-1-图5.1主程序流程图5. 2 LM4229液晶显示驱动程序图5. 2 LM4229液晶显示驱动程序流程图LM4229液晶能够显示比较复杂的汉字和图形,首先必须对其写入控制操作 字,包括图形的显示方式,字体的模式。然后写入初始行地址,指针自动左移,直到写完全部数据为止。write_data(place&Oxff); 写入地址高位write_data (place/256);写入地址低位

10、write_com(0x24);地址设置write_com(OxbO);设置数据自动写write_data(ASC_MSK(cl-0x20)*16+k); /*一一例如:0的ASCII码为 0x30,在人$0恰1;中的位置为0*10*16 -16字节字码依次写入LCD-*/write_com(0xb2);自动复位place=place+30;5. 3 ADC0832采样程序拉扁us、拉/低 CLK.i区川效加DAT图5. 3 ADC0832采样程序程序流程图MCU通过拉低CS、拉高CLK来启动ADC0832进行外部压力传感转换后的电压信号进行采样,每产生8个CLK脉冲,DATA获得一位完整的8

11、bit数据,此时MCU发送 中断请求,拉高CS,拉低CLK,并将数据DAT返回。5. 4 4*4键盘程序图5. 4 4*4键盘程序本设计中采用了4*4矩阵式键盘,单片机定时进行查询。首先单片机发送行 扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘 值。若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描。MCU根据相应的键值,即可确定被按下的键。6、系统仿真在protues的ISIS 7.4sp2软件环境下画出电路原理图,接下来就是将设II的程序在Keil C51 U Vision3开发集成环境上编译成机器语言,进入Protues的 ISIS,双击 AT89

12、C51,在Program File 中添加main. hex文件到 AT89c51中,如图6. 1所示。图6.1数字电子秤仿真设置图该仿真验证的过程:首先按开始按匚口,此时数字电子秤进入欢迎界面。LM4229 上显示欢迎使用电子秤 设计。如图6.2所示。PAX? ;ox<aP3Q«.v& x«n,3 ,23. 外?«no»/» P2,m r)AVn swwqXD comgm欢迎使用也于群 至彳季星:系琴行 疣正学号:跖122B1H6 苏萩丽花礴 百百访:26瘁6月16m 物史的£:/:£:如虐整心口因: 0回回

13、国: 回回SI- a图6. 2数字电子秤欢迎界面图接下来调节压力传感模拟电路电压,将电压设为0. 00表示此时教物台上没有物体。此时LM4229切换到称量画面。显示指示“实用电子秤名称单价:0.000元/千克 总重量:0.000千克 总价:00.000元”。如图6.3所示。P2M:6612291*16 朱珍奇名称: 商品代码实用电子背 - - - -生 价£价学 景计 单总总设兀/千克O.OflO 千克 60.009 元,0g,工,s ,2a外 ,1 IM*92DMF3,E ,23«m ,“E图6. 3数字电子秤模拟空载图且除手醉状R州定-1-最后,上调压力传感电压表示已载

14、有商品,同时按下“6”号键,表示选择 6号商品“苹果”。此时LM4229上显示“名称:苹果 单价:6. 800元/千克 总重 量:3. 496千克 总价:“23. 733元”(实际6. 8*3. 496=23. 7758元)。达到基本要 求。如图6. 4所示。最大称量重量4.980KG,如图6.5所示。R/千克 千克 兀3.H9623.773设计学生:U6122O1T6朱珍奇价展 重>1果 X. 称 名r图6.4数字电子秤模拟载物显示仿真图RP? mr/OMLCD IS»xgim gSHB fl£8t实用电子钟名杼:菊 苗 «0 «» &

15、#171;« » MB « MB a* aaa* «* * «* 一 MB « M* MB «v«中ffr:%5uu元,千克总豆洋:”河。千克 一总讲:22.411 元谀计学生;。61W6,伍加逢春5 8v*3plceaB an ce ubSS 5H0f?esaec£8itj jggi: j图6. 4数字电子秤模拟最大称量范围仿真图7、使用说明在使用仿真的过程中,首先打开仿真电路图,并加载好“HEX”文件到单片 机中。后将压力传感电压调制0.00,点击匚口按钮,开始仿真。(为了能够看到 清晰的演示过程,请

16、将电路的背景设为无。)整个电子秤设置了 “0、15”个按键, 其中的“0”键表示取消,其他键代表15种可供选择商品价格。(另本设计的仿 真文件需要安装protues7. 4以上版本才能打开。)8、设计总结通过本次电子技能课程数字电子秤的设计,让我更加熟悉了单片机的整个 设计流程。在设计过程中,我也意识到好的编程书写习惯对软件设计的重要性。 刚刚开始由于自己变量大部分采用的是局部变量,导致程序仿真出错,给自己的 修改创造不小的麻烦。经过一天的努力,统一采用全局变量终于实现最终的仿真 结果和设计的全部任务和要求。当然本数字电子秤还有很多可以改进的地方,例 如可以改进按键功能方便工作人员随时对各数据

17、进行修改等等。由于设计时间有 限,只能在以后的学习过程中做更进一步的改进。参考文献1于永.51单片机C语言常用模块于综合系统设计实例精讲M.北京:电子工业出版社,2008: 88-94.2李建忠.单片机原理及应用M.西安:西安电子科技大学出版,2002: 63-78.3张俊谟.单片机中级教程M,北京:北京航空航天大学出版,2版0: 36-45.附录A#include<reg51. h>#include<intrins. h> include <absacc. h> #include <math. h>#include<lm4229. h&g

18、t;sbit sbit sbit sbit uintADCLK =P3*6;xl, yl, zl=0, wl;#define uchar"define uintADCS =P3ADDI =P3ADDO =P3unsigned char unsigned intL0;7;7;uchar ad_data, k, n, m, e, num, s;uint tempi;sbit beep =P30;char press_data;float press;unsigned char ad-alarm, temp;unsigned char abc 5 = 48, 46, 48, 48, 48;

19、unsigned char price_all6 = 48, 48, 46, 48, 48, 48);采样值存储标度变换存储单元报警值存储单元float 单价 uchar floatprice_unit 10j = 5. 5, 2. 8, 3. 6, 4. 5, 5. 8, 6. 8, 7. 9, 8. 0, 9. 5, 0;price_danjia5 = 48, 46, 48, 48,48);price;uint price_templ, price_temp2;uchar Adc0832(unsigned char channel);商品总价/ /商品初始void void void vo

20、id void voidalarm(void); data_pro(void); delay(uint k); keyscan 0;disp_init(); price_jisuan();/* 主函数*,' void main(void)delay(500);/ad_data=0; lcd_init ();disp_init 0;系统延时500ms启动采样值存储单元初始化为0显示初始化开始进入欢迎界而delay(lOOO);延时进入称量画而clear_lcd(O, 4, 40);clear_lcd(16, 0, 80);clear_lcd(28» 0, 40);clear_l

21、cd(44, 0, 80);clear_lcd(56, 0, 40);clear_lcd(72, 0,80);clear_lcd(84, 0, 40);clear_lcd(100, 0, 80);clear_lcd(112,0,40);write_lcd(O, 8,“实用电子秤”);while(l)(ad_data =AdcO832 (0);采样值存储单元初始化为0alarm0;data_pro(); 读取重量keyscan(); 查询商品种类write_lcd(40, 0, ");write_lcd(56, 0, 单 价:”);write_lcd(56, 11, price_dan

22、jia);write_lcd(56, 20,“元/千克");write_lcd(72, 0,“总重量:");write_lcd(72, 11, abc);writecd(72,20,千克);write_lcd(88, 0, 总 价:");price_jisuan();计算出价格write_lcd(88,10, price_all);write_lcd(88, 20, 元“);writjkd(U2,0,”设计学生:0612201*16 朱珍奇);):/个个个个个个个个个个个T读ADC0832函数* /采集并返回uchar Adc0832 (unsigned char

23、 channel) AD 转换,返回结果 (uchar i=0;uchar j;uint dat=O;uchar ndat=0;if(channel=0)channel=2;if(channel=l)channel=3;ADDI=1;_nop.();_nop.();ADCS=0;拉低 CS 端_nop_();_nop_();ADCLK= 1;拉高 CLK 端_nop_();_nop_();ADCLK=O;拉低CLK端,形成下降沿1_nop_();_nop_();ADCLK=1; 拉高 CLK 端ADDI=channel&Ox1;_nop_();_nop.();ADCLKR;拉低CLK端

24、,形成下降沿2_nop_();_nop_();ADCLK= 1;拉高 CLK 端ADDI= (channel»l) &0xl;_nop_();_nop_();ADCLKR;拉低CLK端,形成下降沿3ADDI=1;控制命令结束_nop_();_nop_();dat=O;for(i=0;i<8;i+)dat 二ADDO;收数据 ADCLK=1;_nop_0 ;_nop_0 ;形成一次时钟脉冲ADCLK=O _nop_() _nop_() dat«=l;if(i=7)dat 二ADDO;)for(i=0;i<8;i+)J=0;j=j ADDO;收数据/形成一次

25、时钟脉冲ADCLK=1 _nop_0 _nop_0 ADCLK=0 _nop_() _nop_()J=j«7;ndat=ndat j;if (i<7) ndat»=l;)ADCS二1;拉搞CS端ADCLKR; 拉低 CLK 端ADD31;拉高数据端,回到初始状态dat«=8;dat =ndat;/return ad kreturn(dat);)void data_pro(void)unsigned int;if(0<ad_data<256)int vary=ad_data;press=(0. 019531*vary);templ=(int)(pr

26、ess*1000);放大1000倍,便于后而的计算abc E0=templ/1000+48;abcl=46;abc2=(templ%1000)/100+48;abc3=(templ%1000)%100)/10+48;abc 4 = (templ%1000)%100)%10+48;取压力值百位取压力值十位取压力值个位取压力值十分位)/* 报警子函数 */ void alarm(void)if (ad data>=256)beep=0;则启动报警elsebeep=l;void delay(uint k)(uint i, j;for(i=0;i<k;i+)for(j=0;j<100

27、;j+);)开机欢迎界而void disp_init()(write_lcd(O, 8,”欢迎使用电子秤”);write_lcd(16, 0,"");write_lcd(28, 0, 设计学生:朱珍奇);write_lcd(44, 0,"");writ jlcd(56, 0, 班级学号:0612201*16");write_lcd(72, 0, ");write_lcd(84, 0, 指导老师:龚伦峰);write_lcd (100, 0,"");write_lcd(112, 0, 设计日期:2009 年 6 月

28、16 日");)键盘服务程序void keyscan0 (Pl=0xfe;temp=Pl;temp=temp&0xf0;while(temp!=Oxf0) (delay(5);temp=Pl;temp=temp&0xf0;while(temp!=0xf0) (temp=Pl;switch(temp) (caseOxee:num=l,price=price_unit0,writecd(24,0,”名 称: 杏 仁);break;0xde:num=2, price=price_unit 1, write_lcd(24, 0,“名 称: 李 子“); break;case莓

29、);萄);0xbe:num=3, price=price_unit 2, write_lcd(24, 0,称: 草 break;0x7e:num=4, price=price_unit3, write_lcd(24, 0,“名 称: 葡 break;)while(temp!=0xf0)(temp=Pl;temp=temp&0xf0;) ) )Pl=0xfd;temp=Pl;temp=temp&0xf0;while(temp!=0xf0)(delay(5);temp=Pl;temp=temp&0xf0;while(temp!=0xf0) (temp=Pl;switch(t

30、emp)0xed:num=5, price二price_unit 4, write_lcd(24, 0,“名 称: 西 瓜"); break;0xdd:num=6, price=price_unit 5, write_lcd(24, 0, 称: 苹 果); break;0xbd:num=7, price=price_unit 6, write_lcd(24, 0,“名 称: 雪 梨“); break;0x7d:num=8, price=price_unit 7, write_lcd(24, 0,称: 核 桃“); break;)while(temp!=0xf0)temp=Pl;temp=temp&OxfO;) )Pl=Oxfb;temp二Pl;temp=temp&OxfO;while(temp!=OxfO)(delay(5);temp=Pl;temp=temp&OxfO;while(temp!=OxfO) temp=Pl;switch(temp) (case0xeb:num=9, price=pricenit 8, write_lcd (24, 0,“名 称: 香 蕉“);break;case0xdb:num=10, price=price_unit 9

温馨提示

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

评论

0/150

提交评论