LD3320为内核是51单片机,LD3320当输入不同的语句通过串口输出相应的代码,利用STM32与51单片机的串口通讯,将代码传输给STM32实现STM32端口控制。
; C: O9 R$ A3 \( \) c7 @0 pLD3320程序与STM32全部程序,自己编写程序。8 f0 j7 e! W( l
程序代码下载地址 https://download.csdn.net/download/qq_42258981/12261782
% y0 U, }, q+ L# }! V2 x视频展示& j/ R% i) E. t
https://www.bilibili.com/video/BV1JE411F7mB/; e h |5 g0 M8 v8 q; M, w
+ E& G6 K6 B a; t硬件资源:
# k# p5 q8 [6 ]# Z1:PB11(USART3_RX),PB10(USART3_TX),STM32的RXD,DS0,DS1
+ y7 s' ]) ^6 x. z" @! B2:LD3320( v" e/ M- V; Q1 ?4 x; Y6 `
# Z' o, r+ L+ Y; M; g9 m) U8 `8 H, H* B& p6 D- d
实验现象:
+ B6 w1 g- |" {/ c当说“左侧”DS0亮,DS1灭,串口打印“code is 0”;当说“右侧”DS0灭,DS1灭,串口打印“code is 1”;当说“全开”,DS0与DS1全亮 ,串口打印“code is 2” 。! i8 w5 A1 B4 y% R* D
注意事项:
. W' D/ h" k* B F" i1 w1 A1:STM32串口,51串口波特率以及电脑端串口调试助手波特率均为9600。' \" Y9 k. a n
2:51的TX端口与STM32的PB11(USART3_RX)端口连接;51的RX端口不接;STM32的PB10(USART3_TX)端口与STM32的RXD端口连接。
6 p p0 H2 }$ s" k3 Z; ]( V3:DS0,DS1均为STM32Mini板板上硬件资源。( R3 \. J/ N" n/ {" s7 b
硬件连接图
* U! C8 _3 \- E
* i) H% U5 ]# v% Q+ F& t' p结果演示
' B6 D! p9 p4 j( S6 K
+ x! x, |* f+ N% W
2 L5 N: s0 [, {* [! V
) v7 M; Q1 R3 G" ]! U9 I% _3 r0 t; S
51语音程序
7 C$ G* g0 y) I添加关键词
, u* v* `0 H3 M* U
6 j9 h7 M! O$ A9 j5 L; [- <font face="微软雅黑" size="3">uint8 LD_AsrAddFixed()
. N8 D! l+ u2 g9 a) s+ r - {9 i& A7 B* {( P8 R7 @& Y
- uint8 k, flag;' C6 c, \( a1 [& l( m0 {
- uint8 nAsrAddLength;
7 {9 a. \, l3 l - #define DATE_A 11 /*Êý×é¶þάÊýÖµ*/+ L" E) ]8 |) }, r
- #define DATE_B 20 /*Êý×éһάÊýÖµ*/
* b1 i; w/ P: L/ K3 E( G9 t9 s - uint8 code sRecog[DATE_A][DATE_B] =
% V2 u. S* t& g/ u2 i - {) P0 H8 d: ?4 d- T5 `/ i1 h
- "xiao long",\
7 c- }8 E0 ]) s) M# `- I - "zuo ce",\
: k: @: X2 X8 L% \ - "you ce",\
# K5 l# {# V1 X2 {) e+ H7 U! W. P - "quan kai",\ 0 p/ @, l, O: H: S. S/ U
- };
+ ]/ [# a% i! I3 g, ` - </font>
复制代码 与STM32串口通讯程序; f1 Y/ I, }3 O# a4 w& H7 a
- <blockquote><font face="微软雅黑" size="3">void <span style="white-space:pre"> </span>User_handle(uint8 dat)</font>
复制代码 STM32串口3初始化省略,直接上主程序
; b* Q& t# A0 J) c( hSTM32主程序
; h, z8 o8 {7 { g5 y7 z- v2 P& Z, u7 X) ?/ r; }/ m
- <font face="微软雅黑" size="3">int main(void)
/ V. U9 w X3 s) C - { . E+ ^6 G* l: {9 j/ H T) z
- u8 len;
) K3 s3 I# N( O' \4 l - u16 times=0;
/ k% \' w( `) [; f - u8 get=0;
7 p3 [, `) v; q - HAL_Init(); # n1 j; `% f+ z
- Stm32_Clock_Init(RCC_PLL_MUL9); . L Z" O* d" o9 S' Y" F- F
- delay_init(72); `% v" V5 F( z3 i3 F
- uart_init(9600); # A9 Q/ x( r. S" B9 W5 U2 O! u# D
- uart3_init(9600);
( {, `1 [& w- r7 ^3 j. M# @ - LED_Init();
9 F/ P& \! P) q2 ` - & N3 j, d+ }; ?2 e: h
-
h Q2 k3 T* v" _* V) i - while(1)
# y+ T& G- s8 Q% _: ~) u - {
3 M; C6 {- c5 s ^- X# i - if(USART3_RX_STA&0x8000)
/ M9 X- R) [2 y; a: x - { 0 ?8 m- l% |& G6 F
- len=USART3_RX_STA&0x3fff;//! Z+ r5 ]/ x4 u
- get=USART3_RX_BUF[0]; printf("\r\n\r\ncode is %d\r\n", get);
6 @2 `: ^3 i+ e% X, [' Y) J3 v" j7 O# T5 h - switch(get)' s \+ h; b! Y+ g- F. a
- {
3 f* u3 f& d% e6 x0 z; i4 Y - case 0: {LED0=0;LED1=1;} break;
2 Q$ l5 |& V7 y# i - case 1: {LED0=1;LED1=0;} break;
- a/ m) Y& Q, E& j# W4 t - case 2: {LED0=0;LED1=0;} break;, H1 ]0 C/ W& }; I8 r1 Q
- default: {LED0=1;LED1=1;}break;
. g( e/ y! l1 F - }6 e3 j: c8 _2 I2 W' a3 a* \
- HAL_UART_Transmit(&UART3_Handler,(uint8_t*)USART3_RX_BUF,len,1000); & L; A* U, L, W' `1 P J
- while(__HAL_UART_GET_FLAG(&UART3_Handler,UART_FLAG_TC)!=SET);
" K7 o% I3 u) k$ q4 u c - USART3_RX_STA=0;, [$ z4 [ [& j% d5 h- b. D
- } * m6 l8 v! O- x
- }9 S8 V& o. T& ]% g( A1 a9 R
- }# Z S+ j* J; ^8 X3 T
- </font>
复制代码 4 f0 A* k) E6 k4 M. a1 P
2 k$ E' a- d( d! s( E( a9 X9 q
* _# u; f( b2 d8 S/ {8 f
|