久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: stm32f103驅動lcd程序 [打印本頁]

作者: 南風溪    時間: 2017-4-11 18:03
標題: stm32f103驅動lcd程序
#include "stm32f10x.h"
#include"12864.h"
#include"delay.h"       
/************************************************************************************************
//FILE:液晶12864驅動程序
  //DATE:2012/07/11
************************************************************************************************/
/************************************************************************************************
@f_name: void LCD12864_InitPort(void)
@brief:         初始化硬件端口配置
@param:         None
@return: None
************************************************************************************************/
void LCD12864_InitPort(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;        //定義結構體               
       
        RCC_APB2PeriphClockCmd(GPIOCLK|RCC_APB2Periph_AFIO, ENABLE);  //使能功能復用IO時鐘,不開啟復用時鐘不能顯示
        GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable,ENABLE);    //把調試設置普通IO口

        GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_DAT;                //數據口配置成開漏輸出模式,此模式下讀輸入寄存器的值得到IO口狀態
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;   //開漏輸出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
        GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);    //IO口初始化函數(使能上述配置)

        GPIO_InitStructure.GPIO_Pin  = LCD_GPIO_CMD;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //推挽輸出   
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);

        GPIO_Init(LCD12864_GPIO , &GPIO_InitStructure);          //初始化IO口配置
        GPIO_Write(LCD12864_GPIO ,0xffff);          
}
/************************************************************************************************
@f_name: void NOP(void)
@brief:         延時函數
@param:         None
@return: None
************************************************************************************************/
void NOP(void)
{ u8 i;        for(i=0; i<100; i++); }
/************************************************************************************************
@f_name: u8 LCD12864_busy(void)
@brief:         檢測忙狀態
@param:         None
@return: None
************************************************************************************************/
u8 LCD12864_busy(void)
{
        u8 x;
        LCD_RS(0);
        LCD_RW(1);  
        LCD_EN(1);
        NOP();
        NOP();
        x=Text_Busy;
        LCD_EN(0);
        return x;
}
/************************************************************************************************
@f_name: void LCD12684_Wcmd(u8 dat)
@brief:         寫指令
@param:         u8 dat  輸入指令
@return: None
************************************************************************************************/
void LCD12684_Wcmd(u8 dat)
{
        while(LCD12864_busy()); //忙檢測
        LCD_RS(0);      
        LCD_RW(0);
        LCD_EN(0);
        NOP();
        NOP();
        LCD_WriteData(dat);          
        NOP();
        NOP();
        LCD_EN(1);
        NOP();
        NOP();
        LCD_EN(0);
}
/************************************************************************************************
@f_name: void LCD12684_Wcmd(u8 dat)
@brief:         寫數據
@param:         u8 dat 輸入數據
@return: None
************************************************************************************************/
void LCD12684_Wdat(u8 dat)
{
        while(LCD12864_busy()); //忙檢測
        LCD_RS(1);      
        LCD_RW(0);
        LCD_EN(0);
        NOP();
        NOP();
        LCD_WriteData(dat);         
        NOP();
        NOP();
        LCD_EN(1);
        NOP();
        NOP();
        LCD_EN(0);
}
/************************************************************************************************
@f_name: void LCD12864_Init(void)
@brief:         液晶初始化
@param:         None
@return: None
************************************************************************************************/
void LCD12864_Init(void)
{       
        LCD_PSB(1);   //并口方式   
        LCD_RST(0);   //液晶復位        低電平有效
    delay_ms(3);                  
    LCD_RST(1);          //置高電平等待復位
    delay_ms(3);

        LCD12684_Wcmd(0x34);    //擴充指令操作
    delay_ms(5);
    LCD12684_Wcmd(0x30);    //基本指令操作
    delay_ms(5);
    LCD12684_Wcmd(0x0c);   //顯示開,關光標
    delay_ms(5);
    LCD12684_Wcmd(0x01);   //清除LCD的顯示內容
    delay_ms(5);
}
/************************************************************************************************
@f_name: void LCD12864_Clr(void)
@brief:         清屏
@param:         None
@return: None
************************************************************************************************/
void LCD12864_Clr(void)
{
        LCD12684_Wcmd(0x34);   //擴充指令操作        “繪圖”
    delay_ms(5);
    LCD12684_Wcmd(0x30);    //基本指令操作
    delay_ms(5);
        LCD12684_Wcmd(0x01);   //清屏
    delay_ms(5);
}
/************************************************************************************************
@f_name: void LCD12864_Pos(u8 x,u8 y)
@brief:         設置顯示位置
@param:         u8 x:X軸    u8 y:Y軸  
@return: None
************************************************************************************************/
void LCD12864_Pos(u8 x,u8 y)
{
        u8  pos;
        if (x==1)                   {x=0x80;}          
        else if (x==2)         {x=0x90;}       
        else if (x==3)         {x=0x88;}         
        else if (x==4)   {x=0x98;}         
        else x=0x80;
        pos = x+y ;        
        LCD12684_Wcmd(pos);  //顯示地址  
}
/************************************************************************************************
@f_name: void LCD12864_PhotoDis(u8 *bmp)
@brief:         顯示圖形
@param:         u8 *bmp 圖形數組
@return: None
************************************************************************************************/
void LCD12864_PhotoDis(u8 *bmp)
{
        u8 i,j;
        LCD12684_Wcmd(0x34); //關閉圖形顯示
       
        for(i=0;i<32;i++)
        {
                LCD12684_Wcmd(0x80+i);  //先寫入水平坐標值
                LCD12684_Wcmd(0x80);      //寫入垂直坐標值
                for(j=0;j<16;j++)                     //再寫入兩個8位元的數據   
                LCD12684_Wdat(*bmp++);     
                delay_ms(1);
        }
       
        for(i=0;i<32;i++)
        {
                LCD12684_Wcmd(0x80+i);
                LCD12684_Wcmd(0x88);
                for(j=0;j<16;j++)         
                LCD12684_Wdat(*bmp++);   
                delay_ms(1);
        }
        LCD12684_Wcmd(0x36);       //寫完數據,開圖形顯示        
}
/************************************************************************************************
@f_name: void LCD_ShowString(u8 x,u8 y,const u8 *p)
@brief:         顯示字符串
@param:         u8 *bmp 圖形數組
@return: None
************************************************************************************************/
void LCD_ShowString(u8 x,u8 y,const u8 *p)
{
        u8 temp;
        if(x>4) {x=1;}
        if(y>4) {y=0;}
        LCD12864_Pos(x,y);
        temp=*p;
        while(temp!='\0')
        {
                LCD12684_Wdat(temp);
                temp=*(++p);
        }
}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 天天综合网天天综合色 | www.xxxx欧美 | 日本一卡精品视频免费 | 国产精品久久精品 | 欧美日韩国产一区二区三区 | 久草欧美视频 | 天堂一区 | 欧美 日韩 国产 成人 在线 91 | 日韩欧美国产一区二区三区 | 久久精品国产久精国产 | 免费黄色av| 亚洲一区二区国产 | 国产精品久久久久无码av | 澳门永久av免费网站 | 欧美一区不卡 | 国产二区视频 | 国内精品久久影院 | 国产91亚洲精品 | 日韩精品无码一区二区三区 | 亚洲精品日日夜夜 | 国产精品99久久久久 | 国产精品第2页 | 国产视频福利一区 | 午夜精品一区二区三区在线视频 | 日韩视频一区在线观看 | 国产精品高潮呻吟久久av黑人 | 中文字幕一级毛片视频 | 色频| 亚洲欧美日韩中文字幕一区二区三区 | 日韩中文一区二区三区 | 一区二区三区精品视频 | 国产亚洲欧美在线 | 中文字幕乱码亚洲精品一区 | 99国产欧美| 91高清免费| 成人av播放 | 久久999| 欧美视频在线免费 | 在线观看www高清视频 | 日本一二三区高清 | 蜜桃特黄a∨片免费观看 |