/******************************************************************************
* Project :LCD12864 Driver For STM32F10X
* Author :cch
* Version :V1.0
* Date :2009.11.4
* Description :STM32F103的12864液晶演示程序
********************************************************************************/
#include"stm32f10x_gpio.h"
#include"stm32f10x_rcc.h"
#include"12864header.h"
GPIO_InitTypeDef GPIO_InitStructure;
#define DELAY_2N 0
void Init_lcd(void)
{
//***************液晶接口初始化***********//
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOE, &GPIO_InitStructure);
//******************液晶初始化**************//
delay(0xFFFFF);
Sendcommand(0x30);//基本指令集
delay(0xAFFFF);
// Sendcommand(0x04);//点设定:显示字符/光标从左到右移位,DDRAM地址加1
//delay(3700);
Sendcommand(0x0c);//显示打开,光标关闭,反白关
delay(0xAFFFF);
Sendcommand(0x01);//清除显示内容
// Sendcommand(0x02); //DDRAM地址归位
}
/*--------------------------------------------------
函数说明:写命令到液晶
---------------------------------------------------*/
void Sendcommand(unsigned char cmd)
{
unsigned char i;
delay(2000);
for(i=0;i<5;i++)
{
set_sid();
clr_clk();
set_clk();
}
for(i=0;i<3;i++)
{
clr_sid();
clr_clk();
set_clk();
}
SendEData(cmd);
}
/*--------------------------------------------------
函数说明:写数据到液晶
---------------------------------------------------*/
void SendEData(unsigned char Data)
{
unsigned char q,w,i;
w=Data;
q=2;
set_cs() ;
while(q--)
{
for(i=0;i<4;i++)
{
w="Data"&0x80;
if(w==0x80)
set_sid();
else
clr_sid();
clr_clk();
set_clk();
Data<<=1;
}
for(i=0;i<4;i++)
{
clr_sid();
clr_clk();
set_clk();
}
}
clr_cs();
}
/*--------------------------------------------------
函数说明:发送地址符
---------------------------------------------------*/
void Sendaddress(unsigned char D)
{
unsigned char i;
for(i=0;i<5;i++)
{
set_sid();
clr_clk();
set_clk();
}
for(i=0;i<3;i++)
{
clr_sid();
clr_clk();
set_clk();
}
SendEData(D);
}//send Address
/*--------------------------------------------------
函数说明:写汉字
---------------------------------------------------*/
void Sendword(unsigned char *hanzi,unsigned char dizhi)
{
unsigned char *h;
unsigned char i;
Sendaddress(dizhi);
for(h=hanzi;*h!=0;h++)
{
for(i=0;i<5;i++)
{
set_sid();
clr_clk();
set_clk();
}
clr_sid();
clr_clk();
set_clk();
set_sid();
clr_clk();
set_clk();
clr_sid();
clr_clk();
set_clk();
SendEData(*h);
}
}//send hanzi
/*--------------------------------------------------
函数说明:写字符
---------------------------------------------------*/
void Sendsignal(unsigned char x,unsigned char dizhi2)
{
unsigned char i;
Sendaddress(dizhi2);
for(i=0;i<5;i++)
{
set_sid();
clr_clk();
set_clk();
}
clr_sid();
clr_clk();
set_clk();
set_sid();
clr_clk();
set_clk();
clr_sid();
clr_clk();
set_clk();
SendEData(x);
}
//========================================================
void delay(vu32 cnt)//延时函数
{
cnt <<= DELAY_2N;
while (cnt--);
}
//========================================================
文章评论(0条评论)
登录后参与讨论