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

📄 lcdshow.c

📁 含有大量的单片机代码
💻 C
字号:

/***************************************************************************/

#include <REG51.H>
#include <intrins.h>
#include "string.h"
//Port Definitions**********************************************************
sbit LcdRs  = P1^0;
sbit LcdRw  = P1^1;
sbit LcdEn  = P1^2;
sfr  DBPort = 0x80;  //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

sbit LcdLight   = DBPort^4;

void Delay1ms(unsigned int count)
{
 unsigned int i,j;
 for(i=0;i<count;i++)
 for(j=0;j<120;j++);
}
//内部等待函数**************************************************************************
unsigned char LCD_Wait(void)
{
 LcdRs=0;
 LcdRw=1; _nop_();
 LcdEn=1; _nop_();
 while(DBPort&0x80);  //或do{ACC=DBPort;} while(ACC_7==1); 忙信号??为1忙
 LcdEn=0;
 Delay1ms(1);
 return ACC;  
}
//向LCD写入命令或数据************************************************************
#define LCD_COMMAND   0x00      // Command
#define LCD_DATA   0x01         // Data
#define LCD_CLEAR_SCREEN 0x01   // 清屏
#define LCD_HOMING    0x02      // 光标返回原点
void LCD_Write(unsigned char style, unsigned char input)
{
 LcdRs=style;
 LcdRw=0;  _nop_();
 LcdEn=1;  _nop_();
 DBPort=input; _nop_();
 LcdEn=0;  _nop_();
 LCD_Wait(); 
}

//设置显示模式************************************************************
#define LCD_SHOW   0x04    //显示开
#define LCD_HIDE   0x00    //显示关   

#define LCD_CURSOR   0x02  //显示光标
#define LCD_NO_CURSOR  0x00    //无光标       

#define LCD_FLASH   0x01    //光标闪动
#define LCD_NO_FLASH  0x00    //光标不闪动

void LCD_SetDisplay(unsigned char DisplayMode)
{
 LCD_Write(LCD_COMMAND, 0x08|DisplayMode); 
}

//设置输入模式************************************************************
#define LCD_AC_UP   0x02
#define LCD_AC_DOWN   0x00      // default

#define LCD_MOVE   0x01      // 画面可平移
#define LCD_NO_MOVE   0x00      //default

void LCD_SetInput(unsigned char InputMode)
{
 LCD_Write(LCD_COMMAND, 0x04|InputMode);
}

//移动光标或屏幕************************************************************
#define LCD_CURSOR  0x02      
#define LCD_SCREEN  0x08
#define LCD_LEFT  0x00
#define LCD_RIGHT  0x04
void LCD_Move(unsigned char object, unsigned char direction)
{
 if(object==LCD_CURSOR)
  LCD_Write(LCD_COMMAND,0x10|direction);
 if(object==LCD_SCREEN)
  LCD_Write(LCD_COMMAND,0x18|direction);
}

//初始化LCD************************************************************
void LCD_Initial()
{
 LcdEn=0;
 Delay1ms(80);
 LCD_Write(LCD_COMMAND,0x38);           //8位数据端口,2行显示,5*7点阵
 Delay1ms(10);
 LCD_Write(LCD_COMMAND,0x38);
 Delay1ms(10);
 LCD_SetDisplay(LCD_SHOW|LCD_CURSOR);    //开启显示, 无光标
 //LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);          //清屏
 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
}

//************************************************************************
void GotoXY(unsigned char x, unsigned char y)//y是行 ,x是列
{
 if(y==0)
  LCD_Write(LCD_COMMAND,0x80|x);
 if(y==1)
  LCD_Write(LCD_COMMAND,0x80|(x-0x40));
}
void Print(unsigned char *str)
{
 while(*str!='\0')
 {
  LCD_Write(LCD_DATA,*str);
  str++;
 }
}
void LCD_LoadChar(unsigned char user[8], unsigned char place)
{
 unsigned char i;
 LCD_Write(LCD_COMMAND,0x40|(place*8));
 for(i=0; i<8; i++)
   LCD_Write(LCD_DATA,user[i]);
}
//************************************************************************
main()
{  
   //unsigned char str1[17];
   unsigned char str[]=" Six Boys ";
   unsigned char strlc[]="  Good Luck!  ";
   LCD_Initial();
   while(1)
   {
     GotoXY(0, 0);
     Print(str);
     if(strlen(str)>16) 
     Print(str+16);

	 GotoXY(0, 1);
     Print(strlc);
     if(strlen(strlc)>16) 
     Print(strlc+16);

     //LCD_LoadChar(str, 0);
   }

}



⌨️ 快捷键说明

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