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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 375|回復: 11
收起左側

請問為什么我這個仿真圖的數碼管改了還是無論按哪個按鍵,都只顯示初始值呢

[復制鏈接]
ID:1150590 發表于 2025-5-18 22:21 | 顯示全部樓層 |閱讀模式
請問為什么我這個仿真圖的數碼管改了還是無論按哪個按鍵,都只顯示初始值呢

仿真圖

仿真圖
屏幕截圖 2025-05-18 221038.png
屏幕截圖 2025-05-18 221027.png
回復

使用道具 舉報

ID:1003945 發表于 2025-5-19 10:25 | 顯示全部樓層
8051的P0口是開漏輸出,必須外接上拉電阻(排阻RP1)才能驅動數碼管。請確認排阻RESPACK-8的阻值(推薦1KΩ-10KΩ)且接線正確,排阻公共端接VCC,另一端接P0口。
回復

使用道具 舉報

ID:1091344 發表于 2025-5-19 10:36 | 顯示全部樓層
KEYSCAN按鍵掃描程序的KEY_port需要根據按鍵狀態更新,沒有看見更新的程序
回復

使用道具 舉報

ID:844772 發表于 2025-5-19 11:32 | 顯示全部樓層
不變化只能是鍵盤程序問題,而這就是個反轉法的矩陣鍵盤,在proteus上用也沒啥問題,實際用18行后要延時,而且你延時程序不對,不過這些問題都跟模擬無關啊,樓主搞明白也發個信唄。
回復

使用道具 舉報

ID:1150930 發表于 2025-5-19 13:19 | 顯示全部樓層
仿真要加上拉電阻,使用LCD1602的時候也會這樣
回復

使用道具 舉報

ID:275826 發表于 2025-5-19 14:04 | 顯示全部樓層
因為釋放鍵后都返回255
回復

使用道具 舉報

ID:1150590 發表于 2025-5-19 21:03 | 顯示全部樓層
tyrl800 發表于 2025-5-19 14:04
因為釋放鍵后都返回255

返回其他值得時候也是這樣的
回復

使用道具 舉報

ID:1150590 發表于 2025-5-19 21:04 | 顯示全部樓層
會飛的魚KKK 發表于 2025-5-19 10:36
KEYSCAN按鍵掃描程序的KEY_port需要根據按鍵狀態更新,沒有看見更新的程序

我好像也試過加了狀態更新的代碼,但是也是一樣的效果
回復

使用道具 舉報

ID:1150590 發表于 2025-5-19 21:07 | 顯示全部樓層
劉偉無敵厲害 發表于 2025-5-19 13:19
仿真要加上拉電阻,使用LCD1602的時候也會這樣

我RP1接的那個不是上拉電阻嗎
回復

使用道具 舉報

ID:1151026 發表于 2025-5-20 00:28 | 顯示全部樓層
加一個上拉電阻試試看
回復

使用道具 舉報

ID:1133081 發表于 2025-5-20 10:04 | 顯示全部樓層
無標題.jpg

  1. #include <reg51.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. uchar code table[]={//0~FLP
  5.                 0xc0,0xf9,0xa4,0xb0,
  6.                 0x99,0x92,0x82,0xf8,
  7.                 0x80,0x90,0x88,0x83,
  8.                 0xc6,0xa1,0x86,0x8e,0xc7,0x8c};

  9. void Delay_ms(uint t)
  10. {
  11.         uint i,j;
  12.         for(i=t;i>0;i--)
  13.                 for(j=120;j>0;j--);
  14. }

  15. uchar keyscan()                                        //按鍵掃描程序
  16. {
  17.         static uint count=0;
  18.         static bit sign=0;
  19.         uchar KeyValue=0;
  20.         P3=0xf0;                                        //賦值P3 1111 0000
  21.         if(P3!=0xf0)                                //檢測有按鍵按下
  22.         {
  23.                 if(++count>10 && !sign)//消抖計數10,判斷按鍵自鎖
  24.                 {                       
  25.                         sign=1;                        //按鍵自鎖標志置1
  26.                         switch(P3)
  27.                         {
  28.                                 case(0Xe0):KeyValue=0;break;
  29.                                 case(0Xd0):KeyValue=1;break;
  30.                                 case(0Xb0):KeyValue=2;break;
  31.                                 case(0X70):KeyValue=3;break;
  32.                         }
  33.                         P3=0x0f;                        //賦值P3 0000 1111
  34.                         switch(P3)
  35.                         {
  36.                                 case(0X0e):KeyValue=KeyValue+1;break;
  37.                                 case(0X0d):KeyValue=KeyValue+5;break;
  38.                                 case(0X0b):KeyValue=KeyValue+9;break;
  39.                                 case(0X07):KeyValue=KeyValue+13;break;
  40.                         }
  41.                         return KeyValue;
  42.                 }
  43.         }
  44.         else                                                //鍵抬起
  45.         {
  46.                 sign=0;                                //按鍵自鎖標志清0
  47.                 count=0;                                //消抖計數清0
  48.                 return 0;
  49.         }
  50. }

  51. void display(uchar i)                                        //數碼管顯示程序
  52. {
  53.         static uchar a=0,t=0;
  54.         if(i>0)a=i;
  55.         P0=0xff;                                //消隱
  56.         P2&=0xf0;                        //位清0
  57.         P2|=0x01<<t;                //賦位碼
  58.         switch(t)                        //賦段碼
  59.         {
  60.                 case 0:P0=table[16];break;//L
  61.                 case 1:P0=table[a/10];break;
  62.                 case 2:P0=table[a%10];break;
  63.                 case 3:P0=table[17];break;//P
  64.         }
  65.         t=++t%4;//循環計數
  66. }

  67. void main()                                                //主函數
  68. {
  69.         while(1)
  70.         {
  71.                 display(keyscan());//數碼管顯示鍵值1~16
  72.                 Delay_ms(1);       //控制循環周期約1ms
  73.         }
  74. }
復制代碼




回復

使用道具 舉報

ID:1150590 發表于 2025-5-23 21:52 | 顯示全部樓層

我也試過這種連法,但是還是顯示沒變化,所以請問是我的代碼的問題嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕国产日韩 | 精品免费在线 | 欧美激情一区二区 | 一区二区三区四区日韩 | 亚洲国产精品美女 | 日批的视频 | www.日本在线| 成人自拍视频网站 | 国产第一页在线播放 | 九九热在线视频免费观看 | 成人黄色三级毛片 | 亚洲欧美一区二区三区在线 | h在线观看| 欧美一区二区三区免费在线观看 | 国产一区二区高清在线 | 亚洲精品久久久久中文字幕欢迎你 | 成人福利在线观看 | 粉嫩国产精品一区二区在线观看 | 麻豆久久久久久 | 久久久九九九九 | 欧美性生活一区二区三区 | 日韩精品在线观看一区二区三区 | 久久成人一区 | 日韩精品在线一区 | 日韩快播电影网 | 久久精品成人 | 日韩中文在线观看 | 天堂视频免费 | 日本一区二区高清不卡 | 国产精品久久久久久久免费大片 | 自拍偷拍亚洲欧美 | 国产精品小视频在线观看 | 波多野结衣一区二区 | 国产91亚洲精品 | 中文字幕免费观看 | 国产精品视频久久久 | www亚洲精品| 自拍偷拍亚洲欧美 | 91国产在线视频在线 | 91色网站 | 亚洲视频一区在线播放 |