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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2656|回復: 23
收起左側

LCD12864顯示不清晰,是什么原因,小白求教

  [復制鏈接]
ID:993578 發表于 2024-3-28 14:51 | 顯示全部樓層 |閱讀模式

圖1

圖1
51hei圖片_20240328144843.jpg
求教LCD12864如何調節 代碼如下:.h文件》》

#ifndef __lcd12864_H_
#define __lcd12864_H_

#include "sys.h"

#define WRITE_CMD 0xF8 // 寫命令
#define WRITE_DAT 0xFA // 寫數據

// 接口(SID: PB1  SCLK: PB0)
#define SID PBout(9)
#define SCLK PBout(8)

void lcd_GPIO_init(void);
void Lcd_Init(void);

void SendByte(u8 Dbyte);
void LCD_Clear(void);
void LCD_Display_Words(uint8_t x, uint8_t y, uint8_t *str);
void LCD_Display_Picture(uint8_t *img);

void Lcd_WriteData(u8 Dat);
void Lcd_WriteCmd(u8 Cmd);

#endif



.c》》
#include "lcd.H"
#include "delay.h"

/*!
*  @brief      GPIO_init
*  @since      v1.0
*  @param  None
*/

void lcd_GPIO_init()
{

        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能PB,PE端口時鐘

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_8; // LED0-->PB.5 端口配置
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;           // 推挽輸出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;           // IO口速度為50MHz

        GPIO_Init(GPIOB, &GPIO_InitStructure); // 根據設定參數初始化GPIOB.5
        // GPIO_SetBits(GPIOB, GPIO_Pin_5);           // PB.5 輸出高
        SID = 1;
        SCLK = 1;
}

/* 字符顯示RAM地址    4行8列 */
u8 LCD_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}  // 第四行
};

/*!
*  @brief      LCD串行發送一個字節
*  @since      v1.0
*  @param  byte   寫入字節
*  @author     Z小旋
*/
void SendByte(u8 byte)
{
        u8 i;
        for (i = 0; i < 8; i++)
        {
                if ((byte << i) & 0x80) // 0x80(1000 0000)  只會保留最高位
                {
                        SID = 1; // 引腳輸出高電平,代表發送1
                }
                else
                {
                        SID = 0; // 引腳輸出低電平,代表發送0
                }
                /*或
                        SID =        (Dbyte << i) & 0x80;

                        上面那樣為了方便理解
                */
                SCLK = 0;         // 時鐘線置低  允許SID變化
                delay_us(5); // 延時使數據寫入
                SCLK = 1;         // 拉高時鐘,讓從機讀SID
        }
}

/*!
*  @brief      LCD寫指令
*  @since      v1.0
*  @param  Cmd   要寫入的指令
*  @author     Z小旋
*/
void Lcd_WriteCmd(u8 Cmd)
{
        delay_ms(1);                  // 由于我們沒有寫LCD正忙的檢測,所以直接延時1ms,使每次寫入數據或指令間隔大于1ms 便可不用寫忙狀態檢測
        SendByte(WRITE_CMD);  // 11111,RW(0),RS(0),0
        SendByte(0xf0 & Cmd); // 高四位
        SendByte(Cmd << 4);          // 低四位(先執行<<)
}

/*!
*  @brief      LCD寫數據
*  @since      v1.0
*  @param  Dat   要寫入的數據
*  @author     Z小旋
*/
void Lcd_WriteData(u8 Dat)
{
        delay_ms(1);
        SendByte(WRITE_DAT);  // 11111,RW(0),RS(1),0
        SendByte(0xf0 & Dat); // 高四位
        SendByte(Dat << 4);          // 低四位(先執行<<)
}
/*!
*  @brief      LCD初始化
*  @since      v1.0
*  @param  None
*  @author     Z小旋
*/
void Lcd_Init(void)
{
        delay_ms(50);                // 等待液晶自檢(延時>40ms)
        Lcd_WriteCmd(0x30); // 功能設定:選擇基本指令集
        delay_ms(1);                // 延時>100us
        Lcd_WriteCmd(0x30); // 功能設定:選擇8bit數據流
        delay_ms(1);                // 延時>37us
        Lcd_WriteCmd(0x0c); // 開顯示
        delay_ms(1);                // 延時>100us
        Lcd_WriteCmd(0x01); // 清除顯示,并且設定地址指針為00H
        delay_ms(30);                // 延時>10ms
        Lcd_WriteCmd(0x06); // 進入設定點,初始化完成
}

/*!
*  @brief      顯示字符或漢字
*  @since      v1.0
*  @param  x: row(0~3)
*  @param  y: line(0~7)
*  @param         str: 要顯示的字符或漢字
*  @author     Z小旋
*/
void LCD_Display_Words(uint8_t x, uint8_t y, uint8_t *str)
{
        Lcd_WriteCmd(LCD_addr[x][y]); // 寫初始光標位置
        while (*str > 0)
        {
                Lcd_WriteData(*str); // 寫數據
                str++;
        }
}
/*!
*  @brief      顯示圖片
*  @since      v1.0
*  @param  *pic   圖片地址
*  @author
*/
void LCD_Display_Picture(uint8_t *img)
{
        uint8_t x, y, i;
        Lcd_WriteCmd(0x34);                // 切換到擴充指令
        Lcd_WriteCmd(0x34);                // 關閉圖形顯示
        for (i = 0; i < 1; i++) // 上下屏寫入
        {
                for (y = 0; y < 32; y++) // 垂直Y寫32次
                {
                        for (x = 0; x < 8; x++) // 橫向X寫8次
                        {
                                Lcd_WriteCmd(0x80 + y);                // 行地址
                                Lcd_WriteCmd(0x80 + x + i); // 列地址
                                Lcd_WriteData(*img++);                // 寫高位字節數據 D15-D8
                                Lcd_WriteData(*img++);                // 寫低位字節數據 D7-D0
                        }
                }
        }
        Lcd_WriteCmd(0x36); // 打開圖形顯示
        Lcd_WriteCmd(0x30); // 切換回基本指令
}
/*!
*  @brief      清屏函數
*  @since      v1.0
*  @param  None
*  @author     Z小旋
*/
void LCD_Clear(void)
{
        Lcd_WriteCmd(0x01); // 清屏指令
        delay_ms(2);                // 延時以待液晶穩定【至少1.6ms】
}


main》》

#include "stm32f10x.h"
#include "sys.h"
#include "lcd.h"
#include "delay.h"
#include "usart.h"
#include "adc.h"

int main(void)
{
    uart_init(115200);
    delay_init();
    lcd_GPIO_init();
    Lcd_Init();

    while (1) {
        /*漢字顯示*/
        LCD_Display_Words(0, 0, "清時明月漢時關");
        LCD_Display_Words(1, 0, "萬里長征人未還");
        LCD_Display_Words(2, 0, "但使龍城飛將在");
        LCD_Display_Words(3, 0, "不教胡馬度陰山");
    }
}


回復

使用道具 舉報

ID:993578 發表于 2024-4-1 15:14 | 顯示全部樓層
VO口接了一個電位器,調整了下,顯示正常了,感謝各位
回復

使用道具 舉報

ID:149451 發表于 2024-3-28 16:01 | 顯示全部樓層
調節負壓,使對比度滿意為止。另背光如果暗,那得換背光板
回復

使用道具 舉報

ID:540100 發表于 2024-3-28 16:03 | 顯示全部樓層
液晶屏對比度過高,在屏背部找一個金屬電位器調節一下
回復

使用道具 舉報

ID:866313 發表于 2024-3-28 16:21 | 顯示全部樓層
模組背面一般有一個調節液晶偏壓的電位器,可以使用一字螺絲批緩慢調節、邊調節邊從液晶的可視角度(好像手冊中有說明)觀察,不同角度觀察到的顯示效果是不同的,實在不清楚詢問一下模組的賣家最佳可視角度是什么再來調節偏壓 LCD12864-LCD-Screen-Display.jpg

回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:25 | 顯示全部樓層
winwor 發表于 2024-3-28 16:03
液晶屏對比度過高,在屏背部找一個金屬電位器調節一下

沒有金屬電位器,這個是需要買一個么
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:27 | 顯示全部樓層
winwor 發表于 2024-3-28 16:03
液晶屏對比度過高,在屏背部找一個金屬電位器調節一下

背部有一個旋鈕,我用螺絲刀轉動,會清晰,但是旁邊的兩個電阻以及那個旋鈕特別燙,我買的這個lcd12864 三十多元,是不是太便宜了,大概要多少錢的好用些?
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:30 | 顯示全部樓層
cedtek 發表于 2024-3-28 16:21
模組背面一般有一個調節液晶偏壓的電位器,可以使用一字螺絲批緩慢調節、邊調節邊從液晶的可視角度(好像手 ...

我調節完之后,有變清晰,但是旁邊的兩個電阻以及這個旋鈕特別燙,上電就燙,是不是lcd12864有問題,我tb上三十多元買的,另外這個一般多少錢的lcd12864好用呢
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:31 | 顯示全部樓層
背部有一個旋鈕,我用螺絲刀轉動,會清晰,但是旁邊的兩個電阻以及那個旋鈕特別燙,這是什么原因呢,我買的這個lcd12864 三十多元,是不是太便宜了,大概要多少錢的好用些?
回復

使用道具 舉報

ID:88256 發表于 2024-3-28 16:34 | 顯示全部樓層
a1592608215 發表于 2024-3-28 16:25
沒有金屬電位器,這個是需要買一個么

很多的液晶屏對比度調節需要外接,取一個10K的微調電阻,中心腳接液晶屏的VO引腳,兩端直接并在液晶屏的電源上,讓VO有0到5V的可調電壓即可(有個別的液晶屏還需要負的電壓)。
回復

使用道具 舉報

ID:161164 發表于 2024-3-28 16:45 | 顯示全部樓層
a1592608215 發表于 2024-3-28 16:31
背部有一個旋鈕,我用螺絲刀轉動,會清晰,但是旁邊的兩個電阻以及那個旋鈕特別燙,這是什么原因呢,我買的 ...

太貴了
回復

使用道具 舉報

ID:69038 發表于 2024-3-28 16:50 | 顯示全部樓層
如要沒有特定需求,不如買彩屏。分辯率更高,顯示更好,能顯示的內容也更多,價格還更低。
回復

使用道具 舉報

ID:961114 發表于 2024-3-28 16:51 | 顯示全部樓層
下圖 P2.4控制顯示外設 OLED12864復位,
左邊的 SPI-OLED12864有拉出外界控制復位PIN, 正確思維,顯示只管降成本,STC保證系統可靠就行
中間的 I2C-OLED12864有拉出外界控制復位PIN, 正確思維,顯示只管降成本,STC保證系統可靠就行
右邊的不將復位受控管腳引出的 I2C-OLED12864某一個寶應用工程師是太稚
1.jpg
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:57 | 顯示全部樓層

一般買多少錢的?12864LCD帶中文字庫
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 16:58 | 顯示全部樓層
hhdsdy 發表于 2024-3-28 16:34
很多的液晶屏對比度調節需要外接,取一個10K的微調電阻,中心腳接液晶屏的VO引腳,兩端直接并在液晶屏的 ...

我沒有微調電阻,可以用普通電阻替代么
回復

使用道具 舉報

ID:993578 發表于 2024-3-28 17:07 | 顯示全部樓層
zhuls 發表于 2024-3-28 16:50
如要沒有特定需求,不如買彩屏。分辯率更高,顯示更好,能顯示的內容也更多,價格還更低。

大佬彩屏可以推薦個型號么,我是stm32f103c8t6
回復

使用道具 舉報

ID:195496 發表于 2024-3-28 17:52 | 顯示全部樓層
對比度過重了,要調整一下
回復

使用道具 舉報

ID:149451 發表于 2024-3-29 07:19 | 顯示全部樓層
a1592608215 發表于 2024-3-28 16:31
背部有一個旋鈕,我用螺絲刀轉動,會清晰,但是旁邊的兩個電阻以及那個旋鈕特別燙,這是什么原因呢,我買的 ...

三十幾還便宜,您可真豪橫!也就幾元的東西
回復

使用道具 舉報

ID:517951 發表于 2024-3-29 08:00 | 顯示全部樓層
a1592608215 發表于 2024-3-28 16:58
我沒有微調電阻,可以用普通電阻替代么

可以先用電位器調整負壓, 調到合適的值以后, 再換用對應的普通電阻就可以了.
回復

使用道具 舉報

ID:1109356 發表于 2024-3-29 09:48 | 顯示全部樓層
確實是對比度太高。
看接線是用SPI串口,也可以換成LCD屏(st7735驅動,SPI串口)或OLED屏 (1306驅動,IIC),都蠻便宜的(1元到十幾元不等),可在程序中做初始化時設置對比度和亮度。
回復

使用道具 舉報

ID:1074206 發表于 2024-3-29 18:31 來自觸屏版 | 顯示全部樓層
調一下背光就可以解決
回復

使用道具 舉報

ID:883242 發表于 2024-3-29 19:33 | 顯示全部樓層
發燙的話,應該是亮度調節,電流很大。對比度調節電位器電流非常微弱,不會發燙。
回復

使用道具 舉報

ID:106977 發表于 2024-3-31 18:51 | 顯示全部樓層
現在4寸,分辨率800×480的TFT彩屏價格60元左右,還帶觸摸。你這個屏還花三十多元,想想是買便宜了還是買貴了?
回復

使用道具 舉報

ID:1034262 發表于 2024-3-31 19:18 | 顯示全部樓層
調整偏壓!調整偏壓!調整偏壓!說3遍。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品九九久久 | 国产精品人人做人人爽 | 二区成人 | 亚洲自拍一区在线观看 | 久久毛片| 欧美在线观看黄色 | 91小视频在线 | 欧美日韩在线电影 | 成人综合一区 | 欧美 日韩 国产 成人 | 国产一区二区三区免费 | 在线观看免费黄色片 | av毛片在线免费观看 | 国产一区二区三区高清 | 精品在线免费看 | 91精品导航| 日韩a v在线免费观看 | 日本精品视频 | 日本三级电影免费 | 日韩欧美在线观看 | 久久久精 | 国产欧美日韩久久久 | 天天干天天色 | 蜜桃精品视频在线 | 国产视频久久 | 免费在线观看一区二区 | 成人一区二区三区在线观看 | 免费看的av | 亚州精品成人 | 中文精品视频 | 免费在线观看毛片 | 亚洲精品乱码久久久久久久久久 | 精品国产欧美一区二区三区成人 | 国产成人aⅴ | 久久精品这里 | 亚洲精品久久 | 天天人人精品 | 日韩欧美视频免费在线观看 | 亚洲精品成人 | 国产免费一区二区三区 | 国产免费一级片 |