今天学习了冲个的《STC32G单片机视频教程》第二十一集:串口应用上 和 第二十一集:串口应用下
小改了一下,把温度的测量值带进去,真实一点点:
- void main() //程序开始运行的入口
- {
- char str[30];
- int temp=0;
- float Temp_xs=0;
- sys_init(); //USB功能+IO口初始化
- UART2_config(2); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.
-
- usb_init(); //usb库初始化
- delay_ms(500);
- Timer0_Init(); //定时器0初始化
-
- ADC_Init();
-
- P1M0 = 0x00; P1M1 = 0x08;
-
-
- EA = 1; //CPU开放中断,打开总中断。
-
- PrintString2("STC32G UART2 Test Programme!\r\n"); //UART2发送一个字符串
-
- while(1) //死循环
- {
- delay_ms(2);
- if( DeviceState != DEVSTATE_CONFIGURED ) //
- continue;
- if( bUsbOutReady )
- {
- usb_OUT_done();
-
- }
-
- if( Rec_Flag==1 ) //他已经检测到了最末尾的\R\N结束符号
- {
- switch( RX2_Buffer[0] )
- {
- case 'A': //点亮某个LED的命令
- if(( RX2_Buffer[1]>=48 ) && ( RX2_Buffer[1]<=55 ))
- {
- //LED = ~(1<<(RX2_Buffer[1]-48));
- LED0 = ~(RX2_Buffer[1]-48);LED1 = ~(RX2_Buffer[2]-48);LED2 = ~(RX2_Buffer[3]-48);LED3 = ~(RX2_Buffer[4]-48);
- LED4 = ~(RX2_Buffer[5]-48);LED5 = ~(RX2_Buffer[6]-48);LED6 = ~(RX2_Buffer[7]-48);LED7 = ~(RX2_Buffer[8]-48);
- }
- break;
- case 'B':
- SEG0= RX2_Buffer[1]-48;SEG1= RX2_Buffer[2]-48;SEG2= RX2_Buffer[3]-48;SEG3= RX2_Buffer[4]-48;
- SEG4= RX2_Buffer[5]-48;SEG5= RX2_Buffer[6]-48;SEG6= RX2_Buffer[7]-48;SEG7= RX2_Buffer[8]-48;
-
- break;
- case 'C':
- if(RX2_Buffer[1]==48)
- BEEP = 0;
- else
- BEEP = 1;
- break;
- case 'D':
- temp = Temp_Cal( ADC_Read(3) );
- Temp_xs = temp;
- //sprintf(str,"温度:%d\r\n",(int)temp);
- sprintf(str,"温度:%f\r\n",(float)Temp_xs/10);
- PrintString2(str);
-
-
- break;
- case 'Z':
- PrintString2("HELLO STC!\r\n");
- break;
- default:
- break;
- }
- Rec_Flag = 0;
- }
- if( TIM_10MS_Flag==1 ) //如果10ms到了
- {
- TIM_10MS_Flag = 0; //清空标志位
- }
-
-
- }
- }
复制代码
注意:
sprintf(str,"温度:%f\r\n",(float)Temp_xs/10);
sprintf产生的str,实际是从下列
PrintString2(str);函数输出到PC机串口去,当然先引用#include "stdio.h"
|