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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4015|回復(fù): 0
收起左側(cè)

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

[復(fù)制鏈接]
ID:307014 發(fā)表于 2018-4-12 22:58 | 顯示全部樓層 |閱讀模式
51單片機彩燈控制系統(tǒng)
有4種閃爍方式
能自動手動切換

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

單片機淘氣彩燈源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. sbit Key1=P3^2; //切換狀態(tài)按鈕(外部中斷0)
  4. sbit Key2=P3^3;
  5. sbit Key3=P3^4;//暫停按鈕(外部中斷1)
  6. sbit p1=P1^5;///蜂鳴器控制端口
  7. unsigned char state=1; //狀態(tài)標(biāo)志
  8. unsigned int aut=1;        //改變手動自動模式
  9. char F; //定義F為外部變量
  10. unsigned char NUM1[4]={0x7e,0xbd,0xdb,0xe7}; //第3種亮燈方式(向內(nèi))
  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) //延時函數(shù)
  14. {
  15.   unsigned int i,j;
  16.   for(i=0;i<t;i++) //用for循環(huán)嵌套來實現(xiàn)延時
  17.   for(j=0;j<200;j++);
  18. }
  19. void Int_Init() //外部中斷初始化
  20. {  
  21.   IT0=1; //外部中斷0,邊沿觸發(fā)
  22.   EX0=1; //允許中斷
  23.   IT1=1; //外部中斷1,邊沿觸發(fā)
  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; //如果按下外部中斷按鈕,立即跳出效果,執(zhí)行中斷的內(nèi)容

  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; //如果按下外部中斷按鈕,立即跳出效果,執(zhí)行中斷的內(nèi)容
  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; //如果按下外部中斷按鈕,立即跳出效果,執(zhí)行中斷的內(nèi)容
  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; //如果按下外部中斷按鈕,立即跳出效果,執(zhí)行中
  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; //如果按下外部中斷按鈕,立即跳出效果,執(zhí)行中斷的內(nèi)容
  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. /**************主函數(shù)*******************/
  117. void main()
  118. {
  119.   Int_Init(); //外部中斷初始化
  120.   while(1)
  121.   {  if(!(aut && state)){
  122.              five();       
  123.                   }
  124.   else{
  125.      if(state==1) first(); //掃描狀態(tài)標(biāo)志,為1時,第一種效果
  126.         else if(state==2) second(); //掃描狀態(tài)標(biāo)志,為2時,第二種效果
  127.         else if(state==3) third(); //掃描狀態(tài)標(biāo)志,為3時,第三種效果
  128.     else if(state==4) four(); //掃描狀態(tài)標(biāo)志,為4時,第四種效果
  129.         else  
  130.     {P0=0x00; P2=0x00;} //其他狀態(tài),八盞燈全亮,即暫停
  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,即立即跳出效果 //按一次按鈕,狀態(tài)標(biāo)志加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; //取反狀態(tài)標(biāo)志,按一次可暫停,使八盞燈全亮,再按一次,繼續(xù)執(zhí)行之前的操作
  161.      while(Key2 == 0); //松手檢測
  162.     }

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

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

所有資料51hei提供下載:

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


回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人黄色大片 | 免费网站观看www在线观看 | 欧美亚洲一区二区三区 | 欧美日韩三区 | 一级黄色免费视频 | 麻豆国产一区二区三区四区 | 成人免费看片视频 | 一本色道久久综合亚洲精品酒店 | 亚洲欧美高清 | 免费看黄色aaaaaa 片 | 97在线视频观看 | 成人高潮片免费网站 | 国产一区二区不卡 | 国产91久久婷婷一区二区 | 日韩午夜影院 | 一级黄色片免费 | 色草在线 | 久久亚洲免费视频 | 天天天天天干 | 久久888 | 国产精品看片 | 国 产 黄 色 大 片 | 亚洲三级网站 | 国产精品99久久久久久久久 | 欧美在线视频一区 | 免费黄色小视频 | 一级黄色在线观看 | 欧美日韩一二三区 | 少妇一级淫片免费观看 | 日韩在线观看中文字幕 | 日韩黄色大片 | 欧美亚洲一区二区三区 | 99热最新 | 亚洲经典av| 国产成人午夜 | 欧美国产在线观看 | 日韩在线播放视频 | 亚洲国产一区在线观看 | 男人天堂亚洲 | 久久久久久久网站 | 在线观看黄色av |