標題:
詳細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
* 功能 : 按照液晶的串口通信協(xié)議,發(fā)送數據
* 輸入 : 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()
* 功能 : 寫串口指令,分三字節(jié)寫完
* 輸入 : com
* 輸出 : 無
***********************************************************************/
void LCD12864_WriteCom(unsigned char com)
{
//LCD12864_CS = 1;//打開片選,高電平有效
LCD12864_SendByte(0xf8); //第一字節(jié)
LCD12864_SendByte(com & 0xf0); //第二字節(jié)
LCD12864_SendByte((com << 4) & 0xf0);//第三字節(jié)
}
/********************************************************************
* 名稱 : LCD12864_write_date()
* 功能 : 寫串口指令
* 輸入 : date
* 輸出 : 無
***********************************************************************/
void LCD12864_WriteDate(unsigned char date)
{
//LCD12864_CS = 1; //打開片選
LCD12864_SendByte(0xfa);//第一字節(jié)
LCD12864_SendByte(date & 0xf0); //第二字節(jié)
LCD12864_SendByte((date << 4) & 0xf0);//第三字節(jié)
}
/********************************************************************
* 名稱 : 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.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1