江苏科技大学毕业论文
4.3总结:
通过本次电子设计的参与以及行动,同学的互相合作以及老师的及时指导,感觉有不少的收获,从题目的选取到材料的准备,从硬件的焊接到软件的编程,都有所感悟。其中硬件的测试涉及到了示波器和万用表等的使用,软件设计到了keil编程环境的熟悉,proteus仿真电路的应用,以及altium的使用(单片机最小系统设计)等。但是过程中也遇到了很多麻烦,通过网络,老师,同学间的合作力量基本将其解决。由于水平的有限,所以各方面的设计效果还有很多欠缺待我们去进一步的学习与努力才能行之有效。 4.4 系统调试与分析:
在硬件准备差不多的时候,最关键的就是软件的
21
江苏科技大学毕业论文
程序调试。在这个过程中程序出现过很多错误,以致于硬件无法运行或是效果太差等。
1.比如说这次用到的液晶显示,刚开始用的是P0口,程序没有错误和警告,但是液晶却无法显示字符,通过多番测试才知道P0口的驱动不足,所以更换IO口后,便能正确显示。
2.如由于这次程序用的比较多,但是RAM空间又小,所以程序中的变量定义,必须改为idata(就是全部RAM区)型的,包括数组,否则变量随意分配会引发意想不到的后果。
3.如光电感应的调试,刚开始怎么也不显示效果,多番检测之后,发现不是程序的问题,而是硬件电路LM393没有连接好导致的。
4.再如由于这次的使用传感器较多,所以带来的后果是如果公地太多势必会影响到实际的运行结果及其稳
22
江苏科技大学毕业论文
定性,比方说液晶,温湿度,以及光电的共地会使液晶的显示极度不稳定。
5.烟雾的调节也很重要,如果灵敏度这些太高或是太低都会带来比较麻烦的后果,我们通过多次测试将其调节到一定值后才能更加有效的工作。
6.延时的多少也很重要,该次使用11.0592MHZ的,如果不当会使有关硬件的响应缓慢或是误差太大。 4.5 系统性能分析与评估:
该系统的基本功能实现基本还算稳定,但是由于这次设计的硬件主要是以最小系统为基准设计的,所以在外扩展其他硬件功能时难免会用到导线连接,而这次设计所占用的IO口比较多,所以带来的后果是看起来并不是美观而协调的。相如温湿度的采集可以说是灵敏迅速,能够实时的显示环境的温湿度。光敏电阻通过滑动变阻器的调节也是很灵敏,处于黑暗状态
23
江苏科技大学毕业论文
他能马上亮起来,明亮状态马上熄灭。当烟雾超标时,液晶屏及时的显示超标信息以及指示信号。其他功能基本都行,但是由于时间紧急加上水平有限,往后还有很多方面需要改善,而且最好能够实现无线控制或是基于GSM的控制。
五.电路运行代码源程序:
1.主程序(zhineng.c)
#include
#include\采用1602液晶显示 #include\
#include\ //风扇头文件
#include\ //DS1302显示时钟:年月日,时分秒,以及星期显示 #define uint unsigned int #define uchar unsigned char
uchar idata temp[] =\ //设置 的湿度值显示 uchar idata temp_s[] =\ \\0\//实时湿度显示 uchar idata wsdisplay[]=\ WH Over:\\0\温湿度超载显示 uchar idata ywdisplay[]=\ YW Over:\\0\烟雾超载浓度显示 uchar idata title0[]=\ Welcome To:\\0\//上电显示界面 uchar idata title1[]=\ ZN House \\0\sbit sw1=P3^0; //温湿度调节 sbit sw2=P3^1; //温湿度调节P2^5
sbit led=P2^1;// 光敏电阻光照灯显示 35 sbit ss=P2^2;//光照检测 P0^1 P0^0
sbit led1=P3^5;//温湿度异常指示 sbit led2=P3^6; //烟雾浓度过高指示
24
江苏科技大学毕业论文
sbit led3=P3^7; //手动开启照明灯指示 sbit key4=P2^5; //按键控制开启照明灯
sbit baojing=P3^6; //蜂鸣器报警 sbit yw=P2^2; //烟雾探头
sbit key1=P3^2; //中断控制风扇自动停止与否 sbit key2=P3^3; //风扇停止位控制
sbit key3=P3^4; //功能选择:进行时间和温湿度显示的切换 sbit hw=P2^1; //人体红外检测模块
uchar idata set; //变量定义 uchar idata num1;
uchar idata getdata=55;
uint idata shangxian=85; //湿度上线值设置 uchar idata temp_h,temp_t,fleg; void conv();
void key(); void kongzhi(); void guangming(); void ywjiance(); void hwjiance(); void autoled();
void guangming() {
led=0; if(ss==0) led=1; }
void zhuanhuan()//扫描数据转换 {
temp[7]=shangxian/10+0x30; temp[8]=shangxian+0x30; temp_s[3]=temp_h/10+0x30; temp_s[4]=temp_h+0x30; temp_s[3]=temp_h/10+0x30; temp_s[4]=temp_h+0x30; temp_s[12]=temp_t/10+0x30;
25
/////