📄 test.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 WriteCmd(uchar);
void WriteData(uchar);
void Lcd_Init(void);
void chk_busy(void);
void Clear_Lcd(void);
void Char_Disp(uchar x, uchar y, char *p);
main()
{
uchar i;
char date[8] = {' ','a','b','c','d','e','f','g'};
char *p = date;
InitialCPU();
Lcd_Init();
Clear_Lcd();
chk_busy();
Char_Disp(0,0,"Monday");
Char_Disp(4,0,"星期一");
//Char_Disp(0,1,"Wednesday");
Char_Disp(1,1,"去电:");
Char_Disp(4,2,"星期四");
Char_Disp(1,3,"来电:");
Delay60ns(120);
while(1)
{
for(i=0;i<200;i++)
Delay60ns(2000);
WDT = !WDT;
}
}
/************************************/
/* 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 WriteCmd(uchar cmd)
{ uchar temp;
RS = 0;
RW = 1;
do
{
P1 = 0xFF;
E = 1;
temp = P1;
E = 0;
}while(temp&0x80); //等待空闲
RS = 0; //开始写命令
RW = 0;
P1 = cmd;
E = 1;
E = 0;
}
//**************
//写数据
//**************
void WriteData(uchar Dat)
{ uchar temp;
RS = 0;
RW = 1;
do
{
P1 = 0xFF;
E = 1;
temp = P1;
E = 0;
}while(temp&0x80); //等待空闲
RS = 1; //开始写数据
RW = 0;
P1 = Dat;
E = 1;
E = 0;
}
//**********
//LCD初始化
//**********
void Lcd_Init(void)
{
WriteCmd(0x30); //8bits,基本指令
WriteCmd(0x0c); //开显示,显游标,不反显
WriteCmd(0x01); //清屏
Delay60ns(200);
WriteCmd(0x06);
}
//**************
//忙检查
//**************
void chk_busy(void)
{ uchar temp;
RS = 0;
RW = 1;
do
{
P1 = 0xFF;
E = 1;
temp = P1;
E = 0;
}while(temp&0x80);
E = 0;
}
//**********
//清屏
//**********
void Clear_Lcd(void)
{
WriteCmd(0x01);
}
//**********
//显示汉字
//**********
void Char_Disp(unsigned char x, unsigned char y, char *p)
{
if(y == 0)
WriteCmd(0x80+x);
if(y == 1)
WriteCmd(0x90+x);
if(y == 2)
WriteCmd(0x88+x);
if(y == 3)
WriteCmd(0x98+x);
while(*p != 0)
WriteData(*p++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -