標(biāo)題:
LCD12864串行顯示程序。只需要2根線
[打印本頁]
作者:
騰飛的龍
時間:
2015-7-29 12:45
標(biāo)題:
LCD12864串行顯示程序。只需要2根線
/*****************************************************
功能:串行方式12864顯示程序。只需要2根線。
5腳的SID(數(shù)據(jù))和6腳CLK(時鐘)。1腳接地,2腳接VCC
3腳接可調(diào)電阻,15腳PSB接地,17腳RET接VCC,19腳
接VCC,20腳接地。其他引腳懸空
單片機:STC12C5608AD
晶振 :12M
*****************************************************/
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit SID=P2^0;
sbit SCLK=P2^1;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=210;y>0;y--);
}
/****************************************************
功能 : 按照液晶的串口通信協(xié)議,發(fā)送一個字節(jié)數(shù)據(jù)
*****************************************************/
void sendbyte(uchar zdata)
{
uint i;
for(i=0; i<8; i++)
{
if((zdata << i) & 0x80)
{
SID = 1;
}
else
{
SID = 0;
}
SCLK = 0;
delay(2);
SCLK = 1;
}
}
/******************************************************
功能 : 寫串口指令
***************************************************/
void write_com(uchar cmdcode)
{
sendbyte(0xf8);//寫串口指令
sendbyte(cmdcode & 0xf0);
sendbyte((cmdcode << 4) & 0xf0);
delay(2);
}
/*****************************************************
功能 : 寫串口數(shù)據(jù)
**************************************************/
void write_data(uchar Dispdata)
{
sendbyte(0xfa);//寫串口數(shù)據(jù)
sendbyte(Dispdata & 0xf0);
sendbyte((Dispdata << 4) & 0xf0);
delay(2);
}
/***************************************************
功能 : 初始化函數(shù)
******************************************************/
void lcdinit()
{
delay(200);
write_com(0x30);
delay(10);
write_com(0x0c);
write_com(0x01);
delay(10);
}
/**************************************************
功能 : 顯示字符串
****************************************************/
void hzkdis(uchar code *s)
{
while(*s>0)
{
write_data(*s);
s++;
delay(10);
}
}
/*************************************************
功能 : 顯示子函數(shù)
****************************************************/
void Test()
{
write_com(0x03);
delay(50);
write_com(0x81);
hzkdis(" MCU-51");
write_com(0x91);
hzkdis("************");
write_com(0x89);
hzkdis("我愛單片機!");
write_com(0x98);
hzkdis("************");
}
/*************************************************
--任意位置顯示一個漢字---
***************************************************/
void hz_disp(uchar line,uchar row,uchar hz1,uchar hz2)
{
//line行1-4,row列0-7,hz1漢字的高8位,hz2,漢字的低8位
write_com(0x01); // 清除顯示,并且設(shè)定地址指針為00H
switch(line)
{
case 1:{write_com(0x80+row);write_data(hz1);write_data(hz2);break;}
case 2:{write_com(0x90+row);write_data(hz1);write_data(hz2);break;}
case 3:{write_com(0x88+row);write_data(hz1);write_data(hz2);break;}
case 4:{write_com(0x98+row);write_data(hz1);write_data(hz2);break;}
}
}
/*************************************************
功能 : 主函數(shù)
******************************************************/
void Main()
{
lcdinit();
delay(10);
while(1)
{
// hz_disp(4,6,32,8) ;
write_com(0x98);
hzkdis("****大愛無疆**** ");
Test();
delay(5000);
}
}
復(fù)制代碼
作者:
xfy
時間:
2015-7-29 12:55
正學(xué)習(xí)中
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1