贵州大学课程设计
7.参考文献
[1] 潘新民,王燕芳. 微型计算机控制技术 [M]. 北京:电子工业出版社,2014 [2] 王迎旭. 单片机原理与应用 [M]. 北京:机械工业出版社,2013 [3] 康华光. 电子技术基础 [M]. 北京:高等教育出版社,2013
[4] 周正华,唐宁 RT1602C与FPGA接口技术 [J]. 中国科技信息,2008(10) [5] 廖琪梅,韩彬等. 基于DS18B20的温度测量仪 [J]. 国外电子元器件,2008(2)
16
贵州大学课程设计
附录一:程序清单
#include
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); //显示屏打开,光标不显示不闪烁