标题:
单片机+ADC0832电炉丝控制程序+Proteus仿真
[打印本页]
作者:
dong12
时间:
2020-5-11 10:56
标题:
单片机+ADC0832电炉丝控制程序+Proteus仿真
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.png
(19.98 KB, 下载次数: 49)
下载附件
2020-5-11 14:49 上传
单片机源程序如下:
#include <reg52.h>
#include <intrins.h>
#include <math.h> //Keil library
#include <stdio.h> //Keil library
#include "lcd.h"
//#include "DHT111.h"
//#include "DS18B20.h"
#include "ADC0832.h"
#define uchar unsigned char
sbit pwm_out =P1^5;
sbit k1 =P2^3;
sbit k2 =P2^4;
sbit key1 =P3^4;
sbit key2 =P3^5;
sbit key3 =P3^6;
sbit key4 =P3^7;
////延时函数
void delay(int z) //z为毫秒数
{
int x,y;
for(x=z;x>0;x--)
for(y=125;y>0;y--);
}
void delay_us(unsigned int z) //z为毫秒数
{
TH1=0X00;
TL1=0X00;
TR1=1;
while((256*TH1+TL1)<z);
TR1=0;
}
unsigned int tim0_cnt=0;// init=1000,
float zhankong=0.5;
void timer0()interrupt 3{
// tim0_cnt++;
// if(tim0_cnt>=100) tim0_cnt=0;
//
// if(tim0_cnt%2==0)
// {
// pwm_out=0;
// init=20000;//(int)(zhankong*50000);
// TH0 = (65536 - init) / 256;
// TL0 = (65536 - init) % 256;
// }
// else
// {
// pwm_out=1;
// init=30000;//(int)(50000-zhankong*50000);
// TH0 = (65536 - init) / 256;
// TL0 = (65536 - init) % 256;
// }
}
/***********************************************************************************************************************************************************/
//主函数
char set[]="set:",now[]="now:";
void main()
{
unsigned int cnt=0;
//value humi_val,temp_val; //定义两个共同体,一个用于湿度,一个用于温度
float voltage=0,set_voltage=20.0;
//// float dew_point; //用于记录露点值
// unsigned char error; //用于检验是否出现错误
// unsigned char checksum; //CRC
// uchar TEMP1[5]; //用于记录温度
// uchar HUMI1[5]; //用于记录湿度
unsigned char set_temp=20,i;
LcdInit();
for(i=0;i<4;i++)
{
LcdWriteCom(0x80+i);
LcdWriteData(set[i]);
}
for(i=0;i<4;i++)
{
LcdWriteCom(0x80+0x40+i);
LcdWriteData(now[i]);
}
//LCD_Initial(); //初始化液晶
// GotoXY(0,0); //选择温度显示位置
// Print("NOW: C"); //5格空格
// GotoXY(0,1); //选择湿度显示位置
// Print("SET: C"); //5格空格
//s_connectionreset(); //启动连接复位
// Init_DS18B20();
TMOD=0x10;
// TH0 = (65536 - 50000) / 256;
// TL0 = (65536 - 50000) % 256;
TL1=0X00;
TH1=0X00;
// ET0=1;
EA=0;
TR0=0;
TR1=0;
while(1)
{
cnt++;
if(key1==0) { delay(200); if(key1==0) if(set_voltage<99)set_voltage++;}
if(key2==0) { delay(200); if(key2==0) if(set_voltage>0)set_voltage--;}
if(key3==0) { delay(200); if(key3==0) if(set_voltage<99)set_voltage=set_voltage+0.1;}
if(key4==0) { delay(200); if(key4==0) if(set_voltage>1)set_voltage=set_voltage-0.1;}
voltage =(float)read0832();
voltage = 5.0 * voltage/256;
voltage=20*voltage;
if(voltage<=set_voltage){k1=1;k2=0;}
else if(voltage>set_voltage){k1=0;k2=1;} //
//set_voltage=humi_val.f/10;
// if(set_voltage>4.1)set_voltage=4.1;
if(cnt>=10){cnt=0; LCD_display(set_voltage, voltage);}
//temp=(int)(voltage*100);
delay(10); //等待足够长的时间,以进行下一次转换
}
}
复制代码
所有资料51hei提供下载:
电炉丝控制.zip
(163.08 KB, 下载次数: 66)
2020-5-11 10:56 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xiaodong11
时间:
2020-5-14 11:02
很有用的资料
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1