資源簡介
項目名稱是簡易溫度測量C語言編程,利用C語言編寫控制程序,控制溫度傳感器檢測溫度,并在液晶屏上顯示溫度。
代碼片段和文件信息
???#include?
#include
sbit?RS?=?P1^2;???//定義端口?
sbit?RW?=?P1^1;
sbit?EN?=?P1^0;
sbit?DQ=P1^6;
sbit?FMQ=P1^5;
sbit?SCL=?P3^6;
sbit?SDA=?P3^7;
sbit?P22=P2^2;?//將?P14位定義為?P1.4引腳
sbit?P23=P2^3;?//將?P15位定義為?P1.5引腳
sbit?P24=P2^4;?//將?P16位定義為?P1.6引腳
sbit?P25=P2^5;?//將?P17位定義為?P1.7引腳 ???
#define?RS_CLR?RS=0?
#define?RS_SET?RS=1
#define?RW_CLR?RW=0?
#define?RW_SET?RW=1?
#define?EN_CLR?EN=0
#define?EN_SET?EN=1
#define?DataPort?P0
#define?uint?unsigned?int
#define?uchar?unsigned?char
?typedef?unsigned?int?u16; ??//對數據類型進行聲明定義
uchar?key;
uchar?data?b[8];
int?num1=50;//上限溫度定義
int?num2=20; ?//下限溫度定義
int?num3=50;//上限溫度定義
int?num4=10; ?//下限溫度定義?
??/*----------------------------------------------
??????????????延時函數
------------------------------------------------*/
void?DelayUs2x(unsigned?char?t)
{???
?while(t--);
}
void?DelayMs(unsigned?char?t)
{
??while(t--)
?{
?????//大致延時1mS
?????DelayUs2x(245);
?DelayUs2x(245);
?}
}
/*----------------------------------------------
??????????????LCD液晶顯示程序
------------------------------------------------*/
?bit?LCD_Check_Busy(void)????//判忙函數
?{?
???DataPort=?0xFF;?
???RS_CLR;?
???RW_SET;?
???EN_CLR;?
???_nop_();?
???EN_SET;
???return?(bit)(DataPort?&?0x80);
?}
/*****************寫入命令函數******************/
?void?LCD_Write_Com(unsigned?char?com)?
?{??
???while(LCD_Check_Busy());?//忙則等待
???RS_CLR;?
???RW_CLR;?
???EN_SET;?
???DataPort=?com;?
???_nop_();?
???EN_CLR;
?}
/******************寫入數據函數******************/
?void?LCD_Write_Data(unsigned?char?Data)?
?{?
???while(LCD_Check_Busy());?//忙則等待
???RS_SET;?
???RW_CLR;?
???EN_SET;?
???DataPort=?Data;?
???_nop_();
???EN_CLR;
?}
/******************清屏函數***********************/
?void?LCD_Clear(void)?
?{?
?LCD_Write_Com(0x01);?
?DelayMs(5);
?}
/************寫入字符串函數************************/
?void?LCD_Write_String(unsigned?char?xunsigned?char?yunsigned?char?*s)?
?{?????
?if?(y?==?0)?
? {?????
?LCD_Write_Com(0x80?+?x);?????//表示第一行
? }
?else?
? {??????
? LCD_Write_Com(0xC0?+?x);??????//表示第二行
? }????????
?while?(*s)?
? {?????
?LCD_Write_Data(?*s);?????
?s?++;?????
? }
?}
/*******************寫入字符函數?*******************/?
?void?LCD_Write_Char(unsigned?char?xunsigned?char?yunsigned?char?Data)?
?{?????
?if?(y?==?0)?
? {?????
? LCD_Write_Com(0x80?+?x);?????
? }????
?else?
? {?????
? LCD_Write_Com(0xC0?+?x);?????
? }????????
?LCD_Write_Data(?Data);??
?}
/**************?LCD初始化函數?**************/
??void?LCD_Init(void)?
?{
???LCD_Write_Com(0x38);????/*顯示模式設置*/?
???DelayMs(5);?
???LCD_Write_Com(0x38);?
???DelayMs(5);?
???LCD_Write_Com(0x38);?
???DelayMs(5);?
???LCD_Write_Com(0x38);??
???LCD_Write_Com(0x08);????/*顯示關閉*/?
???LCD_Write_Com(0x01);????/*顯示清屏*/?
???LCD_Write_Com(0x06);????/*顯示光標移動設置*/?
???DelayMs(5);?
???LCD_Write_Com(0x0C);????/*顯示開及光標設置*/
???}????
? ?
??/*------------------------------------------------
評論
共有 條評論