青岛理工大学毕业设计
致 谢
通过这几个月来的学习和努力,毕业设计也进行到收尾工作,在这几个月的毕业设计中,我付出了很多的辛勤,同样与我并肩一起,为我指导的付老师也在一直勤勤恳恳的帮助我。设计实物的过程中,她主动对我提出的设计方案进行引导、改正,让我的硬件电路才得以实现功能,软件方面,我遇到许多不会的问题,第一时间就会想到付老师,她也会放下手里忙碌的工作,一起和我分析。没有老师的帮助,我这次毕业设计将会出现很大很大的错误。
同时感谢我院系领导对我们的教导和关注,院领导为我们提供方便的实验室,件。在设计的过程中,才会体会到,当时教我们专业课的老师,没有他们,我们也没有理论基础去支持整个设计的完成。
还要感谢宿舍的舍友,他们总是在我困难的时候,帮我想办法,由于自己的思路已经局限住了,通过他们的提议,早硬件和程序上面都给予我很大的帮助,为我的自动加料机设计提供了不少的帮助。最后要感谢自己的一直不放弃的精神,通过这次毕业设计,我不仅得到的是理论技术的升华,更是培养了我坚毅不后退的性格,为我以后的工作也铺下了坚毅的基石。
最后希望老师能工作顺利,同学们为即将成为工作者努力拼搏。
26
青岛理工大学毕业设计
参考文献
[1]张毅刚、彭喜元,《MCS—51单片机应用技术》,哈尔滨工业大学出版社,2003.7
[2]何立民,《MCS-51单片机应用系统设计》,北京航空航天大学出版社,1998.7
[3]刘灿军,《实用传感器》,国防工业出版社,2004.6
[4]方佩敏,《新编传感器原理应用与电路详解》,电子工业出版社,1998.6 [5]梁宗善.电子技术基础课程设计——中大规模集成电路应用(第一版)。武汉:华中理工大学出版社。1995
[6]赵保经,中国集成电路大全——CMOS集成电路(第一版)。北京:国防工业出版社出版。2004
[7]张齐,杜群贵《单片机应用系统设计技术》[M].电子工业出版社,2007 [8]李广弟《单片机基础》[M],北京航空航天大学出版社,2001
[9]田立,马鸣鹤. 51系列单片机开发实例精解[M]. 北京:中国电力出版社,2009.
[10]于京《51系列单片机C程序设计与应用方案》[M] 中国电力出版社 2002.
[11]郑锋. 51单片机应用系统典型模块开发大全[M]. 北京:中国铁道出版社,2010.
[12]张剑. 基于Proteus的51系列单片机设计与仿真[M]. 北京:电子工业出版社, 2008.
[13]及力《Protel99SE原理图与PCB设计教程》[M]电子工业出版社,2004.
27
青岛理工大学毕业设计
附录A:程序清单
#include \#include \#include \
unsigned long HX711_Buffer = 0;
unsigned int Weight_Maopi = 0,Weight_Shiwu = 0; char Price_Count = 0; unsigned char KEY_NUM = 0;
unsigned char Price_Buffer[3] = {0x00,0x00,0x00}; unsigned long Money = 0; bit Flag_OK = 0;
sbit led1=P1^0; //绿灯 管脚 sbit led2=P1^1; //红灯 管脚
//**************************************************** //主函数
//**************************************************** void main() {
28
Init_LCD1602(); //初始化LCD1602
LCD1602_write_com(0x80);
//指针设置
//开机画面第一行
LCD1602_write_word(\
青岛理工大学毕业设计
Delay_ms(2000); //延时2s
loop:Price_Count = 0;
Price_Buffer[0] = 0; Price_Buffer[1] = 0; Price_Buffer[2] = 0; Flag_OK = 0;
LCD1602_write_com(0x80); //指针设置
LCD1602_write_word(\LCD1602_write_com(0x80+0x40);
//指针设置
LCD1602_write_word(\ . | . \
Get_Maopi();
while(1) {
}
29
if( Flag_OK == 0) {
Get_Weight();
//称重
//显示当前重量
LCD1602_write_com(0x80+0x40);
LCD1602_write_data(Weight_Shiwu/1000 + 0x30); LCD1602_write_data('.');
LCD1602_write_data(Weight_Shiwu00/100 + 0x30); LCD1602_write_data(Weight_Shiwu0/10 + 0x30); LCD1602_write_data(Weight_Shiwu + 0x30);
青岛理工大学毕业设计
if(Weight_Shiwu>5000) {led2=0; led1=1; }
if(Weight_Shiwu<1000) {led2=0; led1=1; }
if((Weight_Shiwu<5000)&(Weight_Shiwu>1000)) {led1=0; led2=1;}
void Get_Weight() {
HX711_Buffer = HX711_Read(); HX711_Buffer = HX711_Buffer/100; if(HX711_Buffer > Weight_Maopi) {
HX711_Buffer = HX711_Read(); Weight_Shiwu = HX711_Buffer/100;
Weight_Shiwu = Weight_Shiwu - Weight_Maopi;
//获取实物
的AD采样数值。
Weight_Shiwu = (unsigned int)((float)Weight_Shiwu/4.22+0.05); //计算
实物的实际重量
//因为
不同的传感器特性曲线不一样,因此,每一个传感器需要矫正这里的4.30这个除数。
//当发
30