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

標(biāo)題: 單片機(jī)LED數(shù)碼管顯示數(shù)字及左移程序Proteus仿真(獨(dú)立按鍵) [打印本頁]

作者: QFRC    時(shí)間: 2022-11-28 21:55
標(biāo)題: 單片機(jī)LED數(shù)碼管顯示數(shù)字及左移程序Proteus仿真(獨(dú)立按鍵)
單片機(jī)獨(dú)立按鍵控制LED數(shù)碼管顯示數(shù)字及左移
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)



單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. disp_DK[]= {0xc0,0xf9,0xa4,0xb0,0x99,
  6. 0x92,0x82,0xf8,0x80,0x90,0xbf};
  7. uchar find[]={0,0,0,0};

  8. void Delay_ms(uint xms)
  9. {
  10.         uchar t;
  11.         while (xms--)
  12.         for(t=0;t<120;t++);
  13. }

  14. uchar keychuli()
  15. {
  16.         uchar key;
  17.         P1=0xff;
  18.         key=P1;
  19.         key=~key;
  20.         key=key&0xff;
  21.         return key;
  22. }

  23. uchar keyscan()
  24.         {
  25.                 uchar keys,keyzhi;
  26.                 keys= keychuli();
  27.                 if(keys!=0)
  28.                 {Delay_ms(1);
  29.                         Delay_ms(1);
  30.                         keys=keychuli();
  31.                         if(keys!=0)
  32.                         {
  33.                                 keyzhi=keys;
  34.                                 while(keys!=0)
  35.                                 {       
  36.                                         Delay_ms(1) ;
  37.                                         keys=keychuli();
  38.                                 }
  39.                         }
  40.                 }
  41.         else keyzhi=0;
  42.         return keyzhi;
  43.         }
  44.        
  45. void display()
  46. {
  47.         uchar i, k, aa=0x08;
  48.         for(i=0;i<4;i++)
  49.         {
  50.                 P2=aa;
  51.                 k=find[i];
  52.                 P0=disp_DK[k];
  53.                 aa=_cror_(aa,1) ;
  54.                 Delay_ms(1);
  55.                 P0=0xff;
  56.         }
  57. }

  58. void dischuli()
  59. {
  60.         find[3]=find[2];
  61.         find[2]=find[1];
  62.         find[1]=find[0];
  63. }

  64. void keyaa()
  65. {
  66.         find[0]=1;
  67. }
  68. void keybb()
  69. {
  70.         find[0]=2;
  71. }
  72. void keycc()
  73. {
  74.         find[0]=3;
  75. }
  76. void keydd()
  77. {
  78.         find[0]=4;
  79. }
  80. void keyee()
  81. {
  82.         find[0]=5;
  83. }
  84. void keyff()
  85. {
  86.         find[0]=6;
  87. }
  88. void keygg()
  89. {
  90.         find[0]=7;
  91. }
  92. void keyhh()
  93. {
  94.         find[0]=8;
  95. }

  96. void main(void)
  97. { uchar keys;
  98.   while(1)
  99.                 {
  100.                 display();
  101.                 keys=keyscan();
  102.                 if (keys!=0) {dischuli();}
  103.                 switch(keys)
  104.                         {case 0x00:break;
  105.                         case 0x01:keyaa();break;
  106.                         case 0x02:keybb();break;
  107.                         case 0x04:keycc();break;
  108.                         case 0x08:keydd();break;
  109.                         case 0x10:keyee();break;
  110.                         case 0x20:keyff();break;
  111.                         case 0x40:keygg();break;
  112.                         case 0x80:keyhh();break;
  113.                         default:break;
  114.                         }
  115.                 }
  116. }
復(fù)制代碼

Keil代碼與Proteus仿真下載:
LED數(shù)碼管顯示.zip (91.66 KB, 下載次數(shù): 29)


作者: 陶小陶    時(shí)間: 2024-11-2 23:48
請(qǐng)問使用矩陣鍵盤的話應(yīng)該怎么改


// 矩陣鍵盤讀取按鍵鍵碼
unsigned char MatrixKey()
{
    unsigned char KeyNumber = 0;

    P1 = 0xFF;
    P1_3 = 0;
    if (P1_7 == 0) {Delay_ms(20); while (P1_7 == 0); Delay_ms(20); KeyNumber = 16;}
    if (P1_6 == 0) {Delay_ms(20); while (P1_6 == 0); Delay_ms(20); KeyNumber = 15;}
    if (P1_5 == 0) {Delay_ms(20); while (P1_5 == 0); Delay_ms(20); KeyNumber = 14;}
    if (P1_4 == 0) {Delay_ms(20); while (P1_4 == 0); Delay_ms(20); KeyNumber = 13;}

    P1 = 0xFF;
    P1_2 = 0;
    if (P1_7 == 0) {Delay_ms(20); while (P1_7 == 0); Delay_ms(20); KeyNumber = 12;}
    if (P1_6 == 0) {Delay_ms(20); while (P1_6 == 0); Delay_ms(20); KeyNumber = 11;}
    if (P1_5 == 0) {Delay_ms(20); while (P1_5 == 0); Delay_ms(20); KeyNumber = 10;}
    if (P1_4 == 0) {Delay_ms(20); while (P1_4 == 0); Delay_ms(20); KeyNumber = 9;}

    P1 = 0xFF;
    P1_1 = 0;
    if (P1_7 == 0) {Delay_ms(20); while (P1_7 == 0); Delay_ms(20); KeyNumber = 8;}
    if (P1_6 == 0) {Delay_ms(20); while (P1_6 == 0); Delay_ms(20); KeyNumber = 7;}
    if (P1_5 == 0) {Delay_ms(20); while (P1_5 == 0); Delay_ms(20); KeyNumber = 6;}
    if (P1_4 == 0) {Delay_ms(20); while (P1_4 == 0); Delay_ms(20); KeyNumber = 5;}

    P1 = 0xFF;
    P1_0 = 0;
    if (P1_7 == 0) {Delay_ms(20); while (P1_7 == 0); Delay_ms(20); KeyNumber = 4;}
    if (P1_6 == 0) {Delay_ms(20); while (P1_6 == 0); Delay_ms(20); KeyNumber = 3;}
    if (P1_5 == 0) {Delay_ms(20); while (P1_5 == 0); Delay_ms(20); KeyNumber = 2;}
    if (P1_4 == 0) {Delay_ms(20); while (P1_4 == 0); Delay_ms(20); KeyNumber = 1;}

    return KeyNumber;
}
作者: Eliyas    時(shí)間: 2024-11-5 10:53
終于找到關(guān)于多個(gè)數(shù)碼管動(dòng)態(tài)顯示的帖子了
作者: Eliyas    時(shí)間: 2024-11-5 14:31
U2是什么元件




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 四虎免费视频 | 日本一区不卡 | 青青激情网 | 国产精品成人av | 免费 视频 1级| 91精品国产综合久久香蕉922 | 精品国产欧美一区二区 | av香港经典三级级 在线 | 欧美一级电影免费 | 福利视频二区 | 成人毛片视频免费 | av三级在线观看 | 日韩精品一区二区在线 | 亚洲三区视频 | 欧美日韩久久 | 亚洲国产精品一区二区第一页 | 中文字幕国产精品 | 欧美日韩在线一区二区 | 国产精品日韩在线观看 | 久久y| 亚洲精品视频免费看 | 亚洲国产精品激情在线观看 | 日韩在线免费视频 | 黄色一级大片在线免费看产 | 日韩电影免费在线观看中文字幕 | 日韩精品一区二区三区在线观看 | 色橹橹欧美在线观看视频高清 | 国产一区二区在线播放 | 国产精品人人做人人爽 | 久热久热| 成人在线精品 | 黄网站免费在线 | 国产精品视频久久久 | 天堂久久天堂综合色 | 欧美一级高潮片免费的 | 草久免费视频 | 欧洲尺码日本国产精品 | 国产精品美女久久久久久久网站 | 99热这里| 成人夜晚看av | 天天干天天干 |