📄 我的液晶.c
字号:
#include <reg51.h>
#include <intrins.h>
#define DROPT P0
#define start 4
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit l1=P1^0;
bit m=0;
unsigned int A[6]={0,1,9,5,3,2};
unsigned int B1[6]={9,5,9,5,3,2};
void Add(unsigned int i);
void WriteCmd(unsigned char c) //送控制字子程序,不检测忙信号
{
RS=0;
RW=0;
DROPT=c;
E=1;
_nop_();
E=0;
}
void Delay(unsigned char j)//延时
{
unsigned char i;
for(;j>0;j--)
for(i=0;i<125;i++)
{
}
}
void WaitIdle()//正常读写之前检测LCD忙信号
{
unsigned int temp;
RS=0;
RW=1;
E=1;
for(temp=0;temp<500;temp++);
_nop_();
E=0;
}
void PreWriteCmd(unsigned char c) //送控制字
{
WaitIdle();
WriteCmd(c);
}
void LcdPos(unsigned char xpos,unsigned ypos)//更改光标位置
{
unsigned temp;
if( ypos==0)
temp=0x80+xpos;
else
temp=0xc0+xpos;
PreWriteCmd(temp);
}
void WriteWord(unsigned char c)
{
WaitIdle();
RS=1;
RW=0;
DROPT=c;
E=1;
_nop_();
_nop_();
E=0;
}
void WriteChar(unsigned char c,unsigned char xpos,unsigned ypos)
{//在指定位置显示字符
LcdPos(xpos,ypos);
WriteWord(c);
}
/*
void WriteString(unsigned char *s,unsigned char xpos,unsigned char ypos)
{//显示字符串,若指定的行显示不下,将余下字符串截断,不换行显示
unsigned char i=0;
if(*s==0)
return;
if(ypos>1)
{
WriteString("Error!",0,1);
}
else
{
while((*(s+i)!='\0')&&(xpos<=15))
{
WriteChar(*(s+i),xpos,ypos);
xpos++;
i++;
}
}
} */
void Initial(void)
{
Delay(200);//使用12M以下晶振不必修改必修改
PreWriteCmd(0x38);
PreWriteCmd(0x0c);
// PreWriteCmd(0x04);
}
void main(void)
{
char i;
Initial();
TMOD=0x61;
TH0=0xf7;
TL0=0x00;
TCON=0x10;
ET0=1;
EA=1;
LcdPos(start,0);
for(i=5;i>=0;i--)
{
WriteWord(A[i]+'0');
if(i==4||i==2)
WriteWord(':');
}
while(1);
}
timmer0()interrupt 1
{
static unsigned int t;
TF0=0;
TH0=0xf7;
TL0=0x00;
t++;
if( t%200==0)
{
m=~m;
l1=0;
LcdPos(start+5,0);
if(m==1)
WriteWord(' ');
else
WriteWord(':');
}
if(t==400)
{
t=0;
Add(0);
}
}
void Add(unsigned int i)
{
if(i>5)
return;
A[i]++;
LcdPos(start+(5-i)/2+(5-i),0);
if(i==4)
{
if(A[i]>9)
{
A[i]=0;
WriteWord('0');
Add(i+1);
return;
}
if(A[5]>1&&A[i]>B1[i])
{ A[i]=0;
WriteWord('0');
Add(i+1);
return;
}
}
else if(A[i]>B1[i])
{
A[i]=0;
WriteWord('0');
Add(i+1);
return;
}
WriteWord('0'+A[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -