AD_value<<=1; if(SDO) AD_value |= 0x01; delay_us(2); CLK = 1; } CLK = 0; CS = 1; if(PORT == port) break; else { Temp = port; Temp<<=4; delay_us(2); CS = 0; //PORT = port; } k++; if(k>2) { PORT = port; } }
return AD_value; }
u8 AD_deal(void) {
u16 AD_value; u16 temp; float temp1;
AD_value = read_tlc2543(0x00); temp1 =(AD_value*0.04069);
temp =(u16)(temp1*10);
if((temp)>4) temp = temp/10+1; else temp = temp/10; temp = (u8)temp; return temp; }
#include
u8 S_Temp=100; //设置温度 u8 P_Temp=25; //实际温度 u8 pulse = 0;
u8 Kp=30,Ki=0;Kd=10; int uk=0;
int num=0;
struct FLAG {
u8 turn; }
myflag;
/************* 函数功能:延时
****************/ void delay_ms(u16 z) {
u16 i; u8 j;
for(i=z;i>0;i--)
for(j=120;j>0;j--); }
/*************
函数功能:LCD写数据 ****************/
void LCD_WriteData(u8 Dat) {
RS = 1;
// delay_ms(5); P1 = Dat; EN = 1;
delay_ms(5); EN = 0; }
/*************
函数功能:LCD命令
****************/
void LCD_WriteCOM(u8 com) {
RS = 0;
// delay_ms(5); P1 = com; EN = 1;
delay_ms(5); EN = 0; }
/*************
函数功能:Show_Num初始化 ****************/
void Show_Num(u8 x,u8 y,u8 n,u16 num) {
u16 Temp=num; u8 a[5],i;
for(i=0;i if(y%2 == 1) LCD_WriteCOM(0x80+x); else LCD_WriteCOM(0x80+0x40+x); for(i=n;i>0;i--) LCD_WriteData(a[i-1]+0x30); } //n为数字长度num小于等于65535 /************* 函数功能:Show_fNum初始化 ****************/ void Show_fNum(u8 x,u8 y,u16 num) { u8 a,b; a = num/10; b = num; if(y%2 == 1) LCD_WriteCOM(0x80+x); else LCD_WriteCOM(0x80+0x40+x); LCD_WriteData(a+0x30); LCD_WriteData(b+0x30); } /************* 函数功能:Show_Num初始化 ****************/ void Show_char(u8 x,u8 y,u8 ch) { if(y%2 == 1) LCD_WriteCOM(0x80+x); else LCD_WriteCOM(0x80+0x40+x); LCD_WriteData(ch); } /************* 函数功能:LCD初始化 ****************/ void LCD_Init(void) { RW = 0; EN = 0; //delay_ms(20); LCD_WriteCOM(0x38); LCD_WriteCOM(0x0c); LCD_WriteCOM(0x06); LCD_WriteCOM(0x01); } /************* 函数功能:LCD初始化 ****************/ void LCD_display(void) { Show_char(0,1,'P'); Show_char(1,1,'T'); Show_char(2,1,':'); Show_char(9,1,'S'); Show_char(10,1,'T'); Show_char(11,1,':'); Show_Num(12,1,3,S_Temp); Show_char(0,2,'P'); Show_char(1,2,':'); Show_Num(2,2,2,Kp); Show_char(5,2,'I'); Show_char(6,2,':'); Show_Num(7,2,2,Ki); Show_char(10,2,'D'); Show_char(11,2,':'); Show_Num(12,2,2,Kd); } /************* 函数功能:定时器2初始化 ****************/ void timer2_init() { RCAP2H =(65536-100)/256; RCAP2L =(65536-100)%6; TH2 = RCAP2H; TL2 = RCAP2L; ET2 = 1; TR2 = 1; EA = 1; //100us