1、时钟振荡电路如图1所示。图1 时钟振荡电路图4.2测温电路测温电路如图2所示。图2 测温电路图4.3复位电路复位电路如图3所示。图3 复位电路图4.4 报警电路报警电路如图4所示。图4 报警电路图4.5显示电路显示电路如图5所示。图5 显示电路图五、系统软件系统5.1主程序设计主程序流程图如图6所示。图6 主程序流程图5.2液晶显示程序设计液晶显示程序流程图如图7所示。图7 液晶显示程序流程图5.3温度采集程序设计温度采集程序流程图如图8所示。图8 温度采集程序流程图六、程序调试温度计的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便。硬件调
2、试时,可先检查印制板及焊接的质量是否符合要求,有无虚焊点及线路间有无短路、断路。然后用万用表测试或通电检测,检查无误后,可通电检查LCD液晶显示器亮度情况,一般情况下取背光电压为45.5V即可得到满意的效果。测温程序设计中,向DS18B20发温度命令转换后,程序要等待DS18B20的返回信号,一旦线路不好或断线,将陷入死循环。LCD程序也较为复杂,在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了问题。我们可以实用Proteus软件进行整体电路的仿真。Proteus可提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试。在绘制好原理
3、图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强。同时对所学的知识得到很大的提高与巩固,对自己的动手能力有了极大的帮助。七、心得体会在本次实习中,我通过查阅资料,请教于老师及同学。基本完成了硬件设计、程序设计、安装调试等环节。但其中有很多问题值得我去思考。1.实习作风不好:不能积极对待,注意力不够集中;2. 实习效率不高:单片机课程功底较差,实践动手能力不强;3. 独立解决问题的能力较差
4、。以为三点都值得我反思,本次实习揭露了我的不足,希望在以后学生工作中得到改进。八、实验总结在本次设计的过程中,我发现很多的问题,虽然以前还做过这样的设计但这次设计真的让我长进了很多,从这次的设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的写与读的过程中才能提高,这就是我在这次课程设计中的最大收获。本次设计中,我遇到了一些难题,然而这些难题让我不断的学习,在困难中进步,在此我要感谢学校给我们提供这次机会,感谢指导教师给我的提供了宝贵的意见以及同学对于我的帮助,我将继续以务实的态度,在接下来的毕业设计中,争取做出更
5、好的成绩。九、参考文献1 杨拴科.模拟电子技术基础.高等教育出版社.20042 阎石.数字电子技术基础(第五版).高等教育出版社20083 谭浩强.C程序设计.清华大学出版社.20064 赵负图.传感器集成电路手册.化学工业出版社.20025 郁有文.传感器原理及工程应用(第三版).西安电子科技大学出版社. 20086 高峰.单片微型计算机与接口技术.科学出版社.20037 余发山.王福忠.单片机原理及应用技术.中国矿业大学出版社.20038 汤竞南.51单片机C语言开发与实例.人民邮电出版社.2008附录1:电路原理图附录2元器件清单序号名称规格数量1单片机AT89C521个2晶振12Mhz
6、3LCD显示器16021片4温度传感器DS18B201只5发光二极管红色6绿色7电解电容10F8电位器10K9瓷片电容20pF2片10色环电阻510114.7K 1只12按钮开关13按键14通用焊接板1块15插针插座若干杜邦线附录三: 源程序代码#include /52单片机头文件,一般不要改动,里面包含特殊功能寄存器的定义#define uchar unsigned char#define uint unsigned intsbit lcdrs=P22; /数据命令选择控制sbit lcdrw=P21; /读/写选择控制sbit lcden=P20; /使能信号sbit DQ=P12;sbi
7、t k1=P10;sbit beep=P17;uchar t12;uchar code t0=+-; uchar readdata0;uchar readdata1;uchar dat,i,r,p;/*LCD子函数*/*延时函数*/void delay(uchar z) uchar x,y; for(x=1000;x1;x-) for(y=z;yy-);/*写命令函数*/void write_com(uchar com) lcdrs=0; P0=com; delay(5); lcden=1; lcden=0;/*写数据函数*/void write_date(uchar date) lcdrs=
8、1; P0=date;/*初始化液晶程序*/void init_lcd() lcdrw=0; write_com(0x38); write_com(0x01); write_com(0x0c); write_com(0x06); /设置光标状态默认0x06,为读一个字符光标加1/*在屏幕右侧显示出数据*/void display() write_com(0x8c); write_com(0x80); /设置初始化数据指针位置,设置在屏幕的未显示区,然后移动到屏幕的正方 t10= i+0x30; t11= p+0x30; write_date(t00); write_date(t10); wri
9、te_date(t11);/*DS18B20子函数*/void delay1(unsigned int time) /延迟函数 while(time-);/*复位函数*/void DS20(void) bit x=1; DQ = 1; /DQ复位 delay1(8); DQ = 0; /单片机将DQ拉低 delay1(90); /精确延时 大于 480us /拉高总线 x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay1(100);/*读函数*/unsigned char ReadOneChar(void)unsigned char i=0;unsigned ch
10、ar dat = 0;for (i=8;i0;i-) / 给脉冲信号 dat=1; if(DQ) dat |=0x80; delay1(4); return(dat);/*写函数*/void WriteOneChar(unsigned char dat) unsigned char i=0; for (i=8; i i-) DQ = dat&0x01; delay1(2);void main() init_lcd(); /LCD初始化 while(1) if(k1=0) delay1(5); if(k1=0) delay1(40); DS20(); /复位 WriteOneChar(0xcc); /跳过ROM 命令 WriteOneChar(0x44); /温度转换命令 WriteOneChar(0xbe); /读DS1820 温度暂存器命令 readdata0=ReadOneChar(); /读取温度值低位 readdata1=ReadOneChar(); /
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1