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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

2018年第九屆藍橋杯單片機省賽程序設計--彩燈控制器程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:146874 發表于 2019-12-12 15:12 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
要求:
https://blog.csdn.net/ohy3686/article/details/87199951  

單片機源程序如下:
  1. #include <STC15F2K60S2.h>
  2. #include "iic.h"

  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff,0xc6};
  6. uchar yi,er,san,si,wu,liu,qi,ba;
  7. uchar led_start=0;
  8. uchar mode=1;//????
  9. uchar set=0;//s6??
  10. uint  jiange=400;//????
  11. uint  LED_tt=0,set_tt=0,AD_tt=0;//0.8???
  12. uint  RB2=0;//AD??
  13. uchar flag4=0;//s4????
  14. uchar LED_n=0;
  15. uchar Light=0,LED_T=0;

  16. void allinit();
  17. void Delay1ms(uint ms);
  18. void display1(uchar yi,uchar er);
  19. void display2(uchar san,uchar si);
  20. void display3(uchar wu,uchar liu);
  21. void display4(uchar qi,uchar ba);
  22. void keyscan();
  23. void Timer0Init(void);

  24. void main()
  25. {
  26.   allinit();
  27.         Timer0Init();
  28.         mode=EEPROM_Read(0x10);
  29.         Delay1ms(5);
  30.         jiange=EEPROM_Read(0x20)*100;
  31.         Delay1ms(5);
  32.   yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
  33.         while(1)
  34.         {
  35. //                RB2=AD_Read(0x03);
  36.                 if((set==0)&&(flag4==1))
  37.                 {
  38.                         if(RB2<64){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=1;}
  39.                         else if((RB2>=64)&&(RB2<128)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=2;}
  40.                         else if((RB2>=128)&&(RB2<192)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=3;}
  41.                         else if((RB2>=192)&&(RB2<255)){yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=10;ba=4;}
  42.                 }        
  43.                 else if(set==0)
  44.                 {
  45.     yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
  46.                 }
  47.                         keyscan();
  48.                         display1(yi,er);
  49.                         display2(san,si);
  50.                         display3(wu,liu);
  51.                         display4(qi,ba);
  52.         }

  53. }

  54. void keyscan()
  55. {
  56. if(P30==0)//s7
  57.         {
  58.                         Delay1ms(5);
  59.                   if(P30==0)
  60.                         {
  61.                                 if(led_start==0)
  62.                                         led_start=1;
  63.                                 else if(led_start==1)
  64.                                         led_start=0;
  65.                         }
  66.         while(!P30);
  67.         }
  68.         
  69. else if(P31==0)//s6
  70.         {
  71.                         Delay1ms(5);
  72.           if(P31==0)
  73.                 {
  74.                                         if(set==0)
  75.                                                  {
  76.                                                  set=1;set_tt=0;
  77.                                                                          if(jiange>=1000)
  78.                                                                          {
  79.                                                                          yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
  80.                                                                          }
  81.                                                                          else
  82.                                                                          {
  83.                                                                          yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
  84.                                                                          }
  85.                                                 
  86.                                                  }
  87.                                                 else if(set==1)
  88.                                                         {        
  89.                                                                 set=2;set_tt=0;
  90.                                                                         if(jiange>=1000)
  91.                                                                          {
  92.                                                                          yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
  93.                                                                          }
  94.                                                                          else
  95.                                                                          {
  96.                                                                                 yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
  97.                                                                          }
  98.                                                          }
  99.                                                 else if(set==2)
  100.                                                                         {
  101.                                                                                 set=0;set_tt=0;
  102.                                                                                 yi=11;er=11;san=11;si=11;wu=11;liu=11;qi=11;ba=11;
  103.                                                                                 
  104.                                                                                 EEPROM_Write(mode,0x10);
  105.                                                                                 Delay1ms(5);
  106.                                                                                 EEPROM_Write(jiange/100,0x20);
  107.                                                                                 Delay1ms(5);
  108.                                                                         }
  109.                                                 
  110.                 }
  111.         while(!P31);
  112.         }


  113.         
  114.         
  115. else if(P32==0)//s5
  116.         {
  117.                         Delay1ms(5);
  118.   if(P32==0)
  119.         {
  120.                         if(set==1)
  121.      {
  122.                                         mode+=1;
  123.                                         if(mode>4)
  124.                                         {
  125.                                         mode=4;
  126.                                         }
  127.                  }
  128.                  else if(set==2)
  129.                  {
  130.                  jiange+=100;
  131.                  if(jiange>1200)
  132.                         {
  133.                         jiange=1200;
  134.                         }
  135.                  
  136.                  }
  137.                
  138. }
  139.         while(!P32);
  140.         }
  141.         
  142.         
  143. else if(P33==0)//s4
  144.         {
  145.                         Delay1ms(5);
  146.                   if(P33==0)
  147.                         {
  148.                                 flag4=1;                        
  149.                         }
  150.         }
  151.                         if((flag4==1)&&(P33==1))
  152.                         {
  153.                                 flag4=0;
  154.                                                         if(set==1)
  155.                                                         {
  156.                                                                         mode-=1;
  157.                                                                         if(mode<1)
  158.                                                                         {
  159.                                                                         mode=1;
  160.                                                                         }
  161.                                                         }
  162.                                                                         else if(set==2)
  163.                                                         {
  164.                                                                         jiange-=100;
  165.                                                                         if(jiange<400)
  166.                                                                         {
  167.                                                                         jiange=400;
  168.                                                                         }
  169.                                                         }

  170.                         
  171.                         }
  172.                                       
  173. }

  174. void Timer0Init(void)                //1??@12.000MHz
  175. {
  176.         AUXR |= 0x80;                //?????1T??
  177.         TMOD &= 0xF0;                //???????
  178.         TL0 = 0x20;                //??????
  179.         TH0 = 0xD1;                //??????
  180.         TF0 = 0;                //??TF0??
  181.         TR0 = 1;                //???0????
  182.         
  183.         EA=1;
  184.         ET0=1;
  185. }

  186. void Timer0() interrupt 1
  187. {
  188.         set_tt++;
  189.         LED_tt++;
  190.         AD_tt++;
  191.         
  192.         if((LED_tt==1)&&(led_start==1))//?1ms??????
  193.         {
  194.                 if(mode==1)
  195.                 {
  196.                         P2=0X00;P0=0XFF;P2=0X80;P0=~(0X01<<LED_n);P2=0X00;
  197.                 }
  198.                 else if(mode==2)
  199.                 {
  200.                         P2=0X00;P0=0XFF;P2=0X80;P0=~(0X80>>LED_n);P2=0X00;
  201.                 }
  202.                 else if(mode==3)
  203.                 {
  204.                         P2=0X00;P0=0XFF;P2=0X80;
  205.                         if(LED_n==0)P0=0X7E;
  206.                         else if(LED_n==1)P0=0XBD;
  207.                         else if(LED_n==2)P0=0XDB;
  208.                         else if(LED_n==3)P0=0XE7;
  209.                         P2=0X00;
  210.                 }
  211.                 else if(mode==4)
  212.                 {
  213.                         P2=0X00;P0=0XFF;P2=0X80;
  214.                         if(LED_n==0)P0=0XE7;
  215.                         else if(LED_n==1)P0=0XDB;
  216.                         else if(LED_n==2)P0=0XBD;
  217.                         else if(LED_n==3)P0=0X7E;
  218.                         P2=0X00;
  219.                 }
  220.         
  221.         }
  222.         else if(LED_tt==Light)//PWM?? ?????20ms mode1 LED_tt=1? 2-20??  ???5%  
  223.                                                                                                  //           mode2 LED_tt=1-4?   ???20%  
  224.                                                                                                  //            mode3 1-9???45%   mode4 1-19 ???95%
  225.         {
  226.                 P2=0X00;P0=0XFF;P2=0X80;P0=0XFF;P2=0X00;
  227.         }
  228.         else if(LED_tt==20)//?20ms???? LED_T +1
  229.         {
  230.                 LED_tt=0;LED_T++;
  231.                 if((LED_T*20)>=jiange)//?????????? ????
  232.                 {
  233.                         LED_T=0;
  234.                         if(mode==1){LED_n++;if(LED_n>=8)LED_n=0;}
  235.                         else if(mode==2){LED_n++;if(LED_n>=8)LED_n=0;}
  236.                         else if(mode==3){LED_n++;if(LED_n>=4)LED_n=0;}
  237.                         else if(mode==4){LED_n++;if(LED_n>=4)LED_n=0;}        
  238.                 }               
  239.         }
  240.         if(AD_tt==200)//?200ms????RB2?
  241.         {
  242.                 AD_tt=0;
  243.                 RB2=AD_Read(0x03);
  244.                 if(RB2<64)Light=2;
  245.                 else if((RB2>=64)&&(RB2<128))Light=5;
  246.                 else if((RB2>=128)&&(RB2<192))Light=10;
  247.                 else if((RB2>=192)&&(RB2<256))Light=19;
  248.         }        

  249.         
  250. if(set_tt==800)
  251. {
  252.   if(set==1)
  253.         {
  254.                                 if(jiange>=1000)
  255.                                 {
  256.                                 yi=11;er=11;san=11;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
  257.                                 }
  258.                                 else
  259.                                 {
  260.                                 yi=11;er=11;san=11;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
  261.                                 }
  262.         }
  263.         else if(set==2)
  264.         {
  265.                 if(jiange>=1000)
  266.                  {
  267.                  yi=10;er=mode;san=10;si=11;wu=11;liu=11;qi=11;ba=11;
  268.                  }
  269.                  else
  270.                  {
  271.                         yi=10;er=mode;san=10;si=11;wu=11;liu=11;qi=11;ba=11;
  272.                  }
  273.         }               
  274.                                                         
  275. }
  276.         if(set_tt==1600)
  277.         {
  278.         set_tt=0;
  279.                
  280.                         if(set==1)
  281.         {
  282.                                 if(jiange>=1000)
  283.                                 {
  284.                                 yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
  285.                                 }
  286.                                 else
  287.                                 {
  288.                                 yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
  289.                                 }
  290.         }
  291.         else if(set==2)
  292.         {
  293.                 if(jiange>=1000)
  294.                  {
  295.                  yi=10;er=mode;san=10;si=11;wu=jiange/1000;liu=jiange%1000/100;qi=jiange%100/10;ba=jiange%10;
  296.                  }
  297.                  else
  298.                  {
  299.                         yi=10;er=mode;san=10;si=11;wu=11;liu=jiange/100;qi=jiange%100/10;ba=jiange%10;
  300.                  }
  301.         }
  302.         
  303.         
  304.         
  305. }
  306.         
  307.         

  308. }



  309. void allinit()
  310. {
  311.         P2=0X80;
  312.         P0=0XFF;
  313.         
  314.         P2=0XC0;
  315.         P0=0XFF;
  316.         P2=0XE0;
  317.         P0=0XFF;
  318.         
  319.         P2=0XA0;
  320.         P0=0X00;
  321. }
  322. void Delay1ms(uint ms)                //@12.000MHz
  323. {
  324.         uint k;
  325.         unsigned char i, j;
  326.         for(k=ms;k>0;k--)
  327.         {
  328.                                 i = 12;
  329.                                 j = 169;
  330.                                 do
  331.                                 {
  332.                                         while (--j);
  333.                                 } while (--i);
  334.                                 
  335.         }
  336. }


  337. void display1(uchar yi,uchar er)
  338. {
  339.         P2=0XC0;
  340.         P0=0X01;
  341.         P2=0XE0;
  342.         P0=tab[yi];
  343.         Delay1ms(1);
  344.         
  345.         P2=0XC0;
  346.         P0=0X02;
  347.         P2=0XE0;
  348.         P0=tab[er];
  349.         Delay1ms(1);

  350. }

  351. void display2(uchar san,uchar si)
  352. {
  353.         P2=0XC0;
  354.         P0=0X04;
  355.         P2=0XE0;
  356.         P0=tab[san];
  357.         Delay1ms(1);
  358.         
  359.         P2=0XC0;
  360.         P0=0X08;
  361.         P2=0XE0;
  362.         P0=tab[si];
  363.         Delay1ms(1);
  364. }
  365. void display3(uchar wu,uchar liu)
  366. {
  367.         P2=0XC0;
  368.         P0=0X10;
  369.         P2=0XE0;
  370.         P0=tab[wu];
  371.         Delay1ms(1);
  372.         
  373.         P2=0XC0;
  374.         P0=0X20;
  375.         P2=0XE0;
  376.         P0=tab[liu];
  377.         Delay1ms(1);

  378. }

  379. void display4(uchar qi,uchar ba)
  380. {
  381.         P2=0XC0;
  382.         P0=0X40;
  383.         P2=0XE0;
  384.         P0=tab[qi];
  385.         Delay1ms(1);
  386.         
  387.         P2=0XC0;
  388.         P0=0X80;
  389.         P2=0XE0;
  390.         P0=tab[ba];
  391.         Delay1ms(1);
  392.         
  393.         P2=0XC0;
  394.         P0=0XFF;
  395.         P2=0XE0;
  396.         P0=0XFF;//?????????????
  397. }
復制代碼

所有資料51hei提供下載:
燈光控制器代碼.rar (31.12 KB, 下載次數: 40)

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

使用道具 舉報

沙發
ID:687527 發表于 2020-2-11 22:36 | 只看該作者
過來參考一下你的變成
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品亚洲精品 | 亚洲最大看片网站 | 国内久久精品 | 久久88| 久久亚洲经典 | 久久成人久久 | av毛片| 欧美一区二区三区免费在线观看 | 成人免费视频网站在线看 | 99精品视频在线观看 | 一级特黄色毛片 | 国产成人精品久久二区二区 | 亚洲91精品 | 男女搞网站 | av在线播放网 | 久久综合伊人一区二区三 | 羞羞视频在线观免费观看 | 草久在线 | 久久亚洲视频 | 国产成人免费视频网站视频社区 | 一区二区中文 | 操到爽| 亚洲免费av一区 | 久久尤物免费一区二区三区 | 免费a国产 | 视频第一区 | 午夜av一区二区 | 伊人电影院av | 欧美精品久久久久 | 91中文字幕在线 | 久久精品中文字幕 | 日日干天天干 | 欧美一级久久 | 欧美日韩国产在线 | 国产在线小视频 | 宅男噜噜噜66一区二区 | 欧美三级三级三级爽爽爽 | 成人免费毛片在线观看 | 天天干天天操天天爽 | 国产精品久久久久久久午夜 | 国精品一区 |