基于51单片机的温度控制系统的设计 下载本文

贵州大学课程设计

7.参考文献

[1] 潘新民,王燕芳. 微型计算机控制技术 [M]. 北京:电子工业出版社,2014 [2] 王迎旭. 单片机原理与应用 [M]. 北京:机械工业出版社,2013 [3] 康华光. 电子技术基础 [M]. 北京:高等教育出版社,2013

[4] 周正华,唐宁 RT1602C与FPGA接口技术 [J]. 中国科技信息,2008(10) [5] 廖琪梅,韩彬等. 基于DS18B20的温度测量仪 [J]. 国外电子元器件,2008(2)

16

贵州大学课程设计

附录一:程序清单

#include #include #include #define uchar unsigned char #define uint unsigned int #define BUSY 0x80

void Delay(uint); void init_LCD(void);

void LCD_Command(uchar,uchar); void LCD_Data(uchar); void ReadyLCD(void);

void Display_char(uchar,uchar,uchar);

void Display_str(uchar,uchar,uchar code *Data); void Change(void); void Display(void); void init_18B20(void); uchar Read_18B20(void); void Write_18B20(uchar); void Read_temp(void); void Delay_us(uchar i); void Key_scan(void); void Key_set(void); void Key_inc(void); void Key_dec(void); void Alarm(void);

sbit LCD_RS=P2^0;

17

贵州大学课程设计

sbit LCD_RW=P2^1; sbit LCD_EN=P2^2; sbit DQ=P1^7; sbit Normal=P2^4; sbit Alarm_H=P2^5; sbit Alarm_L=P2^6; sbit Alarm_BEEP=P2^7;

uchar Set_flag=0;

uchar Temp_mea,Temp_set1,Temp_set2; uchar Temp_high_1,Temp_high_2; uchar Temp_low_1,Temp_low_2; uchar Temp_true_1,Temp_true_2;

extern uchar code str0[]={\ C Low: C\extern uchar code str1[]={\ Deg: C\extern uchar code str2[]={\ Hellow!! \extern uchar code str3[]={\extern uchar code mode[]={\

/********主程序********/ void main(void) {

P1=0xff; P2|=0x70; P2&=0x7f;

Temp_set1=90; //上限报警温度初值90 Temp_set2=10; //下限报警温度初值10 Delay(500); //延时500ms启动

18

贵州大学课程设计

}

init_LCD(); //LCD初始化 init_18B20(); //DS18B20初始化 Display_str(0,0,str2); //开机界面 Display_str(0,1,str2); //开机界面 Delay(2000); Display_str(0,0,str0); Display_str(0,1,str1); while(1) { }

Key_scan(); //扫描键盘 Read_temp(); //读取温度 Change();

Display(); //显示

Alarm(); //指示灯与报警程序 Delay(1000);

/********延时kms********/ void Delay(uint k) { }

19

uint i,j; for(i=0;i

for(j=0;j<60;j++) { }

;

贵州大学课程设计

/********显示模块********/ /********LCD初始化********/ void init_LCD(void) { }

/********写指令数据到LCD********/ void LCD_Command(uchar LC,uchar BC) {

if(BC) ReadyLCD(); P0=LC;

LCD_RS=0; //选中指令寄存器 LCD_RW=0; //写模式 LCD_EN=1; _nop_(); _nop_(); _nop_();

20

P0=0; Delay(15);

LCD_Command(0x38,0); Delay(5);

LCD_Command(0x38,0); Delay(5);

LCD_Command(0x38,0); Delay(5);

LCD_Command(0x38,1); //8位数据传送,2行显示,5*7字形 LCD_Command(0x08,1); //关闭显示 LCD_Command(0x01,1); //清屏

LCD_Command(0x06,1); //显示光标右移设置

LCD_Command(0x0c,1); //显示屏打开,光标不显示不闪烁