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

📄 main.c

📁 12864 C程序,希望对大家有用
💻 C
字号:
#include<reg51.h>
#include<stdio.h>
#include<stdlib.h> 
#include<intrins.h>
#include<absacc.h>

#define busy 0x80 //用于检测LCD状态字中的Busy标识
#define RSaddr 0x1000
#define RWaddr 0x2000
#define CSaddr 0x0400
#define adtn   0xc8ff

#define wc 0xcfff
#define wd 0xdfff
#define rc 0xefff

unsigned char code homepage[] = {"www.ispdown.com"};
unsigned char code email[] = {"ispdown@21cn.com"};

//5ms延时
void delay5ms(void)
  {
	unsigned int TempCyc = 5552;
	while(TempCyc--);
  }
//----------------------------------
//400ms延时
void delay400ms(void)
  {
	unsigned char TempCycA = 5;
	unsigned int TempCycB;
	while(TempCycA--)
	{
	  TempCycB=7269;
	  while(TempCycB--);
	};
  }
//--------------------------------
void waitLcd()
  {
    char temp;
	bit flag=1;
	while(flag==1)
    {
      //temp=XBYTE[CSaddr+RWaddr+adtn];
	  temp=XBYTE[rc];
	  if (temp>>7==0) flag=0;
	  P1=temp;
	}
	P1=0xff;
  }
//---------------------------------
void WC_Lcd(bit isCheck,char c)
  {
   if (isCheck==1) waitLcd();
   //XBYTE[CSaddr+adtn]=c;
   XBYTE[wc]=c;
  }

//--------------------------------
void WD_Lcd(char c)
  {
    waitLcd();
	//XBYTE[CSaddr+RSaddr+adtn]=c;
	XBYTE[wd]=c;
  }

//----------------------------------
void LcdInit()
  {
    delay5ms();
	delay5ms();
	delay5ms();
	WC_Lcd(0,0x38); //三次显示模式设置,不检测忙信号
	delay5ms();
	WC_Lcd(0,0x38);
	delay5ms(); 
	WC_Lcd(0,0x38);
	delay5ms();

	WC_Lcd(1,0x38); //显示模式设置,开始要求每次检测忙信号
	WC_Lcd(1,0x08); //关闭显示
	WC_Lcd(1,0x01); //显示清屏
	WC_Lcd(1,0x06); // 显示光标移动设置
	WC_Lcd(1,0x0C); // 显示开及光标设置
  }	
//-------------------------------------------------------------------------
//按指定位置显示一个字符
void displayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
  {
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	if (Y) X |= 0x40; //当要显示第二行时地址码+0x40;
	X |= 0x80; //算出指令码
	WC_Lcd(0,X); //这里不检测忙信号,发送地址码
	WD_Lcd(DData);
}
//-------------------------------------------------------------------------------
//按指定位置显示一串字符
void displayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
  {
	unsigned char ListLength;

	ListLength = 0;
	Y &= 0x1;
	X &= 0xF; //限制X不能大于15,Y不能大于1
	while (DData[ListLength]>0x20) //若到达字串尾则退出
	{
	  if (X <= 0xF) //X坐标应小于0xF
	  {
	    displayOneChar(X, Y, DData[ListLength]); //显示单个字符
		ListLength++;
		X++;
	  }
	}
  }
//====================================
void main(void)
{
	delay400ms();
	LcdInit();

	displayListChar(0, 0, homepage);
	displayListChar(0, 1, email);

	while(1);
  }
//====================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -