创客神器NanoPi
直播中

986149732

9年用户 249经验值
擅长:嵌入式技术
私信 关注
[经验]

玩转NanoPi2裸机编程——03-点亮12864液晶屏

以下内容转自 http://weibo.com/p/1001603917156952728534?feed_filter=1#_0

像玩51单片机一样玩NanoPi2——点亮12864液晶屏
2015年12月6日 20:54                                                                                                  阅读 62                                                                                                                                                                                                                                                                                                                                     

/*像玩51单片机一样玩NanoPi2
12864液晶屏显示
----by DikaVimenkey
功能:用NanoPi2来控制12864显示字母数字
12864的串行读写时序可以从百度文库中查找
本例程只是GPIO输出的使用
*/



#include"gpio.h"


/*
*片选信号RS                                      CS        = GPIOB28
*复位信号RST 低电平有效                        RST        = GPIOB27
*并行、串行选择信号PSB H并行 L串行        CH        =GPIOB31
*时钟信号E                                    SCLK          = GPIOB30
*数据信号R/W                                SID        =GPIOB29
*/

void delay(unsignedint t)
{
while(t--);
}
/*发送字节函数*/
voidsendbyte(unsigned char zdata)
{
unsignedint i;
for(i=0;i<8; i++)
{
if((zdata<< i) & 0x80)
{
//SID= 1;
GPIOBOUT|= (1<<29);
}
else
{
//SID= 0;
GPIOBOUT&= ~(1<<29);
}
//SCLK= 0;
//SCLK= 1;
GPIOBOUT&= ~(1<<30);
GPIOBOUT|= (1<<30);
}
}

/*写命令函数*/
voidwrite_com(unsigned char cmdcode)
{
//CS= 1;
GPIOBOUT|= (1<<28);
sendbyte(0xf8);
sendbyte(cmdcode& 0xf0);
sendbyte((cmdcode<< 4) & 0xf0);
delay(2000);
}

/*写数据函数*/
voidwrite_data(unsigned char Dispdata)
{
//CS= 1;
GPIOBOUT|= (1<<28);
sendbyte(0xfa);
sendbyte(Dispdata& 0xf0);
sendbyte((Dispdata<< 4) & 0xf0);
delay(20000);
}

/*LCD初始化*/
void lcdinit()
{  
//RST= 0;
GPIOBOUT&= ~(1<<27);
delay(10000);
//RST= 1;
GPIOBOUT|= (1<<27);
delay(20000);
write_com(0x30);
delay(5000);
write_com(0x0c);
delay(5000);
}


void hzkdis(unsignedchar *s)
{  
while(*s> 0)
    {
write_data(*s);
s++;
delay(500);
    }
}


void Test()
{  
write_com(0x03);
delay(500);   
write_com(0x81);
hzkdis("   HOT-51");
write_com(0x91);
hzkdis("NanoPi2");
write_com(0x89);
hzkdis("............");
write_com(0x98);
hzkdis("DikaVimenkey");
}
/*
*片选信号RS                                      CS        = GPIOB28
*复位信号RST 低电平有效                        RST        = GPIOB27
*并行、串行选择信号PSB H并行 L串行        CH        =GPIOB31
*时钟信号E                                    SCLK          = GPIOB30
*数据信号R/W                                SID        =GPIOB29
*/
void GPIOinit(void)
{
GPIOBALTFN1&=~((0X3<<22)|(0X3<<24)|(0X3<<26)|(0X3<<28)|(0X3<<30));
GPIOBALTFN1|= ((1<<22)|(1<<24)|(1<<26)|(1<<28)|(1<<30));
GPIOBOUTENB|= ((1<<27)|(1<<28)|(1<<29)|(1<<30)|(1<<31));;
}

void main()
{
/*GPIO初始化*/
GPIOinit();
//CH= 0;
GPIOBOUT&= ~(1<<31);
delay(10);
lcdinit();
delay(100);
while(1)
{
Test();
delay(50000);
}
}




回帖(1)

愚姬嗳霸王

2015-12-16 11:26:00
感谢楼主分享!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分