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

標(biāo)題: 單片機(jī)RGB愛心燈Proteus仿真程序(有詳細(xì)注釋) [打印本頁]

作者: hhhhhhjjjjjjjjj    時(shí)間: 2020-11-22 17:03
標(biāo)題: 單片機(jī)RGB愛心燈Proteus仿真程序(有詳細(xì)注釋)
RGB愛心燈仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下(代碼注釋很詳細(xì)):
  1. #include<reg52.h>//52頭文件
  2. #include<intrins.h>//循環(huán)左右移 函數(shù)頭文件
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. sbit wei1=P3^4;
  6. sbit wei2=P3^5;
  7. sbit wei3=P3^6;
  8. sbit wei4=P3^7;
  9. uchar code table0[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//從低位往高位移一個(gè)燈
  10. uchar code table1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//從高位往低位移一個(gè)燈
  11. uchar code table2[]={0xfe,0xfa,0xf8,0xf0,0xe0,0xa0,0x80,0x00};//從低位到高位逐步全部點(diǎn)亮
  12. uchar code table3[]={0x7f,0x3f,0x1f,0x0f,0x07,0x03,0x01,0x00};//從高位到低位逐步全部點(diǎn)亮
  13. uchar code table4[]={0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};//從低位到高位逐步全部熄滅
  14. uchar code table5[]={0x80,0xa0,0xe0,0xf0,0xf8,0xfa,0xfe,0xff};//從高位到低位逐步全部熄滅
  15. uchar code table6[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//從低位到高位,滅一個(gè)燈移動(dòng)
  16. uchar code table7[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};//從高位到低位,滅一個(gè)燈移動(dòng)
  17. uchar i;
  18. uint t;

  19. /**********************************/
  20. void delay(uint z) //延時(shí)函數(shù)
  21. {
  22.         uint x,y;
  23.         for(x=z;x>0;x--)
  24.                 for(y=314;y>0;y--);
  25. }
  26. /************************************/
  27. void delay1ms(uchar a)//延時(shí)1ms
  28. {
  29.         uchar x;
  30.         while(a--)
  31.         {
  32.           for(x=0;x<150;x++);
  33.         }        
  34. }
  35. /**********************************/
  36. void delay0ms(uint z) //延時(shí)函數(shù)
  37. {
  38.         uint x,y;
  39.         for(x=z;x>0;x--)
  40.                 for(y=10;y>0;y--);
  41. }
  42. /*************************************************
  43. //////////////////////////////////////////////////
  44. *************************************************/
  45. void deng0()//四組綠燈順時(shí)針逐步點(diǎn)亮
  46. {        P0=0xff;P1=0xff;
  47.         wei1=0;wei2=0;wei3=0;wei4=0;//打開所有位
  48.         for(i=0;i<8;i++)
  49.         {
  50.                 P2=table3[i];
  51.                 delay(40);
  52.         }
  53.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  54.         P2=0xff;
  55. }
  56. /////////////////////////////////////////
  57. void deng0_1()//四組紅燈順時(shí)針逐步點(diǎn)亮
  58. {         P1=0xff;P2=0xff;
  59.         wei1=0;wei2=0;wei3=0;wei4=0;//打開所有位
  60.         for(i=0;i<8;i++)
  61.         {
  62.                 P0=table3[i];
  63.                 delay(40);
  64.         }
  65.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  66.         P0=0xff;
  67. }
  68. /////////////////////////////////////////////
  69. void deng0_2()//四組藍(lán)燈順時(shí)針逐步點(diǎn)亮
  70. {        P0=0xff;P2=0xff;
  71.         wei1=0;wei2=0;wei3=0;wei4=0;//打開所有位
  72.         for(i=0;i<8;i++)
  73.         {
  74.                 P1=table3[i];
  75.                 delay(40);
  76.         }
  77.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  78.         P1=0xff;
  79. }
  80.   ///////////////////////////////////////
  81. void deng1()//四組洋紅燈順時(shí)針逐步熄滅
  82. {        
  83.         
  84.         wei1=0;wei2=0;wei3=0;wei4=0;//打開所有位
  85.         P2=0xff;
  86.         for(i=0;i<8;i++)
  87.         {
  88.                 P0=table5[i];
  89.                 P1=table5[i];
  90.                 delay(40);

  91.         }
  92.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  93.         P0=0xff;P1=0xff;
  94.         
  95. }
  96. /*****************************************************************************/
  97. void deng3()//紅、黃、綠、青、藍(lán)、洋紅、白、紅,順時(shí)針流動(dòng)(循環(huán)左移,即高位向低位移)
  98. {
  99.         uchar a,b,c;//綠、紅、藍(lán)
  100.         a=0x8d;
  101.         b=0x38;
  102.         c=0xe1;
  103. /////////////
  104.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  105.         P2=a;
  106.         P0=b;
  107.         P1=c;
  108.         for(i=0;i<8;i++)
  109.         {
  110.                 a=_cror_(a,1);//循環(huán)左移
  111.                 b=_cror_(b,1);//循環(huán)左移
  112.                 c=_cror_(c,1);//循環(huán)左移
  113.                 delay(100);//延時(shí)
  114.                 P2=a;
  115.                 P0=b;
  116.                 P1=c;
  117.         }
  118.         P0=0xff;P1=0xff;P2=0xff;
  119.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  120. }

  121. //////////////////////////////////////////
  122. void deng3_1()//藍(lán)燈亮的時(shí)候,四個(gè)洋紅燈轉(zhuǎn)一下
  123. {         
  124.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  125.         P1=0x00;P0=0xff;//藍(lán)燈全部亮
  126.         for(i=0;i<8;i++)
  127.         {
  128.                 P0=table1[i];
  129.                 delay(50);
  130.         }
  131.          
  132.         P0=0xff;P2=0xff;
  133.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位

  134. }
  135. ///////////////////////////////////////////////
  136. void deng3_2()//綠燈亮的時(shí)候,四個(gè)紅燈轉(zhuǎn)一下
  137. {         
  138.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  139.         P1=0xff;P2=0x00;//綠燈全部亮
  140.         for(i=0;i<8;i++)
  141.         {
  142.                 P0=table0[i];
  143.                 delay(50);
  144.         }

  145.         P0=0xff;P2=0xff;
  146.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  147. }
  148. //////////////////////////////////////////////
  149. void deng3_3()//紅燈亮的時(shí)候,四個(gè)洋紅燈轉(zhuǎn)一下
  150. {         
  151.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  152.         P0=0x00;P2=0xff;//紅燈全部亮
  153.         for(i=0;i<8;i++)
  154.         {
  155.                 P1=table1[i];
  156.                 delay(50);
  157.         }
  158.         P0=0xff;P2=0xff;
  159.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  160. }
  161. ///////////////////////////////////////////////
  162. void deng3_4()//紫燈亮的時(shí)候,四個(gè)紅燈轉(zhuǎn)一下
  163. {         
  164.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  165.         P0=0x00;P1=0x00;P0=0xff;//紫燈全部亮
  166.         for(i=0;i<8;i++)
  167.         {
  168.                 P0=table6[i];
  169.                 delay(50);
  170.         }

  171.         P0=0xff;P1=0xff;
  172.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  173. }
  174. void deng3_5()//白燈亮的時(shí)候,四個(gè)青燈轉(zhuǎn)一下
  175. {         
  176.         wei1=0;wei2=0;wei3=0;wei4=0;//打開位
  177.         P1=0x00;P0=0x00;P2=0x00;//白燈全部亮
  178.         for(i=0;i<8;i++)
  179.         {
  180.                 P0=table7[i];
  181.                 delay(50);
  182.         }

  183.         P0=0xff;P1=0xff;P2=0xff;
  184.         wei1=1;wei2=1;wei3=1;wei4=1;//關(guān)閉所有位
  185. }
  186. /************************************************************
  187. *************************************************************/
  188. void rled6_1()//紅,下面模塊的小函數(shù)
  189. {
  190.         for(i=0;i<8;i++)
  191.         {
  192.                 P0=table1[i];
  193.                 delay(25);
  194.         }
  195.         P0=0xff;
  196. }
  197. /*******************************************/
  198. void rled7_1()//綠,下面模塊的小函數(shù)
  199. {
  200.         for(i=0;i<8;i++)
  201.         {
  202.                 P2=table1[i];
  203.                 delay(25);
  204.         }
  205.         P2=0xff;
  206. }
  207. /***********************************/
  208. void rled8_1()//藍(lán),下面模塊的小函數(shù)
  209. {
  210.         for(i=0;i<8;i++)
  211.         {
  212.                 P1=table0[i];
  213.                 delay(25);
  214.         }
  215.         P1=0xff;
  216. }

  217. /****************************************
  218. *****************************************/
  219. void deng6()//一個(gè)紅燈,順時(shí)針轉(zhuǎn)動(dòng)
  220. {
  221.         wei3=1;wei2=1;wei1=1;
  222.          wei4=0;//打開左上位
  223.         rled6_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  224.          wei4=1;
  225. /////////////////////////////
  226.          wei3=0;//打開右上位
  227.         rled6_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  228.          wei3=1;
  229. /////////////////////////////
  230.         wei2=0;//打開右下位
  231.         rled6_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  232.         wei2=1;
  233. ////////////////////////////
  234.         wei1=0;//打開左下位
  235.         rled6_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  236.         wei1=1;
  237. }
  238. /************************************/
  239. void deng7()//一個(gè)綠燈,順時(shí)針轉(zhuǎn)動(dòng)
  240. {
  241.          wei4=0;//打開左上位
  242.         rled7_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  243.          wei4=1;
  244. /////////////////////////////
  245.          wei3=0;//打開右上位
  246.         rled7_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  247.          wei3=1;
  248. /////////////////////////////
  249.         wei2=0;//打開右下位
  250.         rled7_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  251.         wei2=1;
  252. ////////////////////////////
  253.         wei1=0;//打開左下位
  254.         rled7_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  255.         wei1=1;
  256. }
  257. /*************************************/
  258. void deng8()//一個(gè)藍(lán)燈,順時(shí)針轉(zhuǎn)動(dòng)
  259. {
  260. /////////////////////////////
  261.         wei2=0;//打開右下位
  262.         rled8_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  263.         wei2=1;

  264. /////////////////////////////
  265.          wei3=0;//打開右上位
  266.         rled8_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  267.          wei3=1;
  268. /////////////////////
  269.           wei4=0;//打開左上位
  270.         rled8_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  271.          wei4=1;
  272. ////////////////////////////
  273.         wei1=0;//打開左下位
  274.         rled8_1();//一個(gè)紅燈順時(shí)針轉(zhuǎn)
  275.         wei1=1;

  276. }
  277. /********************************************/
  278. void deng9()//一位顯示黃、綠、青、藍(lán)、洋紅、紅、白,多彩流水,然后再顯示下一位
  279. {
  280.         wei3=0;//打開右上位選
  281.         wei1=0;//打開左下位選


  282.          /****************/         //黃色流水(紅色全亮,綠色逐步點(diǎn)亮)
  283.          P1=0xff;P2=0xff;
  284.           P0=0x00;//紅色全亮
  285.         for(i=0;i<8;i++)        
  286.         {
  287.                
  288.                 P2=table3[i];
  289.                 delay(30);
  290.         }
  291.         
  292.         /****************/         //綠色流水(綠色全亮,紅色逐步熄滅)
  293.         P2=0x00;//綠色全亮
  294.         for(i=0;i<8;i++        )        
  295.         {        
  296.                 P0=table5[i];
  297.                 delay(30);
  298.         }
  299.         P0=0xff;//紅色全滅
  300.         /****************/         //青色流水(綠色全亮,藍(lán)色逐步點(diǎn)亮)
  301.         P2=0x00;//綠色全亮
  302.         for(i=0;i<8;i++)        
  303.         {
  304.                 P1=table3[i];
  305.                 delay(30);

  306.         }

  307.         /**************/        //藍(lán)色流水(藍(lán)色全亮,綠色逐步熄滅)
  308.         P1=0x00;//藍(lán)色全亮,
  309.         for(i=0;i<8;i++)        
  310.         {
  311.                 P2=table5[i];
  312.                 delay(30);
  313.         }
  314.         P2=0xff;//綠色滅

  315.         /**************/        //洋紅色流水(藍(lán)色全亮,紅色逐步點(diǎn)亮)
  316.         P1=0x00;//藍(lán)色全亮
  317.         for(i=0;i<8;i++)        
  318.         {
  319.                 P0=table3[i];
  320.                 delay(30);
  321.         }
  322.         wei3=1;
  323.         wei1=1;
  324.         //P0=0xff;P1=0xff;P2=0xff;

  325.         wei4=0;//打開右上位選
  326.         wei2=0;//打開左下位選


  327.          /****************/         //黃色流水(紅色全亮,綠色逐步點(diǎn)亮)
  328.          P1=0xff;P2=0xff;
  329.           P0=0x00;//紅色全亮
  330.         for(i=0;i<8;i++)        
  331.         {
  332.                
  333.                 P2=table3[i];
  334.                 delay(30);
  335.         }
  336.         
  337.         /****************/         //綠色流水(綠色全亮,紅色逐步熄滅)
  338.         P2=0x00;//綠色全亮
  339.         for(i=0;i<8;i++        )        
  340.         {        
  341.                 P0=table5[i];
  342.                 delay(30);
  343.         }
  344.         P0=0xff;//紅色全滅
  345.         /****************/         //青色流水(綠色全亮,藍(lán)色逐步點(diǎn)亮)
  346.         P2=0x00;//綠色全亮
  347.         for(i=0;i<8;i++)        
  348.         {
  349.                 P1=table3[i];
  350.                 delay(30);

  351.         }

  352.         /**************/        //藍(lán)色流水(藍(lán)色全亮,綠色逐步熄滅)
  353.         P1=0x00;//藍(lán)色全亮,
  354.         for(i=0;i<8;i++)        
  355.         {
  356.                 P2=table5[i];
  357.                 delay(30);
  358.         }
  359.         P2=0xff;//綠色滅

  360.         /**************/        //洋紅色流水(藍(lán)色全亮,紅色逐步點(diǎn)亮)
  361.         P1=0x00;//藍(lán)色全亮
  362.         for(i=0;i<8;i++)        
  363.         {
  364.                 P0=table3[i];
  365.                 delay(30);
  366.         }
  367.         wei4=1;
  368.         wei2=1;
  369.         P0=0xff;P1=0xff;P2=0xff;
  370. }
  371. /********************************************/
  372. void huxideng()//呼吸燈
  373. {
  374.         wei4=0;wei3=0;wei2=0;wei1=0;

  375.     for(i=0;i<150;i++)//紅燈緩滅,綠燈緩亮
  376.    {
  377.                    P0=0xff;
  378.                 P2=0x00;
  379.                 delay0ms(i);
  380.                 P0=0x00;
  381.                 P2=0xff;
  382.                 delay0ms(150-i);

  383.    }
  384.    P0=0xff;
  385.    for(i=0;i<150;i++)//綠燈綬滅,藍(lán)燈緩亮
  386.    {
  387.                    P2=0xff;
  388.                 P1=0x00;
  389.                 delay0ms(i);
  390.                 P2=0x00;
  391.                 P1=0xff;
  392.                 delay0ms(150-i);

  393.    }
  394.    P2=0xff;
  395.            for(i=0;i<150;i++)//藍(lán)燈緩滅,紅燈緩亮
  396.         {
  397.                 P1=0xff;
  398.                 P0=0x00;
  399.                 delay0ms(i);
  400.                 P1=0x00;
  401.                 P0=0xff;
  402.                 delay0ms(150-i);
  403.         }
  404.         P1=0xff;P2=0xff;P0=0xff;
  405.         wei4=1;wei3=1;wei2=1;wei1=1;
  406. }

  407. /**************************************************
  408. *                                  主函數(shù)在此                                                     *
  409. ***************************************************/
  410. void main()
  411. {

  412.         
  413.         while(1)
  414.         {
  415.                                           
  416.                
  417.                 deng6();//一個(gè)紅燈順時(shí)針轉(zhuǎn)動(dòng)
  418.                 deng0_1();//四組紅燈順時(shí)針逐步點(diǎn)亮        
  419.                 deng0_2();//四組藍(lán)燈順時(shí)針逐步點(diǎn)亮
  420.                 deng9();//一位顯示黃、綠、青、藍(lán)、洋紅、紅、白,多彩流水,然后再顯示下一位
  421.                 deng3_2();//綠燈亮的時(shí)候,四個(gè)紅燈轉(zhuǎn)一下
  422.                 deng0_2();//四組藍(lán)燈順時(shí)針逐步點(diǎn)亮
  423.                 deng1();//四組綠燈順時(shí)針逐步熄滅
  424.                 deng8();//一個(gè)藍(lán)燈,順時(shí)針轉(zhuǎn)動(dòng)
  425.                 deng3_4();//洋紅燈亮的時(shí)候,四個(gè)紅燈轉(zhuǎn)一下
  426.                 deng9();//一位顯示黃、綠、青、藍(lán)、洋紅、紅、白,多彩流水,然后再顯示下一位
  427.                 deng7();//一個(gè)綠燈,順時(shí)針轉(zhuǎn)動(dòng)
  428.                 deng0_2();//四組藍(lán)燈順時(shí)針逐步點(diǎn)亮

  429.                 deng3(); //紅、黃、綠、青、藍(lán)、洋紅、白、紅,順時(shí)針流動(dòng)(循環(huán)左移,即高位向低位移)
  430.                 deng0();//四組綠燈順時(shí)針逐步點(diǎn)亮

  431.                 deng3_1();//藍(lán)燈亮的時(shí)候,四個(gè)洋紅燈轉(zhuǎn)一下
  432.                
  433.                 deng3_3();//紅燈亮的時(shí)候,四個(gè)洋紅燈轉(zhuǎn)一下
  434.                
  435.                 deng3_5();//白燈亮的時(shí)候,四個(gè)青燈轉(zhuǎn)一下

  436.                 huxideng();//呼吸燈
  437.                 deng1();//四組綠燈順時(shí)針逐步熄滅

  438.          

  439.         }
  440. }
復(fù)制代碼

全部資料51hei下載地址:
rgb愛心燈.zip (35.58 KB, 下載次數(shù): 66)


作者: aking991    時(shí)間: 2020-11-23 11:03
這種不加驅(qū)動(dòng)電路的設(shè)計(jì)會(huì)不會(huì)導(dǎo)致單片機(jī)總電流超出而損壞呢?特別是當(dāng)同時(shí)亮?xí)r
作者: hhhhhhjjjjjjjjj    時(shí)間: 2020-11-23 19:47
aking991 發(fā)表于 2020-11-23 11:03
這種不加驅(qū)動(dòng)電路的設(shè)計(jì)會(huì)不會(huì)導(dǎo)致單片機(jī)總電流超出而損壞呢?特別是當(dāng)同時(shí)亮?xí)r

這個(gè)只是仿真,驗(yàn)證程序的,實(shí)際電路是有限流電阻的
作者: 楊陽。。。。    時(shí)間: 2022-11-16 17:18
能不能分享一下原理圖謝謝小白
作者: 460142704    時(shí)間: 2022-11-17 22:51
程序注釋很清晰,感謝分享




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩欧美在线观看 | 伊人精品视频 | 桃色五月| 亚洲精品一区二区三区蜜桃久 | 亚洲国产精品久久久久久 | 91 在线| 蜜桃毛片| 91精品导航| 久久99精品久久久久久国产越南 | 午夜电影一区二区 | 精品久久国产 | 九九热精品视频 | 中文字幕一区二区三区在线观看 | 国产一级视频在线播放 | 国产一区 | 欧美一级黄色片 | 精品成人免费一区二区在线播放 | 91精品国产91久久久久久最新 | 人妖一区| 成人在线网址 | 日韩在线不卡视频 | 久久久久国产 | 日韩美av | 毛片久久久| 午夜影院操 | 国产97久久 | 日韩精品在线一区二区 | 亚洲黄色高清视频 | 国产成人福利在线观看 | 久久久久久久一区 | 美女人人操 | a精品视频| 成年人在线视频 | 国产粉嫩尤物极品99综合精品 | 1区2区3区视频 | aaa精品| 成人亚洲一区 | 欧美精品video | 国产999精品久久久久久 | 国产精品成人一区二区三区 | 亚洲日日|