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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求助,,關(guān)于單片機代碼的問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:169944 發(fā)表于 2017-5-2 12:28 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
寫了兩部分的代碼,一部分是led屏顯示數(shù)字的,另一部分是藍牙控制RBG的,單獨的可以用,為什么合在一起,藍牙那部分用不了了,求助

  1.         #include <reg52.h>
  2.         #include <string.h>
  3.         #include <intrins.h>
  4.         
  5.         #define LCD1602_DB  P0
  6.         
  7.         unsigned char tmp;
  8.         unsigned int c=0;
  9.         unsigned char flag1s = 0;
  10.         unsigned char flag2s = 0;
  11.         unsigned char counter = 0;//jishu
  12.         unsigned char str[] = "COUNT: ";
  13.         sbit LCD1602_RS = P1^0;
  14.         sbit LCD1602_RW = P1^1;
  15.         sbit LCD1602_E = P1^5;
  16.         sbit red   = P2^0;
  17.         sbit LED = P2^2;                                                                                                        
  18.         sbit red1 = P2^1;
  19.         
  20.         sbit RR = P2^3;
  21.         sbit GG = P2^4;
  22.         sbit BB = P2^5;
  23.         
  24.          int PWM_0 = 0;
  25.          int PWM_1 = 0;
  26.          int PWM_2 = 0;
  27.         
  28.         void InitLcd1602();
  29.         void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);
  30.         void itoa (unsigned int n,unsigned char s[5]);
  31.         void keepred();
  32.         
  33.         void init();   //串口初始化
  34.         void send(unsigned char a);        //單字節(jié)發(fā)送函數(shù)
  35.         void ctrl(); //接收處理函數(shù)
  36.         void color();
  37.         void keepPWM();
  38.         
  39.         void delay (unsigned char t) //延時
  40.         {
  41.             unsigned char i;
  42.             while(t--)
  43.             {
  44.                 for(i=0; i<114; i++);
  45.             }
  46.         }
  47.         
  48.         void main()
  49.         {
  50.                 unsigned int sec = 0, i=0, j = 0;        
  51.         
  52.                 unsigned char s[5] ;
  53.                 unsigned char x[6] = "none";        
  54.             red = 1;
  55.                 red1 = 1;
  56.                 TMOD = 0x01;
  57.                 TL0 = 0xC9;                //設(shè)置定時初值
  58.                 TH0 = 0xFF;
  59.                 TR0 = 1;
  60.                 EA = 1;
  61.                 ET0 = 1;
  62.                 InitLcd1602();
  63.                
  64.                 sec = 0;
  65.                 itoa(sec, s);
  66.                 LcdShowStr(8, 0, x);
  67.                 while(1)
  68.                 {        
  69.                         if(RI==1)                     // 是否有數(shù)據(jù)到來
  70.                       {
  71.                  RI = 0;
  72.                  tmp = SBUF;
  73.                          ctrl();
  74.                           delay(5);                   // 暫存接收到的數(shù)據(jù)  
  75.                      }
  76.                         keepPWM();            
  77.                         if(flag1s == 1 )                  
  78.                         {
  79.                                 flag1s = 0;                        
  80.                                 sec++;        
  81.                         }
  82.                         if(flag2s == 1 )                  
  83.                         {
  84.                             flag2s = 0;        
  85.                                 if(sec > 0)
  86.                                  sec--;
  87.                         }
  88.                         if(sec<=0)
  89.                         {
  90.                         sec = 0;
  91.                         LED = 0;
  92.                         LcdShowStr(8, 0, x);
  93.                         }
  94.                          else
  95.                         {
  96.                         LED = 1;
  97.                         itoa(sec, s);
  98.                         memset(s, '\0', 5);
  99.                         delay(50);
  100.                         
  101.                         }
  102.                         if(RI == 0)
  103.                         {
  104.                                 PWM_0 = PWM_0;
  105.                                 PWM_1 = PWM_1;
  106.                                 PWM_2 = PWM_2;
  107.                                 delay(5);
  108.                         }                                
  109.                 }               
  110.         }
  111.         void keepred()
  112.         {
  113.                
  114.         }
  115.         void LcdWaitReady()
  116.         {
  117.                 unsigned char sta;
  118.         
  119.                 LCD1602_DB = 0xFF;
  120.                 LCD1602_RS = 0;
  121.                 LCD1602_RW = 1;
  122.                 do        {
  123.                         LCD1602_E = 1;
  124.                         sta = LCD1602_DB;
  125.                         LCD1602_E = 0;
  126.                 }while(sta & 0x80);
  127.         }
  128.         void LcdWriteCmd(unsigned char cmd)
  129.         {
  130.                 LcdWaitReady();
  131.                 LCD1602_RS = 0;
  132.                 LCD1602_RW = 0;
  133.                 LCD1602_DB = cmd;
  134.                 LCD1602_E = 1;
  135.                 LCD1602_E = 0;
  136.         }
  137.         void LcdWriteDat(unsigned char dat)
  138.         {
  139.                 LcdWaitReady();
  140.                 LCD1602_RS = 1;
  141.                 LCD1602_RW = 0;
  142.                 LCD1602_DB = dat;
  143.                 LCD1602_E = 1;
  144.                 LCD1602_E = 0;
  145.         }
  146.         void LcdSetCursor(unsigned char x, unsigned char y)
  147.         {
  148.                 unsigned char addr;
  149.                 if(y == 0)
  150.                         addr = 0x00 + x;
  151.                 else
  152.                         addr = 0x40 + x;
  153.                 LcdWriteCmd(addr | 0x80);
  154.         }
  155.         void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str)
  156.         {
  157.                 LcdSetCursor(x, y);
  158.                 while(*str != '\0')
  159.                 {
  160.                         LcdWriteDat(*str++);   
  161.                 }
  162.         }
  163.         void InitLcd1602()
  164.         {
  165.                 LcdWriteCmd(0x38);
  166.                 LcdWriteCmd(0x0C);
  167.                 LcdWriteCmd(0x06);
  168.                 LcdWriteCmd(0x01);
  169.         }
  170.         void itoa (unsigned int n,unsigned char s[])
  171.         {
  172.             unsigned char temp;
  173.             unsigned int i = 0;
  174.             unsigned int len = 0;            
  175.             while(n != 0)
  176.             {
  177.                 s[i] = (n  % 10) + '0' ;//算出字符
  178.                 n = n / 10;
  179.                        i++;
  180.             }
  181.             s[i] = '\0';
  182.             len = strlen(s);
  183.             for(i = 0; i < len / 2; i++) //前后換順序
  184.             {
  185.                 temp = s[i];
  186.                 s[i] = s[len - 1 - i];
  187.                 s[len - 1 - i] = temp;
  188.             }
  189.                 LcdShowStr(1, 0, str);
  190.                 LcdWriteCmd(0x01);
  191.                 LcdShowStr(1, 0, str);
  192.                 LcdShowStr(8, 0, s);
  193.                 s[0] = '\0';
  194.         }
  195.         void keepPWM()//保持輸出
  196.         {
  197.                         if(PWM_0 <=0)
  198.                         PWM_0 =0;
  199.                         if(PWM_1 <=0)
  200.                         PWM_1 =0;
  201.                         if(PWM_2 <=0)
  202.                         PWM_2 =0;
  203.                         if(PWM_0 >=255)
  204.                         PWM_0 =255;
  205.                         if(PWM_1 >=255)
  206.                         PWM_1 =255;
  207.                         if(PWM_2 >=255)
  208.                         PWM_2 =255;
  209.                         
  210.                
  211.         }
  212.         void init()        //串口初始化
  213.         {
  214.             ES=0;                                                                  //關(guān)中斷
  215.             SCON = 0x50;                        // REN=1允許串行接受狀態(tài),串口工作模式1,
  216.             //10位UART(1位起始位,8位數(shù)據(jù)位,1位停止位,無奇偶校驗),波特率可變
  217.         
  218.             TMOD = 0x20;                        // 定時器1工作于方式2,8位自動重載模式, 用于產(chǎn)生波特率
  219.             TH1=TL1=0xFD;                       // 波特率9600 (本次測試采用晶振為11.0592)
  220.         
  221.             PCON &= 0x7f;                       // 波特率不倍增
  222.             TR1 = 1;                                                          //定時器1開始工作,產(chǎn)生波特率
  223.             //發(fā)送標志位置0
  224.             TI=0;                                                                  //接收標志位置0
  225.             RI=0;
  226.             //EA=0;
  227.             ES=1;
  228.         }
  229.         
  230.         /*void send(unsigned char a)        //單字節(jié)數(shù)據(jù)發(fā)送
  231.         {
  232.             //注意:若單片機TXD(P3.1)無上拉能力,必須在P3.1端接上拉電阻。本次測試需要接上拉電阻
  233.             TI=0;
  234.             SBUF=a;
  235.             while(TI==0);
  236.             TI=0;
  237.             if(c%2)                                        //發(fā)送指示燈標志,每接收一次,此燈亮滅交替
  238.                 led=1;
  239.             else
  240.                 led=0;
  241.             c++;
  242.         }*/
  243.         
  244.         void ctrl()                            //接收處理函數(shù)
  245.         {
  246.                    switch(tmp)
  247.                     {
  248.                     case '1':           //白
  249.                 PWM_0 = 0;
  250.                         PWM_1 = 0;
  251.                         PWM_2 = 0;  
  252.                         //delay(3000);                                 
  253.                 //send(tmp);
  254.                 break;
  255.                     case '2':                                       
  256.                 PWM_0 = 255-128;        //紫
  257.                         PWM_1 = 255;
  258.                         PWM_2 = 255-128;
  259.                         //delay(3000);
  260.                // send(tmp);
  261.                 break;
  262.                            case '3':                                   
  263.                 PWM_0 = 255;        //藍色
  264.                         PWM_1 = 255;
  265.                         PWM_2 = 0;
  266.                         //delay(3000);
  267.                // send(tmp);
  268.                 break;
  269.                     case '4':                                       
  270.                 PWM_0 = 30;        // 淺藍
  271.                         PWM_1 = 100;
  272.                         PWM_2 = 255;
  273.                         //delay(3000);
  274.               //  send(tmp);
  275.                 break;
  276.                     case '5':                                       
  277.                 PWM_0 = 255-33;        //        灰
  278.                         PWM_1 = 255-33;
  279.                         PWM_2 = 255-33;
  280.                         //delay(3000);
  281.               //  send(tmp);
  282.                 break;
  283.                         case '6':                                       
  284.                 PWM_0 = 254;        //        白
  285.                         PWM_1 = 254;
  286.                         PWM_2 = 254;
  287.                         //delay(3000);
  288.               //  send(tmp);
  289.                 break;
  290.                         case 'a':
  291.                         PWM_0=PWM_0+5;        //        jiaqiang
  292.                         PWM_1=PWM_1+5;
  293.                         PWM_2=PWM_2+5;
  294.                         break;
  295.                         case 'b':
  296.                         PWM_0=PWM_0-5;        //  jianruo
  297.                         PWM_1=PWM_1-5;
  298.                         PWM_2=PWM_2-5;
  299.                         keepPWM();
  300.                         break;
  301.                         case 'c':           //shanshuo
  302.                         color();
  303.                         break;
  304.                     default:                   //其他,燈全滅
  305.                 PWM_0 = 0;        //hei
  306.                         PWM_1 = 0;
  307.                         PWM_2 = 0;
  308.                // send(tmp);
  309.                    break;
  310.                    }delay(5);        
  311.         }
  312.         void color()
  313.         {
  314.              while(RI==0)
  315.                 {
  316.                 PWM_0 = rand()%255;
  317.                 delay(2);
  318.                 PWM_1 = rand()%255;
  319.                 delay(2);
  320.                 PWM_2 = rand()%255;
  321.                 delay(2);
  322.                 }
  323.         }
  324.         
  325.         void InterruptTimer0() interrupt 1
  326.         {
  327.             TH0 = 0xFC; //重新加載初值
  328.             TL0 = 0x67;
  329.             if (red == 0&&red1==1)  
  330.             {
  331.                 delay(99);
  332.                         if(red1==0)
  333.                 flag1s = 1;
  334.             }
  335.             if (red1 == 0&&red == 1)  
  336.             {
  337.                 delay(99);
  338.                         if(red == 0)
  339.                flag2s = 1;
  340.             }
  341.                
  342.                         counter++;
  343.                         if(counter >= 255) counter = 0;
  344.                     if(counter >= PWM_0) RR = 0; else RR = 1;
  345.                     if(counter >= PWM_1) GG = 0; else GG = 1;
  346.                     if(counter >= PWM_2) BB = 0; else BB = 1;        
  347.         }
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:169944 發(fā)表于 2017-5-2 19:02 | 只看該作者
大神在哪里
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日本久久久久久久久 | 嫩草视频入口 | 看片天堂 | 欧美日韩在线观看一区二区三区 | 国产精品久久久久久久久久99 | 日韩一区二区三区在线视频 | 一区二区三区在线观看视频 | 伊人青青久久 | 国产精品久久久久久久久久 | 日韩av一区在线观看 | 91精品国产91久久久久久最新 | 欧美日韩精品影院 | 精精国产xxxx视频在线播放7 | 在线一区| 国产99久久 | 天堂久久av| 国产不卡一区 | 国产一区二区三区四区 | 日韩欧美国产不卡 | 国产精品精品视频一区二区三区 | 国产中文字幕在线观看 | 欧美精品1区2区3区 精品国产欧美一区二区 | 全免一级毛片 | 日韩免费福利视频 | 日韩中文字幕视频 | 手机av网| 成人亚洲精品久久久久软件 | 亚洲手机视频在线 | 一区二区三区视频在线 | 超碰免费观看 | 欧美激情综合 | 亚洲精品电影在线 | 中文字幕第7页 | 国产精品日韩一区二区 | 在线观看免费av网 | 午夜伦理影院 | 欧美午夜精品理论片a级按摩 | 欧美成人高清视频 | 日韩国产一区二区三区 | 一区二区三区国产精品 | 日韩精品一区二区三区视频播放 |