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

📄 dddd.txt

📁 LCD的驱动,是一个很好的东西哦.我用了,很好用
💻 TXT
字号:
*描述:YM12864R-3带中文字库图形液晶驱动
*版本:V1.0
*控制器:ST7920
*通讯方式:串行方式
*编程:飞扬(学C语言8天写的)
**********************************************************/
#include <at89x52.h>
//引脚定义:
sbit  LCD_CS =P0^0; //LCD片选端
sbit  LCD_SID=P0^1; //LCD串行数据输入/输出端
sbit  LCD_CLK=P0^2; //LCD串行同步时钟,上升沿时读写SID数据.

//函数声明:
void LCD_SEND(unsigned char send_data);
unsigned char LCD_RECEIVE();
unsigned char LCD_READ_BF();
void LCD_WRITE_IR(unsigned char LCD_COMMAND);
void LCD_WRITE_DR(unsigned char LCD_DATA);
 
/**********************************************************
*LCD初始化函数
**********************************************************/
void LCD_INIT()
{
 LCD_WRITE_IR(0x30);
 LCD_WRITE_IR(0x0c);
 LCD_WRITE_IR(0x01);
 LCD_WRITE_IR(0x06);
}
/**********************************************************
*写指令到LCD函数
*名称:LCD_WRITE_IR
*入口参数:LCD_COMMAND (字符型--8位数据)
**********************************************************/
void LCD_WRITE_IR(unsigned char LCD_COMMAND)
{
 unsigned char temp_data; 
 LCD_CS = 0;    //拉低片选终止所有数据传送
 while(LCD_READ_BF()&0x80==1);//判忙
 LCD_CS = 1;    //拉高片选准备传送数据
 LCD_SEND(0xf8);    //发送写指令
 temp_data = LCD_COMMAND;
 temp_data = temp_data&0xf0;//屏蔽低4位(取出高4位) 
 LCD_SEND(temp_data);   //发送高4位
 temp_data = LCD_COMMAND;
 temp_data = temp_data<<4; //取低4位
 LCD_SEND(temp_data);  //发送低4位
 LCD_CS = 0;    //拉低片选终止所有数据传送
}
/**********************************************************
*写数据到LCD函数
*名称:LCD_WRITE_DR
*入口参数:LCD_DATA (字符型-8位)
**********************************************************/
void LCD_WRITE_DR(unsigned char LCD_DATA)
{
 unsigned char temp_data;  
 LCD_CS = 0;    //拉低片选终止所有数据传送
 while(LCD_READ_BF()&0x80==1);//判忙
 LCD_CS = 1;    //拉高片选准备传送数据
 LCD_SEND(0xfa);    //发送写数据指令
 temp_data = LCD_DATA;
 temp_data = temp_data&0xf0;//屏蔽低4位(取出高4位) 
 LCD_SEND(temp_data);   //发送高4位
 temp_data = LCD_DATA;
 temp_data = temp_data<<4; //取低4位
 LCD_SEND(temp_data);  //发送低4位
 LCD_CS = 0;    //拉低片选终止所有数据传送
}
/**********************************************************
*读取LCD忙碌标志(BF)的状态和地址计数器(AC)
*名称:LCD_READ_BF
**********************************************************/
unsigned char LCD_READ_BF()
{
 unsigned char i,temp_data; //
 LCD_CS = 1;    //拉高片选准备传送数据
 LCD_SEND(0xfc);    //发送读数据指令
 i = LCD_RECEIVE();   //读取数据高4位
 temp_data = LCD_RECEIVE(); //读取数据低4位
 LCD_CS = 0;    //拉低片选终止所有数据传送
 i = i&0xf0;    //取高4位(屏蔽低4位)
 temp_data = temp_data>>4; //取低4位
 temp_data = temp_data|i;  //组合成完整数据
 return (temp_data);
}

/**********************************************************
*LCD发送8BIT的数据(1个字节)
*名称:LCD_SEND
*入口:send_data
**********************************************************/
void LCD_SEND(unsigned char send_data)
{
 unsigned char i;
 for (i=8;i>0;i--)
  {
  LCD_CLK = 0;
  LCD_SID = send_data&0x80;//发送一位数据
  LCD_CLK = 1;    //拉高串行时钟端,锁存数据
  send_data = send_data<<1;
 }
}
/**********************************************************
*LCD接收8BIT数据(1个字节)
*名称:LCD_RECEIVE
*出口:receive_data
**********************************************************/
unsigned char LCD_RECEIVE()
{
 unsigned char i,receive_data;
 for (i=8;i>0;i--)
  {
  LCD_CLK = 0;
  receive_data = receive_data<<1;
  LCD_CLK = 1;
  receive_data = receive_data|LCD_SID;
  }
 return(receive_data);
}

⌨️ 快捷键说明

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