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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6760|回復: 12
收起左側(cè)

單片機LCD1602程序上電后出現(xiàn)白色方塊如何解決?

  [復制鏈接]
ID:316954 發(fā)表于 2019-3-30 00:20 | 顯示全部樓層 |閱讀模式
5黑幣
如題,在導入程序后運行出現(xiàn)如下圖所示的狀況。求助如何解決
基于STC89C52的IC智能水卡程序設計問題
5887ED4A-FA0C-4D92-8712-F915BC6F54AE.jpeg


主程序
  1. #include "reg52.h"
  2. #include "main.h"
  3. #include "mfrc522.h"
  4. #include<intrins.h>         //函數(shù)處理頭文件   
  5. #include<string.h>          //字符串處理頭文件  
  6. #include<stdio.h>           // 輸入輸出函數(shù)頭文件

  7. /********************************************************************************************/
  8. //數(shù)值類別
  9. typedef signed   char      int8;                 // 有符號8位整型變量
  10. typedef unsigned char      uint8;                // 無符號8位整型變量
  11. typedef signed   int       int16;                // 有符號16位整型變量
  12. typedef unsigned int       uint16;               // 無符號16位整型變量
  13. /********************************************************************************************/
  14. // 定義特殊寄存器                       
  15. sfr wdt_contr=0xe1;                                 //定義看門狗地址
  16. sfr isp_data =0xe2;                                 //定義ISP數(shù)據(jù)寄存器
  17. sfr isp_addrh=0xe3;                                 //定義ISP地址高8位
  18. sfr isp_addrl=0xe4;                                 //定義ISP地址低8位
  19. sfr isp_cmd  =0xe5;                                 //定義ISP命令模式寄存器
  20. sfr isp_trig =0xe6;                                 //定義ISP命令觸發(fā)寄存器
  21. sfr isp_contr=0xe7;                                 //定義ISP控制模式寄存器

  22. //unsigned char code data1[16] = {0x64,0x00,0x00,0x00,0x1B,0xFF,0xFF,0xFF,0x64,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};//100
  23. unsigned char code data1[16] = {0xC8,0x00,0x00,0x00,0x37,0xFF,0xFF,0xFF,0xC8,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};//200
  24. //M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
  25. //4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反
  26. unsigned char data2[4]  = {0x00,0x00,0x00,0x01};//存值減值金額
  27. unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; //密碼
  28. unsigned char TYPE_DATA[2];//類型
  29. unsigned char ID_DATA[4];  //ID地址
  30. unsigned char value_DATA[4];//卡里面的值                                                                                         
  31. unsigned char g_ucTempbuf[20];//
  32. unsigned char code dis0[] = {"Total:"};
  33. unsigned char code dis1[] = {" "};
  34. unsigned char code dis2[] = {"CardID:"};
  35. unsigned char code dis3[] = {"Met:"};        
  36. unsigned char code dis4[] = {" Card:"};  
  37.    
  38. unsigned char code dis6[] = {"0123456789ABCDEF"};
  39. unsigned int tt=0,keyfalg,falg_pro;  
  40. unsigned char mc;
  41. uint16 tot=0,mon=0,card=0;
  42. uint8  a=0,b=0,c=0,d=0;
  43. /********************************************************************************************/

  44. //EEPROM驅(qū)動開始
  45. /*********************************************************************************
  46. * 函數(shù)名稱:eepromEraseSector (uint16 address)  
  47. * 功    能:EEPROM擦除程序
  48. * 入口參數(shù):address
  49. * 出口參數(shù):無
  50. **********************************************************************************/
  51. //擦除片內(nèi)EEPROM的一個扇區(qū)   
  52. //擦除只能以扇區(qū)為最小單位進行,沒法只擦除一個字節(jié)   
  53. //一個扇區(qū)是512個字節(jié)   
  54. //本函數(shù)參數(shù)里面的地址落在哪個扇區(qū),則該扇區(qū)內(nèi)數(shù)據(jù)都將被擦除   
  55. //例如:STC89C51RC片內(nèi)EEPROM第一扇區(qū)開始地址為0x2000,結(jié)束地址為0x21ff   
  56. //如果調(diào)用 eepromEraseSector(0x2001),則第一扇區(qū)內(nèi)數(shù)據(jù)都將被擦除   
  57. //擦除成功后,該扇區(qū)內(nèi)各字節(jié)都將變?yōu)?xff   
  58. void eepromEraseSector (uint16 address)  
  59. {  
  60. uint8 i;  
  61. isp_addrl=address;  
  62. isp_addrh=address>>8;  
  63. isp_contr=0x01;   
  64. isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz   
  65. isp_cmd=0x03;   //送擦除扇區(qū)命令
  66. isp_trig=0x46;  
  67. isp_trig=0xb9;  //觸發(fā)寄存器
  68. for(i=0;i<3;i++);  
  69. isp_contr=0x00;
  70. isp_cmd  =0x00;
  71. isp_trig =0x00;
  72. isp_addrl=0x0;  
  73. isp_addrh=0x0;      
  74. }  
  75. /**********************************************************************************
  76. * 函數(shù)名稱:eepromWrite(uint16 address, uint8 write_data)   
  77. * 功    能:EEPROM寫程序
  78. * 入口參數(shù):address,write_data
  79. * 出口參數(shù):無
  80. ***********************************************************************************/
  81. //對STC片內(nèi)EEPROM的指定地址寫入數(shù)據(jù)(即,字節(jié)編程)。   
  82. //注意:字節(jié)編程是指將eeprom的1寫成1或0,將0寫成0,而無法將0寫成1   
  83. //所以,在寫入數(shù)據(jù)前,一定要用扇區(qū)擦除將所有字節(jié)變?yōu)?xff
  84. void eepromWrite(uint16 address, uint8 write_data)
  85. {  
  86. uint8 i;  
  87. isp_data=write_data;  
  88. isp_addrl=address;  
  89. isp_addrh=address>>8;  
  90. isp_contr=0x01;   
  91. isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz   
  92. isp_cmd=0x02;  //送寫數(shù)據(jù)命令
  93. isp_trig=0x46;  
  94. isp_trig=0xb9;  //觸發(fā)寄存器
  95. for(i=0;i<3;i++);  
  96. isp_contr=0x00;
  97. isp_cmd  =0x00;
  98. isp_trig =0x00;
  99. isp_addrl=0x0;  
  100. isp_addrh=0x0;
  101. }  
  102. /***********************************************************************************
  103. * 函數(shù)名稱:eepromRead(uint16 address)   
  104. * 功    能:EEPROM讀程序
  105. * 入口參數(shù):address
  106. * 出口參數(shù):z
  107. ************************************************************************************/
  108. //讀取STC單片機內(nèi)部EEPROM的一個字節(jié)   
  109. //主要不同的STC單片機EEPROM起始地址不同   
  110. //例如:STC89c52RC的片內(nèi)EEPROM起始地址為0x2000
  111. uint8 eepromRead(uint16 address)  
  112. {  
  113. uint8 i,z;  
  114. isp_addrl=address;  
  115. isp_addrh=address>>8;  
  116. isp_contr=0x01;  
  117. isp_contr=isp_contr|0x81; // 0x80 if SYSCLK<40MHz, 0x81 if SYSCLK<20MHz, 0x82 if SYSCLK<10MHz, 0x83 if SYSCLK<5MHz   
  118. isp_cmd=0x01;  //送讀數(shù)據(jù)命令
  119. isp_trig=0x46;  
  120. isp_trig=0xb9;  //觸發(fā)寄存器
  121. for(i=0;i<3;i++);  
  122. isp_contr=0x00;
  123. isp_cmd  =0x00;
  124. isp_trig =0x00;
  125. isp_addrl=0x0;  
  126. isp_addrh=0x0;   
  127. z=isp_data;  
  128. return(z);  
  129. }  
  130. void wreeprom(void){
  131. a=tot/256;
  132. b=tot%256;
  133. c=mon/256;
  134. d=mon%256;
  135. eepromEraseSector (0x2000);//擦除eeprom
  136. eepromWrite(0x2000, a);//寫入eeprom
  137. eepromWrite(0x2001, b);//寫入eeprom
  138. eepromWrite(0x2002, c);//寫入eeprom
  139. eepromWrite(0x2003, d);//寫入eeprom
  140. }


  141. //中斷程序
  142. /*********************************************************************************
  143. * 函數(shù)名稱:int0_1_int()
  144. * 功    能:外部中斷0/1初始化
  145. **********************************************************************************/
  146. void int0_1_int(void) {
  147. //    IT0=1;//下降沿觸發(fā)
  148. //    EX0=1;//TF0中斷開
  149. IT1=1;//下降沿觸發(fā)
  150. EX1=1;//TF1中斷開
  151. EA=1;//開中斷
  152. }
  153. /*********************************************************************************
  154. * 函數(shù)名稱:int1_fun()interrupt2
  155. * 功    能:外部中斷1服務子程序
  156. *********************************************************************************/
  157. void int1_fun()interrupt 2 {
  158. mc++;
  159. if (mc>=10){
  160. mc=0;
  161. if (mon>0){mon--;tot++;}

  162. wreeprom();
  163. }        
  164. }
  165. void main( )
  166. {   
  167.      unsigned char status;
  168. int0_1_int();
  169.      InitializeSystem( );//初始化
  170.      PcdReset();        //復位RC522
  171.      PcdAntennaOff(); //關(guān)閉天線
  172.      PcdAntennaOn();  //開啟天線

  173. a=eepromRead(0x2000);//從eeprom讀
  174. b=eepromRead(0x2001);//從eeprom讀
  175. c=eepromRead(0x2002);//從eeprom讀
  176. d=eepromRead(0x2003);//從eeprom讀

  177. if (a==0xff&b==0xff&c==0xff&d==0xff) {
  178. //        a=0,b=0,c=0,d=0;
  179. eepromEraseSector (0x2000);//擦除eeprom
  180. eepromWrite(0x2000, a);//寫入eeprom
  181. eepromWrite(0x2001, b);//寫入eeprom
  182. eepromWrite(0x2002, c);//寫入eeprom
  183. eepromWrite(0x2003, d);}//寫入eeprom
  184. tot=a*256+b;
  185. mon=c*256+d;
  186.      while ( 1 )
  187.      {

  188. if(key1==0){dcf=1;dcfzsd=1;fmq=0;kgbj=0;}else{fmq=1;kgbj=1;}//開蓋檢測到開啟時關(guān)閥門、報警
  189.         status = PcdRequest(PICC_REQALL, g_ucTempbuf); //返回卡片類型#define PICC_REQIDL 0x26 尋天線區(qū)內(nèi)未進入休眠狀態(tài)
  190. if (status != MI_OK){TYPE_DATA[0]=0;TYPE_DATA[1]=0;
  191. ID_DATA[0]=0;ID_DATA[1]=0;ID_DATA[2]=0;ID_DATA[3]=0;
  192. value_DATA[0]=0;    value_DATA[1]=0;    value_DATA[2]=0;    value_DATA[3]=0;
  193. falg_pro=0;
  194. card=0;}//讀不到卡,顯示清0;
  195.         if (status == MI_OK){TYPE_DATA[0]=g_ucTempbuf[0];TYPE_DATA[1]=g_ucTempbuf[1];
  196. status = PcdAnticoll(g_ucTempbuf);       //防沖撞 ,返回卡片ID號 4字節(jié)
  197. if (status == MI_OK){status = PcdSelect(g_ucTempbuf);    //選定卡片  ,輸入卡片ID號
  198. if (status == MI_OK){if(falg_pro==0){falg_pro=1;pro();}//聲音提示標志
  199. ID_DATA[0]=g_ucTempbuf[0];
  200. ID_DATA[1]=g_ucTempbuf[1];
  201. ID_DATA[2]=g_ucTempbuf[2];
  202. ID_DATA[3]=g_ucTempbuf[3];
  203.                             //
  204. if (key2==0 ){init_k();}//初始化卡
  205. if (key2!=0 & mon<1000 & card>0){writek();}//寫卡
  206. readk(); //讀卡
  207. PcdHalt();//命令卡片進入休眠狀態(tài)   
  208. }      
  209. }
  210. }   
  211. if(key3==0){Delay(40);if (mon>0){mon--;tot++;}
  212. wreeprom();}//寫入eeprom}
  213. if(mon>0&key1!=0){dcf=0;dcfzsd=0;}else{dcf=1;dcfzsd=1;}//有余額時開閥
  214. if(mon<10){kgbj=0;}else{kgbj=1;}//余額低于10時報警燈亮;
  215. if(mon<10&mon>0){fmq=0;}else{fmq=1;}

  216. if (falg_pro){LCD1206b();}else{LCD1206a();};//顯示處理   

  217. }      
  218. }


  219. /////////////////////////////////////////////////////////////////////
  220. //系統(tǒng)初始化
  221. /////////////////////////////////////////////////////////////////////
  222. void InitializeSystem(void)
  223. {     
  224.      P0 = 0xFF;P1 = 0xFF;P2 = 0xFF;P3 = 0xFF;
  225. fmq=0;
  226. lcd_init();                // 初始化LCD            
  227. Delay(1);
  228. fmq=1;
  229. }
  230. void Delay(unsigned int time)
  231. {
  232.   unsigned int i,k  ;
  233.   for(i=0;i<255;i++)
  234.     for(k=0;k<time;k++)
  235.      _nop_();     
  236. }
  237. ////////////////////////顯示處理函數(shù)////////////////////////////////
  238. bit lcd_bz()                    // 測試LCD忙碌狀態(tài)
  239. {                        
  240. bit result;
  241. rs = 0;rw = 1;ep = 1;
  242. _nop_();_nop_();_nop_();_nop_();
  243. result = (bit)(P0 & 0x80);
  244. ep = 0;
  245. return result;   
  246. }
  247. lcd_wcmd(unsigned char cmd)// 寫入指令數(shù)據(jù)到LCD
  248. {                           
  249. while(lcd_bz());
  250. rs = 0;rw = 0;ep = 0;
  251. _nop_();_nop_();   
  252. P0 = cmd;
  253. _nop_();_nop_();_nop_();_nop_();
  254. ep = 1;
  255. _nop_();_nop_();_nop_();_nop_();
  256. ep = 0;        
  257. }

  258. lcd_pos(unsigned char pos)
  259. {                            //設定顯示位置
  260. lcd_wcmd(pos | 0x80);
  261. }

  262. lcd_wdat(unsigned char dat)   
  263. {                            //寫入字符顯示數(shù)據(jù)到LCD
  264. while(lcd_bz());
  265. rs = 1;rw = 0;ep = 0;
  266. P0 = dat;
  267. _nop_();_nop_();_nop_();_nop_();
  268. ep = 1;
  269. _nop_();_nop_();_nop_();_nop_();
  270. ep = 0;   
  271. }
  272. lcd_init(void)                     //LCD初始化設定
  273. {                           
  274. lcd_wcmd(0x38);Delay(1);    //
  275. lcd_wcmd(0x0c);Delay(1);    //
  276. lcd_wcmd(0x06);Delay(1);    //
  277. lcd_wcmd(0x01);Delay(1);    //清除LCD的顯示內(nèi)容
  278. }
  279. LCD1206a()
  280. {
  281. unsigned char i;
  282. TYPE_DATA[0]=0x04;
  283. lcd_pos(0x00);                // 設置顯示位置為第一行的第0個字符
  284. i = 0;
  285. switch (TYPE_DATA[0])
  286. {
  287. case 0x04:
  288. lcd_wdat(dis0[0]);
  289. lcd_wdat(dis0[1]);
  290. lcd_wdat(dis0[2]);
  291. lcd_wdat(dis0[3]);
  292. lcd_wdat(dis0[4]);
  293. lcd_wdat(dis0[5]);
  294. break;
  295. case 0x02:
  296. lcd_wdat(dis1[0]);
  297. break;
  298. case 0x08:
  299. lcd_wdat(dis2[0]);
  300. break;
  301. case 0x44:
  302. lcd_wdat(dis3[0]);
  303. break;
  304. }
  305. lcd_wdat(dis6[tot/10000]);
  306. lcd_wdat(dis6[tot%10000/1000]);
  307. lcd_wdat(dis6[tot%10000%1000/100]);
  308. lcd_wdat(dis6[tot%10000%1000%100/10]);
  309. lcd_wdat(dis6[tot%10000%1000%100%10]);
  310. lcd_wdat(dis1[0]);
  311. lcd_wdat(dis1[0]);
  312. lcd_wdat(dis1[0]);
  313. lcd_wdat(dis1[0]);
  314. lcd_wdat(dis1[0]);
  315. lcd_pos(0x40);
  316. lcd_wdat(dis3[0]);
  317. lcd_wdat(dis3[1]);
  318. lcd_wdat(dis3[2]);
  319. lcd_wdat(dis3[3]);
  320. lcd_wdat(dis6[mon%10000%1000/100]);
  321. lcd_wdat(dis6[mon%10000%1000%100/10]);
  322. lcd_wdat(dis6[mon%10000%1000%100%10]);
  323. lcd_wdat(dis4[0]);
  324. lcd_wdat(dis4[1]);
  325. lcd_wdat(dis4[2]);
  326. lcd_wdat(dis4[3]);
  327. lcd_wdat(dis4[4]);
  328. lcd_wdat(dis4[5]);
  329. lcd_wdat(dis6[card%10000%1000/100]);
  330. lcd_wdat(dis6[card%10000%1000%100/10]);
  331. lcd_wdat(dis6[card%10000%1000%100%10]);
  332. }  
  333. LCD1206b()
  334. {
  335. unsigned char i;
  336. TYPE_DATA[0]=0x04;
  337. lcd_pos(0x00);                // 設置顯示位置為第一行的第0個字符
  338. i = 0;
  339. switch (TYPE_DATA[0])
  340. {
  341. case 0x04:
  342. lcd_wdat(dis2[0]);
  343. lcd_wdat(dis2[1]);
  344. lcd_wdat(dis2[2]);
  345. lcd_wdat(dis2[3]);
  346. lcd_wdat(dis2[4]);
  347. lcd_wdat(dis2[5]);
  348. lcd_wdat(dis2[6]);

  349. break;
  350. lcd_wdat(dis2[6]);
  351. break;
  352. lcd_wdat(dis2[7]);
  353. break;
  354. case 0x02:
  355. lcd_wdat(dis1[0]);
  356. break;
  357. case 0x08:
  358. lcd_wdat(dis2[0]);
  359. break;
  360. case 0x44:
  361. lcd_wdat(dis3[0]);
  362. break;
  363. }
  364. lcd_wdat(dis6[ID_DATA[0]%100/10]);
  365. lcd_wdat(dis6[ID_DATA[0]%10]);
  366. lcd_wdat(dis6[ID_DATA[1]%100/10]);
  367. lcd_wdat(dis6[ID_DATA[1]%10]);
  368. lcd_wdat(dis6[ID_DATA[2]%100/10]);
  369. lcd_wdat(dis6[ID_DATA[2]%10]);
  370. lcd_wdat(dis6[ID_DATA[3]%100/10]);
  371. lcd_wdat(dis6[ID_DATA[3]%10]);

  372. lcd_pos(0x40);
  373. lcd_wdat(dis3[0]);
  374. lcd_wdat(dis3[1]);
  375. lcd_wdat(dis3[2]);
  376. lcd_wdat(dis3[3]);
  377. lcd_wdat(dis6[mon%10000%1000/100]);
  378. lcd_wdat(dis6[mon%10000%1000%100/10]);
  379. lcd_wdat(dis6[mon%10000%1000%100%10]);
  380. lcd_wdat(dis4[0]);
  381. lcd_wdat(dis4[1]);
  382. lcd_wdat(dis4[2]);
  383. lcd_wdat(dis4[3]);
  384. lcd_wdat(dis4[4]);
  385. lcd_wdat(dis4[5]);
  386. lcd_wdat(dis6[card%10000%1000/100]);
  387. lcd_wdat(dis6[card%10000%1000%100/10]);
  388. lcd_wdat(dis6[card%10000%1000%100%10]);
  389. }

  390. void pro()//蜂鳴器滴一聲
  391. {
  392. fmq=0;
  393. TMOD=0x11;//設置定時器0為工作方式1
  394. TH0=(65536-50000)/256;//給定時器裝初值 高八位
  395. TL0=(65536-50000)%256;//給定時器裝初值 低八位
  396. EA=1;   //開總中斷
  397. ET0=1;  //開定時器0中斷
  398. TR0=1;  //啟動定時器0
  399. }

  400. void time0() interrupt 1// 中斷服務子程序 聲音時間一致
  401. {

  402. TH0=(65536-50000)/256;//給定時器裝初值 高八位
  403. TL0=(65536-50000)%256;//給定時器裝初值 低八位
  404. tt++;
  405. if(tt==3){tt=0;fmq=1;

  406. ET0=0;  //關(guān)定時器0中斷
  407. TR0=0;  //關(guān)定時器0
  408. }   
  409. }

  410. void readk()//讀卡
  411. {   
  412. unsigned char status;
  413. status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//PICC_AUTHENT1A 驗證密碼模式60A密碼 61B密碼,“1”塊地址,DefaultKey初始密碼,g_ucTempbuf ID號
  414. if (status == MI_OK) //驗證密碼
  415. {                                                                                                                                                                                             
  416.     status = PcdRead(1, g_ucTempbuf);//讀塊地址“1”的數(shù)據(jù),返回值存在    g_ucTempbuf
  417.   if (status == MI_OK)
  418.   {
  419. value_DATA[0]=g_ucTempbuf[0];
  420. value_DATA[1]=g_ucTempbuf[1];
  421. value_DATA[2]=g_ucTempbuf[2];
  422. value_DATA[3]=g_ucTempbuf[3];   
  423. card=value_DATA[0]+value_DATA[1]*256;                                             
  424.   }   
  425.      }
  426. }   
  427. void writek()//寫卡    存值或減值
  428. {
  429.     unsigned char status;
  430.     status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//PICC_AUTHENT1A 驗證密碼模式60A密碼 61B密碼,“1”塊地址,DefaultKey初始密碼,g_ucTempbuf ID號
  431.   if (status == MI_OK) //驗證密碼
  432.   {   
  433. data2[1]=100/256;data2[0]=100%256;//扣款金額
  434. status = PcdValue(PICC_DECREMENT,1,data2);//扣款存值命令,錢包地址,金額 低位在前  PICC_INCREMENT 充值
  435. if (status == MI_OK)
  436. {
  437. pro();
  438. mon=mon+100;                                     //充值金額
  439. wreeprom();
  440.     }      
  441. status = PcdBakValue(1, 2);              //備份錢包      “1”源地址“2”目標地址
  442. if(status == MI_OK){};
  443. }

  444. }   
  445. void init_k()//初始化卡
  446. {
  447.     unsigned char status;
  448. if(key2==0)                              //充值
  449. {
  450.     status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//PICC_AUTHENT1A 驗證密碼模式60A密碼 61B密碼,“1”塊地址,DefaultKey初始密碼,g_ucTempbuf ID號
  451.   if (status == MI_OK) //驗證密碼
  452.   {                                                                                                                                                                     
  453.   status = PcdWrite(1, data1);//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反
  454.   if (status == MI_OK)
  455. {
  456.       pro();
  457. }
  458. }
  459. }
  460. }     
復制代碼

回復

使用道具 舉報

ID:213173 發(fā)表于 2019-3-30 08:09 | 顯示全部樓層
這是典型的LCD初始化失敗,并且對比度調(diào)整過大的現(xiàn)象。
回復

使用道具 舉報

ID:164602 發(fā)表于 2019-3-30 08:29 | 顯示全部樓層
需要調(diào)對比度。
回復

使用道具 舉報

ID:451718 發(fā)表于 2019-3-30 09:15 | 顯示全部樓層
你沒有給1602搞一個背光調(diào)節(jié)電阻?
1602.jpg
回復

使用道具 舉報

ID:481641 發(fā)表于 2019-3-30 11:04 | 顯示全部樓層
調(diào)節(jié)對比度,可以加個電阻或者電位器,還有就是初始化,初始化可以清屏
回復

使用道具 舉報

ID:375092 發(fā)表于 2019-3-30 11:14 | 顯示全部樓層
你這個是LCD1602硬件連接的問題吧,你看看是不是那個電阻不合適還是怎么的,也有可能是程序的原因,都可以網(wǎng)這些方面去檢查一下。樓主現(xiàn)在在玩RC522嗎,進展怎么樣了,我現(xiàn)在也在搞,遇到一些問題,希望有機會能夠交流
回復

使用道具 舉報

ID:338750 發(fā)表于 2019-3-30 21:32 | 顯示全部樓層
1.調(diào)節(jié)對比度,就是那個可調(diào)電阻.
2.把RW端接地試一試.
回復

使用道具 舉報

ID:499770 發(fā)表于 2019-3-30 22:05 | 顯示全部樓層
LCD初始化失敗,對比度調(diào)整過大
回復

使用道具 舉報

ID:498978 發(fā)表于 2019-3-31 11:26 | 顯示全部樓層
你需要一個滑動變阻器
回復

使用道具 舉報

ID:497899 發(fā)表于 2019-3-31 16:46 | 顯示全部樓層
對比度調(diào)低一點啊姐妹!
回復

使用道具 舉報

ID:484674 發(fā)表于 2022-1-1 08:06 來自手機 | 顯示全部樓層
好象沒有對比電阻吧…
回復

使用道具 舉報

ID:484674 發(fā)表于 2022-1-1 08:14 來自手機 | 顯示全部樓層
1602顯示屏出現(xiàn)左邊正常顯示右邊出現(xiàn)白格什么原因請教各位大神
回復

使用道具 舉報

ID:898921 發(fā)表于 2022-1-1 14:09 | 顯示全部樓層
初始化失敗,應該調(diào)節(jié)背光電阻,直到顯示清楚你要寫的字為止。
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品亚洲精品 | 在线看片福利 | 99爱视频| 国产一区精品在线 | 午夜不卡一区二区 | 国产美女精品 | 亚洲视频手机在线 | 99久久日韩精品免费热麻豆美女 | 久久久久久久久91 | 一区二区伦理电影 | 精品久久久久久久久久久下田 | 女人天堂av| 国产美女精品 | 亚洲精品高清视频 | 亚洲精品日本 | 在线观看黄色电影 | 久久久精 | 久久久一区二区三区 | 亚洲黄色一区二区三区 | 久久久区 | 91视频三区 | 一级做a | 国产精品久久久久久久久久久免费看 | 国产激情综合五月久久 | 中文字幕精品一区二区三区精品 | 人人鲁人人莫人人爱精品 | 久久精品| a级片在线观看 | 亚洲一区二区三区在线 | 国产精品免费一区二区三区四区 | 日韩a| 黑人性hd| 国产成人网| 亚洲色图综合 | 久久精品亚洲欧美日韩精品中文字幕 | 国产乱码精品1区2区3区 | 成人久久网 | 男人的天堂在线视频 | 国产精品1 | 久久99精品久久久97夜夜嗨 | 日本久草 |