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

標題: 關于51單片機8位流水燈源程序+Proteus仿真圖 [打印本頁]

作者: 梅花君主    時間: 2021-2-13 15:00
標題: 關于51單片機8位流水燈源程序+Proteus仿真圖
設計目標:在開發(fā)板上實現一個鍵控8位流水燈,由兩個按鍵控制4種流水花樣,每種花樣有明確的區(qū)別(全滅和全亮不算)

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

需要軟件:keil c51 (本機環(huán)境 Keil uVision5)
                 proteus  (本機環(huán)境 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低電平觸發(fā)
  48.          //外部中斷1
  49.          EX1  = 1;  //外部中斷請求1標志位
  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. }
復制代碼

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


作者: 白小沐    時間: 2021-3-4 14:31
照著圖畫的,代碼也是復制的,跑起來一個也不亮是哪里出問題了?(難倒我這個萌新了




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲综合日韩精品欧美综合区 | 天天天天天天天干 | 亚洲综合三区 | 国产成人精品一区 | 热re99久久精品国99热观看 | 久久999| 久久久久久国产精品免费免费狐狸 | 久久伊人精品 | 亚洲一区二区三区在线 | 午夜免费视频 | 99在线免费观看 | 国产在线一区二区 | 国产精久久久久久久妇剪断 | 91视频网址 | 一级aaaaaa毛片免费同男同女 | 久久久久成人精品免费播放动漫 | 久久久久久久一区 | 成人在线h| 91麻豆精品一区二区三区 | 免费在线日韩 | 在线观看国产www | 国产永久免费 | 欧美精品久久久 | 色噜噜亚洲男人的天堂 | 亚洲视频中文 | 日韩电影a | 欧美日韩视频在线播放 | 久久精品国产一区二区电影 | 欧美亚洲综合久久 | 国产一区视频在线 | a级片在线观看 | 国产精品福利视频 | 成人毛片一区二区三区 | 五月婷婷中文 | 91av久久久 | 中文字幕乱码一区二区三区 | 中文字幕的av| 精品国产一区二区三区日日嗨 | 日日天天 | 亚洲精品在线观看网站 | 国内在线视频 |