风扇调速系统程序文档格式.docx
《风扇调速系统程序文档格式.docx》由会员分享,可在线阅读,更多相关《风扇调速系统程序文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
//unsignedcharxiaoshu2;
//小数第二位
//unsignedcharxiaoshu;
//两位小数
bitfg=1;
//温度正负标志
//////////*显示延时程序*///////////////
voidDelay(unsignedinttc)
{while(tc!
=0)
{unsignedinti;
for(i=0;
i<
80;
i++);
tc--;
}
////////////延时部分///////////////
voidyanshi(unsignedintcount)
{
unsignedchari;
while(count--)
{for(i=0;
i<
115;
i++);
voiddel()/*延时1秒*/
unsignedchari,j,k;
for(i=20;
i>
0;
i--)
for(j=100;
j>
j--)
for(k=248;
k>
k--);
/////////////发送复位///////////////
voidfashong(void)
TMDAT=0;
for(i=0;
103;
TMDAT=1;
4;
bittmrbit(void)//读一位//
{
unsignedinti;
bitdat;
i++;
i++;
//微量延时//
dat=TMDAT;
8;
return(dat);
unsignedchartmrbyte(void)//读一个字节
unsignedchari,j,dat;
dat=0;
for(i=1;
=8;
i++)
{j=tmrbit();
dat=(j<
<
7)|(dat>
>
1);
}
voidtmwbyte(unsignedchardat)//写一个字节
unsignedcharj,i;
bittestb;
for(j=1;
j<
j++)
{testb=dat&
0x01;
dat=dat>
1;
if(testb)
{TMDAT=0;
//写0
else
voidtmstart(void)//发送ds1820开始转换
fashong();
//复位
yanshi
(1);
//延时
tmwbyte(0xcc);
//跳过序列号命令
tmwbyte(0x44);
//发转换命令44H,
}
voidtmrtemp(void)//读取温度
unsignedchara,b;
fashong();
yanshi
(1);
tmwbyte(0xcc);
tmwbyte(0xbe);
//发送读取命令
a=tmrbyte();
//读取低位温度
b=tmrbyte();
//读取高位温度
if(b>
0x7f)//最高位为1时温度是负
{a=~a;
b=~b+1;
//补码转换,取反加一
fg=0;
//读取温度为负时fg=0
sdata=a/16+b*16;
//整数部分
//xiaoshu1=(a&
0x0f)*10/16;
//小数第一位
//xiaoshu2=(a&
0x0f)*100/16%10;
//小数
//xiaoshu=xiaoshu1*10+xiaoshu2;
//小数
voidDS18B20PRO(void)
tmstart();
//yanshi(5);
//如果是不断地读取的话可以不延
tmrtemp();
//读取温度,执行完毕温度将存于
voidLed()
if(fg==1)//温度为正时显示的数据
P2_7=0;
P0=seg7code[sdata/10];
//输出十位
Delay(8);
P2=P2|0xf0;
P2_6=0;
P0=seg7code[sdata%10]|0x80;
//输出个位
P2_5=0;
P0=seg7code[j%10]|0x80;
//输出延时位
Delay(4);
main()
fg=1;
while
(1)
if(jia==0)
{Delay(200);
j++;
if(jian==0)
j--;
DS18B20PRO();
Led();
if(di==0)
P1=0xfe;
if(zh==0)
P1=0xfd;
if(ga==0)
P1=0xfb;
风扇调速最终程序
unsignedintz=0;
sbitq=P1^7;
P0=seg7code[z%10]|0x80;
if(sdata>
30)
{P1=0xfe;
32)
{P1=0xfd;
34)
{P1=0xfb;
voidbuzidong()
voidDS18B20PRO();
voidLed();
voidzidong()
while(z--)
unsignedchari,k;
//for(y=30;
y>
y--)
for(i=12;
//for(j=80;
k--)
z++;
z--;
/*
if((di==0)||(sdata>
30))
if((zh==0)||(sdata>
32))
if((ga==0)||(sdata>
34))
*/
};
voidmain()
//if(jia==0)
//{Delay(200);
//if(jian==0)
//zidong();
buzidong();
if(q==0)
{z++;
zidong();
P1=0xff;