标题:
通过DS18B20结合直流电机的一个小程序
[打印本页]
作者:
wddou
时间:
2017-10-28 12:01
标题:
通过DS18B20结合直流电机的一个小程序
通过DS18B20结合直流电机的一个小程序,希望赚一点黑币去下载附件,新手上路,请多指教
下载:
程序.rar
(32.36 KB, 下载次数: 13)
2017-10-28 11:59 上传
点击文件名下载附件
下载积分: 黑币 -5
单片机源程序如下:
#include"temp.h"
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16; //定义字符类型
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit moto=P1^0;
sbit beep=P1^6; // 定义管脚
char num=0;
u8 DisplayData[8]; //定义数组
u8 code smgduan[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段选显示数据
void delay(u16 i) // 延时函数
{
while(i--);
}
void BeepSing(int temp) //蜂鸣器(脉冲)
{
int WD;
beep=1;
WD=temp*0.0625*100+0.5; //放大100是为了保存小数点后两位,加0.5是为了四舍五入,单片机小数点后都省略
if(WD>26)
{
beep=0;
delay(10);
beep=1;
delay(10);
}
else
{
beep=1;
}
}
void Motorzd(int temp) //电机
{
int wd;
moto=0;
wd=temp*0.0625*100+0.5;
if(wd>26)
{
moto=1;
}
else
{
moto=0;
}
}
void datazh(int temp) //温度中转
{
float zh;
if(temp<0)
{
DisplayData[0]=0x40; //显示负号
temp=temp-1;
temp=~temp;
zh=temp;
temp= zh*0.0625*100+0.5;
}
else
{
DisplayData[0] = 0x00; //无显示
zh=temp;
temp= zh*0.0625*100+0.5;
}
DisplayData[1] = smgduan[temp / 10000]; //百位
DisplayData[2] = smgduan[temp % 10000 / 1000]; //十位
DisplayData[3] = smgduan[temp % 1000 / 100] | 0x80; //个位
DisplayData[4] = smgduan[temp % 100 / 10]; //小数点后一位
DisplayData[5] = smgduan[temp % 10]; //小数点后两位
}
void LEDDisplay() //LED显示 ,位选
{
u8 i;
for(i=0;i<6;i++)
{
switch(i)
{
case(0):
LSA=0;LSB=0;LSC=0;break;
case(1):
LSA=1;LSB=0;LSC=0;break;
case(2):
LSA=0;LSB=1;LSC=0;break;
case(3):
LSA=1;LSB=1;LSC=0;break;
case(4):
LSA=0;LSB=0;LSC=1;break;
case(5):
LSA=1;LSB=0;LSC=1;break;
}
P0=DisplayData[i];
delay(100);
P0=0x00; //消隐
}
}
void main()
{
while(1)
{
BeepSing(DS18B20RadeTemp()); //蜂鸣器
Motorzd(DS18B20RadeTemp()); //电机
datazh(DS18B20RadeTemp()); //数据处理
LEDDisplay(); //数显
}
}
复制代码
所有资料51hei提供下载:
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1