单片机的电子秤设计课程设计论文Word文档下载推荐.docx
- 文档编号:22146851
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:30
- 大小:205.98KB
单片机的电子秤设计课程设计论文Word文档下载推荐.docx
《单片机的电子秤设计课程设计论文Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《单片机的电子秤设计课程设计论文Word文档下载推荐.docx(30页珍藏版)》请在冰豆网上搜索。
SP20C-G501;
ATMEGA16;
称重传感器;
A/D转换器;
LCD显示器
1绪论
1.1引言
在我们生活中经常都需要测量物体的重量,于是就用到秤,但是随着社会的进步、科学的发展,我们对其要求操作方便、易于识别。
随着计量技术和电子技术的发展,传统纯机械结构的杆秤、台秤、磅秤等称量装置逐步被淘汰,电子称量装置电子秤、电子天平等以其准确、快速、方便、显示直观等诸多优点而受到人们的青睐。
电子秤向提高精度和降低成本方向发展的趋势引起了对低成本、高性能模拟信号处理器件需求的增加。
通过分析近年来电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;
其技术性能趋向是速率高、准确度高、稳定性高、可靠性高;
其功能趋向是称重计量的控制信息和非控制信息并重的“智能化”功能;
其应用性能趋向于综合性和组合性。
1.2电子称设计的背景及意义
称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域,与人民的生活紧密相连。
电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。
称重装置不仅是提供重量数据的单体仪表,而且作为工业控制系统和商业管理系统的一个组成部分,推进了工业生产的自动化和管理的现代化,它起到了缩短作业时间、改善操作条件、降低能源和材料的消耗、提高产品质量以及加强企业管理、改善经营管理等多方面的作用。
称重装置的应用已遍及到国民经济各领域,取得了显著的经济效益。
电子秤是称重技术中的一种新型仪表,广泛应用于各种场合。
电子秤与机械秤比较有体积小、重量轻、结构简单、价格低、实用价值强、维护方便等特点,可在各种环境工作,重量信号可远传,易于实现重量显示数字化,易于与计算机联网,实现生产过程自动化,提高劳动生产率。
例如标签秤在超市中的应用已经是耳闻目睹的了。
一张小小的标签包含着:
品名、价格、重量等,一一列表在这小小的电子标签上。
标签机的使用大大加快了销售速度,也方便了顾客。
顶尖条码标签称有着许多卓越的特点,以太网功能使管理更加方便。
因此,称重技术的研究和衡器工业的发展各国都非常重视。
50年代中期电子技术的渗入推动了衡器制造业的发展。
60年代初期出现机电结合式电子衡器以来,随着时代科技的迅猛发展,微电子学和计算机等现代电子技术的成就给传统的电子测量与仪器带来了巨大的冲击和革命性的影响。
经过40多年的不断改进与完善,衡器技术也在不断进步和提高。
从世界水平看,衡器技术已经经历了四个阶段,从传统的全部由机械元器件组成的机械称到用电子线路代替部分机械元器件的机电结合秤,再从集成电路式到目前的单片机系统设计的电子计价秤。
我国电子衡器从最初的机电结合型发展到现在的全电子型和数字智能型。
现今电子衡器制造技术及应用得到了新发展:
电子称重技术从静态称重向动态称重发展;
计量方法从模拟测量向数字测量发展;
测量特点从单参数测量向多参数测量发展。
常规的测试仪器仪表和控制装置被更先进的智能仪器所取代,使得传统的电子测量仪器在远离、功能、精度及自动化水平定方面发生了巨大变化,并相应的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度得以显著提高。
2总体设计方案
2.1设计任务
设计要求掌握电子秤的基本原理;
掌握电子秤硬件电路的设计;
掌握电子秤软件程序设计,掌握仿真软件的使用。
1、利用单片机设计一款电子秤用以测量物体重量,能通过键盘设置单价,显示金额,重量、单价、金额及当前时间都能在LCD液晶显示器上显示出来。
2、要求设计出电气原理图;
3、要求设计出程序流程图;
4、要求设计出程序。
2.2设计方案
在智能化电子测量的设计理念要求下,整个电子秤电路由单片机主控制电路、时钟电路、液晶显示电路、5*4键盘电路和压力传感电路个部分组成。
如图2.1所示。
2.3工作原理
当接通电源电子秤才是工作时,电子秤进入工作状态,液晶显示单价、重量、金额、时间。
首先可对单价进行设置,然后在载物台上放上要称量的物品。
此时,在液晶显示屏上显示出物品的单价,重量,及自动计算出金额。
传感器采用压变变阻器,当载物台受压力使弹簧发生形变,电阻器划片也发生滑动,而产生不同的电流值。
传输到单片机芯片
图2.1整体设计方框图
3硬件电路的设计
综合考虑本次设计要求、现有元器件资源、元器件价格和对元器件的熟悉掌握程度,数字电子秤采用ATMEGA16单片机作为微处理器,接口电路由时钟芯片、液晶显示显示电路、5*4按键电路等来实现硬件电路的设计。
控制器系统的硬件电路原理图如图3.1所示。
控制器系统硬件电路的工作过程是:
打开电源时,MCU及各个部分电路开始工作,MCU调用内部存储数据对各部分接口电路初始化。
在对液晶显示检忙扫描,然后显示相应数据。
同时扫描键盘,当输入数据时候,单片机对其进行相应处理。
当载物台有物品放入时,将采集的数据传入单片机内部的ADC进行数模转换,并处理数据。
最后送到液晶显示。
图3.1数字电子秤硬件电路图
4软件设计
本设计中的程序由主控制程序、液晶显示驱动程序、和5*4键盘程序组成。
4.1主程序设计
整个设计中采用由下向上的设计思路。
主程序中主要完成对液晶显示、及键盘扫描程序的调用。
在编写程序的过程中,各变量统一采用全局变量方式命名,同时考虑到电子秤对精度的要求,本设计中的价格及总量相关的变量全部采用浮点数。
主程序流程图如图4.1所示。
图4.1主程序流程图
4.2液晶显示驱动程序
图4.2液晶显示驱动程序流程图
液晶能够显示比较复杂的汉字,首先必须对其写入控制操作字,包括图形的显示方式,字体的模式。
然后写入初始行地址,指针自动左移,直到写完全部数据为止。
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;
MCU通过拉低CS、拉高CLK来启动ADC0832进行外部压力传感转换后的电压信号进行采样,每产生8个CLK脉冲,DATA获得一位完整的8bit数据,此时MCU发送中断请求,拉高CS,拉低CLK,并将数据DAT返回。
4.35*4键盘程序
本设计中采用了5*4矩阵式键盘,单片机定时进行查询。
首先单片机发送行扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘值。
若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描。
MCU根据相应的键值,即可确定被按下的键。
图4.45*4键盘程序
5系统仿真
在protues的ISIS7.4sp2软件环境下画出电路原理图,接下来就是将设计的程序在ICCAVR开发集成环境上编译成机器语言,进入Protues的ISIS,双击AT89C51,在"
ProgramFile中"
添加"
main.hex"
文件到ATNEGA16中,如图5.1所示。
图5.1数字电子秤仿真设置图
该仿真验证的过程:
首先按开始按
,此时电子秤进入显示界面。
液晶
上显示"
价格、重量、金额……"
。
如图5.2所示。
图5.2电子秤显示界面图
接下来调节压力传感模拟电路电压,将电压设为0表示此时载物台上没有物体。
此时液晶显示画面为:
单价:
0重量:
0总价:
0”。
如图5.3所示。
图5.3电子秤模拟空载图
最后,上调压力传感电压表示已载有商品,在键盘上输入单价,再按确认,此时单片机自动计算出物品的金额,并在液晶上显示出金额。
达到基本要求。
如图5.4所示。
最大称量重量29KG,如图5.5所示。
图5.4电子秤模拟载物显示仿真图
图5.4电子秤模拟最大称量范围仿真图
6使用说明
在使用仿真的过程中,首先打开仿真电路图,并加载好“HEX”文件到单片机中。
后将压力传感电压调制0,点击
按钮,开始仿真。
0到9分别为数字0到9的输入,10小数点,11乘法,12除法,13加法,14减法,16去皮,17清零,18确定,19退格。
输入单价后按确定,电子秤将自动显示出金额。
7设计总结
通过本次电子技能课程数字电子秤的设计,让我更加熟悉了单片机的整个设计流程。
在设计过程中,我也意识到好的编程书写习惯对软件设计的重要性。
刚刚开始由于自己变量大部分采用的是局部变量,导致程序仿真出错,给自己的修改创造不小的麻烦。
经过一天的努力,统一采用全局变量终于实现最终的仿真结果和设计的全部任务和要求。
当然本数字电子秤还有很多可以改进的地方,例如可以改进按键功能方便工作人员随时对各数据进行修改等等。
由于设计时间有限,只能在以后的学习过程中做更进一步的改进。
本次课程设计使我对单片机有了更深的认识,让我们把理论与实际结合,为我们更好的学为所用打下了基础。
参考文献
[1]于永.51单片机C语言常用模块于综合系统设计实例精讲[M].北京:
电子工业出版社,2008:
88-94.
[2]李朝青.单片机原理及接口技术(第三版)[M].北京:
北京航空航天大学出版社,2006.12
[3]单片机课程设计指导,中南大学出版社,张一斌等2009年9月
[4]单片机实验与实践教程,北京航空航天大学出版社,何立民等2004年7月
程序:
#include<
iom16.h>
#include<
stdlib.h>
#defineucharunsignedchar
#defineuintunsignedint
#definePD00
#definePD11
#definePD22
#definePB55
#definePB66
#definePB44
#definePA77
/*-----------------宏定义------------*/
#defineSET_BIT(x,y)(x|=(1<
<
y))
#defineCLR_BIT(x,y)(x&
=~(1<
#defineGET_BIT(x,y)(x&
(1<
/*----------端口电平---------------*/
#defineLCD_RS_1SET_BIT(PORTD,PD0)
#defineLCD_RS_0CLR_BIT(PORTD,PD0)
#defineLCD_RW_1SET_BIT(PORTD,PD1)
#defineLCD_RW_0CLR_BIT(PORTD,PD1)
#defineLCD_EN_1SET_BIT(PORTD,PD2)
#defineLCD_EN_0CLR_BIT(PORTD,PD2)
#defineLCD_CS1_1SET_BIT(PORTB,PB5)
#defineLCD_CS1_0CLR_BIT(PORTB,PB5)
#defineLCD_CS2_1SET_BIT(PORTB,PB6)
#defineLCD_CS2_0CLR_BIT(PORTB,PB6)
#defineDataPortPORTC
#defineBusy0x80
/*-----------------------------------------------*/
#defineDS1302_RST_1SET_BIT(PORTA,PA7)
#defineDS1302_RST_0CLR_BIT(PORTA,PA7)
#defineDS1302_CLK_1SET_BIT(PORTB,PB4)
#defineDS1302_CLK_0CLR_BIT(PORTB,PB4)
#defineDS1302_DAT_1SET_BIT(PORTB,PA7)
#defineDS1302_DAT_0CLR_BIT(PORTB,PA7)
floatp,t;
floatqu_pi,shenfa,jieguo;
ucharhour,sec,min;
__flashucharact[5]={0xf0,0xe0,0xd0,0xb0,0x70};
__flashuchardan[]={0x00,0x10,0x00,0x10,0xF8,0x17,0x49,0x12,0x4A,0x12,0x4C,0x12,0x48,0x12,0xF8,0xFF,
0x48,0x12,0x4C,0x12,0x4A,0x12,0x49,0x12,0xFC,0x13,0x08,0x18,0x00,0x10,0x00,0x00};
__flashucharjia[]={0x80,0x00,0x40,0x00,0x20,0x00,0xF8,0xFF,0x87,0x00,0x40,0x80,0x20,0x40,0x90,0x3F,
0x08,0x00,0x07,0x00,0x08,0x00,0x90,0xFF,0x20,0x00,0xC0,0x00,0x40,0x00,0x00,0x00};
__flashucharyuan[]={0x20,0x80,0x20,0x80,0x22,0x40,0x22,0x20,0x22,0x18,0xE2,0x07,0x22,0x00,0x22,0x00,
0x22,0x00,0xE2,0x3F,0x22,0x40,0x23,0x40,0x22,0x40,0x30,0x40,0x20,0x70,0x00,0x00};
__flashucharjin[]={0x80,0x00,0x80,0x40,0x40,0x40,0x20,0x4A,0x50,0x52,0x48,0x62,0x44,0x42,0xC3,0x7F,
0x44,0x42,0x68,0x62,0x50,0x52,0x20,0x4A,0x40,0x60,0xC0,0x40,0x40,0x00,0x00,0x00};
__flashuchare[]={0x10,0x10,0x8C,0x08,0x44,0xFC,0xB5,0x4A,0x26,0x49,0xA4,0x4A,0x74,0x7C,0x0C,0x08,
0x02,0x80,0xF2,0x4F,0x1A,0x20,0xD6,0x1F,0x12,0x20,0xFB,0x4F,0x12,0xC0,0x00,0x00};
__flashucharzhong[]={0x08,0x40,0x08,0x40,0x0A,0x48,0xEA,0x4B,0xAA,0x4A,0xAA,0x4A,0xAA,0x4A,0xFE,0x7F,
0xAA,0x4A,0xAA,0x4A,0xA9,0x4A,0xF9,0x4B,0x29,0x48,0x0C,0x60,0x08,0x40,0x00,0x00};
__flashucharliang[]={0x20,0x00,0x20,0x80,0x20,0x80,0xBE,0xAF,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xFF,
0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,0xBF,0xAF,0x22,0x80,0x30,0x80,0x20,0x00,0x00,0x00};
__flashucharchu_shi_hua[][32]={0x04,0x10,0x34,0x08,0xC4,0x06,0x04,0x01,0xC4,0x82,0x3C,0x8C,0x20,0x40,0x10,0x30,
0x0F,0x0C,0xE8,0x03,0x08,0x0C,0x08,0x10,0x28,0x60,0x18,0xC0,0x00,0x40,0x00,0x00,
0x40,0x00,0x42,0x40,0x44,0x20,0xC8,0x1F,0x00,0x20,0xFC,0x47,0x04,0x42,0x02,0x41,
0x82,0x40,0xFC,0x7F,0x04,0x40,0x04,0x42,0x04,0x44,0xFE,0x63,0x04,0x20,0x00,0x00,
0x40,0x00,0x20,0x00,0xF8,0xFF,0x07,0x00,0x04,0x80,0xF4,0x43,0x14,0x45,0x14,0x29,
0x14,0x19,0xFF,0x17,0x14,0x21,0x14,0x21,0x14,0x41,0xF6,0xC3,0x04,0x40,0x00,0x00,
0x00,0x80,0x00,0x60,0xFE,0x1F,0x22,0x02,0x22,0x02,0x22,0x02,0x22,0x02,0xFE,0x7F,
0x22,0x02,0x22,0x02,0x22,0x42,0x22,0x82,0xFF,0x7F,0x02,0x00,0x00,0x00,0x00,0x00,
0x10,0x00,0x08,0x00,0xE4,0xFF,0x13,0x00,0x26,0x00,0x8A,0x3F,0xA3,0x24,0xAA,0x24,
0xA4,0x24,0xA3,0x3F,0x26,0x40,0x2A,0x80,0xF2,0x7F,0x23,0x00,0x02,0x00,0x00,0x00,
0x00,0x08,0x00,0x04,0x00,0x22,0x7F,0x11,0xC9,0x09,0x49,0x87,0x49,0x41,0x49,0x21,
0x49,0x19,0x49,0x07,0x49,0x41,0x7F,0x81,0x00,0x41,0x80,0x3F,0x00,0x01,0x00,0x00,
0x00,0x00,0xF8,0x07,0x48,0x02,0x48,0x02,0x48,0x02,0x48,0x02,0xFF,0x3F,0x48,0x42,
0x48,0x42,0x48,0x42,0x48,0x42,0xFC,0x47,0x08,0x40,0x00,0x70,0x00,0x00,0x00,0x00,
0x80,0x00,0x80,0x00,0x82,0x00,0x82,0x00,0x82,0x00,0x82,0x40,0x82,0x80,0xE2,0x7F,
0xA2,0x00,0x92,0x00,0x8A,0x00,0x86,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,
0x20,0x10,0x24,0x08,0x24,0x06,0xA4,0x01,0xFE,0xFF,0xA3,0x00,0x22,0x11,0x10,0x0C,
0x1C,0x43,0x13,0x80,0xD0,0x7F,0x10,0x00,0x50,0x01,0x30,0x06,0x10,0x0C,0x00,0x00};
__flashucharshi[]={0x00,0x00,0xFC,0x3F,0x84,0x10,0x84,0x10,0x84,0x10,0xFE,0x3F,0x14,0x00,0x10,0x00,
0x90,0x00,0x10,0x23,0x10,0x40,0x10,0x80,0xFF,0x7F,0x10,0x00,0x10,0x00,0x00,0x00};
__flashucharfen[]={0x00,0x01,0x80,0x00,0x40,0x80,0x20,0x40,0x98,0x20,0x86,0x1F,0x80,0x00,0x80,0x40,
0x83,0x80,0x8C,0x40,0x90,0x3F,0x20,0x00,0xC0,0x00,0x80,0x01,0x80,0x00,0x00,0x00};
__flashucharmiao[]={0x20,0x10,0x24,0x08,0x24,0x06,0xA4,0x01,0xFE,0xFF,0xA3,0x00,0x22,0x81,0x80,0x80,
0x70,0x40,0x00,0x20,0xFF,0x17,0x00,0x08,0x10,0x04,0x20,0x03,0x60,0x00,0x00,0x00};
voidLcdJianMang();
//检测忙函数
__flashucharshizijian[][16]={
0x00,0x00,0xE0,0x0F,0xF0,0x1F,0x08,0x20,0x08,0x20,0x18,0x30,0xF0,0x1F,0xC0,0x07,//0
0x00,0x00,0x00,0x00,0x10,0x20,0xF0,0x3F,0xF8,0x3F,0x00,0x20,0x00,0x20,0x00,0x00,//1
0x00,0x00,0x70,0x30,0x78,0x38,0x08,0x34,0x08,0x32,0xD8,0x31,0xF0,0x38,0x20,0x08,//2
0x00,0x00,0x30,0x18,0x38,0x38,0x88,0x21,0x88,0x21,0xF8,0x33,0x70,0x1E,0x00,0x0C,//3
0x00,0x00,0x00,0x06,0x80,0x05,0x60,0x24,0x30,0x24,0xF8,0x3F,0xF8,0x3F,0x00,0x24,//4
0x00,0x00,0xF0,0x19,0xF8,0x39,0x88,0x20,0xC8,0x20,0x88,0x31,0x88,0x1F,0x00,0x06,//5
0x00,0x00,0xE0,0x0F,0xF0,0x3F,0x88,0x20,0x88,0x20,0x98,0x20,0x98,0x1F,0x00,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 电子秤 设计 课程设计 论文