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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機鍵控淘氣彩燈控制源碼與proteus仿真

[復制鏈接]
跳轉到指定樓層
樓主
51單片機彩燈控制系統
有4種閃爍方式
能自動手動切換

淘氣彩燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機淘氣彩燈源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit Key1=P3^2; //切換狀態按鈕(外部中斷0)
  4. sbit Key2=P3^3;
  5. sbit Key3=P3^4;//暫停按鈕(外部中斷1)
  6. sbit p1=P1^5;///蜂鳴器控制端口
  7. unsigned char state=1; //狀態標志
  8. unsigned int aut=1;        //改變手動自動模式
  9. char F; //定義F為外部變量
  10. unsigned char NUM1[4]={0x7e,0xbd,0xdb,0xe7}; //第3種亮燈方式(向內)
  11. unsigned char NUM2[4]={0xe7,0xdb,0xbd,0x7e}; //第3種亮燈方式(向外)
  12. unsigned char a[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //第4種亮燈方式
  13. void Delay(unsigned int t) //延時函數
  14. {
  15.   unsigned int i,j;
  16.   for(i=0;i<t;i++) //用for循環嵌套來實現延時
  17.   for(j=0;j<200;j++);
  18. }
  19. void Int_Init() //外部中斷初始化
  20. {  
  21.   IT0=1; //外部中斷0,邊沿觸發
  22.   EX0=1; //允許中斷
  23.   IT1=1; //外部中斷1,邊沿觸發
  24.   EX1=1; //允許中斷
  25.   TMOD=0x06;
  26.   TH0=0xff;
  27.   TL0=0xff;
  28.   ET0=1;
  29.   TR0=1;

  30.   EA=1; //開總中斷
  31. }
  32. void first()
  33. {
  34. unsigned char n;
  35. for(n=0;n<35;n++)
  36. {
  37.   P0=0x6d;        
  38.   P2=0x6d;
  39.   Delay(30);
  40.   if(F== 1) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容

  41. }
  42.    F = 0; //把外部變量清0
  43. }
  44. void second()
  45. {
  46. unsigned char m,n;
  47. for(m=0;m<4;m++)
  48. {
  49.     P0=0xf0;
  50.     P2=0x0f;
  51.     Delay(100);
  52.     P0=0xff;
  53.     P2=0xff;
  54.     Delay(100);
  55.     if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
  56. }
  57.   for(n=0;n<4;n++)
  58.    {
  59.     P0=0x0f;
  60.     P2=0xf0;
  61.     Delay(100);
  62.     P0=0xff;
  63.         P2=0xff;
  64.         Delay(100);
  65.     if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
  66.    }
  67.             
  68.     F = 0;        //把外部變量清0
  69. }
  70. void third()
  71. {  
  72. unsigned char n;
  73. for(n=0;n<4;n++)
  74. {
  75.    P0=NUM1[n];
  76.    P2=NUM2[n];
  77.    Delay(100);
  78.    if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中
  79.    
  80. }

  81.    F = 0; //把外部變量清0
  82. }
  83. void four()
  84. {
  85.   unsigned char n;
  86.   for(n=0;n<8;n++)
  87.   {
  88.    P0=a[n];
  89.    P2=a[n];
  90.    Delay(100);
  91.    if(F == 1 ) break; //如果按下外部中斷按鈕,立即跳出效果,執行中斷的內容
  92.    
  93.   }
  94.    
  95.    F = 0; //把外部變量清0
  96. }

  97. void five()
  98. {
  99.   
  100. while(aut==0)
  101.   {       
  102.      first();
  103.          if(aut==1)break;
  104.          second();
  105.           if(aut==1)break;
  106.           third();
  107.           if(aut==1)break;
  108.          four();
  109.          if(aut==1)break;
  110.          Delay(10);
  111.          if(F==1) break;
  112.          }
  113.           
  114.            F = 0; //把外部變量清0
  115. }

  116. /**************主函數*******************/
  117. void main()
  118. {
  119.   Int_Init(); //外部中斷初始化
  120.   while(1)
  121.   {  if(!(aut && state)){
  122.              five();       
  123.                   }
  124.   else{
  125.      if(state==1) first(); //掃描狀態標志,為1時,第一種效果
  126.         else if(state==2) second(); //掃描狀態標志,為2時,第二種效果
  127.         else if(state==3) third(); //掃描狀態標志,為3時,第三種效果
  128.     else if(state==4) four(); //掃描狀態標志,為4時,第四種效果
  129.         else  
  130.     {P0=0x00; P2=0x00;} //其他狀態,八盞燈全亮,即暫停
  131.   }
  132.   }       
  133.   //蜂鳴器程序
  134.   while(1){
  135.    p1=0;
  136.    Delay(200);
  137.    p1=1;
  138.    Delay(500);                 
  139. }
  140. }
  141. /************外部中斷0********************/
  142. void INT_0() interrupt 0
  143. {
  144.   Delay(100);//消抖
  145.    if(Key1 == 0)
  146.   {
  147.    F = 1;
  148.    state++; //外部變量置1,即立即跳出效果 //按一次按鈕,狀態標志加1
  149.    if(state>4)  state=1;
  150.    while(Key1 == 0); //松手檢測
  151.   }
  152. }
  153. /************外部中斷1********************/
  154. void INT_1() interrupt 2
  155. {
  156.    Delay(100);//消抖
  157.    if(Key2 == 0)
  158.     {
  159.          F=1; //外部變量置1,即立即跳出效果
  160.          state=~state; //取反狀態標志,按一次可暫停,使八盞燈全亮,再按一次,繼續執行之前的操作
  161.      while(Key2 == 0); //松手檢測
  162.     }

  163. }
  164. ……………………

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

所有資料51hei提供下載:

淘氣的彩燈.rar (56.93 KB, 下載次數: 33)


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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩一区在线播放 | 欧美精品一区二区三区四区 在线 | av黄色在线 | 一区二区三区国产精品 | 福利久久 | 伊人伊人伊人 | 亚洲国产欧美日韩 | 亚洲 欧美 日韩 在线 | 99福利视频 | 国产精品国产亚洲精品看不卡15 | 亚洲国产成人在线视频 | 国产福利91精品一区二区三区 | 午夜爽爽爽男女免费观看 | 成人午夜精品一区二区三区 | 久久久久国产 | 亚洲高清视频在线观看 | 成人18亚洲xxoo | 久草精品视频 | 日本在线观看视频 | 国产精品一区一区 | 午夜在线精品偷拍 | 青青操91 | 国产91在线播放 | 精品国产乱码久久久久久老虎 | 日韩视频专区 | 久久99国产精品 | 国产成人亚洲精品 | 成人国产精品入口免费视频 | 欧美视频免费 | 免费午夜电影 | 国产精品视频一区二区三区, | 天天曰天天曰 | 日本免费一区二区三区四区 | 亚洲精品乱码久久久久久久久久 | 久久99精品国产 | 精品九九 | аⅴ资源新版在线天堂 | 国产成人一区二区三区 | 欧美精品日韩 | 一区 | 日本精品在线播放 |