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

📄 test.c

📁 STC12C5410AD 对 清达光电HG12864 控制程序 Keil环境
💻 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 + -