header
×
单片机 > 单片机程序设计 > 详情

1604液晶屏输入输出C51源程序

发布时间:2020-06-19 发布时间:
|

#include
#include "INC\LCD1604.H"


sfr  LCD_INTER = 0x80;    //数据总线接口
 sbit LCDBUSY=LCD_INTER^7;  //标志位

sfr  LCD_CONTROL = 0xA0;   //数据总线接口
 sbit LCDRS=LCD_CONTROL^0;  //数据、指令选择
 sbit LCDRW=LCD_CONTROL^1;  //读写选择
 sbit LCDE =LCD_CONTROL^2;  //使能

 

/******************************自定义字符*******************************/
unsigned char code Symbol[40] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
         0x00,0x00,0x04,0x0E,0x1F,0x00,0x00,0x00, //UP 01H 
         0x00,0x00,0x1F,0x0E,0x04,0x00,0x00,0x00, //DOWN 02H
         0x00,0x02,0x06,0x0E,0x06,0x02,0x00,0x00, //LEFT 03H
         0x00,0x08,0x0C,0x0E,0x0C,0x08,0x00,0x00}; //RIGHT 04H          
/***********************************************************************/
/*名称: LCD_WriteCmd()
/*说明: 向LCD送入1字节指令数据
/*输入: cmd 要输入的指令数据 
/*输出: 无
/***********************************************************************/ 
void LCD_WriteCmd(unsigned char cmd)

 bit BF;
 do
 {
  LCDRS=0;
  LCDRW=1;
  LCD_INTER = 0xFF;
  LCDE=1;
  BF=LCDBUSY;
  LCDE=0;
 }
 while(BF==1);

 LCDE=0;
 LCDRS=0;
 LCDRW=0;
 LCD_INTER = cmd;
 LCDE=1; 
 LCDE=0;
 LCDRS=1;
 LCDRW=1;
 LCD_INTER = 0xFF;
}
/***********************************************************************/
/*名称: LCD_SendData()
/*说明: 向LCD送入1字节数据
/*输入: Word 要输入的数据 
/*输出: 无 
/***********************************************************************/
void LCD_SendData(unsigned char Word)
{   
 bit BF;
 do
 {
  LCDRS=0;
  LCDRW=1;
  LCD_INTER = 0xFF;
  LCDE=1;
  BF=LCDBUSY;
  LCDE=0;
 }
 while(BF==1);

 LCDE=0;
 LCDRS=1;
 LCDRW=0;
 LCD_INTER = Word;
 LCDE=1;   
 LCDE=0;
 LCDRS=1;
 LCDRW=1;
 LCD_INTER = 0xFF;
}

/**********************************************************************/
/*名称: LCD_Init()
/*说明: LCD初始化程序
/*输入: 无
/*输出: 无
/**********************************************************************/ 
void LCD_Init(void)
{
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(0x30);
 LCD_WriteCmd(SET_FUCTION);
 LCD_WriteCmd(CLEAR_WINDOW);
 LCD_WriteCmd(RESET_AC);
 LCD_WriteCmd(INPUT_MODE);
 LCD_WriteCmd(DISPLAY_CON);
 LCD_WriteCmd(CLEAR_WINDOW);
}

/**********************************************************************/
/*名称: LCD_WriteCGRam()
/*说明: 写入自定义字符
/*输入: 无
/*输出: 无
/**********************************************************************/
void LCD_WriteCGRam(void)
{
 unsigned int i;
 LCD_WriteCmd(0x40);
 for(i=0;i<40;i++)
 {
  LCD_SendData(Symbol[i]);
 }
 LCD_WriteCmd(CLEAR_WINDOW);
}
/**********************************************************************/
/*名称: LCD_ByteWrite()
/*说明: LCD单字符输出程序
/*输入: pos  要输出的位置
/*  byte 要输出的字符
/*输出: 无
/**********************************************************************/
void LCD_ByteWrite(unsigned char pos,unsigned char byte)
{
 LCD_WriteCmd(pos);
 LCD_SendData(byte); 
}

/**********************************************************************/
/*名称: LCD_StrNWrite()
/*说明: LCD指定长度字符串输出程序
/*输入: pos  要输出的位置
/*  *str  字符串指针
/*  length 字符串长度 
/*输出: 无
/**********************************************************************/
void LCD_StrNWrite(unsigned char pos,unsigned char *str,unsigned char length)
{
 unsigned char i;
 LCD_WriteCmd(pos);
 for(i=0;i { 
  LCD_SendData(*(str+i));
 }
}

/**********************************************************************/
/*名称: LCD_StrWrite()
/*说明: LCD字符串输出程序
/*输入: pos  要输出的位置
/*  *str  字符串指针 
/*输出: 无
/**********************************************************************/
void LCD_StrWrite(unsigned char pos,unsigned char *str)
{
 unsigned char i;
 LCD_WriteCmd(pos);
 for(i=0;i { 
  LCD_SendData(*(str+i));
 }
}     


关键字:1604液晶屏  输入输出  C51源程序 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于STM32F103RCT6的电脑鼠控制系统的设计
footer