|
- #include "stm32f10x.h" // Device header
- #include "Delay.h"
- #include "OLED.h"
- #include "Serial.h"
- #include "string.h"
- #include "PWM.h"
- #include "Servo.h"
- /*******************************************************************************************
- 此代碼版本為2023/4/14更新,很多人疑惑有一些DHT11模塊或者AD模塊,因?yàn)榇舜a之前做過移植,為了大家理解
- 更新之后刪除了無用模塊,并增加代碼注釋講解
- **C8T6 **LD3320(電源接5V,GND接地)
- PA9(TX)——————RX
- PA10(RX)—————TX
- PA0(LED):LED長管腳接PA0,短腳接地
- PA1(舵機(jī)):舵機(jī)可接可不接,不影響控制燈,有些同學(xué)只想控制燈也沒關(guān)系,不用管舵機(jī)的代碼。
- *********************************************************************************************/
- int main(void)
- {
- OLED_Init(); //OLED初始化
- Serial_Init (); //串口初始化,直接借用了B站up主江協(xié)科技的串口收發(fā)文本數(shù)據(jù)包的串口代碼,初始化串口一
- PWM_Init (); //PWM初始化,一樣借用了江協(xié)科技的代碼。用PWM波控制便于自動(dòng)改變燈的亮度
- OLED_ShowString(1, 1, "TxPacket"); //發(fā)送的數(shù)據(jù)包,若是正確接收到LD3320傳遞來的數(shù)據(jù)包,會(huì)在第二行發(fā)送對(duì)應(yīng)的OK數(shù)據(jù)包
- OLED_ShowString(3, 1, "RxPacket");//接收到的數(shù)據(jù)包,在第4行會(huì)顯示從LD3320傳遞來的數(shù)據(jù)包
-
-
-
- while(1)
- {
-
- if(Serial_RxFlag==1) //串口接收到數(shù)據(jù)包的標(biāo)志位,若是收到數(shù)據(jù)包,會(huì)置1
- {
- OLED_ShowString(4, 1, " ");
- OLED_ShowString(4, 1, Serial_RxPacket);//Serial_RxPacket是32接收到的數(shù)據(jù)包,也就是LD3320傳遞來的數(shù)據(jù)包
-
- if(strcmp(Serial_RxPacket,"LED_ON")==0)//比較接收到的字符串是否和對(duì)應(yīng)指令的字符串相等。(需要增加string頭文件)
- {
- PWM_SetCompare1(100);//占空比百分之一百,完全點(diǎn)亮LED,此函數(shù)是將LED長腳接在A0口,高電平控制燈的亮度
- Serial_SendString("LED_ON_OK\r\n");//串口發(fā)送LED_ON_OK,
- OLED_ShowString(2, 1, "LED_ON_OK");//并在第二行顯示
- }
- else if(strcmp(Serial_RxPacket,"LED_LOW")==0)
- {
- PWM_SetCompare1(20);
- Serial_SendString("LED_LOW_OK\r\n");
- OLED_ShowString(2, 1, "LED_LOW_OK");
- }
- else if(strcmp(Serial_RxPacket,"LED_OFF")==0)
- {
- PWM_SetCompare1(0);
- Serial_SendString("LED_OFF_OK\r\n");
- OLED_ShowString(2, 1, "LED_OFF_OK");
- }
- else if(strcmp(Serial_RxPacket,"Windows_ON")==0)
- {
- Servo_SetAngle(180);
- Serial_SendString("Windows_ON_OK\r\n");
-
- }
- else if(strcmp(Serial_RxPacket,"Windows_OFF")==0)
- {
- Servo_SetAngle(0);
- Serial_SendString("Windows_OFF_OK\r\n");
-
- }
-
- Serial_RxFlag =0;//將標(biāo)志位清零,不清零就接收不到下一個(gè)數(shù)據(jù)包了
- }
-
- }
-
- }
復(fù)制代碼
原理圖:無
仿真:無
Keil代碼:
32語音控制代碼.7z
(182.74 KB, 下載次數(shù): 16)
2023-7-29 17:51 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|