找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 994|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

清翔的51單片機開發(fā)板,矩陣鍵盤和lcd1602是不是不能同時使用?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1138180 發(fā)表于 2024-12-2 19:45 來自手機 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
矩陣鍵盤和lcd1602的接口一樣導(dǎo)致按矩陣鍵盤時改變了lcd1602液晶的讀寫狀態(tài),有解決的方法嗎?

Screenshot_20241202_192846.jpg (221.56 KB, 下載次數(shù): 0)

Screenshot_20241202_192846.jpg

Screenshot_20241202_192852.jpg (218.3 KB, 下載次數(shù): 0)

Screenshot_20241202_192852.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:940483 發(fā)表于 2024-12-3 08:11 | 只看該作者
按鍵在按和松會產(chǎn)生抖動,加消抖,確保按鍵的識別。會有按鍵去重問題?赏ㄟ^一定的延時或使用狀態(tài)標(biāo)志來解決。
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2024-12-3 09:25 | 只看該作者
可以,但要有技巧
讀鍵盤前 要P0=0;
讀完鍵盤后 P34=0;
回復(fù)

使用道具 舉報

地板
ID:961114 發(fā)表于 2024-12-3 09:26 | 只看該作者
  1. #include "ai8051u.h"              //調(diào)用頭文件
  2. #include "stc32_stc8_usb.h"       //調(diào)用頭文件
  3. #include "intrins.h"               //調(diào)用頭文件


  4. #define u8 unsigned char    //8位無符號變量(0-255)
  5. #define u16 unsigned int    //16位無符號變量(0-65535)

  6. u8  state = 0;      //初始狀態(tài)

  7. char *USER_DEVICEDESC = NULL;
  8. char *USER_PRODUCTDESC = NULL;
  9. char *USER_STCISPCMD = "@STCISP#";

  10. void Delay20ms(void)        //@24.000MHz Delay20ms();
  11. {
  12.         unsigned long edata i;

  13.         _nop_();
  14.         _nop_();
  15.         i = 119998UL;
  16.         while (i) i--;
  17. }


  18. void main(void)      //主函數(shù)
  19. {
  20.     WTST = 0;  //設(shè)置程序指令延時參數(shù),賦值為0可將CPU執(zhí)行指令的速度設(shè)置為最快
  21.     EAXFR = 1; //擴展寄存器(XFR)訪問使能
  22.     CKCON = 0; //提高訪問XRAM速度

  23.        
  24.         P0M1 = 0x00;   P0M0 = 0x00;
  25.     P1M1 = 0x00;   P1M0 = 0x00;
  26.     P2M1 = 0x00;   P2M0 = 0x00;
  27.     P3M1 = 0x00;   P3M0 = 0x00;
  28.     P4M1 = 0x00;   P4M0 = 0x00;
  29.     P5M1 = 0x00;   P5M0 = 0x00;
  30.     P6M1 = 0x00;   P6M0 = 0x00;
  31.     P7M1 = 0x00;   P7M0 = 0x00;
  32.        

  33.         usb_init();                                     //USB CDC 接口配置
  34.    
  35.     IE2 |= 0x80;                                    //使能USB中斷
  36.     EA = 1;                                         //
  37.        
  38.         P40 = 0;
  39.     while (DeviceState != DEVSTATE_CONFIGURED);     //等待USB完成配置
  40.        
  41.         while(1)
  42.         {
  43.                  if (bUsbOutReady)                    //如果接收到了數(shù)據(jù)
  44.         {
  45.             //USB_SendData(UsbOutBuffer,OutNumber);   //發(fā)送數(shù)據(jù)緩沖區(qū),長度(接收數(shù)據(jù)原樣返回, 用于測試)
  46.    
  47.             usb_OUT_done();
  48.         }
  49. //                //任務(wù)1:按下P32按鈕燈亮,松開P32按鈕燈滅;
  50. //                if( P32 == 0 )
  51. //                {
  52. //                        P00 = 0;
  53. //                }
  54. //                 else
  55. //                 {
  56. //                         P00 = 1;
  57. //          }
  58.                
  59. //                //任務(wù)1:按下P32按鈕燈滅,松開P32按鈕燈亮;
  60. //                if( P32 == 0 )
  61. //                {
  62. //                        P00 = 1;
  63. //                }
  64. //                 else
  65. //                 {
  66. //                         P00 = 0;
  67. //          }
  68.                 //任務(wù)1:按一下燈亮,按一下燈滅;
  69.                 if( P32 == 0 )           //判斷P32是否按下
  70.                 {
  71.                      Delay20ms();       //延時20ms消抖
  72.                         if ( P32 == 0 )
  73.                         {
  74.                            state = !state;       //  變量取反 0 1 0  1
  75.                            P00 = state;
  76.                                
  77.                            printf("state:%d\r\n",(int)state);
  78.                        
  79.                           while( P32 == 0);        //等待P32松開
  80.                        
  81.              }
  82.               }
  83.           }
復(fù)制代碼
回復(fù)

使用道具 舉報

5#
ID:92781 發(fā)表于 2024-12-3 10:24 | 只看該作者
不修改電路的話,基本沒有辦法,這個電路相當(dāng)于用按鍵給lcd發(fā)送數(shù)據(jù)了,最簡單就是把1602的CE使能要獨立出去,也可以增加一個iic的1602驅(qū)動模塊,不過需要改程序。你也可以試試樓上通過改變P0和P34狀態(tài)的方法,這種方法仍然接受數(shù)據(jù)的輸入,讀寫狀態(tài)仍然改變,只不過輸入的值為0,LCD接受的是無效指令。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表