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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關于51單片機8位流水燈源程序+Proteus仿真圖

[復制鏈接]
跳轉到指定樓層
樓主
設計目標:在開發板上實現一個鍵控8位流水燈,由兩個按鍵控制4種流水花樣,每種花樣有明確的區別(全滅和全亮不算)

本案例用到單片機中斷,位移等知識。

需要軟件:keil c51 (本機環境 Keil uVision5)
                 proteus  (本機環境 proteus 8.11)
仿真電路圖如下:


需要原件: AT89C51
     ERJ-6ENF1021V                  *  8
     BUTTON                               *  2
     LED-BLUE                             *  8



驅動程序如下:
  1. #include <reg51.h>
  2. #include <intrins.h>


  3. //宏定義
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. #define LED P2

  7. sbit UP   = P3^2;
  8. sbit DOWN = P3^3;

  9. uint keyValue = 0;

  10. /*30毫秒延時函數*/
  11. void Delay30ms()                //@12.000MHz
  12. {
  13.         unsigned char i, j;

  14.         i = 59;
  15.         j = 90;
  16.         do
  17.         {
  18.                 while (--j);
  19.         } while (--i);
  20. }

  21. /*666毫秒延時函數*/
  22. void Delay666ms()                //@12.000MHz
  23. {
  24.         unsigned char i, j, k;

  25.         _nop_();
  26.         i = 6;
  27.         j = 16;
  28.         k = 174;
  29.         do
  30.         {
  31.                 do
  32.                 {
  33.                         while (--k);
  34.                 } while (--j);
  35.         } while (--i);
  36. }

  37. /*
  38. 初始化函數 p2口置為高電平
  39. */
  40. void init(void)                              
  41. {
  42.          LED  = 0xff;
  43.          UP   = 1;
  44.          EA   = 1;  //中斷總允許為EA=1
  45.          //外部中斷0
  46.          EX0  = 1;  //外部中斷請求0標志位
  47.          IT0  = 0;  //IT0=0低電平觸發
  48.          //外部中斷1
  49.          EX1  = 1;  //外部中斷請求1標志位
  50.          IT1  = 0;  //IT1=0低電平觸發
  51. }

  52. /*
  53. 上選擇外部中斷
  54. */
  55. void UpKey(void) interrupt 0
  56. {
  57.         LED = 0xff;//led全滅
  58.         if(UP == 0)
  59.         {
  60.                 Delay30ms();               
  61.                 if(UP == 0)   
  62.                 {
  63.                         if(keyValue == 4){
  64.                                 keyValue = 0;                                
  65.                         }else if(keyValue < 5){
  66.                                 keyValue = keyValue + 1;
  67.                         }
  68.                 }
  69.         }
  70. }

  71. /*
  72. 下選擇外部中斷
  73. */
  74. void DownKey(void) interrupt 2
  75. {
  76.         LED = 0xff;//led全滅
  77.         if(DOWN == 0)
  78.         {
  79.                 Delay30ms();               
  80.                 if(DOWN == 0)   
  81.                 {
  82.                         if(keyValue == 0){
  83.                                 keyValue = 4;                                
  84.                         }else if(keyValue < 5){
  85.                                 keyValue = keyValue - 1;
  86.                         }
  87.                 }
  88.         }
  89. }

  90. void main(void)
  91. {
  92.         //uint  num  = 0;
  93.         uchar data1= 0xfe;        

  94.         init();        
  95.         Delay30ms();
  96.         LED = 0x00;//led全亮
  97.         Delay666ms();
  98.         LED = 0xff;//led全滅
  99.         Delay666ms();
  100.         while(1)
  101.         {
  102.                  switch(keyValue)
  103.                  {
  104.                          //左移1位
  105.                                 case 0 :
  106.                                 {
  107.                                         LED = data1;                                                        
  108.                                         data1 = data1<<1|0x01;      
  109.                                         if(data1==0xff){
  110.                                                 data1=0xfe;
  111.                                         }        
  112.                                         Delay666ms();
  113.                                         break;
  114.                                 }               
  115.        //右移1位                                
  116.                                 case 1 :  
  117.                                 {
  118.                                         LED = data1;                                                        
  119.                                         data1 = data1>>1|0x00;      
  120.                                         if(data1==0x00){
  121.                                                 data1=0xfe;
  122.                                         }        
  123.                                         Delay666ms();
  124.                                         break;
  125.                                 }               
  126.                                 //前四后四
  127.                                 case 2 :  
  128.                                 {
  129.                                         LED=0Xf0;
  130.                                         Delay666ms();
  131.                                         LED=0X0f;
  132.                                         Delay666ms();
  133.                                         break;

  134.                                 }
  135.                                 //插花        
  136.                                 case 3 :  
  137.                                 {
  138.                                         LED=0Xcc;
  139.                                         Delay666ms();
  140.                                         LED=0X33;
  141.                                         Delay666ms();
  142.                                         break;
  143.                                 }   
  144.         //插花1                                
  145.                                 case 4 :  
  146.                                 {
  147.                                         LED=0Xaa;
  148.                                         Delay666ms();
  149.                                         LED=0X55;
  150.                                         Delay666ms();
  151.                                         break;
  152.                                 }
  153.                  }                        
  154.         }      
  155. }
復制代碼

全部資料51hei下載地址:
流水燈.zip (97.54 KB, 下載次數: 59)

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:888312 發表于 2021-3-4 14:31 | 只看該作者
照著圖畫的,代碼也是復制的,跑起來一個也不亮是哪里出問題了?(難倒我這個萌新了
回復

使用道具 舉報

無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产亚洲精品精品国产亚洲综合 | 在线中文字幕国产 | 免费国产视频在线观看 | 欧美一级片中文字幕 | 久久男人| 亚洲一区二区在线视频 | 三级av在线| 日韩一区二区三区视频 | 欧美在线综合 | 不卡在线视频 | 男女在线免费观看 | 欧美日韩国产在线观看 | 一区二区在线免费观看 | 国产精品美女久久久久久久网站 | 亚洲视频免费在线看 | 日韩中文字幕 | 拍戏被cao翻了h承欢 | 羞羞视频网站免费看 | 337p日本欧洲亚洲大胆 | 国产亚洲精品久久久优势 | 成年人视频在线免费观看 | 成人美女免费网站视频 | 狠狠狠 | 精品国产一区久久 | 91av精品| 国产精品美女久久久久久久久久久 | 网站黄色在线 | 99久久精品免费看国产小宝寻花 | 精品网站999 | 久久精品亚洲精品国产欧美 | 成人网址在线观看 | 午夜不卡福利视频 | 欧美精品一区在线发布 | 久久综合一区二区三区 | 色婷婷在线视频 | 久久精品二区亚洲w码 | 久久亚洲一区二区 | 超碰在线97国产 | 亚洲精品91 | 在线播放国产视频 | 久久久精彩视频 |