基于单片机的电子秤设计报告.docx
《基于单片机的电子秤设计报告.docx》由会员分享,可在线阅读,更多相关《基于单片机的电子秤设计报告.docx(22页珍藏版)》请在冰豆网上搜索。
基于单片机的电子秤设计报告
五邑大学信息工程学院
课程设计报告
课程名称:
电子系统设计技术
专业:
通信工程
班级:
AP10057班
学号:
11
姓名:
李绍杰
指导教师:
周开利
设计时间:
2013年1月2日
评定成绩:
设计课题题目:
电子秤
一、设计任务与要求
1.本次的课程设计任务是设计一个电子秤,首先我们来了解一下电子
秤的基本的背景和设计意义。
电子秤在很早以前就开始被被人们广泛运用。
它是一个现代化的称重
仪器,结合了计算机技术,信息处理,数字技术等等的很多的高科技技术。
电子秤,属于衡器的一种,是利用胡克定律或力的杠杆平衡原理测定物体质量的工具。
电子秤主要由承重系统(如秤盘、秤体)、传力转换系统(如杠杆传力系统、传感器)和示值系统(如刻度盘、电子显示仪表)3部分组成。
按结构原理可分为机械秤、电子秤、机电结合秤三大类。
[电子秤拥有许多过去的简单的机械化的称重技术所没有的优点。
例如,
第一方面:
电子秤的重量轻,体积小,容易携带,并且容易维修;
第二方面:
因为电子秤是运用了以单片机为中心控制单元,通过称重
传感器进行模数转换单元,再通过配合键盘、显示电路及强大软件来组成,所以电子秤的准确率高,并且很快速,能够让人们很直观地看到称重的结果,这样更加深受人们的喜欢。
第三方面:
电子秤不仅仅只是客观的物体,它通过了压力传感器采集
到被测物体的重量并将其转换成电压信号。
然后通过前端信号处理电路进行准确的线性放大最后把放大后的模拟电压信号经A/D转换电路转换成数字量被送入到主控电路的单片机中,再经过单片机控制译码显示器,从而显示出被测物体的重量。
这是一个很高端,很人性化的发展,能够实现人机的信息转换。
第四方面:
电子秤不再像过去的机械称重器那样功能局限,如今的电子秤更是能够广泛应用在商业,工农业,科技,交通等等很多方面。
并且对人们日常生活的影响越来越大。
电子秤的工作原理以电子元件:
称重传感器,放大电路,AD转换电路,单
片机电路,显示电路,键盘电路,通讯接口电路,稳压电源电路等电路组成。
2.设计要求
此次的课程设计要求设计并制作一款基于单片机的电子秤重系统。
本课题的主要设计任务如下所述:
(1)系统可实现电子称基本的称重功能(称重范围为0〜2Kg,重量误差不大于土O.OOIKg)【师要求的是9.99Kg的,但是由于ADC0809芯片只有8位即255个数字显示,所以该做量程为2Kg的。
】
(2))系统超出最大测量范围2Kg时应有报警指示功能(LED红灯闪烁报警提示、LCD会显示超重的提示标语)
二、课题分析与方案选择
2.1课题分析:
设计课题是制作以单片机为控制系统的电子称,该设计
系统由应变式电阻传感器采集数据、经由A/D对数据做出模数转换、转换后
的数字量传送给单片机、然后单片机对数据进行处理、最后用LCD液晶显示
出来物体的重量。
2.2方案选择:
2.2.1方案一:
该设计方案的结构原理图如下所示:
如上图所示电路,传感器采集数据后经由A/D转换后再传给单片机最后给LCD液晶显示。
2.2.1方案二:
结构原理图如下图所示:
超重报警
提示
传感器采集数据
㈡
放大电路
|=>
A/D转换数据
单片机处理数据
LCD显示
重量
该设计方案中的放大电路目的是将传感器采集的数据线性放大,
然后再传送给A/D芯片进行模数。
这样设计的优势是使传感器采集的数据经由放大器将数据放大到合适A/D芯片的分辨率。
还有,本系统
的设计还有一个超重报警提示系统,提示用户所测重量过大,这样可
以避免传感器因过重而毁坏。
综合上面两个方案,最后选择方案二。
三、单元电路分析与设计
3.1该设计系统是以单片机STC89C52为控制芯片的电路,由七部分组成:
电阻应变式传感器、信号放大系统、A/D转换系统、CPU控制系统、超重提醒系统、LCD显示系统。
其结构原理如下图所示:
传感器采
n
放犬电略
二
AD转换
n
单片机处理数据
LCD显示
重量
3.2单元电路分析与设计
3.2.1单片机控制电路的设计
单片机正常工作是需要一定的条件的,如单电源5V直流电压、晶振电路
等。
本次的的设计中,CPU控制系统的设计如下图所示:
AL
占
A4
■•A
JLj
kiiJLl:
FJ1iJrLZDC
3ECflk52
3
IK
Jf_J»
2£_»3
JSDL
cra»'l||
ow||H
£
ECF.IDE
J
TO_
m~
nj
办§
D1
3J咖
IflS
Ul
该电路包含复位电路、震荡电路、P0口作为LCD的数据端口,P1口作为AD
转换后的信号输入端口、P2口作为超重提示和LCD的控制端口、P3口作为AD的控制端口。
3.3A/D的转换模块
根据ADC0809芯片提供的时序图我很设计电路的要求,设计如下图所示:
AD
T1
11
10
3
§
4密
1
2
2S
27
5
%
4
25
5
24
t
23
7
22
3
21
9
20
1C
19
11
ia
12
17
li
if
14
15
3
P3T4
'CC|—
aieCSC?
二-5
?
15
1Q-
厂||,GND
|vce
芯片工作频率的计算:
由于该芯片的输入频率最搞可以达到
650KHZ;
单片机的ALE管脚输出的6分频;
D触发器是2分频;
故:
该电路的时钟信号是由单片机的ALE口输出的是大单片机晶振的6分频
输入到74HC74的3管脚,经过74HC74的后再4分频,最后输入到ADC0809芯片的10管脚的时钟输入端口,该时钟频率为460KHz。
ADC0809芯片的数
据输出端与单片机的P1口连接。
A/D芯片的分辨率:
S=(5-0)/255=19.6mV
3.4信号放大电路设计如下图所示:
4
K13ICCk
啟,
c
1
14
工
13
3
11
4
]1
5
6
二
7
9
pft
匸
1
2
1—
S32
由于还没有对传感器进行数据采集,所以未能确定放大器的放大系数,故设计了该放大电路。
第一级放大系数:
Au=1+R13/R12=1+100K/10K=11
第二级放大系数:
Au=1+R11/R10
第二级的放大系数可以有多圈可调精密电阻调节得到。
该电路是以LM324作为放大电路的运放芯片。
放大器的第一级的放大系数是11,放大器的第二级的方法级数是可调节的,总的放大系数是两级相乘所得的乘积。
3.5LCD显示电路设计如下图所示:
聊lay二pi
1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、
符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,
每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行
之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM显示效果也不好)。
1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字
符液晶模块(显示字符和数字)。
四、总原理图及元器件清单
1.总原理图
2「IE」・-「一祉aiu卜三=
n-irif「
竺cMaV»
!
c!
c
114
■
]!
1.1
匸
-rr£M*l
2.元件清单
序号
型号
主要参数
数量
备注
74hc74
74HC74
1
adc0809
ADC0809
1
Y1
XTAL
11.0592MHz
1
stc89c52
STC89C52
1
S2
SW-PB
1
Im324
LM324
1
D1
LED
1
C1
瓷片电容
30pF
1
C2
瓷片电容
30pF
1
C6
瓷片电容
105
1
C9
瓷片电容
100pF
1
R4
电阻
1k
1
R5
电阻
1k
1
R8
电阻
10k
1
R10
方体电位器
10k
1
R11
方体电位器
100k
1
R12
电阻
10k
1
R13
电阻
100k
1
R14
电阻
200
1
R21
电阻
1k
1
Rp1
卧式电位器
10k
1
五、安装与调试
5.1制作步骤:
设计与绘制原理图
$
绘制PCB图并打印
0
热转印与吊板
焊接元器件
测试电路板与调试
5.2系统的调试
a)用c语言编写程序代码;
b)把生成的HEX文件烧到单片机里;
c)调试程序;
在调试过程中,给电路板供电是,发现LCD只是显示“WEIGH”的
静态显示,而动态显示部分则是乱码的形式。
故作以下设想:
1、传感器模块不正常工作;2、放大器模块不正常工作;3、AD模块不正常工作;4、代码出错;5、显示模块出错;
通过测试,设想的1、2、3都是正常工作的。
则很有可能是代码编写出错。
经过检验和校对引脚的连接和ADC080芯片的时序图,对编码
进行了一系列的修改后,最后下载到单片机里还是不能够正常工作。
至今都还没有找到原因。
程序代码:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharshuju;
sbitrs16=P2A2;
sbitrw16=P2A3;
sbiten16=卩2八4;
sbitadoe=P3A3;
sbitadeoc=P3A4;
sbitadsa=P3A5;
sbitled=P2A。
;voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x__)
for(y=110;y>0;y--);
}
voidwrite_com(ucharcom)
{
rs16=0;
rw16=0;
en16=0;
P0=com;
delay(5);
en16=1;
delay(5);
en16=0;
}
voidwrite_date(uchardate)
{
rs16=1;
rw16=0;
en16=0;
P0=date;
delay(5);
en16=1;
delay(5);
en16=0;
}
voidinit()
{
uintnum;
ucharcodetable[]="WEIGHT";
ucharcodetable2[]="0.000kg";
P1=0;
en16=0;
led=0;
write_com(0x38);
write_com(0x0C);
write_com(0x06);
write_com(0x01);
write_com(0x80+0x04);
for(num=0;num<6;num++)
{
write_date(table[num]);
delay(5);
}
write_com(0x80+0x45);
for(num=0;num<7;num++)
{
write_date(table2[num]);
delay(5);
}
}
/*voidwrite(uchar*str,ucharlength)
{
uchari;
for(i=0;iwrite_date(str[i]);
}
}*/
voidAD()
{
uintnum;
ucharcodetable3[]="OVERWEIGHT!
!
!
";
〃P仁Oxff;
adsa=0;
adoe=0;
adsa=1;
delay
(1);
adsa=0;
delay(50);
〃if(adeoc=1)
〃{
adoe=1;
delay(20);
adoe=0;
delay(10);
shuju=P1;
/*if(shuju!
=0)
{
led=1;
}*/
〃shuju=0xc8;
if(shuju=0xc8)
{
uintt;
for(t=0;t++;t<6)
{
led=1;
delay(500);
led=0;
write_com(0x80+0x01);
for(num=0;num<14;num++)
{
write_date(table3[num]);
delay(5);
}
}
}
//}
}
voidwrite_shuju(ucharadd,ucharshu)
{
write_com(0x80+0x45+add);
write_date(shu);
}
voiddisplay(uintv)
{
//uintnum;
uchara,b,c,d;
unsignedinttmp=v;
//ucharcodetable2[]={a,b,c,d,"g"};a=tmp/1000;
write_shuju(O,a);
b=tmp%1000/100;
write_shuju(2,b);
c=tmp%1000%100/10;
write_shuju(3,c);
d=tmp%1000%100%10/10;
write_shuju(4,d);
/*for(num=0;num<5;num++)
{
write_date(table2[num]);
delay(5);
}*/
}
voidmain()
{
init();
delay(5);
AD();
display(shuju);
while
(1);
}
5.3实物图片
六、性能测试与分析
通过安装和多次的调试,在确定电路板和各个芯片都没有扫坏的情况下,还是没有可以使电路正常工作。
我个人觉得是代码上除了问题,可是自己又不可以正确调试出来。
在以后的学习中,我还是要在编写程序这个方面放多下点功夫。
七、结论与心得
通过这次的课程设计,我知道我自己还有很多的知识要学习和巩固的。
特别是编写程序代码上我还有很多知识要去学习的。
在这次的课程设计中,
我根据芯片的资料,自行设计电路、自行编写程序代码,虽然最后海水没有
成功调试出来,可是在制作和调试过程中,我也是学会了很多,例如1、调
试时要以模块为单位检查电路是否正常工作;2、编写代码时要严格根据芯
片的时序图编写;3、编写程序代码时以模块为单位编写。
八、参考文献
[1]薛均义,张彦斌.《MCS-516系列单片微型计算机及应用》[M].西安交通大学出版社,1999
[2]中国机械工业教育协会组编•《单片机原理与应用》.机械工业出版社.2001
[3]黄继昌.《传感器工作原理及应用实例》[A],人民邮电出版社,1998
[4]郭永贞,《数字电子技术》[M]西安电子科技大学出版社2000