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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

關(guān)于51單片機(jī)8位流水燈源程序+Proteus仿真圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
設(shè)計(jì)目標(biāo):在開發(fā)板上實(shí)現(xiàn)一個(gè)鍵控8位流水燈,由兩個(gè)按鍵控制4種流水花樣,每種花樣有明確的區(qū)別(全滅和全亮不算)

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

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


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



驅(qū)動(dòng)程序如下:
  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毫秒延時(shí)函數(shù)*/
  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毫秒延時(shí)函數(shù)*/
  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. 初始化函數(shù) p2口置為高電平
  39. */
  40. void init(void)                              
  41. {
  42.          LED  = 0xff;
  43.          UP   = 1;
  44.          EA   = 1;  //中斷總允許為EA=1
  45.          //外部中斷0
  46.          EX0  = 1;  //外部中斷請求0標(biāo)志位
  47.          IT0  = 0;  //IT0=0低電平觸發(fā)
  48.          //外部中斷1
  49.          EX1  = 1;  //外部中斷請求1標(biāo)志位
  50.          IT1  = 0;  //IT1=0低電平觸發(fā)
  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. }
復(fù)制代碼

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

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产精品成人久久久 | 亚洲一区二区三区在线播放 | 黄在线免费观看 | 亭亭五月激情 | 精品伊人 | 成年人视频在线免费观看 | 国产九九九 | 91美女在线观看 | 日韩在线观看一区 | 日韩色在线 | 欧美一区二区免费 | 久久亚洲国产 | 日韩五月天| 成人高清在线 | 午夜免费视频 | 亚洲国产成人精品女人久久久 | 亚洲男人的天堂网站 | 高清亚洲| 一区二区三区国产精品 | 91在线视频观看免费 | 午夜精品一区二区三区在线观看 | 天天操夜夜操 | 91精品在线看 | 欧美一级欧美三级在线观看 | 国产亚韩| 精品一区国产 | 亚洲欧美中文日韩在线v日本 | 日本在线视频一区二区 | 日本激情一区二区 | 国产精品亚洲综合 | 99久久久国产精品免费消防器 | 日韩中文在线 | 欧美午夜在线 | 中文在线一区 | 久久久五月天 | 日本视频在线播放 | 亚洲中午字幕 | 久久久久久久久淑女av国产精品 | 特级丰满少妇一级aaaa爱毛片 | 作爱视频免费观看 | 日日草夜夜草 |