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

標(biāo)題: 51單片機(jī)定時器輸出三路PWM,實(shí)現(xiàn)三基色合成演示裝置的源碼 [打印本頁]

作者: 1715110401    時間: 2017-11-15 19:00
標(biāo)題: 51單片機(jī)定時器輸出三路PWM,實(shí)現(xiàn)三基色合成演示裝置的源碼
51單片機(jī)用自帶定時器輸出三路PWM的資料分享,很實(shí)用的資料,用來實(shí)現(xiàn)三基色合成演示裝置

下面是單片機(jī)源程序:

  1. /**************************************************************
  2. **********************三基色合成演示裝置***********************
  3. *************************淮陰師范學(xué)院**************************
  4. 功能說明:通過按鍵調(diào)節(jié)三個燈的亮度,并在串口屏上面精確的調(diào)節(jié)亮度
  5. 并把當(dāng)前的亮度反饋在串口屏上面顯示
  6. ***************************************************************
  7. **************************************************************/
  8. #include <reg52.h>
  9. #define uchar  unsigned char
  10. #define uint   unsigned int
  11.         
  12. sbit PWMred   = P1^5;
  13. sbit PWMblu   = P1^6;
  14. sbit PWMgre   = P1^7;
  15. sbit KeyRup   = P2^2;
  16. sbit KeyRdown = P2^1;
  17. sbit KeyBup   = P2^5;
  18. sbit KeyBdown = P2^7;
  19. sbit KeyGup   = P2^3;
  20. sbit KeyGdown = P2^6;
  21. sbit KeyAll   = P2^0;
  22. sbit KeyNull  = P2^4;

  23. sbit LED1 = P0^0;//
  24. sbit LED2 = P0^1;//
  25. sbit LED3 = P0^7;
  26. sbit LED4 = P0^5;
  27. sbit LED5 = P0^3;
  28. sbit LED6 = P0^4;
  29. sbit LED7 = P0^6;
  30. sbit LED8 = P0^2;
  31. sbit LED9 = P1^0;
  32. unsigned char timerR=0,   timerG=0,   timerB=0;   
  33. unsigned char timerNumG=0,timerNumB=0,timerNumR=0,timerNumA=0,timerNumN=0;

  34. uchar rec_data[5];
  35. uchar rec_num=0;  
  36. uchar recdata,j=0;
  37. uchar dat[13]={' ',' ','.','v','a','l','=',' ',' ',' ',0XFF,0XFF,0XFF};

  38. void system_Ini()
  39. {
  40.         IP=0x10;
  41.   TMOD|= 0x01;
  42.         TH0 = 0xFF; //11.0592
  43.         TL0 = 0xCE;
  44.         TR0  = 1;
  45.         ET0=1;
  46. //IE =0x8A;        
  47. }
  48. void delay(unsigned char ms)
  49. {
  50.         unsigned char i;
  51.         while(ms--)
  52.         {
  53.         for(i = 0; i < 120; i++);
  54.         }
  55. }

  56. void senddata(uchar dat)
  57. {   
  58.            ES = 0;    //允許串口中斷
  59.      SBUF =dat;
  60.      while(!TI);
  61.      TI = 0;
  62.            ES = 1;    //允許串口中斷
  63. }   


  64. main()
  65. {
  66.     system_Ini();

  67.     //串口初始化        
  68.           SCON=0x50;           //設(shè)定串口工作方式
  69.     PCON=0x00;           //波特率不倍增
  70.                         
  71.     TMOD=0x21;           //定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率
  72.     EA=1;
  73.     ES = 1;              //允許串口中斷
  74.     TL1=0xfd;
  75.     TH1=0xfd;             //波特率9600
  76.     TR1=1;
  77.   while(1)                 
  78.   {
  79.                
  80. //*******************紅燈變亮*******************
  81.                 if(KeyRup==0)
  82.                 {               
  83.                         delay(8);
  84.                         if(KeyRup==0)
  85.                         {
  86.                                 while(!KeyRup==1)
  87.                                 {
  88.                                         timerNumR++;
  89.                                         dat[0]='h';
  90.                                         dat[1]=48;
  91.                       dat[7]=timerNumR/100+48;
  92.                       dat[8]=timerNumR%100/10+48;
  93.                       dat[9]=timerNumR%100%10+48;               
  94.                                         for(j=0;j<13;j++)
  95.                             {
  96.                                   senddata(dat[j]);
  97.                             }               
  98.                                        
  99.                                         dat[0]='n';
  100.                                         dat[7]=(timerNumR*100/255)/100+48;
  101.                                         dat[8]=(timerNumR*100/255)%100/10+48;
  102.                                         dat[9]=(timerNumR*100/255)%100%10+48;
  103.                                         for(j=0;j<13;j++)
  104.                             {
  105.                                   senddata(dat[j]);
  106.                             }               
  107.                                        
  108.                                         if(timerNumR>=255)
  109.                                         {
  110.                                                 timerNumR=254;
  111.                                         }        
  112.                                         delay(5);        
  113.                                 }        
  114.                         
  115.                         }        
  116.         
  117.                 }
  118. //*******************紅燈變暗*******************        
  119.                 if(KeyRdown==0)
  120.                 {               
  121.                         delay(8);
  122.                         if(KeyRdown==0)
  123.                         {
  124.                                 
  125.                                 while(!KeyRdown==1)
  126.                                 {
  127.                                         timerNumR--;
  128.                                         dat[0]='h';
  129.                                         dat[1]=48;
  130.                       dat[7]=timerNumR/100+48;
  131.                       dat[8]=timerNumR%100/10+48;
  132.                       dat[9]=timerNumR%100%10+48;               
  133.                                         for(j=0;j<13;j++)
  134.                             {
  135.                                   senddata(dat[j]);
  136.                             }               
  137.                                        
  138.                                         dat[0]='n';
  139.                                         dat[7]=(timerNumR*100/255)/100+48;
  140.                                         dat[8]=(timerNumR*100/255)%100/10+48;
  141.                                         dat[9]=(timerNumR*100/255)%100%10+48;
  142.                                         for(j=0;j<13;j++)
  143.                             {
  144.                                   senddata(dat[j]);
  145.                             }                                       
  146.                         
  147.                                 if(timerNumR<=0)
  148.                                 {
  149.                                         timerNumR=1;
  150.                                 }
  151.                                         delay(5);               
  152.                           }                                
  153.                  }

  154.         }                        
  155. //*******************綠燈變亮*******************
  156.                 if(KeyGup==0)
  157.                 {               
  158.                         delay(8);
  159.                         if(KeyGup==0)
  160.                         {
  161.                                 while(!KeyGup==1)
  162.                                 {
  163.                                         timerNumG++;        
  164.                                         dat[0]='h';
  165.                                         dat[1]=49;
  166.                       dat[7]=timerNumG/100+48;
  167.                       dat[8]=timerNumG%100/10+48;
  168.                       dat[9]=timerNumG%100%10+48;               
  169.                                         for(j=0;j<13;j++)
  170.                             {
  171.                                   senddata(dat[j]);
  172.                             }               
  173.                                        
  174.                                         dat[0]='n';
  175.                                         dat[7]=(timerNumG*100/255)/100+48;
  176.                                         dat[8]=(timerNumG*100/255)%100/10+48;
  177.                                         dat[9]=(timerNumG*100/255)%100%10+48;
  178.                                         for(j=0;j<13;j++)
  179.                             {
  180.                                   senddata(dat[j]);
  181.                             }               
  182.                                                                                 
  183.                       if(timerNumG>=255)
  184.                                         {
  185.                                                 timerNumG=254;
  186.                                         }
  187.                                         delay(5);        
  188.                                 }                        
  189.                         }                                
  190.                 }                 
  191. //*******************綠燈變暗********************        
  192.                 if(KeyGdown==0)
  193.                 {               
  194.                         delay(8);
  195.                         if(KeyGdown==0)
  196.                         {
  197.                                 while(!KeyGdown==1)
  198.                                 {
  199.                                         timerNumG--;
  200.                                         dat[0]='h';
  201.                                         dat[1]=49;
  202.                       dat[7]=timerNumG/100+48;
  203.                       dat[8]=timerNumG%100/10+48;
  204.                       dat[9]=timerNumG%100%10+48;               
  205.                                         for(j=0;j<13;j++)
  206.                             {
  207.                                   senddata(dat[j]);
  208.                             }               
  209.                                        
  210.                                         dat[0]='n';
  211.                                         dat[7]=(timerNumG*100/255)/100+48;
  212.                                         dat[8]=(timerNumG*100/255)%100/10+48;
  213.                                         dat[9]=(timerNumG*100/255)%100%10+48;
  214.                                         for(j=0;j<13;j++)
  215.                             {
  216.                                   senddata(dat[j]);
  217.                             }               
  218.                                                                                                                         
  219.                                         if(timerNumG<=0)
  220.                                         {
  221.                                                 timerNumG=1;
  222.                                         }                                       
  223.                                         delay(5);        
  224.                                 }                        
  225.                         }                                
  226.                 }
  227. //*******************藍(lán)燈變亮*******************
  228.                 if(KeyBup==0)
  229.                 {               
  230.                         delay(8);
  231.                         if(KeyBup==0)
  232.                         {
  233.                                 while(!KeyBup==1)
  234.                                 {
  235.                                         timerNumB++;
  236.                                         dat[0]='h';
  237.                                         dat[1]=50;
  238.                       dat[7]=timerNumB/100+48;
  239.                       dat[8]=timerNumB%100/10+48;
  240.                       dat[9]=timerNumB%100%10+48;               
  241.                                         for(j=0;j<13;j++)
  242.                             {
  243.                                   senddata(dat[j]);
  244.                             }               
  245.                                        
  246.                                         dat[0]='n';
  247.                                         dat[7]=(timerNumB*100/255)/100+48;
  248.                                         dat[8]=(timerNumB*100/255)%100/10+48;
  249.                                         dat[9]=(timerNumB*100/255)%100%10+48;
  250.                                         for(j=0;j<13;j++)
  251.                             {
  252.                                   senddata(dat[j]);
  253.                             }               
  254.                                                                                 
  255.                                         if(timerNumB>=255)
  256.                                         {
  257.                                                 timerNumB=254;
  258.                                         }                                       
  259.                                         delay(5);        
  260.                                 }                        
  261.                         }                                
  262.                 }         
  263. //*******************藍(lán)燈變暗*******************        
  264.                 if(KeyBdown==0)
  265.                 {               
  266.                         delay(8);
  267.                         if(KeyBdown==0)
  268.                         {
  269.                                 while(!KeyBdown==1)
  270.                                 {
  271.                                         timerNumB--;
  272.                                         dat[0]='h';
  273.                                         dat[1]=50;
  274.                       dat[7]=timerNumB/100+48;
  275.                       dat[8]=timerNumB%100/10+48;
  276.                       dat[9]=timerNumB%100%10+48;               
  277.                                         for(j=0;j<13;j++)
  278.                             {
  279.                                   senddata(dat[j]);
  280.                             }               
  281.                                        
  282.                                         dat[0]='n';
  283.                                         dat[7]=(timerNumB*100/255)/100+48;
  284.                                         dat[8]=(timerNumB*100/255)%100/10+48;
  285.                                         dat[9]=(timerNumB*100/255)%100%10+48;
  286.                                         for(j=0;j<13;j++)
  287.                             {
  288.                                   senddata(dat[j]);
  289.                             }                                                                                

  290.                                         if(timerNumB<=0)
  291.                                         {
  292.                                                 timerNumB=1;
  293.                                         }                                       
  294.                                         delay(5);        
  295.                                 }                        
  296.                         }                                
  297.                 }
  298. //***********************全亮*********************        
  299.                 if(KeyAll==0)
  300.                 {               
  301.                         delay(8);
  302.                         if(KeyAll==0)
  303.                         {
  304.                                         timerNumR=timerNumB=timerNumG=255;
  305.                                         dat[0]='h';
  306.                                         dat[1]=48;
  307.                       dat[7]=2+48;
  308.                       dat[8]=5+48;
  309.                       dat[9]=5+48;               
  310.                                         for(j=0;j<13;j++)
  311.                             {
  312.                                   senddata(dat[j]);
  313.                             }                                                
  314.                                         dat[0]='n';
  315.                                         dat[7]=1+48;
  316.                                         dat[8]=0+48;
  317.                                         dat[9]=0+48;
  318.                                         for(j=0;j<13;j++)
  319.                             {
  320.                                   senddata(dat[j]);
  321.                             }               
  322.                                        
  323.                                         dat[0]='h';
  324.                                         dat[1]=49;
  325.                       dat[7]=2+48;
  326.                       dat[8]=5+48;
  327.                       dat[9]=5+48;               
  328.                                         for(j=0;j<13;j++)
  329.                             {
  330.                                   senddata(dat[j]);
  331.                             }                                                
  332.                                         dat[0]='n';
  333.                                         dat[7]=1+48;
  334.                                         dat[8]=0+48;
  335.                                         dat[9]=0+48;
  336.                                         for(j=0;j<13;j++)
  337.                             {
  338.                                   senddata(dat[j]);
  339.                             }               
  340.                                        
  341.                                         dat[0]='h';
  342.                                         dat[1]=50;
  343.                       dat[7]=2+48;
  344.                       dat[8]=5+48;
  345.                       dat[9]=5+48;               
  346.                                         for(j=0;j<13;j++)
  347.                             {
  348.                                   senddata(dat[j]);
  349.                             }                                                
  350.                                         dat[0]='n';
  351.                                         dat[7]=1+48;
  352.                                         dat[8]=0+48;
  353.                                         dat[9]=0+48;
  354.                                         for(j=0;j<13;j++)
  355.                             {
  356.                                   senddata(dat[j]);
  357.                             }               
  358.                                                                                                                
  359.                         }                                
  360.                 }
  361. //***********************不亮********************        
  362.                 if(KeyNull==0)
  363.                 {               
  364.                         delay(8);
  365.                         if(KeyNull==0)
  366.                         {
  367.                                         timerNumR=timerNumG=timerNumB=0;
  368.                                         dat[0]='h';
  369.                                         dat[1]=48;
  370.                       dat[7]=0+48;
  371.                       dat[8]=0+48;
  372.                       dat[9]=0+48;               
  373.                                         for(j=0;j<13;j++)
  374.                             {
  375.                                   senddata(dat[j]);
  376.                             }                                                
  377.                                         dat[0]='n';
  378.                                         dat[7]=0+48;
  379.                                         dat[8]=0+48;
  380.                                         dat[9]=0+48;
  381.                                         for(j=0;j<13;j++)
  382.                             {
  383.                                   senddata(dat[j]);
  384.                             }               
  385.                                        
  386.                                         dat[0]='h';
  387.                                         dat[1]=49;
  388.                       dat[7]=0+48;
  389.                       dat[8]=0+48;
  390.                       dat[9]=0+48;               
  391.                                         for(j=0;j<13;j++)
  392.                             {
  393.                                   senddata(dat[j]);
  394.                             }                                                
  395.                                         dat[0]='n';
  396.                                         dat[7]=0+48;
  397.                                         dat[8]=0+48;
  398.                                         dat[9]=0+48;
  399.                                         for(j=0;j<13;j++)
  400.                             {
  401.                                   senddata(dat[j]);
  402.                             }               
  403.                                        
  404.                                         dat[0]='h';
  405.                                         dat[1]=50;
  406.                       dat[7]=0+48;
  407.                       dat[8]=0+48;
  408.                       dat[9]=0+48;               
  409.                                         for(j=0;j<13;j++)
  410.                             {
  411.                                   senddata(dat[j]);
  412.                             }                                                
  413.                                         dat[0]='n';
  414.                                         dat[7]=0+48;
  415.                                         dat[8]=0+48;
  416.                                         dat[9]=0+48;
  417.                                         for(j=0;j<13;j++)
  418.                             {
  419.                                   senddata(dat[j]);
  420.                             }               
  421.                         }                                
  422.                 }                        
  423.    }
  424. }

  425. //定時器0中斷處理函數(shù),用于產(chǎn)生PWM

  426. void T1zd(void) interrupt 1  //using 1
  427. {                             
  428.         TH0 = 0xFF;
  429.         TL0 = 0xCE;
  430.         
  431.         timerR++;
  432.         timerG++;
  433.         timerB++;

  434.   if(timerR>=255) timerR=0;
  435.         if(timerR<timerNumR)  PWMred=1;
  436.   else PWMred=0;
  437.         
  438.   if(timerG>=255) timerG=0;
  439.         if(timerG<timerNumG)  PWMgre=1;
  440.   else PWMgre=0;

  441.         if(timerB>=255) timerB=0;
  442.         if(timerB<timerNumB)  PWMblu=1;
  443.   else PWMblu=0;
  444. }

  445. //串口接收數(shù)據(jù)處理
  446. void deal()
  447. {
  448.           rec_num=0;
  449.            if(rec_data[4]==0x01)
  450.                 {
  451.                          timerNumR=rec_data[0];
  452.                          LED9=0;
  453.                          delay(5);
  454.                 }
  455.                 if(rec_data[4]==0x02)
  456.                 {
  457.                                 timerNumG=rec_data[0];
  458.                 }           
  459.                 if(rec_data[4]==0x03)
  460.                 {
  461.                                 timerNumB=rec_data[0];
  462.                 }
  463.                
  464. }

  465. //串口接收中斷,數(shù)據(jù)包頭為0x10,第二個字節(jié)為有用的數(shù)值,第六個字節(jié)為數(shù)據(jù)標(biāo)志,最后兩個字節(jié)為數(shù)據(jù)結(jié)束校驗(yàn)

  466. void  serial() interrupt 4  //using 3
  467. {
  468.   ES = 0;   
  469.   if(RI==1)
  470.   {         
  471.     RI=0;
  472.                 recdata=SBUF;
  473.          if(rec_num==0)
  474.          {   
  475. ……………………

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

所有資料51hei提供下載:
三基色合成演示裝置程序.zip (45.88 KB, 下載次數(shù): 22)




作者: lxa0    時間: 2017-11-15 22:05
這個還不錯~~~~~~~~~~~




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 毛色毛片免费看 | 欧美日韩中文国产一区发布 | 久久亚洲春色中文字幕久久久 | 欧美极品在线播放 | 91激情电影 | 久久精品亚洲精品国产欧美 | 国产98在线 | 免费, | 免费激情网站 | 欧洲精品码一区二区三区免费看 | 日韩二三区 | 欧美精品欧美精品系列 | 亚洲视频在线观看免费 | 国产精品国产馆在线真实露脸 | aaaa日韩 | 国产成人精品久久二区二区 | 久久一区精品 | 99这里只有精品视频 | 欧美综合一区二区三区 | 免费一区二区三区 | 国产精品一区二区免费 | 久国久产久精永久网页 | 亚洲精品国产第一综合99久久 | 中文字幕一区二区三区四区不卡 | 亚洲一区二区三区在线视频 | 精品一区二区久久久久久久网站 | 亚洲欧美日韩国产综合 | 美女视频黄色片 | 免费观看av | 成人影视网 | 91免费视频观看 | 国产999精品久久久久久 | 国产免费视频 | 一区亚洲 | 欧美日本一区二区 | 国产免费又黄又爽又刺激蜜月al | 欧美性生活网 | 91精品国产91久久久久游泳池 | 精品国产欧美在线 | 国产一区二区不卡 | 久久久国产一区 | 久久一区二区av |