📄 lcd.c
字号:
#include <STC12C5410AD.h>
#define uchar unsigned char
#define uint unsigned int
sbit RS = P3^2;
sbit RW = P3^3;
sbit E = P3^4;
sbit WDT= P3^5;
void InitialCPU(void);
void Delay60ns(int);
void wr_InD(uchar,uchar);
void Lcd_Init(void);
void chk_busy(void);
void Clear_Lcd(void);
void Char_Disp(uchar x, uchar y, char *p);
main()
{ char date[8] = {' ','a','b','c','d','e','f','g'};
char *p = date;
InitialCPU();
Lcd_Init();
while(1)
{
//Clear_Lcd();
chk_busy();
WDT = !WDT;
Char_Disp(0,0,"星期一");
Char_Disp(0,1,"星期二");
Char_Disp(0,2,"星期三");
Char_Disp(0,3,"星期四");
Delay60ns(120);
}
}
/************************************/
/* CPU 初始化子程序 */
/************************************/
void InitialCPU(void)
{ //IDLE_CLK |=0x01;
//端口设置
P1M0 = 0x00; //设置P1 口为IO状态
P1M1 = 0x00;
P3M0 = 0x00; //设置P3 口为IO状态
P3M1 = 0x00;
WDT = 0;
}
//**************
//延时
//**************
void Delay60ns(int ns)
{
int i,j;
for (i=0;i<ns;i++);
{
for (j=0;j<4;j++);
}
}
//**************
//输入命令或数据
//**************
void wr_InD(unsigned char com_d,unsigned char content)
{
//chk_busy ();
//SoftDelay(8);
E = 1;
if (com_d)
{
RS = 0;
RW = 0; //写命令 RS=0, RW=0
}
else
{
RS = 1;
RW = 0; //写数据 RS=1, RW=0
}
P1 = content; //命令或数据内容
///E = 1; //使能 开始写数据或命令
Delay60ns(3);
E = 0; //不使能 写数据或命令完毕
}
//**********
//LCD初始化
//**********
void Lcd_Init(void)
{
wr_InD(1,0x30); //8bits,基本指令
wr_InD(1,0x0c); //开显示,显游标,不反显
wr_InD(1,0x01); //清屏
Delay60ns(200);
wr_InD(1,0x06);
}
//**************
//忙检查
//**************
void chk_busy(void)
{
RS = 0;
RW = 1;
while (1)
{
//Delay70ns(2);
E = 1;;
if ((P1 & 0x80) == 0) //判断DB7为1,则忙
break; //空闲时退出
//Delay70ns(2);
E = 0;
}
E = 0;
}
//**********
//清屏
//**********
void Clear_Lcd(void)
{
wr_InD(1,0x01);
}
//**********
//显示汉字
//**********
void Char_Disp(unsigned char x, unsigned char y, char *p)
{
if(y == 0)
wr_InD(1,(0x80+x));
if(y == 1)
wr_InD(1,(0x90+x));
if(y == 2)
wr_InD(1,(0x88+x));
if(y == 3)
wr_InD(1,(0x98+x));
while(*p != 0)
wr_InD(0,*p++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -