c语言ddv_max,STC单片机自制贴片元件拆焊台MAX6675控温程序

#include#define uchar unsigned char//只有256

#define uint unsigned int//有16位但占内存。

#define ulong  unsigned long

#include  

sbit rs=P2^6;//

sbit rw=P2^5;//

sbit en=P2^7;//

sbit k1=P1^0;//按键+

sbit k2=P1^1;//按键-

uchar set=195;//初始化温度

sbit OUT=P1^2;//定义输出

void delay (int a)//毫秒级延时

{

int x,y;

for(x=a;x>0;x--)

for(y=110;y>0;y--);

}

//定义温度数据变量

float wdd = 0;//单精度浮点型变量眼3.4*10^38----(-3.4*10^38)  占4个字节小数点后7-8位

//double wdd = 0;//双精度浮点型变量        小数点后15-16位

ulong x = 0;//长整数型温度

uint  wd;//定义一个温度用于显示

sbit  SO=P3^2;  //P1.0口与SO相连

sbit  CS=P3^3;  //P1.1口与CS相连

sbit  SCK=P3^4; //P1.2口与SCK相连

/*******************************延时函数**********************************************/

void Delay1Ms(uint t)

{

uchar i;

for (;t>0;t--)

{

for (i=0;i<138;i++)

{

_nop_();_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();_nop_();

}

}

}

void Delay1s(uchar t)

{

for (;t>0;t--)

{

Delay1Ms(250);

Delay1Ms(250);

Delay1Ms(250);

Delay1Ms(250);

}

}

void delayus()//us微秒延时

{

_nop_();

_nop_();

_nop_();

_nop_();

}

unsigned long Re_Convert() //热电偶数据--读取温度

{ uchar i;

unsigned long Temp_2;

Temp_2=0;

CS=1;

SCK=0;

Delay1Ms(120); //不低于(52机)100MS不然数据无法刷新

_nop_();_nop_();

CS=0;

for(i=0;i<16;i++)//16位数据读取

{

Temp_2<<=1;//向右移一位

_nop_();

SCK=1;//上升

if(SO==1)

{Temp_2=Temp_2|0x01;}

else

Temp_2=Temp_2|0x00;

_nop_();

SCK=0;

_nop_();

}

Temp_2=Temp_2<<1;        //向左移一位,取0-14位

Temp_2=Temp_2>>3;        //向右移4位,取3-14位

//Temp_2=1024.123456;//测试正常运行不要

return(Temp_2); //返回温度

}

void write_com(uchar com)//写命令

{

rs=0;//

rw=0;

en=0;

P0=com;

delay(2);

en=1;

delay(5);

en=0;

delay(2);

}

void write_dat(uchar dat)//写数据

{

rs=1;//

rw=0;

en=0;

P0=dat;

delay(2);

en=1;

delay(5);

en=0;

delay(2);

}

void write_zfc(uchar *p)//定义一个带指针的函数?(字符串)

{

while(*p!=0)//不能用";"

write_dat(*p++);

}

void init_1602()//1602初始化

{

write_com(0x38);//设置16X2显示

delay(1);

write_com(0x0C);//0e光标不闪//0c不显//0f闪烁显示

delay(1);

write_com(0x06);//光标移位加1

delay(1);

write_com(0x01);//清屏

delay(1);

write_com(0x80);

write_zfc("Set=");

}

void write_TH(uchar set)//高温显示

{

uchar qian,bai,shi,ge;

qian=set/1000;

bai=set%1000/100;

shi=set%100/10;

ge=set%10;

write_com(0x80+4);

// write_dat(0x30+qian);

write_dat(0x30+bai);

write_dat(0x30+shi);

write_dat(0x30+ge);

write_dat(0xdf);//显上0

write_dat('C');

}

void display(uint tvalue)//4位显示子函数

{

uchar qian,bai,shi,ge;

qian=tvalue/1000;

bai=tvalue%1000/100;

shi=tvalue%100/10;

ge=tvalue%10;

write_com(0xc0+3);

write_zfc("WD =");

//write_dat(0x30+qian);

write_dat(0x30+bai);

write_dat(0x30+shi);

write_dat(0x30+ge);

write_dat(0xdf);//显上0

write_dat('C');

}

void keyscan()

{

if(k1==0)

{

// delay(5);

//while(!k1);

set++;

if(set>250)set=250;

write_TH(set);

}

if(k2==0)

{

//delay(5);

//while(!k2);

set--;

if(set<30)set=30;

write_TH(set);

}

}

void main()

{

init_1602();

while(1)

{

keyscan();

write_TH(set);//设置温度

x=Re_Convert(); //读取温度//X=读到的值

wdd=25*x;//温度量化 X 0.25//取后两位就X25

wd =(uint)wdd;//浮点型变量转换成uint型变量16位

//wd=wd-48;//计算

wd=wd/200;//计算

display(wd);

if(wd>set)

{

OUT=1;

write_com(0x80+11);

write_zfc("");

}

else

{

if(wd+1<=set)        //让这回到5C之下才又开始加温,防闪烁

{

OUT=0;//加热开始

write_com(0x80+11);

write_zfc("");

}

}

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值