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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3423|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

STC8G1K08-16PIN單片機(jī)為主控轉(zhuǎn)向中網(wǎng)燈主控程序 求指教

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:826754 發(fā)表于 2020-11-9 19:56 | 只看該作者 回帖獎勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. /********使用STC8G1K08-16PIN為主控轉(zhuǎn)向流光燈,
  2. 1、上電掃描流光左右同時(shí)流光三次,日行燈亮。
  3. 2、接收到左或右轉(zhuǎn)向信號時(shí)相應(yīng)方向流光一次,日行燈LED11 50%亮度。
  4. 3、斷開左或右轉(zhuǎn)向信號時(shí),日行燈LED11 100%亮度。
  5. 4、鎖車左右同時(shí)接到信號時(shí)流光。*****/

  6. #include <STC8G.H>  
  7. typedef unsigned char u8;
  8. typedef unsigned int  u16;
  9. /********端口引腳定義*****/  
  10. sbit KEYL=P5^4;                                //設(shè)置左方向觸發(fā)信號
  11. sbit KEYR=P5^5;                            //設(shè)置右方向觸發(fā)信號

  12. sbit LED1=P3^2;                            //左方向流光燈設(shè)定
  13. sbit LED2=P3^3;
  14. sbit LED3=P3^4;
  15. sbit LED4=P3^5;
  16. sbit LED5=P3^6;

  17. sbit LED6=P3^7;                                //右方向流光燈設(shè)定
  18. sbit LED7=P1^0;
  19. sbit LED8=P1^1;
  20. sbit LED9=P1^6;
  21. sbit LED10=P1^7;

  22. sbit LED11=P3^1;                   //日行燈設(shè)定

  23. bit signl=0;             //觸發(fā)狀態(tài)標(biāo)志
  24. bit signr=0;
  25. u8  count1=0;                        //開關(guān)消抖計(jì)數(shù)變量
  26. u16 count2=0,count3=0;        //LED延時(shí)計(jì)數(shù)變量

  27. /********定時(shí)器初始化*****/  
  28. void Timer0Init()        //10毫秒@11.0592MHz
  29. {
  30.         AUXR &= 0x7F;        //定時(shí)器時(shí)鐘12T模式
  31.         TMOD &= 0xF0;        //設(shè)置定時(shí)器自動重裝模式
  32.         TL0 = 0x00;                //設(shè)置定時(shí)初值
  33.         TH0 = 0xDC;                //設(shè)置定時(shí)初值
  34.         TF0 = 0;                //清除TF0標(biāo)志
  35.         TR0 = 1;                //定時(shí)器0開始計(jì)時(shí)
  36. }
  37. /********上電掃描流光子函數(shù)*****/
  38. void Led()
  39. {
  40.                                                                 LED1=LED6=1;    //LED1,LED6亮
  41.                                 count2++;
  42.                                 if(count2>=10) //0.1秒延時(shí)
  43.                                      LED1=LED6=LED2=LED7=1;     //LED1、2,LED6、7亮
  44.                                 if(count2>=20)//0.2秒延時(shí)
  45.                                      LED1=LED6=0;   LED2=LED7=LED3=LED8=1;     //LED2、3,LED7、8亮
  46.                                 if(count2>=30)//0.3秒延時(shí)
  47.                                          LED1=LED6=LED2=LED7=0;   LED3=LED8=LED4=LED9=1;                         //LED3、4,LED8、9亮
  48.                                 if(count2>=40)//0.4秒延時(shí)
  49.                                          LED1=LED6=LED2=LED7=LED3=LED8=0;   LED4=LED9=LED5=LED10=1;         //LED4、5,LED9、10亮
  50.                                 if(count2>=50)//0.5秒延時(shí)
  51.                                          LED1=LED6=LED2=LED7=LED3=LED8=LED4=LED9=0;   LED5=LED10=1;         //LED5,LED10亮
  52.                                                                
  53.                                                                 {
  54.                                    count2=60; //保持
  55.                                      LED1=LED6=LED2=LED7=LED3=LED8=LED4=LED9=LED5=LED10=0;       //LED滅
  56.                                 }

  57. }




  58. /******主函數(shù)區(qū)******/  
  59. void main()
  60. {
  61.         P3M0=0xFE;//設(shè)P3口為推挽輸出,P3.0為高阻輸入.         
  62.         P3M1=0x01;
  63.                 P1M0=0xC3;//設(shè)P1口為推挽輸出,
  64.                 P1M1=0x00;         
  65.         P5M0=0x00;//設(shè)P5.4、P5.5為準(zhǔn)雙向口.        
  66.         P5M1=0x00;
  67.                 P3=0X01;
  68.                 P1=0X3C;

  69.         
  70.         KEYL =1; //不可以設(shè)低電平
  71.                 KEYR =1;        
  72.         Timer0Init();
  73.                 Led();
  74.                 Led();
  75.                 Led();
  76.                 LED11=1; //P5.5為高電平
  77.         while(1)         
  78.         {                 
  79.                 if(TF0==1)//定時(shí)器10毫秒溢出
  80.                 {
  81.                         TF0=0; //清0
  82. /********掃描開關(guān)(觸發(fā)/復(fù)位)**************/
  83.                         if(KEYL==1)//如P5.4為高電平
  84.                         {
  85.                                 if(++count1>=2&&signl==0)//消抖計(jì)數(shù)和判斷判斷開關(guān)觸發(fā)狀態(tài)
  86.                                         signl=1;//觸發(fā)狀態(tài)標(biāo)志置1
  87.                         }
  88.                         else                     //如P5.4為低電平
  89.                         {
  90.                                 signl=0;                //觸發(fā)狀態(tài)標(biāo)志清0
  91.                                 count1=0;        //消抖計(jì)數(shù)清0
  92.                         }
  93.                         if(KEYR==1)//如P5.5為高電平
  94.                         {
  95.                                 if(++count1>=2&&signr==0)//消抖計(jì)數(shù)和判斷判斷開關(guān)觸發(fā)狀態(tài)
  96.                                         signr=1;//觸發(fā)狀態(tài)標(biāo)志置1
  97.                         }
  98.                         else                     //如P5.5為低電平
  99.                         {
  100.                                 signr=0;                //觸發(fā)狀態(tài)標(biāo)志清0
  101.                                 count1=0;        //消抖計(jì)數(shù)清0
  102.                         }
  103. /********執(zhí)行觸發(fā)/復(fù)位部分**************/
  104.                         if(signl==1)                                                                          //觸發(fā)狀態(tài)
  105.                         {
  106.                                 count3=0;                                                                 //計(jì)數(shù)3清0
  107.                                 LED11=0;                                                             //P3.1需PWM50%亮度         //P3.1輸出低電平 熄
  108.                                                                 LED1=1;                                                                             //LED1亮
  109.                                 count2++;
  110.                                 if(count2>=10) //0.1秒延時(shí)
  111.                                      LED1=LED2=1;                                             //LED1、2,亮
  112.                                 if(count2>=20)//0.2秒延時(shí)
  113.                                      LED1=0;   LED2=LED3=1;                  //LED2、3,亮
  114.                                 if(count2>=30)//0.3秒延時(shí)
  115.                                          LED1=LED2=0;   LED3=LED4=1;                         //LED3、4,亮
  116.                                 if(count2>=40)//0.4秒延時(shí)
  117.                                          LED1=LED2=LED3=0;   LED4=LED5=1;             //LED4、5,亮
  118.                                 if(count2>=50)//0.5秒延時(shí)
  119.                                          LED1=LED2=LED3=LED4=0;   LED5=1;             //LED5,亮
  120.                                                                
  121.                                                                 {
  122.                                    count2=60; //保持
  123.                                      LED1=LED2=LED3=LED4=LED5=0;                        //LED滅
  124.                                 }

  125.                         }
  126.                         else                                        //復(fù)位狀態(tài)
  127.                         {
  128.                                 count2=0;                                                        //計(jì)數(shù)2清0
  129.                                 LED1=LED2=LED3=LED4=LED5=0;                                        //LED1~5熄
  130.                                 if(++count3>=100)//1秒延時(shí)
  131.                                 {
  132.                                         count3=100; //保持
  133.                                         LED11=1;                                        //LED5亮
  134.                                 }
  135.                         }
  136.                         if(signr==1)                                                                          //觸發(fā)狀態(tài)
  137.                         {
  138.                                 count3=0;                                                                 //計(jì)數(shù)3清0
  139.                                 LED11=0;                                                                     //P3.1需PWM50%亮度         //P3.1輸出低電平 熄
  140.                                                                 LED6=1;                                                                             //LED6亮
  141.                                 count2++;
  142.                                 if(count2>=10) //0.1秒延時(shí)
  143.                                      LED6=LED7=1;                                             //LED6、7,亮
  144.                                 if(count2>=20)//0.2秒延時(shí)
  145.                                      LED6=0;   LED7=LED8=1;                  //LED7、8,亮
  146.                                 if(count2>=30)//0.3秒延時(shí)
  147.                                          LED6=LED7=0;   LED8=LED9=1;                         //LED8、9,亮
  148.                                 if(count2>=40)//0.4秒延時(shí)
  149.                                          LED6=LED7=LED8=0;   LED9=LED10=1;             //LED9、10,亮
  150.                                 if(count2>=50)//0.5秒延時(shí)
  151.                                          LED6=LED7=LED8=LED9=0;   LED10=1;             //LED10,亮
  152.                                                                
  153.                                                                 {
  154.                                    count2=60; //保持
  155.                                      LED6=LED7=LED8=LED9=LED10=0;                        //LED滅
  156.                                 }

  157.                         }
  158.                         else                                        //復(fù)位狀態(tài)
  159.                         {
  160.                                 count2=0;                                                        //計(jì)數(shù)2清0
  161.                                 LED6=LED7=LED8=LED9=LED10=0;                                        //LED6~10熄
  162.                                 if(++count3>=100)//1秒延時(shí)
  163.                                 {
  164.                                         count3=100; //保持
  165.                                         LED11=1;                                        //LED5亮
  166.                                 }
  167.                         }


  168.                 }
  169.         }
  170. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:826754 發(fā)表于 2020-11-10 10:06 | 只看該作者
那位大大幫忙看看這個(gè)程序需要怎樣修改一下,及怎樣加入PWM的調(diào)光功能。
回復(fù)

使用道具 舉報(bào)

板凳
ID:826754 發(fā)表于 2020-11-12 08:21 | 只看該作者
看看那位大神能指點(diǎn)一下雙輸入信號的思路。
回復(fù)

使用道具 舉報(bào)

地板
ID:687694 發(fā)表于 2020-11-12 16:37 | 只看該作者
吐槽一句,這程序?qū)懙恼鎻U片子。
輸出選擇pwm端I/O,配置pwm。 硬件需要做些改動,不改硬件控制亮度,你估計(jì)要配置8路pwm 。不過stc8G1k08芯片只有3路。。。。
關(guān)于信號采集。。。我想應(yīng)該是控制信號輸入,嚴(yán)謹(jǐn)寫法用中斷,不嚴(yán)謹(jǐn)嘛。輪詢就能行。至于雙路信號,最多不過4種狀態(tài),case0~3,不香么。
另外,流光寫成子函數(shù),傳遞調(diào)用參數(shù)不香么,多寫幾個(gè)花樣閃爍做成子函數(shù)。。。。。
還有,你想要的功能表達(dá)并不詳細(xì),沒法給你具體解答。
回復(fù)

使用道具 舉報(bào)

5#
ID:826754 發(fā)表于 2020-11-28 11:41 | 只看該作者
沒有人指點(diǎn)嗎?貼子都沉了。
回復(fù)

使用道具 舉報(bào)

6#
ID:923440 發(fā)表于 2021-6-10 10:05 | 只看該作者
請問stc8G1k08的芯片,在keil中cpu選89c52的行嗎,還有這個(gè)頭文件就是“stc8G.h”嘛
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久久一区二区三区 | 中文字幕在线观看 | 狠狠涩| 国产农村妇女精品一区 | 国产精品777一区二区 | 青青草一区 | 国产高清久久久 | 国产电影一区二区三区爱妃记 | 久久成人高清视频 | 91免费福利视频 | 99久久亚洲 | 午夜三级视频 | 国产激情视频在线 | 婷婷免费视频 | 欧美精品一区三区 | 国产一区二区三区在线 | 91欧美| 国产精品久久久久久久一区二区 | 美女视频三区 | 国产成人网 | 国产午夜精品久久久 | 伊人久久免费 | 国产美女精品视频 | 国产欧美在线观看 | 精品无码久久久久久国产 | 欧美视频在线观看 | 亚洲男人的天堂网站 | 亚洲一区二区不卡在线观看 | 亚洲视频1区 | 午夜在线精品偷拍 | 亚洲高清av在线 | 免费看国产精品视频 | 精品欧美乱码久久久久久1区2区 | 成人一区二区三区在线观看 | 日韩精品一区二区三区在线播放 | 国产精品一区在线观看 | 久久人人国产 | 337p日本欧洲亚洲大胆鲁鲁 | 麻豆视频在线免费观看 | 精品一区二区av | 伊人中文字幕 |