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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3674|回復: 0
打印 上一主題 下一主題
收起左側

基于stm32F103驅動LCD12864的代碼(串行驅動)

[復制鏈接]
跳轉到指定樓層
樓主
ID:695711 發表于 2020-11-2 18:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
分享一篇基于STM32F103驅動LCD12864的代碼(串行驅動,親測可用)

說明一下:PSB管腳可以直接接地,CS可以直接接VCC,可以省出2個管腳

另外想要移植到51的話只需要更改一下管腳控制、定義和注意延時時間即可

代碼如下(.c文件):
#include "lcd12864.h"

//字符顯示RAM(隨機存儲器)地址(簡單理解就是顯示屏上字符顯示的位置)
uint8_t LCD12864_DDRAM_ADDR[4][8]=
{
{0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87},   //第一行
{0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97},  //第二行
{0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F},  //第三行
{0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F}  //第四行
};

void LCD12864_Init()
{
//SID、SCLK端口初始化
GPIO_InitTypeDef  GPIO_InitStructure;
CS_H;
PSB_L;

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  //時鐘使能

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6;  
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;   
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  GPIO_Init(GPIOB, &GPIO_InitStructure);


//LCD12864初始化基本流程
delay_ms(50);  //等待液晶自檢(延時>40ms)
LCD12864_Write(WRITE_CMD,0x30);//功能設定:選擇基本指令集  ,選擇8bit數據流
delay_us(200);   //延時>137us
LCD12864_Write(WRITE_CMD,0x0C);//開顯示
delay_us(200);   //延時>100us
LCD12864_Write(WRITE_CMD,0x01);//清除顯示,并且設定地址指針為00H
delay_ms(20);  //延時>10ms
LCD12864_Write(WRITE_CMD,0x06);//每次地址自動+1,初始化完成
}

void LCD12864_Send_Byte(char byte)//將一字節數據送到數據總線
{
uint8_t i;
for(i = 0; i < 8; i++)
{
  SCLK_L; //時鐘線置低
  if(byte & (0x80 >> i))//將所需要發送的byte一位一位的設置并發送
  {
   SID_H;
  }
    else
  {
    SID_L;
  }   
  SCLK_H; //裝載數據
}
}
void LCD12864_Write(uint8_t Mode,uint8_t CMDorDAT)
{
delay_ms(1);                                  //每次寫入數據或指令間隔大于1ms 便可不用寫忙狀態檢測
LCD12864_Send_Byte(Mode);                     //寫指令還是顯示數據
LCD12864_Send_Byte(0xF0 &  CMDorDAT);         //寫高四位(寫入的數據的高四位)
LCD12864_Send_Byte(0xF0 & (CMDorDAT << 4));   //寫低四位 (寫入的數據的低四位)
}
void LCD12864_Clear()
{
LCD12864_Write(WRITE_CMD, 0x01); //清屏指令
delay_ms(2);                 //延時以待液晶穩定【至少1.6ms】
}
void LCD12864_Display_Words(uint8_t x, uint8_t y, char *str) //顯示函數(x是行,y是列)
{
LCD12864_Write(WRITE_CMD, LCD12864_DDRAM_ADDR[x][y]); //設置顯示位置
while(*str!='\0')
{
  LCD12864_Write(WRITE_DAT, *str++);
}
}

/*************
寫入圖片需要的步驟
1.切換到擴充指令
2.關閉繪圖顯示功能
3.將垂直的坐標(Y)和水平位元組坐標(X)寫入CGRAM地址(先Y后X)
4.將圖片的字節數據寫入RAM中(先將高位D15-D8寫入再寫D7-D0)
5.打開繪圖顯示功能
6.切換回基本指令
**************/
void LCD_Display_Picture(uint8_t *img)
{
uint8_t x,y,i;
LCD12864_Write(WRITE_CMD,0x34); //切換到擴充指令
LCD12864_Write(WRITE_CMD,0x34); //關閉圖形顯示
for(i = 0; i < 1; i++)  //上下屏寫入
{  
  for(y=0;y<32;y++) //垂直Y寫32次  
  {      
   for(x=0;x<8;x++) //橫向X寫8次   
   {   
    LCD12864_Write(WRITE_CMD,0x80 + y)  ; //行地址  
    LCD12864_Write(WRITE_CMD,0x80 + x+i); //列地址   
    LCD12864_Write(WRITE_DAT,*img ++)   ; //寫高位字節數據 D15-D8   
    LCD12864_Write(WRITE_DAT,*img ++)   ; //寫低位字節數據 D7-D0  
   }   
  }
}
LCD12864_Write(WRITE_CMD,0x36);//打開圖形顯示
LCD12864_Write(WRITE_CMD,0x30);//切換回基本指令
}

(.h文件代碼)
#ifndef __LCD12864_H
#define __LCD12864_H
#include "sys.h"
#include "delay.h"
//PA0接SID,PA1接SCLK,CS接VCC(一直選通),PSB接GND(串行傳輸方式),RST接VCC(低電平復位),BLA接VCC,BLK接GND
#define SID_H   GPIO_SetBits(GPIOB,GPIO_Pin_3)
#define SID_L   GPIO_ResetBits(GPIOB,GPIO_Pin_3)
#define SCLK_H  GPIO_SetBits(GPIOB,GPIO_Pin_4)
#define SCLK_L  GPIO_ResetBits(GPIOB,GPIO_Pin_4)
#define CS_H  GPIO_SetBits(GPIOB,GPIO_Pin_5)
#define CS_L  GPIO_ResetBits(GPIOB,GPIO_Pin_5)
#define PSB_H  GPIO_SetBits(GPIOB,GPIO_Pin_6)
#define PSB_L  GPIO_ResetBits(GPIOB,GPIO_Pin_6)
#define WRITE_CMD 0xF8  //寫命令
#define WRITE_DAT 0xFA  //寫數據

void LCD12864_Init(void)             ;//初始化LCD
void LCD12864_Clear(void)            ;//清屏
void LCD12864_Send_Byte(char byte);//Byte發送函數
void LCD12864_Write(uint8_t Select,uint8_t CMDorDAT)           ; //MCU向LCD寫數據或者命令
void LCD12864_Display_Words(uint8_t x, uint8_t y, char *str);//字符(漢字)顯示函數
void LCD12864_Display_Picture(uint8_t *img)                    ;//圖片顯示函數
#endif


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 天天射网站 | 欧美一级欧美一级在线播放 | 国产一区二区三区精品久久久 | 国产在线视频在线观看 | 欧美成人aaa级毛片在线视频 | 日韩精品一区中文字幕 | 91福利影院 | 日韩一区中文字幕 | 国产精品免费观看 | 91在线视频免费观看 | 麻豆精品国产91久久久久久 | 欧美精品一区二区三区四区五区 | 色综合99 | 亚洲一区二区三区桃乃木香奈 | 成人在线观看免费视频 | 毛片的网址 | 精品久久久久久久 | 日韩在线观看 | 精品欧美一区二区三区免费观看 | 国产女人精品视频 | 欧美成人一区二区三区 | 中文字幕第一页在线 | 天天影视网天天综合色在线播放 | 青青草原综合久久大伊人精品 | 日韩国产精品一区二区三区 | 国产农村妇女精品一区 | 亚洲一区二区三区在线免费观看 | 久久久青草婷婷精品综合日韩 | 亚洲欧美激情四射 | 天天摸天天看 | 四季久久免费一区二区三区四区 | av色站| 免费特级黄毛片 | 亚洲精品一区二区在线 | 国产不卡在线播放 | 亚洲欧美一区二区三区国产精品 | 国产伊人精品 | 色一情一乱一伦一区二区三区 | 亚洲国产激情 | 日日av| 色欧美片视频在线观看 |