• 大小: 7KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签: C语言  

资源简介

项目名称是简易温度测量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);    /*显示开及光标设置*/
   }    
   
  /*------------------------------------------------

评论

共有 条评论