电子体重秤测试系统设计与实现
结束语
通过这次实习,我们学到了很多东西。在这段时间里我进行了硬件电路设计、软件的编程实设计、软硬件的综合调试以及实物的制作与装配。最终一个完整的课程设计成果出来了。当然,这其中也有很多问题,比如胖瘦显示灯不能完全严格按编制的程序执行,但就实现功能来说,设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的是这个过程。
在做本次设计过程中,为了让自己的设计更加完善,查阅这方面的设计数据是十分必要的。我们要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为数据的保存和交流提供了方便。从本次设计中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。
16
电子体重秤测试系统设计与实现
参考文献
[1] 施汉谦,宋文敏. 电子秤技术[M]. 北京:中国计量出版社,1991
[2] 赵广平,孙雯萍,孙建军. 电子称重技术现状和发展趋势[J].仪表技术与传感器,2007.7 [3] 孙富康,戚鹏. 基于W77E58微处理器的多功能智能人体秤的设计[J].福建电脑, 2008.10 [4] 张青春,郁 岚.智能人体电子秤的系统设计[J]. 仪表技术,2008.7
[5] 程德福,王君,凌振宝,王言章。传感器原理及应用[M].北京:机械工业出版社2007 [6] STC12C5A60S2系列单片机器件手册. 宏晶STC官方网站 [7] 马晓平. 压力传感器及其应用[J].信息产业报道,2001.2 [8] 隋文涛.新国标表面粗糙度参数的评定程序[J].工具技术。2006.12
[9] 贾伯年,俞朴. 传感器技术[M]. 南京:东南大学出版社,1992
[10] 何立民. 单片机应用文集 [M]. 北京:北京航空航天大学出版社,1999
17
电子体重秤测试系统设计与实现
附录
单片机程序
#include
sfr ADC_CONTR=0XBC; sfr AUXR1=0XA2; sfr ADC_RES=0XBD; sfr ADC_RESL=0XBE;
unsigned char code led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned int m_data,shengao; unsigned char v_mode,D; sbit mode=P3^0; sbit add=P3^1; sbit sub=P3^2; sbit huang=P3^4; sbit lv=P3^5; sbit hong=P3^6; void key();
void delay(unsigned char ms) {
unsigned int i; while(ms--) for(i=0;i<330;i++); }
void display(unsigned int s) {
unsigned char a,ge,shi,bai,qian; a=50;
18
//延时部分
//显示部分
电子体重秤测试系统设计与实现
qian=s/1000; bai=s/100; shi=s/10; ge=s; while(a--) { P0=0xfe; P2=led[ge];
delay(2);
P0=0xfd; P2=led[shi]|0x80; delay(2); P0=0xfb; P2=led[bai];
delay(2);
P0=0xf7; P2=led[qian]; delay(2); }
}
unsigned int ADC() {
P1ASF=0X01;
AUXR1=0X04; ADC_CONTR=0XE0; delay(1); ADC_CONTR=0XE8; delay(2);
//AD转换部分
//设置AD转换特殊功能寄存器P1.0打开 //设置数据输出方式 //P1_0为模拟量输入端, //是输出电压达到稳定 // 启动ad转换 19
电子体重秤测试系统设计与实现
while((ADC_CONTR&0X10)==0) //等待转换结束 ADC_CONTR=0XE0;
// 关闭ad转换
return ((ADC_RES&0x03)*256+ADC_RESL); //返回转换结果 } main() //主函数 {
shengao=1650; huang=1; lv=1; hong=1; while(1) {
key(); m_data=ADC();
m_data=m_data*0.0488*30;
if(v_mode==0) display(m_data); if(v_mode==1)
display(shengao); if(v_mode==2)
{display(m_data);
D=shengao-105;}
if(v_mode==3)
{display(m_data); D=shengao-100;
}
if(m_data //初始化 //设置身高 //判断女生 //判断男生 20