致 谢
在论文即将完成之际,我要特别感谢我的指导老师董承廷老师对我的热情关怀和细心指导。在我做毕业设计的整个过程中,董老师都以他最大的可能来帮助我,教导我,跟着董老师做毕业设计,我学会了好多东西,这些都对我未来的工作和生活产生重大的影响。他不仅仅是我们学术上的良师,更是生活中的益友。他以一个教育工作者热忱的心胸不厌其烦地指导着我们,教育者我们,使我们不仅学到了扎实的专业知识,更学到了做人的道理。他孜孜不倦悉心细致的教诲和严谨治学一丝不苟的工作作风使我永远都不能忘记。在此,特向他表示真诚的感谢。祝董老师身体健康,桃李满天下。
同时,在我四年的大学生活中,也得到了很多老师、同学、朋友的支持和帮助,在此一并表示感谢,正是由于你们,才使我的大学生活更加丰富多彩,感谢你们。
最后,感谢我即将离开的母校——西亚斯,你使我的心灵得到了升华;你使我的思维更加成熟,你是我生命的归宿,是我成长的阶梯,在你的培养下我成功的从学校走进了社会。感谢你,西亚斯。
36
参考文献
[1] 李群芳,肖看.单片机原理、接口及应用.北京:清华大学出版社,2007 [2] 谭浩强.C语言程序设计.北京:清华大学出版社,2006
[3] 张义和,王敏男,许宏昌等.例说51单片机.北京:人民邮电出版社,2008
[4] 刘坤,宋戈,赵红波等.51单片机C语言应用技术开发技术大全.北京:人民邮电出版社,2008 [5] 白延敏.51单片机典型系统开发实例精讲.北京:电子工业出版社,2009 [6] 周丽娜.Protel99SE电路设计技术.北京:中国铁道出版社,2009
[7] 王为青,程国钢.单片机Keil C×51应用开发技术.北京:人民邮电出版社,2007 [8] 江志红.51单片机技术与应用系统开发案例精选.北京:清华大学出版社,2009
[9] Muhammad Ali Mazidi,Janice Gillispie,Rolin Mckinlay.The 8051 Microcontroller and Embedded
Systems:Using Assembly and C,Second Edition.Pearson Education,2006
[10] U. Tietze Ch. Schenk. Electronic Circuits. Handbook for Design and Application, Berlin, New York:
Springer-Verlag,2005
37
附 录
电路原理图:
38
设计主程序:
/****************************************************** STC12C5A60S2读取 DS18B20数据,用 12864显示
********************************************************/ #include
#define uchar unsigned char #define uint unsigned int
/********************************************************* 12864程序部分
*********************************************************/ sbit rs_12 = P3^6; //rs为H dat 为显示数据 rs为L dat为显示指令数据 sbit rw_12 = P3^7; // rw = 'H',en ='H', dat被写到DB7--DB0;rw ='L',en = 'H-->L'DB7--DB0的数据被写到IR或DR sbit en_12 = P4^0; //使能信号,(sclk) //sbit psb_12 = P2^3; // 并(8位或4位)串口选择标志口 高为并行,低为串行 sbit rst_12 = P0^7; //复位口 低电平有效 sbit bf_12 = P2^7; //忙先检测位 #define dat_12 P2 // 12864并行数据口
/******************************************************* 延迟函数
*******************************************************/ #define DELAY 500 // 按键去抖动延时 void delay1ms(uint x) { uint i,j; for(i=0;i void delay() { _nop_(); } /************************************************ 12864 读取忙线状态 ************************************************/ void busy_12() { dat_12 = 0xff; 39 rs_12 = 0; rw_12 = 1; en_12 = 1; while(bf_12 == 1); en_12 = 0; } /******************************* 12864 写数据 ********************************/ void wr_dat_12(uchar dat) { busy_12(); rs_12 = 1; //数据 rw_12 = 0; //写数据 dat_12 = dat; en_12 = 1; delay(); en_12 = 0; } /******************************** 12864 写命令 *********************************/ void wr_com_12(uchar com) { busy_12(); rs_12 = 0; //写入命令 rw_12 = 0; dat_12 = com; en_12 = 1; delay(); en_12 = 0; } /********************************* 12864 指定要显示的坐标 *********************************/ void goto_xy_12(uchar x, uchar y) { if(y==0) wr_com_12(0x80|x); if(y==1) wr_com_12(0x90|x); if(y==2) wr_com_12((0x80|x)+8); if(y==3) 40