20230704测试STC32G实验箱9.6(STC32G12K128)开发板的虚拟串口(C语言深入了解)
06第五集:C语言运算符和进制数入门上.mp4
07第五集:C语言运算符和进制数入门下.mp4
2023/7/4 19:00
下次 在【冲哥】录视频的时候 。建议在 WIN10 WIN11正式版本下录制。老用 测试版本。比尔·盖茨 看见了会有意见的!
ASC码表:
0、
https://www.stcai.com/syx
实验箱
STC32G实验箱9.6
主控芯片使用STC32G12K128,可以做示波器、波形发生器、TFT彩屏显示、OLED 12864、LCD 12864
代码下载
使用说明 STC32G12K128实验箱-V9.6使用说明书.pdf
原理图
STC32G12K128实验箱-V9.6使用说明书.pdf
例程01:
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//sbit P40 = P4^0; //三极管控制引脚
//sbit P60 = P6^0; //LED控制引脚
//sbit P61 = P6^1; //LED控制引脚
void sys_init(); //函数声明
void main() //程序开始运行的入口
{
sys_init(); //USB功能+IO口初始化
usb_init(); //usb库初始化
EA = 1; //CPU开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED ) //
continue;
if( bUsbOutReady )
{
usb_OUT_done();
//printf("%03.3f\r\n",1.12);
//printf("%u \r\n",1<<3);
printf("Hello World!");
}
P40 = 0; //三极管引脚输出低电平
P60 = 0; //led4引脚输出低电平
P61 = 0; //led5引脚输出低电平
}
}
void sys_init() //函数定义
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01)); //等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
串口打印:
[17:57:30.369]发送→1
[17:57:30.384]接收←Hello World!
[17:57:30.369]发送→31
[17:57:30.384]接收←48 65 6C 6C 6F 20 57 6F 72 6C 64 21
例程02:
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//sbit P40 = P4^0; //三极管控制引脚
//sbit P60 = P6^0; //LED控制引脚
//sbit P61 = P6^1; //LED控制引脚
void sys_init(); //函数声明
void main() //程序开始运行的入口
{
sys_init(); //USB功能+IO口初始化
usb_init(); //usb库初始化
EA = 1; //CPU开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED ) //
continue;
if( bUsbOutReady )
{
usb_OUT_done();
//printf("%03.3f\r\n",1.12);
//printf("%u \r\n",1<<3);
//printf("Hello World!");
printf("当前温度:%.2f\r\n", 11.2);
}
P40 = 0; //三极管引脚输出低电平
P60 = 0; //led4引脚输出低电平
P61 = 0; //led5引脚输出低电平
}
}
void sys_init() //函数定义
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01)); //等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
串口打印:
[18:06:02.284]发送→1
[18:06:02.293]接收←当前温度:11.20
[18:06:02.284]发送→31
[18:06:02.293]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 0D
0A
例程03:
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//sbit P40 = P4^0; //三极管控制引脚
//sbit P60 = P6^0; //LED控制引脚
//sbit P61 = P6^1; //LED控制引脚
void sys_init(); //函数声明
void main() //程序开始运行的入口
{
sys_init(); //USB功能+IO口初始化
usb_init(); //usb库初始化
EA = 1; //CPU开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED ) //
continue;
if( bUsbOutReady )
{
usb_OUT_done();
//printf("%03.3f\r\n",1.12);
//printf("%u \r\n",1<<3);
//printf("Hello World!");
//printf("当前温度:%.2f\r\n", 11.2);
printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);
}
P40 = 0; //三极管引脚输出低电平
P60 = 0; //led4引脚输出低电平
P61 = 0; //led5引脚输出低电平
}
}
void sys_init() //函数定义
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01)); //等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
串口打印:
[18:21:38.277]发送→1
[18:21:38.284]接收←当前温度:11.20, 当前湿度:55.20
[18:21:38.277]发送→31
[18:21:38.284]接收←B5 B1 C7 B0 CE C2 B6 C8 A3 BA 31 31 2E 32 30 2C
20 B5 B1 C7 B0 CA AA B6 C8 A3 BA 35 35 2E 32 30
0D 0A
例程04:
#include "COMM/stc.h" //调用头文件
#include "COMM/usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//sbit P40 = P4^0; //三极管控制引脚
//sbit P60 = P6^0; //LED控制引脚
//sbit P61 = P6^1; //LED控制引脚
void sys_init(); //函数声明
void main() //程序开始运行的入口
{
sys_init(); //USB功能+IO口初始化
usb_init(); //usb库初始化
EA = 1; //CPU开放中断,打开总中断。
while(1) //死循环
{
if( DeviceState != DEVSTATE_CONFIGURED ) //
continue;
if( bUsbOutReady )
{
usb_OUT_done();
//printf("%03.3f\r\n",1.12);
//printf("%u \r\n",1<<3);
//printf("Hello World!");
//printf("当前温度:%.2f\r\n", 11.2);
//printf("当前温度:%.2f, 当前湿度:%.2f\r\n", 11.2, 55.2);
printf("%u\r\n", 53);
}
P40 = 0; //三极管引脚输出低电平
P60 = 0; //led4引脚输出低电平
P61 = 0; //led5引脚输出低电平
}
}
void sys_init() //函数定义
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x00; P0M0 = 0x00; //设置为准双向口
P1M1 = 0x00; P1M0 = 0x00; //设置为准双向口
P2M1 = 0x00; P2M0 = 0x00; //设置为准双向口
P3M1 = 0x00; P3M0 = 0x00; //设置为准双向口
P4M1 = 0x00; P4M0 = 0x00; //设置为准双向口
P5M1 = 0x00; P5M0 = 0x00; //设置为准双向口
P6M1 = 0x00; P6M0 = 0x00; //设置为准双向口
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
P3M0 = 0x00;
P3M1 = 0x00;
P3M0 &= ~0x03;
P3M1 |= 0x03;
//设置USB使用的时钟源
IRC48MCR = 0x80; //使能内部48M高速IRC
while (!(IRC48MCR & 0x01)); //等待时钟稳定
USBCLK = 0x00; //使用CDC功能需要使用这两行,HID功能禁用这两行。
USBCON = 0x90;
}
串口打印:
[18:30:16.453]发送→1
[18:30:16.459]接收←53
[18:30:16.453]发送→31
[18:30:16.459]接收←35 33 0D 0A
例程05:
例程06:
例程07:
例程08:
参考资料:
http://stcmcudata.com/
https://www.stcai.com/jxsp
演示视频
实验箱-STC32G12K128 教学视频
屠龙刀-STC32G12K128 教学视频