yejin.c

来自「这是一段开始学单片机时写的LCD程序」· C语言 代码 · 共 106 行

C
106
字号
#include<reg51.h>		//包含常用头文件
#include<stdio.h>
#include<intrins.h>
#include<absacc.h>
#define uchar unsigned char
void LCD_INIT(void);
void LCD_DISPLAY_STR(uchar x,uchar y,char *DATA);
void LCD_CLR(uchar y);

int cnt;

main()
{
TMOD=0X22;
TH0=0X06;
TL0=0X06;
TR0=1;
ET0=1;
EA=1;
LCD_INIT();
LCD_DISPLAY_STR(1,1,PLAY_DESIGNER);
LCD_DISPLAY_STR(1,2,PLAY_NAME);
while(1);
}


void timer0(void) interrupt 1 using 0
{
cnt++;
if(cnt==8000)
	{
	LCD_CLR(1);
	LCD_CLR(2);
	LCD_DISPLAY_STR(1,1,PLAY_TEL);
	LCD_DISPLAY_STR(1,2,PLAY_CODE_TEL);
	}
if(cnt==16000)
	{
	LCD_CLR(1);
	LCD_CLR(2);
	LCD_DISPLAY_STR(1,1,PLAY_EMAIN);
	LCD_DISPLAY_STR(1,2,PLAY_EMAIN1);
	}
if(cnt==24000)
	{
	cnt=0;
	LCD_CLR(1);
	LCD_CLR(2);
	LCD_DISPLAY_STR(1,1,PLAY_DESIGNER);
	LCD_DISPLAY_STR(1,2,PLAY_NAME);
	}
}
void LCD_DISPLAY_STR(uchar x,uchar y,char *DATA)
	{
	if(y==1)
		{
		if(x<(16+1))					//判断显示位置是否超出第一行
		  {
		  LCD_SEND_COMMAND(LCD_LINE1-1+x);		//发送命令
		  for(;x<(16+1)&&*DATA!='\0';x++)		
			{
			LCD_SEND_DATA(*DATA++);			//发送数据
			}
		  if(*DATA!='\0')				//判断是否发送完毕
			{
			x=1;
			y=2;					//未发送完毕转第二行显示
			}
		  }
		}
		if(y==2)					
		  {
		  LCD_SEND_COMMAND(LCD_LINE2-1+x);
		  for(;x<(16+1)&&*DATA!='\0';x++)
			{
			LCD_SEND_DATA(*DATA++);
			}
		  }
	}


























⌨️ 快捷键说明

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