资源描述:
《单片机电压测量后与设定值比较控制继电器输出》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、单片机电压测量后与设定值比较控制继电器输出#include#include"i2c.h"//--定义使用的IO--//#defineGPIO_DIGP0sbitLSA=P2^2;sbitLSB=P2^3;sbitLSC=P2^4;sbitJDQ=P1^4;//继电器控制ucharoldkey=0xff;//保按键接口状态sbitkey1=P3^7;//定义按键1sbitkey2=P3^6;//定义按键2//--定义PCF8591的读写地址--//#defineWRITEADDR0x90//写地址#defineREADADDR0x91//读地址//--定义全局变量
2、--//unsignedcharcodeDIG_CODE[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的显示码unsignedcharDisplayData[8];//用来存放要显示的8位数的值unsignedintDSU=310;//上线温度unsignedintDSD=300;//下线温度//--声明全局函数--//voidDigDisplay();//动态显示函数voidPcf859
3、1SendByte(unsignedcharchannel);unsignedcharPcf8591ReadByte();voidPcf8591DaConversion(unsignedcharvalue);voidDigDisplay();ucharReadKey(void);//读键值返回/********************************************************************************函数名:main*函数功能:主函数*输入:无*输出:无**************************************
4、*****************************************/voidmain(){unsignedintadNum;floatvalue;while(1){switch(ReadKey()){//读取键值做以下相应处理case1:++DSU;++DSD;//1键显示内容加1break;case2:--DSU;--DSD;//2键显示内容减1break;}//--显示电位器电压--//Pcf8591SendByte(0);//发送电位器转换命令adNum=Pcf8591ReadByte()*2;//将转换结果读走//--我们8591每读取到一个1就表示5/2
5、56V,所以要知道电压值就乘以0.01953--//value=adNum/2*0.01953;//转为电压值adNum=value*100;//保留两位小数if(adNum<=DSD)//低于下线温度关闭继电器{JDQ=1;}if(adNum>=DSU)//达到上线温度启动继电器{JDQ=0;}DisplayData[0]=DIG_CODE[adNum/1000];//发送显示数据DisplayData[1]=DIG_CODE[adNum%1000/100]
6、0x80;//或上0x80是加小数点DisplayData[2]=DIG_CODE[adNum%100/10];Disp
7、layData[3]=DIG_CODE[adNum%10];DisplayData[4]=DisplayData[0];DisplayData[5]=DIG_CODE[((DSU+DSD)/2)/100]
8、0x80;//或上0x80是加小数点DisplayData[6]=DIG_CODE[((DSU+DSD)/2)%100/10];DisplayData[7]=DIG_CODE[((DSU+DSD)/2)%10];DigDisplay();//--DA输出--//Pcf8591DaConversion(adNum/2);//DAC数模转换}}/******************
9、**************************************************************函数名:Pcf8591SendByte*函数功能:写入一个控制命令*输入:channel(转换通道)*输出:无*******************************************************************************/voidPcf8591SendByte(unsignedcharchannel){I2C_