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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2534|回復: 7
收起左側

LCD1602只顯示第一排的黑塊,求幫助

[復制鏈接]
ID:1066913 發表于 2023-4-18 12:23 | 顯示全部樓層 |閱讀模式
單片機用的是stm32f103c8t6,然后在網上找的LCD1602的程序,我主函數里只寫了一個打印數字的命令。我不知道是我單片機接口選擇的問題還是我硬件接線的問題。希望有大哥幫我看看,謝謝。



因為用的B0-B7所以這個pB2的接口在接線圖上沒畫。
  1. #include "lcd1602.h"

  2. void LCD1602_GPIO_Config(void)
  3. {       
  4.         GPIO_InitTypeDef LCD1602_GPIOStruct;
  5.         RCC_APB2PeriphClockCmd(LCD1602_CLK, ENABLE);
  6.         LCD1602_GPIOStruct.GPIO_Mode = GPIO_Mode_Out_PP;
  7.         LCD1602_GPIOStruct.GPIO_Speed = GPIO_Speed_10MHz;
  8.         LCD1602_GPIOStruct.GPIO_Pin =  LCD1602_E | LCD1602_RS | LCD1602_RW ;
  9.         GPIO_Init(LCD1602_GPIO_PORT,&LCD1602_GPIOStruct);
  10.         LCD1602_GPIOStruct.GPIO_Mode = GPIO_Mode_Out_OD;
  11.         LCD1602_GPIOStruct.GPIO_Pin =   DB0 |  DB1 | DB2 |DB3 |  DB4 | DB5|  DB6 |  DB7 ;
  12.         GPIO_Init(LCD1602_GPIO_PORT,&LCD1602_GPIOStruct);
  13. }

  14. void LCD1602_WaitReady(void)
  15. {
  16.         uint8_t sta;

  17.         GPIOB->ODR =0x00FF;
  18.         RSO(0);
  19.         RWO(1);
  20.         EO(1);
  21.         delay_us(1);
  22.         do{
  23.                 sta=GPIO_ReadInputDataBit(LCD1602_GPIO_PORT,GPIO_Pin_7);
  24.                 EO(0);
  25.         }while(sta);
  26. }

  27. void LCD1602_WriteCmd(uint8_t cmd)
  28. {
  29.         //LCD1602_WaitReady();
  30.         delay_us(15);
  31.         RSO(0);
  32.         RWO(0);
  33.         EO(0);
  34.         delay_us(1);
  35.         EO(1);
  36.         LCD1602_GPIO_PORT->ODR &= (cmd|0xFF00);
  37.         EO(0);
  38.         delay_us(400);
  39. }

  40. void LCD1602_WriteDat(uint8_t dat)
  41. {
  42.         //LCD1602_WaitReady();
  43.         delay_us(15);
  44.         RSO(1);
  45.         RWO(0);
  46.         delay_us(30);
  47.         EO(1);
  48.         LCD1602_GPIO_PORT->ODR &=(dat|0xFF00);
  49.         EO(0);
  50.         delay_us(400);
  51. }

  52. void LCD1602_SetCursor(uint8_t x, uint8_t y)
  53. {
  54.     uint8_t addr;
  55.    
  56.     if (y == 0)
  57.         addr = 0x00 + x;
  58.     else
  59.         addr = 0x40 + x;
  60.     LCD1602_WriteCmd(addr|0x80);
  61. }

  62. void LCD1602_ShowStr(uint8_t x, uint8_t y, uint8_t *str, uint8_t len)
  63. {
  64.     LCD1602_SetCursor(x, y);
  65.     while (len--)
  66.     {
  67.         LCD1602_WriteDat(*str++);
  68.     }
  69. }

  70. //??1???
  71. //x,y :????         
  72. //num:??(0~99)         
  73. //-----------------------------*/         
  74. void LCD_ShowNum(uint8_t x, uint8_t y,uint8_t num)
  75. {     

  76.             LCD1602_SetCursor(x, y);
  77.     LCD_ShowChar(x,y,num+'0');
  78.        
  79. }

  80. void LCD_ShowChar(uint8_t x, uint8_t y,uint8_t dat)
  81. {

  82.             LCD1602_SetCursor(x, y);
  83.         LCD1602_WriteDat(dat);
  84. }



  85. void LCD1602_Init(void)
  86. {       
  87.         LCD1602_GPIO_Config();
  88.     LCD1602_WriteCmd(0X38);
  89.     LCD1602_WriteCmd(0x0C);
  90.     LCD1602_WriteCmd(0x06);
  91.     LCD1602_WriteCmd(0x01);
  92. }
  93.        
  94.        



復制代碼
這是.c文件

  1. #ifndef _BSP_LCD1602_H
  2. #define _BSP_LCD1602_H

  3. #include "stm32f10x.h"
  4. #include "stm32f10x_gpio.h"
  5. #include "delay.h"

  6. #define LCD1602_CLK  RCC_APB2Periph_GPIOB  

  7. #define LCD1602_GPIO_PORT   GPIOB

  8. #define LCD1602_E    GPIO_Pin_12
  9. #define LCD1602_RW   GPIO_Pin_13
  10. #define LCD1602_RS   GPIO_Pin_14



  11. #define EO(X)         X? (GPIO_SetBits(LCD1602_GPIO_PORT,LCD1602_E)):(GPIO_ResetBits(LCD1602_GPIO_PORT,LCD1602_E))
  12. #define RWO(X)        X? (GPIO_SetBits(LCD1602_GPIO_PORT,LCD1602_RW)):(GPIO_ResetBits(LCD1602_GPIO_PORT,LCD1602_RW))
  13. #define RSO(X)        X? (GPIO_SetBits(LCD1602_GPIO_PORT,LCD1602_RS)):(GPIO_ResetBits(LCD1602_GPIO_PORT,LCD1602_RS))

  14. #define DB0                                        GPIO_Pin_0
  15. #define DB1                                        GPIO_Pin_1
  16. #define DB2                                        GPIO_Pin_2
  17. #define DB3                                        GPIO_Pin_3
  18. #define DB4                                        GPIO_Pin_4
  19. #define DB5                                        GPIO_Pin_5
  20. #define DB6                                        GPIO_Pin_6
  21. #define DB7                                        GPIO_Pin_7

  22. void LCD1602_Init(void);
  23. void LCD1602_ShowStr(uint8_t x, uint8_t y, uint8_t *str,uint8_t len);
  24. void LCD_ShowNum(uint8_t x, uint8_t y,uint8_t num);
  25. void LCD_ShowChar(uint8_t x, uint8_t y,uint8_t dat);







  26. #endif //_BSP_LCD1602_H
復制代碼
這是.h文件
主函數里就是正常的初始化和顯示命令。
  1. int main(void)
  2. {
  3.         u8 smog_ppm ;
  4.         u8 Methane_ppm ;
  5.         u8 CO_ppm ;
  6.        
  7.        
  8.         LCD1602_Init();
  9.         userInit();
  10.         window_fan_init();
  11.         Bee_Init();
  12.         delay_init();
  13.         //TIM1_Int_Init(1999 , 35999);
  14.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  15.         USART1_init();
  16.         Smog_Init();
  17.         //LCD1602_Init();
  18.         KEY_Init();                                                        /
  19.         Gizwits_Init();                                                /
  20.        
  21.        

  22.         delay_ms(5);
  23.         while(1)
  24.         {
  25.                 LCD_ShowNum(0,0,99);
  26.         }

  27. }
復制代碼
我把程序燒進去了以后就只顯示第一排的黑塊。因為畫PCB的時候沒有接上K引腳的線,所以用手引了一根線出來。
IMG_20230418_121817.jpg

我不知道我這是哪里的問題了,希望可以幫我指出來,謝謝各位。




回復

使用道具 舉報

ID:1066913 發表于 2023-4-18 12:24 | 顯示全部樓層
這是接線圖。
接線圖.png
回復

使用道具 舉報

ID:262 發表于 2023-4-18 17:32 | 顯示全部樓層
來看一下51hei論壇里面解決此問題的痛苦經歷吧:
51hei搜索框輸入"1602 方塊"或者"1602 黑塊"或者"1602 白塊"或者"1602 格":

這個是io口設置問題,最終搞定了:http://www.zg4o1577.cn/bbs/dpj-199732-1.html
http://www.zg4o1577.cn/bbs/dpj-168643-1.html
http://www.zg4o1577.cn/bbs/dpj-208189-1.html
http://www.zg4o1577.cn/bbs/dpj-210690-1.html

既有可能是軟件問題也有硬件問題
http://www.zg4o1577.cn/bbs/dpj-187378-1.html
http://www.zg4o1577.cn/bbs/dpj-160754-1.html
回復

使用道具 舉報

ID:1066913 發表于 2023-4-19 18:48 | 顯示全部樓層
heicad 發表于 2023-4-18 17:32
來看一下51hei論壇里面解決此問題的痛苦經歷吧:
51hei搜索框輸入"1602 方塊"或者"1602 黑塊"或者"1602 白 ...

我看到一些信息,寫的是stm32單片機的一些接口需要關閉復用功能,才可以正常設置i0口的電平,這可能是我初始化不成功的原因
回復

使用道具 舉報

ID:384109 發表于 2023-4-19 21:26 | 顯示全部樓層
1602少接一根數據線
回復

使用道具 舉報

ID:584814 發表于 2023-4-20 09:05 | 顯示全部樓層
電路圖中1602少接數據線,仿真可能不通過;
實際連接不錯的話,就是初始化過不去,可查端口設置、連接、時序、延時等。
建議壇內找一下成品先過,然后再對照找原因。
的確少一線.png
回復

使用道具 舉報

ID:1066913 發表于 2023-4-20 15:18 | 顯示全部樓層
man1234567 發表于 2023-4-20 09:05
電路圖中1602少接數據線,仿真可能不通過;
實際連接不錯的話,就是初始化過不去,可查端口設置、連接、時 ...

謝謝,我現在去找可以實現的程序
回復

使用道具 舉報

ID:1066913 發表于 2023-4-21 16:25 | 顯示全部樓層
找成品了也,但是這個屏幕還是只有第一行亮。我要傻
掉了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久福利一牛影视 | 色婷综合网| 国产日韩免费视频 | 欧美一区二区三区视频在线播放 | 国产精品国产三级国产aⅴ中文 | 自拍第一页 | 国产真实乱全部视频 | 一区二区三区在线播放视频 | 在线观看视频一区 | 在线国产一区二区 | 亚洲永久 | 欧美电影一区 | 美女高潮网站 | 伊人网在线播放 | 欧美激情久久久久久 | 中文字幕亚洲一区二区三区 | 在线观看深夜视频 | 岛国av免费观看 | 99精品视频在线观看免费播放 | 黄色大片毛片 | 精品国产1区2区3区 一区二区手机在线 | 最近日韩中文字幕 | 欧产日产国产精品v | 成人免费一区二区三区视频网站 | 综合精品久久久 | 亚洲伊人精品酒店 | 黄网站免费在线观看 | 在线观看成人免费视频 | 午夜伦理影院 | 午夜在线 | 亚洲影音先锋 | 亚洲精品久久视频 | 91精品国产高清一区二区三区 | 日韩精品一区二区三区在线播放 | 久久久久一区二区三区 | 欧美在线色视频 | 亚洲日韩欧美一区二区在线 | 在线观看亚洲专区 | 青青艹在线视频 | 一级毛片视频免费观看 | 免费成人在线网站 |