📄 12864l4.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 + -