资源描述:
《单片机温度测控仪课程设计程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机温度测控仪课程设计程序//与试验箱的接线方式在程序中有说明,看懂即可连接成功#include/*p0读AD,p1段选p2,键盘,p3前四位控位选,后四位控制线*/sbitwr=P1^4;sbitrd=P1^5;//sbitcs=P3^2;sbiteoc=P1^6;//sbita0=P3^0;//此三位为模拟通道地址选择,由于I/O资源不足,此处将其直接接地,后面读AD子函数中也已屏蔽地址选择的操作//sbita1=P3^1;//sbita2=P3^2;sbitbell=P1^7;//此处为调试设定
2、,实际运行时应修改//sbitlock=P3^5;sbitwei0=P1^0;sbitwei1=P1^1;sbitwei2=P1^2;sbitwei3=P1^3;//p2段选sbitdp=P2^7;unsignedcharzhutai,shezhi;unsignedcharup,down;unsignedcharAD_result;unsignedcharreadtemp();//滤波子函数,200点平滑滤波unsignedcharscanf_key();//扫描键值voidscanf_command();//扫描指令,
3、做出响应unsignedcharmove(unsignedcharx);//状态切换voidsend(unsignedcharadd,unsignedcharnum,unsignedchardat);//数码管下载子函数voiddelay(unsignedintxms);//延时子函数voidinit();//初始化unsignedcharreadAD();//读ADvoidplaytemp(unsignedcharwen);//显示温度值,将AD结果转换为温度值,包含转换算法unsignedcharcodezi[]={
4、0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x00};//段编码数组voidsend(unsignedcharadd,unsignedcharnum,unsignedchardat){P2=zi[num];switch(add){case0:{wei0=1;wei1=0;wei2=0;wei3=0;}break;case1:{wei1=1;wei0=0;wei2=0;wei3=0;}break;case2:{wei2=1;wei0=0;wei1=0;we
5、i3=0;}break;case3:{wei3=1;wei0=0;wei1=0;wei2=0;}break;}if(dat==1)dp=1;elsedp=0;}voiddelay(unsignedintxms){unsignedinti,j;for(i=xms;i>0;i--){for(j=110;j>0;j--);}}voidinit(){bell=0;zhutai=0;shezhi=0;up=30;down=10;wr=1;rd=1;//cs=0;AD_result=0;}unsignedcharreadAD(){u
6、nsignedcharAD_value=0;//a0=0;//a1=0;//a2=0;wr=0;wr=1;rd=0;//调试时若有问题可以考虑在此处增加delay(1);指令while(eoc);AD_value=P0;rd=1;returnAD_value;}unsignedcharscanf_key(){unsignedchartemp,key_value;key_value=20;P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(20);temp=P3;temp
7、=temp&0xf0;if(temp!=0xf0){temp=P3;switch(temp){case0xee:key_value=0;break;case0xde:key_value=1;break;case0xbe:key_value=2;break;case0x7e:key_value=3;break;}}}P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0){delay(20);temp=P3;temp=temp&0xf0;if(temp!=0xf0){temp=P3;swi
8、tch(temp){case0xed:key_value=4;break;case0xdd:key_value=5;break;case0xbd:key_value=6;break;case0x7d:key_value=7;break;}}}P3=0xfb;temp=P3;temp=temp&0xf0;if(temp