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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3055|回復: 1
打印 上一主題 下一主題
收起左側

51單片機+8279 3*8鍵盤輸入程序 數碼管向前滾動輸入0~f Proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
3*8 鍵盤輸入  led數碼管向前滾動輸入 0~f   C51 單片機 protues仿真+代碼

壓縮包里有 protues仿真工程 和keil 代碼
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<reg51.h>
  2. #include<absacc.h>
  3. #define COM8279 XBYTE[0x7fff]           //這個是命令口。是CS
  4. #define DAT8279 XBYTE[0x7eff]           //這個是數據口。是A0
  5. #define uchar unsigned char         

  6. uchar code   table[]={0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40};//0-F,-

  7. uchar idata keybuffer[6]={16,16,16,16,16,16};                          //   臨時放需要顯示的數字的地方

  8. sbit clflag=ACC^7;
  9. uchar key;
  10. uchar Keyflag;
  11. uchar run_once=1;
  12. uchar flag_display;
  13. uchar p;


  14. void delay(uchar x)                       //延時子程序
  15. {
  16.    uchar i;
  17.    for(i=0;i<x;i++);
  18.    
  19. }

  20. void Display()                                  //顯示函數
  21. {
  22.                
  23.     uchar i;
  24.         COM8279=0X90;

  25.         for(i=0;i<6;i++)
  26.   {
  27.         COM8279=i+0x80;
  28.         DAT8279=table[keybuffer[i]];
  29.         delay(10);
  30.          }   
  31. }


  32. void Disp(d)                                                                            //顯示函數,
  33.     {                    
  34.         COM8279=0X90;
  35.         COM8279=0x80;
  36.         DAT8279=table[d];
  37.         delay(10);
  38.          }   

  39.      
  40. void Key_0(void) interrupt 0 using 1          //鍵盤按鍵使用外部中斷0
  41. {
  42.    uchar ch;
  43.    COM8279=0x40;
  44.    ch=DAT8279;
  45.    ch&=0x3f;
  46.    key=ch;
  47.    
  48.           flag_display=1;
  49.    
  50.    
  51.    
  52.    
  53.     if(key==0)
  54.     {
  55.         if(run_once==1)
  56.         {
  57.            run_once=0;
  58.         return;
  59.         }

  60.    
  61.     }

  62.      if(key!=0x00&&key!=0x01&&key!=0x02&&key!=0x03&&key!=0x04&&key!=0x05&&key!=0x06&&key!=0x07&&key!=0x08
  63.         &&key!=0x09&&key!=0x0a&&key!=0x0b&&key!=0x0c&&key!=0x0d&&key!=0x0e&&key!=0x0f)
  64.     {
  65.    
  66.             key=17;
  67.     }   
  68.    
  69.    
  70.    
  71.    

  72.    if(p>6)
  73.    {
  74.       p = 0;
  75.    
  76.    }


  77.      keybuffer[5]=keybuffer[4];         
  78.      keybuffer[4]=keybuffer[3];         
  79.      keybuffer[3]=keybuffer[2];      
  80.      keybuffer[2]=keybuffer[1];
  81.      keybuffer[1]= keybuffer[0];
  82.      keybuffer[0]=key;  


  83.     Keyflag=1;
  84.         p++;   
  85.    
  86.    
  87.    

  88. }
  89. void KeyTest(uchar keyh)                    //鍵盤按鍵處理及通道選擇程序
  90. {  
  91.    
  92.     if(key!=0x00&&key!=0x01&&key!=0x02&&key!=0x03&&key!=0x04&&key!=0x05&&key!=0x06&&key!=0x07&&key!=0x08
  93.         &&key!=0x09&&key!=0x0a&&key!=0x0b&&key!=0x0c&&key!=0x0d&&key!=0x0e&&key!=0x0f)
  94.     {
  95.    
  96.     Disp(0x10);
  97.     }
  98.    
  99.    
  100.    
  101.    switch (keyh)
  102.      {         
  103.       case 0x00:{//按鍵0   
  104.          Disp(key);

  105.          break;}
  106.       case 0x01:{//按鍵1      
  107.           Disp(key);

  108.                  break;}
  109.       case 0x02:{//按鍵2        
  110.         Disp(key);

  111.          break;}
  112.       case 0x03:{//按鍵3        
  113.             Disp(key);

  114.          break;}
  115.       case 0x04:{//按鍵4            
  116.             Disp(key);

  117.          break;}
  118.       case 0x05:{//按鍵5        
  119.             Disp(key);

  120.          break;}
  121.       case 0x06:{//按鍵6        
  122.                Disp(key);

  123.          break;}
  124.       case 0x07:{//按鍵7        
  125.         Disp(key);

  126.            break;}
  127.       case 0x08:{//按鍵0      
  128.             Disp(key);

  129.          break;}
  130.       case 0x09:{//按鍵1      
  131.               Disp(key);

  132.                  break;}
  133.           case 0x0a:{//按鍵5        
  134.              Disp(key);

  135.          break;}
  136.       case 0x0b:{//按鍵6        

  137.              Disp(key);

  138.          break;}
  139.       case 0x0c:{//按鍵7        

  140.              Disp(key);

  141.       case 0x0d:{//按鍵0      


  142.              Disp(key);

  143.          break;}
  144.       case 0x0e:{//按鍵1      

  145.              Disp(key);

  146.                  break;}
  147.       
  148.          case 0x0f:{//按鍵1      

  149.                  Disp(key);

  150.                  break;}
  151.      
  152.          default:



  153.       break; }
  154.          }
  155. }

  156. void main(void)
  157. ……………………

  158. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
多鍵值輸入顯示.zip (147.26 KB, 下載次數: 57)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:988777 發表于 2021-12-14 15:55 | 只看該作者
麻煩問一下這個void KeyTest(uchar keyh) 函數在哪里調用了,我根本沒有看到
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲日本中文 | 亚洲视频一区在线观看 | 国产在线观看一区 | 亚洲高清视频一区二区 | 亚洲精品一区二区三区中文字幕 | 亚洲国产69 | 亚洲精品电影网在线观看 | 黄片毛片免费观看 | 国产精品一区二区在线播放 | 日韩精品一区二区在线 | 色就干| 久久久久久久久99 | 国产成人精品久久二区二区91 | 国产精品国产三级国产播12软件 | 久久男人 | av看片| 久久久国产一区二区三区四区小说 | 一级毛片观看 | 97久久精品午夜一区二区 | 欧美日韩国产在线观看 | 久久久久久久久久久久亚洲 | 精品欧美一区二区三区久久久 | 中文字幕 欧美 日韩 | 日韩在线观看中文字幕 | 97avcc| 久久久久久国产 | 99视频免费 | 久久精品国产一区二区三区不卡 | 精品视频一区在线 | www.久久 | 精品一区二区久久久久久久网站 | 欧美1—12sexvideos | 欧美日韩久久 | 精品久久久久久亚洲国产800 | 亚洲视频中文字幕 | 男女网站在线观看 | 中文字幕日韩一区 | 欧洲精品码一区二区三区免费看 | 日韩三级在线 | 99re在线视频 | 亚洲成av人影片在线观看 |