找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 1591|回復(fù): 0
收起左側(cè)

stm32c8t6單片機(jī)和LD3320通信程序

[復(fù)制鏈接]
ID:1089629 發(fā)表于 2023-7-29 12:07 | 顯示全部樓層 |閱讀模式
  1. #include "stm32f10x.h"                  // Device header
  2. #include "Delay.h"
  3. #include "OLED.h"
  4. #include "Serial.h"
  5. #include "string.h"
  6. #include "PWM.h"
  7. #include "Servo.h"

  8. /*******************************************************************************************
  9. 此代碼版本為2023/4/14更新,很多人疑惑有一些DHT11模塊或者AD模塊,因?yàn)榇舜a之前做過(guò)移植,為了大家理解
  10. 更新之后刪除了無(wú)用模塊,并增加代碼注釋講解

  11. **C8T6              **LD3320(電源接5V,GND接地)
  12. PA9(TX)——————RX
  13. PA10(RX)—————TX
  14. PA0(LED):LED長(zhǎng)管腳接PA0,短腳接地
  15. PA1(舵機(jī)):舵機(jī)可接可不接,不影響控制燈,有些同學(xué)只想控制燈也沒(méi)關(guān)系,不用管舵機(jī)的代碼。
  16. *********************************************************************************************/

  17. int main(void)
  18. {

  19.         OLED_Init();                       //OLED初始化
  20.     Serial_Init ();                    //串口初始化,直接借用了B站up主江協(xié)科技的串口收發(fā)文本數(shù)據(jù)包的串口代碼,初始化串口一
  21.         PWM_Init ();                       //PWM初始化,一樣借用了江協(xié)科技的代碼。用PWM波控制便于自動(dòng)改變燈的亮度

  22. OLED_ShowString(1, 1, "TxPacket");   //發(fā)送的數(shù)據(jù)包,若是正確接收到LD3320傳遞來(lái)的數(shù)據(jù)包,會(huì)在第二行發(fā)送對(duì)應(yīng)的OK數(shù)據(jù)包  
  23.         OLED_ShowString(3, 1, "RxPacket");//接收到的數(shù)據(jù)包,在第4行會(huì)顯示從LD3320傳遞來(lái)的數(shù)據(jù)包
  24.    

  25.         
  26.         
  27.    while(1)
  28.     {
  29.                

  30.                 if(Serial_RxFlag==1)           //串口接收到數(shù)據(jù)包的標(biāo)志位,若是收到數(shù)據(jù)包,會(huì)置1
  31.                 {
  32.                         OLED_ShowString(4, 1, "                ");
  33.                         OLED_ShowString(4, 1, Serial_RxPacket);//Serial_RxPacket是32接收到的數(shù)據(jù)包,也就是LD3320傳遞來(lái)的數(shù)據(jù)包
  34.                
  35.                         if(strcmp(Serial_RxPacket,"LED_ON")==0)//比較接收到的字符串是否和對(duì)應(yīng)指令的字符串相等。(需要增加string頭文件)
  36.                         {
  37.                         PWM_SetCompare1(100);//占空比百分之一百,完全點(diǎn)亮LED,此函數(shù)是將LED長(zhǎng)腳接在A0口,高電平控制燈的亮度
  38.                         Serial_SendString("LED_ON_OK\r\n");//串口發(fā)送LED_ON_OK,
  39.                         OLED_ShowString(2, 1, "LED_ON_OK");//并在第二行顯示
  40.                         }
  41.                         else if(strcmp(Serial_RxPacket,"LED_LOW")==0)
  42.                         {
  43.                         PWM_SetCompare1(20);
  44.                         Serial_SendString("LED_LOW_OK\r\n");
  45.                         OLED_ShowString(2, 1, "LED_LOW_OK");
  46.                         }
  47.                         else if(strcmp(Serial_RxPacket,"LED_OFF")==0)
  48.                         {
  49.                         PWM_SetCompare1(0);
  50.                         Serial_SendString("LED_OFF_OK\r\n");
  51.                         OLED_ShowString(2, 1, "LED_OFF_OK");
  52.                         }
  53.                         else if(strcmp(Serial_RxPacket,"Windows_ON")==0)
  54.                         {
  55.                         Servo_SetAngle(180);
  56.                         Serial_SendString("Windows_ON_OK\r\n");
  57.                         
  58.                         }
  59.                         else if(strcmp(Serial_RxPacket,"Windows_OFF")==0)
  60.                         {
  61.                         Servo_SetAngle(0);
  62.                         Serial_SendString("Windows_OFF_OK\r\n");
  63.                         
  64.                         }
  65.                
  66.                         Serial_RxFlag =0;//將標(biāo)志位清零,不清零就接收不到下一個(gè)數(shù)據(jù)包了
  67.         }
  68.                

  69. }
  70.         
  71. }        
復(fù)制代碼

原理圖:無(wú)
仿真:無(wú)
Keil代碼: 32語(yǔ)音控制代碼.7z (182.74 KB, 下載次數(shù): 16)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表