⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864l4.c

📁 温度传感器12864在DP51下的应用.
💻 C
字号:
#include"reg52.h"
#include"intrins.h"
#define uchar unsigned char
#define uint  unsigned char
/********************************
引脚定义
********************************/
sbit SID=P2^1;		      //串行数据输入端
sbit CLK=P2^3;			//串行输入时钟端
uchar fh[10]  = {'0','1','2','3','4','5','6','7','8','9'};
uchar temp[6];
uint a,b,c,d,e; 
void turn(unsigned long int cou)
{
      
       a=cou/10000;
       b=(cou%10000)/1000;
       c=(cou%10000%1000)/100;
       d=(cou%10000%1000%100)/10;
       e=cou%10000%1000%100%10;
       temp[0]=fh[a];
       temp[1]=fh[b];
       temp[2]=fh[c];
       temp[3]='.';
       temp[4]=fh[d];
       temp[5]=fh[e];
} 
       
       
       
       
       
       
       
/********************************************
*毫秒级标准延时
********************************************/
delay1ms(uint n)
{  uchar i;
   for(;n>=1;n--){for(i=0;i<245;i++){_nop_();}}
}
delay15us(uchar n)
{  _nop_();
   for(;n>1;n--){_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}
}
/********************************************
*液晶驱动程序
*串行传送一字节发送
********************************************/
void Sendbyte(uchar dat)
{uchar i;
 for(i=0;i<8;i++)
  {
    if((dat<<i)&0x80) SID=1;
    else SID=0;
      CLK=1;
      _nop_();
      CLK=0;

  }
}
/***********************************************
*写控制指令和显示数据
*
***********************************************/
void writelcd(uchar dat,uchar rs)	 //写指令加写数据的一个基本调用函数
{Sendbyte(0xf8+(rs<<1));             //rs<<1 显示数据,控制指令选择
 delay15us(1);
 Sendbyte(dat&0xf0);				 //高四位
 delay15us(1);
 Sendbyte((dat<<4)&0xf0);			 //低四位
 delay15us(1);
}
//控制指令
void SendCmd(uchar CMD)
{writelcd(CMD,0);                            //
 delay15us(60);					 //RS为0时 为F8
}                    //按照时序延时
//写显示数据
void SendDAT(uchar dat)
{writelcd(dat,1);	               //rs为1时 为FA,显示数据??
}
/**********************************************
*初始化LCD
**********************************************/
void inintLCD()
{
 SendCmd(0x30);//功能设置,一次送8位数据,基本指令集
 SendCmd(0x01);//0000,0001 清DDRAM    清显示,ddram=20h,ac=00h
 SendCmd(0x06);//显示设定,开显示,显示光标,当前显示位反白闪动 ,0x0d??
 SendCmd(0x0C);//0000,1100  整体显示,游标off,游标位置off.反白关
}

uchar lwm1[]=" 请按开始键检测 ";
uchar lwm2[]="  电压U   电流I N ";
uchar lwm3[]="H 000.00 000.00 L 000.00 000.00 ";
//uchar lwm4[]="MAX 00.00 00.00 ";
//uchar lwm5[]="MIN 00.00 00.00 ";
uchar key;
void  main()
{    uchar i;
     uint cou;
     inintLCD();
      key=1;
switch (key)
   { case 0:
         {  SendCmd(0x80);
            for(i=0;i<16;i++)
             {
           SendDAT(lwm1[i]);
             }
           //delay1ms(100);
	  }break;
     case 1:
         {  
            
            turn(95761);
            SendCmd(0x80);
            for(i=0;i<18;i++)
             {
           SendDAT(lwm2[i]);
             }
           SendCmd(0x89);
           for(i=0;i<6;i++)
              {
            SendDAT(temp[i]);
            }
           SendCmd(0x90);
		   for(i=0;i<32;i++)
             {
           SendDAT(lwm3[i]);
             }
           delay1ms(1000);
	 }break;
     default: break;
   }

   // while(1);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -