资源简介

用ds18b20测量温度并在带中文字库的12864液晶屏上显示,设置上限温度用于防火报警。

资源截图

代码片段和文件信息

/***************************lcd12864部分******************************/
#include 

#define uint  unsigned int
#define uchar unsigned char
#define x1    0x80
#define x2    0x88
#define y     0x80
#define comm  0
#define dat   1

sbit rs = P3^7;   //H=data; L=command;
sbit rw = P3^6;   //H=read; L=write;
sbit  e = P3^5;   //input enable;
sbit psb= P0^3;   //H=并口; L=串口;
sbit rst= P0^1;   //Reset Signal 低电平有效
//并行数据口接P2口
//还可以另外定义一个lcd busy bit可用于接指示灯等指示lcd忙状态

//部分函数声明:
void wr_lcd (uchar dat_commuchar content);
void chk_busy (void);
void delayus(uint us);
void delayms(uint ms);
/******************************************************************************************
* 函数名称    :delay
* 功能描述    :延时10*us 
******************************************************************************************/
void delayus(uint us)   //delay time
{
   while(us--);
}
/******************************************************************************************
* 函数名称    :delayms
* 功能描述    : 延时ms毫秒
******************************************************************************************/
void delayms(uint ms)
{
   uint ij;
   for(i=0;i   for(j=0;j<15;j++)
   delayus(1);
}
/******************************************************************************************
* 函数名称    :init_lcd
* 功能描述    : 初始化
******************************************************************************************/
void init_lcd(void)
{
   rst=1;
   psb=1;
   wr_lcd(comm0x30);  /*30---基本指令动作*/   
   wr_lcd(comm0x01);  /*清屏,地址指针指向00H*/
   wr_lcd(comm0x06);  /*光标的移动方向*/
   wr_lcd(comm0x0c);  /*开显示,关游标*/
}

/******************************************************************************************
* 函数名称:locate_lcd
* 功能描述: lcd定位显示
******************************************************************************************/
void locate_lcd(unsigned char poxunsigned char poy)//行数pox=1-4;每行
                                                   //有8个poy=1-8     
{   unsigned char data pos;
    if(pox&0x01) //第一、三行,pox=0x010x03
     {  
         pos=poy|0x80;
         if(pox&0x02) pos+=0x07;//pos=poy+0x80+0x07第三行
         else  pos-=0x01; //pos=poy+0x80-0x01第一行           
      
      }
    else
{
     pos=poy|0x90;
     if(pox&0x02) pos-=0x01;//pos=poy+0x90-0x01第二行
     else pos+=poy|0x07; //pos=poy+0x90+0x07第四行
}
     wr_lcd(commpos);
}
/******************************************************************************************
* 函数名称    :wr_lcd
* 功能描述    :写控制命令或显示数据
******************************************************************************************/
void wr_lcd(uchar dat_commuchar content)
{
   chk_busy();
   if(dat_comm)
    {
     rs=1;   //data
     rw=0;   //write
    }
   else 
    {
     rs=0;   //command
     rw=0;   //write
    }
   P2=content;   //output data or comm
   e=1;
   ;
   e=0;
}
/***********************************************************************

评论

共有 条评论