当前位置:首页 > 电加热炉温度控制系统设计
uchar hour; uchar mstcnt=0;
uchar temp1,temp2,temp; uchar t,set; uchar K; bit ON_OFF=0; bit outflag; bit write=0;
uchar code str0[]={%uchar code str1[]={\void delay_LCM(uint); void initLCM( void); void lcd_wait(void);
//LCD延时子程序 //LCD初始化子程序 //LCD检测忙子程序
//温度显示变量
void WriteCommandLCM(uchar WCLCM,uchar BusyC); //写指令到ICM子函数 void WriteDataLCM(uchar WDLCM); //写数据到LCM子函数 void DisplayOneChar(uchar X,uchar Y,uchar DData) //显示指定坐标的一个字符子函数
void DisplayListChar(uchar X,uchar Y,uchar code *DData);//显示指定坐标的一串字符子函数
void init_timer0(void); void displayfun1(void); void displayfun2(void); void displayfun3(void); void displayfun4(void);
void keyscan(void ); void set_adj(void); void inc_key(void); void dec_key(void);
void delay_18B20(unsigned int i); void Init_DS18B20(void) ; uchar ReadOneChar(void);
void WriteOneChar(unsigned char dat); void ReadTemperature(void); void ad0809(void); void playalarm(void);
/*********延时K*1ms,12.000mhz**********/ void delay_LCM(uint k)
12
//定时器初始化
//键盘扫描子程序
{
uint i,j; for(i=0;i for(j=0;j<60;j++) {;} } } /**********写指令到LCM子函数************/ void WriteCommandLCM(uchar WCLCM,uchar BusyC) { if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0; // 选中指令寄存器 LCM_RW=0; // 写模式 LCM_EN=1; } /**********写数据到LCM子函数************/ void WriteDataLCM(uchar WDLCM) { lcd_wait( ); //检测忙信号 DATAPORT=WDLCM; LCM_RS=1; // 选中数据寄存器 LCM_RW=0; // 写模式 LCM_EN=1; _nop_(); } /***********lcm内部等待函数*************/ void lcd_wait(void) { DATAPORT=0xff; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); LCM_EN=0; LCM_EN=0; 13 LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); while(DATAPORT&BUSY) } /**********LCM初始化子函数***********/ void initLCM( ) { DATAPORT=0; delay_LCM(15); WriteCommandLCM(0x38,0); //三次显示模式设置,不检测忙信号 { LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); } LCM_EN=0; delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,0); delay_LCM(5); WriteCommandLCM(0x38,1);//8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCM(0x08,1); //关闭显示,检测忙信号 WriteCommandLCM(0x01,1); //清屏,检测忙信号 WriteCommandLCM(0x06,1); //显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1); //显示屏打开,光标不显示,不闪烁,检测忙信号 } /****************显示指定坐标的一个字符子函数*************/ void DisplayOneChar(uchar X,uchar Y,uchar DData) { Y&=1; X&=15; if(Y)X|=0x40; //若y为1(显示第二行),地址码+0X40 X|=0x80; //指令码为地址码+0X80 14 WriteCommandLCM(X,0); WriteDataLCM(DData); } /***********显示指定坐标的一串字符子函数***********/ void DisplayListChar(uchar X,uchar Y,uchar code *DData) { uchar ListLength=0; Y&=0x01; X&=0x0f; while(X<16) { DisplayOneChar(X,Y,DData[ListLength]); ListLength++; X++; } } /***********ds18b20延迟子函数(晶振12MHz )*******/ void delay_18B20(unsigned int i) { } /**********ds18b20初始化函数**********************/ void Init_DS18B20(void) { } /***********ds18b20读一个字节**************/ unsigned char ReadOneChar(void) unsigned char x=0; DQ = 1; //DQ复位 delay_18B20(8); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_18B20(80); //精确延时 大于 480us DQ = 1; //拉高总线 delay_18B20(14); x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay_18B20(20); while(i--); 15
共分享92篇相关文档