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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

LCD1602第一行出現白方塊

查看數: 745 | 評論數: 9 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2025-3-6 14:34

正文摘要:

代碼仿真沒有問題 #include <reg52.h> #include <intrins.h> #include <stdio.h> // NRF24L01 引腳定義 sbit CE = P3^7; sbit CSN = P3^2; sbit SCK = P3^6; sbit MOSI = P3^3; sbit MISO ...

回復

ID:1133081 發表于 2025-3-7 13:51
發表于 2025-3-7 09:50
這是pcb板,哪有問題

出現白方塊是典型1602初始化失敗的現象。這與1602的數據端連線接反直接相關。如果不想重新制作PCB,必須用軟件把1602驅動程序的數據高低位對調。添加一個高低位對調函數:
  1. uchar exchange(unsigned char dat)
  2. {
  3.         unsigned char i,j=0;
  4.         for(i=8;i>0;i--)
  5.         {
  6.                 j|=(dat&0x01)<<(i-1);
  7.                 dat>>=1;
  8.         }
  9.         return j;
  10. }

  11. void LCD1602_Write_Cmd(unsigned char dat)
  12. {
  13.         RS = 0;
  14. //        RW = 0;
  15. //        P2 = cmd;
  16.         P2=exchange(dat);
  17. //        delay_ms(200);
  18.         E = 1;
  19.         delay_ms(5);
  20.         E = 0;
  21.         delay_ms(5);
  22. }

  23. void LCD1602_Write_Data(unsigned char dat)
  24. {
  25.         RS = 1;
  26. //        RW = 0;
  27. //        delay_ms(200);
  28. //        P2 = dat;
  29.         P2=exchange(dat);
  30.         E = 1;
  31.         delay_ms(5);
  32.         E = 0;
  33.         delay_ms(5);
  34. }

復制代碼
ID:584814 發表于 2025-3-7 12:56
貌似這個MCU的P0都沒有拉電阻,加上試試
ID:1143623 發表于 2025-3-7 09:59
pcb設計的也沒啥問題啊

PCB1_1.zip

2.39 MB, 下載次數: 0

ID:1143623 發表于 2025-3-7 09:50
這是pcb板,哪有問題
ID:161164 發表于 2025-3-7 09:24
盲猜P0口排阻焊反了
ID:1133081 發表于 2025-3-7 06:56
發表于 2025-3-6 15:14
連接了滑動變組3296W20k,單片機P0口接了一個4.7KΩ的排阻

用這個程序測試1602,如還不能正常顯示多為硬件電路有問題,1602損壞的可能性極小。
  1. #include<reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit LCD_RS=P0^6;                                        //液晶屏RS口  寫指令低,寫數據高
  5. sbit LCD_EN=P0^7;                                        //液晶屏EN口  高脈沖使能寫指令/數據,低跳變執行
  6. uchar table[] ="0123456789ABCDEF";        //第一行
  7. uchar table1[]="GIJKLMNOPQRSTUVW";        //第二行
  8. /*******100us延時程序********/
  9. void delay(uint x)
  10. {
  11.         uint a,b;
  12.         for(a=x;a>0;a--)
  13.                 for(b=10;b>0;b--);
  14. }
  15. /*******1602液晶屏寫指令程序********/
  16. void write_com(uchar com)
  17. {
  18.         LCD_EN=0;        //初始設置LCD_EN低電平
  19.         LCD_RS=0;        //允許寫指令
  20.         P2=com;                //傳遞指令
  21.         delay(10);        //延時1ms
  22.         LCD_EN=1;        //使能寫入
  23.         delay(10);        //延時1ms
  24.         LCD_EN=0;        //低跳變執行
  25.         
  26. }
  27. /*******1602液晶屏寫數據程序********/
  28. void write_date(uchar date)
  29. {
  30. //        LCD_EN=0;        //初始設置LCD_EN低電平
  31.         LCD_RS=1;        //允許寫數據
  32.         P2 =date;        //傳遞數據
  33.         delay(10);        //延時1ms
  34.         LCD_EN=1;        //使能寫入
  35.         delay(10);        //延時1ms
  36.         LCD_EN=0;        //低跳變執行
  37.         
  38. }
  39. /*******1602液晶屏初始化程序********/
  40. void init()                //設置顯示模式、
  41. {
  42.         write_com(0x38);//設置16*2顯示,5*7點陣,8位數據接口
  43.         write_com(0x01);//顯示清零,數據指針清零
  44. //        write_com(0x0f);//設置開顯示,顯示光標,光標閃爍
  45. //        write_com(0x0e);//設置開顯示,顯示光標,光標不閃
  46.         write_com(0x0c);//設置開顯示,不顯光標
  47.         write_com(0x06);//設置寫一個字符后地址指針加1
  48. //        write_com(0x07);//設置寫一個字符后整屏左移
  49.         write_com(0x80);//數據指針初始化,設置顯示初始位置
  50. }
  51. /**********************主程序*************************/
  52. void main()
  53. {
  54.         uchar a;                                        //定義循環變量
  55.         init();                                                //初始化1602程序
  56. /******用for循環按字節逐個寫入********/
  57.         write_com(0x80);                        //數據指針第一行起始0x80位置
  58.         for(a=0;a<16;a++)                        //每循環一次寫一個字節數據
  59.         {
  60.                 write_date(table[a]);        //寫一個字節數據               
  61.         }
  62.         write_com(0xc0);                        //數據指針第二行起始位置0x80+0x40=0xc0
  63.         for(a=0;a<16;a++)                        //每循環一次寫一個字節數據
  64.         {
  65.                 write_date(table1[a]);        //寫一個字節數據               
  66.         }
  67.         while(1);
  68. }

復制代碼
ID:748788 發表于 2025-3-6 17:31
用“方塊”搜一下論壇,會有很多回答
ID:1121801 發表于 2025-3-6 16:41
你這是屏壞了吧,程序可以控制的只是顯示區域就是每一個5*8的像素方塊,還能控制不是顯示區域的?

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区在线视频 | av在线一区二区三区 | 久久国产精品一区二区三区 | 成人免费毛片网站 | 日韩av专区 | 91在线观看免费视频 | 久久av免费观看 | 国产伦精品一区二区三区视频我 | 久久久综合网 | 亚洲三区在线观看 | 久久免费看片 | 黄色免费片| 四虎精品在线 | 亚洲欧美一区二区三区在线 | 在线观看黄色av | 色哟哟入口国产精品 | аⅴ资源新版在线天堂 | 特级西西444www大精品视频 | 激情综合网站 | 九九国产视频 | 在线观看二区 | 九色自拍| 国产欧美日韩在线 | 91麻豆精品一区二区三区 | 男人操女人的网站 | av在线资源| 亚洲一区成人 | 亚洲精品乱码 | 久久久久久国产精品 | 国产精品二区一区二区aⅴ污介绍 | 可以免费看av的网站 | 黄色一级片网站 | 亚洲人高潮女人毛茸茸 | 日韩网站在线观看 | 欧美视频精品 | 欧美不卡在线 | 日韩中文字幕在线观看 | 国产午夜视频在线观看 | 操操操日日日 | 少妇高潮露脸国语对白 | 99久久精品一区二区成人 |