标题:
详细LCD12864串行或者并行数据传输51单片机程序(自编)
[打印本页]
作者:
晴枫
时间:
2017-7-28 10:39
标题:
详细LCD12864串行或者并行数据传输51单片机程序(自编)
详细LCD12864串行或者并行数据传输51单片机程序(自编)
0.png
(37.48 KB, 下载次数: 80)
下载附件
2017-7-28 15:53 上传
单片机串行源程序如下:
#include <reg52.h>
//LCD12864端口定义
//sbit LCD12864_CS = P3^5;//片选信号
sbit LCD12864_SID = P2^6;//数据信号
sbit LCD12864_SCLK = P2^7;//时钟信号
//sbit LCD12864_RST = P3^7;//复位信号
/********************************************************************
* 名称 : LCD12864_Delay()
* 功能 : 延时
* 输入 : z
* 输出 : 无
***********************************************************************/
void LCD12864_Delay(unsigned int z)
{
// uchar i;
// while(z --) for(i = 0;i < 120;i ++);
unsigned char a,b;
for(a=0; a<z; a++)
for(b=0; b<120; b++);
}
/********************************************************************
* 名称 : LCD12864_sendbyte
* 功能 : 按照液晶的串口通信协议,发送数据
* 输入 : zdata
* 输出 : 无
***********************************************************************/
void LCD12864_SendByte(unsigned char zdata)
{
unsigned char i;
for(i = 0;i < 8;i ++)
{
if((zdata<<i) & 0x80)
{
LCD12864_SID = 1;
}
else
{
LCD12864_SID = 0;
}
LCD12864_SCLK = 0;
LCD12864_SCLK = 1;
}
}
/********************************************************************
* 名称 : LCD12864_write_com()
* 功能 : 写串口指令,分三字节写完
* 输入 : com
* 输出 : 无
***********************************************************************/
void LCD12864_WriteCom(unsigned char com)
{
//LCD12864_CS = 1;//打开片选,高电平有效
LCD12864_SendByte(0xf8); //第一字节
LCD12864_SendByte(com & 0xf0); //第二字节
LCD12864_SendByte((com << 4) & 0xf0);//第三字节
}
/********************************************************************
* 名称 : LCD12864_write_date()
* 功能 : 写串口指令
* 输入 : date
* 输出 : 无
***********************************************************************/
void LCD12864_WriteDate(unsigned char date)
{
//LCD12864_CS = 1; //打开片选
LCD12864_SendByte(0xfa);//第一字节
LCD12864_SendByte(date & 0xf0); //第二字节
LCD12864_SendByte((date << 4) & 0xf0);//第三字节
}
/********************************************************************
* 名称 : LCD12864_init()
* 功能 : 12864初始化函数
* 输入 : com
* 输出 : 无
***********************************************************************/
void LCD12864_Init()
{
//LCD12864_RST = 0;
LCD12864_Delay(100);
//LCD12864_RST = 1;
LCD12864_Delay(100);
//LCD12864_WriteCom(0x34);//扩充指令集动作 ,绘图不显示
LCD12864_WriteCom(0x30);//基本指令集动作, 绘图不显示
LCD12864_WriteCom(0x0c);//开显示,不显示游标和游标位置
LCD12864_WriteCom(0x01);//清屏
LCD12864_Delay(100);
}
/********************************************************************
* 名称 :LCD_clean_scans()
* 功能 : 清屏
* 输入 : 无
* 输出 : 无
***********************************************************************/
void LCD12864_CleanScans()
{
LCD12864_WriteCom(0x01);//清屏
}
/********************************************************************
* 名称 : LCD12864_pos()
* 功能 : 设定显示位置
* 输入 : x,y
* 输出 : 无
***********************************************************************/
void LCD12864_SetPos(unsigned char x,unsigned char y)
{
unsigned char pos;
if(x == 0)
x = 0x80;
else if(x == 1)
x = 0x90;
else if(x == 2)
x = 0x88;
else if(x == 3)
x = 0x98;
pos = x + y;
LCD12864_WriteCom(pos);//显示地址
}
/********************************************************************
* 名称 : LCD12864_dishz()
* 功能 : 显示字符串
* 输入 : *s
* 输出 : 无
***********************************************************************/
void LCD12864_DisplayString(unsigned char *s)
{
unsigned char i = 0;
while(s[i]!='\0')
{
LCD12864_WriteDate(s[i]);
i++;
LCD12864_Delay(5);
}
}
void main()
{
while(1);
}
复制代码
所有资料51hei提供下载:
LCD12864.zip
(54.64 KB, 下载次数: 106)
2017-7-28 10:39 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
wgb
时间:
2018-4-26 19:31
又不能用传上来干嘛
作者:
徐佳伟
时间:
2019-5-11 01:46
我的显示不了,不知道为什么
作者:
zhl123321
时间:
2020-4-26 16:35
楼主代码并非直接可用,需要根据自己需要修改,小白慎下
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1