串口打印
2025-12-9 22:50 来自 uutamiwn 发布 @ 综合讨论
123878串口输出乱码 。123879#include "STC8Hxxxxx.h"
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#define TKC P00 // 0 高阻
#define TKD P01 // 0 高阻
#define TKE P02 // 0 高阻
#define TKF P03 // 0 高阻
// #define NC P04 // 0 高阻
// #define NC P05 // 0 高阻
#define NTC P06 // 0 高阻
#define BUZ P07 // 0 推挽
#define TK0 P10 // 0 高阻
#define TK1 P11 // 0 高阻
// #define NO P12 // 0 高阻
#define TK3 P13 // 0 高阻
#define TK4 P14 // 0 高阻
#define TK5 P15 // 0 高阻
#define TK6 P16 // 0 高阻
#define TK7 P17 // 0 高阻
#define COM0 P20 // 0 推挽
#define COM1 P21 // 0 推挽
#define COM2 P22 // 0 推挽
#define COM3 P23 // 0 推挽
#define COM4 P24 // 0 推挽
#define COM5 P25 // 0 推挽
#define COM6 P26 // 0 推挽
#define COM7 P27 // 0 推挽
#define RXD P30 // 1 双向
#define TXD P31 // 1 推挽
#define SCL P32 // 1 双向
#define SDA P33 // 1 双向
#define SEGC P34 // 0 推挽
#define SEGD P35 // 0 推挽
#define SEGE P36 // 0 推挽
#define CMP+ P37 // 0 高阻
#define SEG0 P40 // 0 推挽
#define SEG1 P41 // 0 推挽
#define SEG2 P42 // 0 推挽
#define SEG3 P43 // 0 推挽
#define SEG4 P44 // 0 推挽
#define SEG5 P45 // 0 推挽
#define SEG6 P46 // 0 推挽
#define SEG7 P47 // 0 推挽
#define TK8 P50 // 0 高阻
#define TK9 P51 // 0 高阻
#define TKA P52 // 0 高阻
#define TKB P53 // 0 高阻
#define TK2 P54 // 0 高阻
// #define NO P55 // 0 高阻
// #define NO P56 // 0 高阻
// #define NO P57 // 0 高阻
#define FOSC 24000000UL //主时钟
#define BAUD 115200UL //波特率
#define TMRF 200UL //定时器频率
#define BRT (0x10000-FOSC/BAUD/4) //波特率值
#define TMR (0x10000-FOSC/TMRF/12) //定时器值
#define T_Buf_Len 64 //Uart1发送缓存长度
#define R_Buf_Len 64 //Uart1接收缓存长度
#define TS_Channel 16 //触摸按键通道数
#define TS_Compare 0x0800 //触摸按键比较值
#define TS_Range 0x0400 //触摸按键回滞值
unsigned char RP; //Uart2接收指针
unsigned char TP; //Uart2发送指针
unsigned char Uart_R_Len; //Uart2接收长度
unsigned char Uart_T_Len; //Uart2发送长度
unsigned char xdata R_Buf; //Uart2接收缓存
unsigned char xdata T_Buf; //Uart2发送缓存
unsigned char code Seg_Map={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00,0x80}; //0~F,杠,空格,点
unsigned char Seg_Buf;
unsigned char LED_Buf;
unsigned char code TS_Map={0x06,0x07,0x0A,0x08,0x0C,0x0D,0x0E,0x0F,0x09,0x0B,0x04,0x05,0x00,0x01,0x02,0x03}; //触摸按键通道重映射
unsigned int xdata TS_Buf; //触摸按键数据(实际值、预处理值、最小值、最大值、结果)
unsigned char TS_Select; //触摸按键选择通道(查看TS_Buf,低4位为低维度,范围0x*0-0x*B;高4位为高维度,范围0x0*-0x4*)
unsigned char TS_Scan; //触摸按键扫描通道
bit TS_Flag; //触摸按键中断标志
unsigned char TS_Calibrate; //触摸按键校准状态
unsigned int TS_Pad; //触摸按钮状态
unsigned char TS_Ring; //触摸滑环状态
unsigned char TS_Slide; //触摸滑条状态
unsigned int Ring; //触摸滑环值
unsigned int Slide; //触摸滑条值
void Delay_ms(unsigned char ms)
{
unsigned int i;
do
{
i=FOSC/10000;
while(--i); //10T per loop
}
while(--ms);
}
//void Delay_100us(void)
//{
// unsigned char data i,j;
// i=4;
// j=27;
// do
// {
// while (--j);
// }
// while (--i);
//}
void UART_Send(unsigned int x)
{
while(Uart_T_Len);
TP=0;
Uart_T_Len=x;
TI=1;
}
//void Uart_Printf(unsigned char *v,...)
//{
// va_list ap;
// va_start(ap,v);
// while(Uart_T_Len);
// UART_Send(vsprintf(T_Buf,v,ap));
// va_end(ap);
//}
void UART_Return(unsigned char temp)
{
memcpy(T_Buf,R_Buf,temp);
UART_Send(temp);
}
void Buzzer(void)
{
if(TS_Pad&0x0100)
BUZ=1;
else
BUZ=0;
}
void Seg_Display(void)
{
Seg_Buf=((TS_Calibrate<<8)|TS_Select)>>4;
Seg_Buf=((TS_Calibrate<<8)|TS_Select)&0x0F;
Seg_Buf=16;
Seg_Buf=TS_Buf/10000;
Seg_Buf=TS_Buf%10000/1000;
Seg_Buf=TS_Buf%1000/100;
Seg_Buf=TS_Buf%100/10;
Seg_Buf=TS_Buf%10;
Seg_Buf=Slide%10000/1000;
Seg_Buf=Slide%1000/100;
Seg_Buf=Slide%100/10;
Seg_Buf=Slide%10;
Seg_Buf=Ring%10000/1000;
Seg_Buf=Ring%1000/100;
Seg_Buf=Ring%100/10;
Seg_Buf=Ring%10;
}
void LED_Display(void)
{
LED_Buf=TS_Pad&0x0001?0x07:0x00;
LED_Buf=TS_Pad&0x0002?0x07:0x00;
LED_Buf=TS_Pad&0x0004?0x07:0x00;
LED_Buf=TS_Pad&0x0008?0x07:0x00;
LED_Buf=TS_Pad&0x0010?0x07:0x00;
LED_Buf=TS_Pad&0x0020?0x07:0x00;
LED_Buf=TS_Pad&0x0040?0x07:0x00;
LED_Buf=TS_Pad&0x0080?0x07:0x00;
LED_Buf=TS_Pad&0x0100?0x07:0x00;
LED_Buf=TS_Ring&0x01?0x07:0x00;
LED_Buf=TS_Ring&0x02?0x07:0x00;
LED_Buf=TS_Ring&0x04?0x07:0x00;
LED_Buf=TS_Slide&0x01?0x07:0x00;
LED_Buf=TS_Slide&0x02?0x07:0x00;
LED_Buf=TS_Slide&0x04?0x07:0x00;
LED_Buf=TS_Slide&0x08?0x07:0x00;
}
void LED(void)
{
unsigned char i;
unsigned char xdata *p=XBYTE+0xFB10;
Seg_Display();
LED_Display();
for(i=0;i<8;i++)
{
*(p+i)=Seg_Map[Seg_Buf;
*(p+8+i)=(LED_Buf&0x07)<<4;
*(p+16+i)=Seg_Map[Seg_Buf;
*(p+24+i)=(LED_Buf&0x07)<<4;
}
// COM0_DA_L=Seg_Map[Seg_Buf;
// CO
#include <intrins.h>
#include <absacc.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#define TKC P00 // 0 高阻
#define TKD P01 // 0 高阻
#define TKE P02 // 0 高阻
#define TKF P03 // 0 高阻
// #define NC P04 // 0 高阻
// #define NC P05 // 0 高阻
#define NTC P06 // 0 高阻
#define BUZ P07 // 0 推挽
#define TK0 P10 // 0 高阻
#define TK1 P11 // 0 高阻
// #define NO P12 // 0 高阻
#define TK3 P13 // 0 高阻
#define TK4 P14 // 0 高阻
#define TK5 P15 // 0 高阻
#define TK6 P16 // 0 高阻
#define TK7 P17 // 0 高阻
#define COM0 P20 // 0 推挽
#define COM1 P21 // 0 推挽
#define COM2 P22 // 0 推挽
#define COM3 P23 // 0 推挽
#define COM4 P24 // 0 推挽
#define COM5 P25 // 0 推挽
#define COM6 P26 // 0 推挽
#define COM7 P27 // 0 推挽
#define RXD P30 // 1 双向
#define TXD P31 // 1 推挽
#define SCL P32 // 1 双向
#define SDA P33 // 1 双向
#define SEGC P34 // 0 推挽
#define SEGD P35 // 0 推挽
#define SEGE P36 // 0 推挽
#define CMP+ P37 // 0 高阻
#define SEG0 P40 // 0 推挽
#define SEG1 P41 // 0 推挽
#define SEG2 P42 // 0 推挽
#define SEG3 P43 // 0 推挽
#define SEG4 P44 // 0 推挽
#define SEG5 P45 // 0 推挽
#define SEG6 P46 // 0 推挽
#define SEG7 P47 // 0 推挽
#define TK8 P50 // 0 高阻
#define TK9 P51 // 0 高阻
#define TKA P52 // 0 高阻
#define TKB P53 // 0 高阻
#define TK2 P54 // 0 高阻
// #define NO P55 // 0 高阻
// #define NO P56 // 0 高阻
// #define NO P57 // 0 高阻
#define FOSC 24000000UL //主时钟
#define BAUD 115200UL //波特率
#define TMRF 200UL //定时器频率
#define BRT (0x10000-FOSC/BAUD/4) //波特率值
#define TMR (0x10000-FOSC/TMRF/12) //定时器值
#define T_Buf_Len 64 //Uart1发送缓存长度
#define R_Buf_Len 64 //Uart1接收缓存长度
#define TS_Channel 16 //触摸按键通道数
#define TS_Compare 0x0800 //触摸按键比较值
#define TS_Range 0x0400 //触摸按键回滞值
unsigned char RP; //Uart2接收指针
unsigned char TP; //Uart2发送指针
unsigned char Uart_R_Len; //Uart2接收长度
unsigned char Uart_T_Len; //Uart2发送长度
unsigned char xdata R_Buf; //Uart2接收缓存
unsigned char xdata T_Buf; //Uart2发送缓存
unsigned char code Seg_Map={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,0x40,0x00,0x80}; //0~F,杠,空格,点
unsigned char Seg_Buf;
unsigned char LED_Buf;
unsigned char code TS_Map={0x06,0x07,0x0A,0x08,0x0C,0x0D,0x0E,0x0F,0x09,0x0B,0x04,0x05,0x00,0x01,0x02,0x03}; //触摸按键通道重映射
unsigned int xdata TS_Buf; //触摸按键数据(实际值、预处理值、最小值、最大值、结果)
unsigned char TS_Select; //触摸按键选择通道(查看TS_Buf,低4位为低维度,范围0x*0-0x*B;高4位为高维度,范围0x0*-0x4*)
unsigned char TS_Scan; //触摸按键扫描通道
bit TS_Flag; //触摸按键中断标志
unsigned char TS_Calibrate; //触摸按键校准状态
unsigned int TS_Pad; //触摸按钮状态
unsigned char TS_Ring; //触摸滑环状态
unsigned char TS_Slide; //触摸滑条状态
unsigned int Ring; //触摸滑环值
unsigned int Slide; //触摸滑条值
void Delay_ms(unsigned char ms)
{
unsigned int i;
do
{
i=FOSC/10000;
while(--i); //10T per loop
}
while(--ms);
}
//void Delay_100us(void)
//{
// unsigned char data i,j;
// i=4;
// j=27;
// do
// {
// while (--j);
// }
// while (--i);
//}
void UART_Send(unsigned int x)
{
while(Uart_T_Len);
TP=0;
Uart_T_Len=x;
TI=1;
}
//void Uart_Printf(unsigned char *v,...)
//{
// va_list ap;
// va_start(ap,v);
// while(Uart_T_Len);
// UART_Send(vsprintf(T_Buf,v,ap));
// va_end(ap);
//}
void UART_Return(unsigned char temp)
{
memcpy(T_Buf,R_Buf,temp);
UART_Send(temp);
}
void Buzzer(void)
{
if(TS_Pad&0x0100)
BUZ=1;
else
BUZ=0;
}
void Seg_Display(void)
{
Seg_Buf=((TS_Calibrate<<8)|TS_Select)>>4;
Seg_Buf=((TS_Calibrate<<8)|TS_Select)&0x0F;
Seg_Buf=16;
Seg_Buf=TS_Buf/10000;
Seg_Buf=TS_Buf%10000/1000;
Seg_Buf=TS_Buf%1000/100;
Seg_Buf=TS_Buf%100/10;
Seg_Buf=TS_Buf%10;
Seg_Buf=Slide%10000/1000;
Seg_Buf=Slide%1000/100;
Seg_Buf=Slide%100/10;
Seg_Buf=Slide%10;
Seg_Buf=Ring%10000/1000;
Seg_Buf=Ring%1000/100;
Seg_Buf=Ring%100/10;
Seg_Buf=Ring%10;
}
void LED_Display(void)
{
LED_Buf=TS_Pad&0x0001?0x07:0x00;
LED_Buf=TS_Pad&0x0002?0x07:0x00;
LED_Buf=TS_Pad&0x0004?0x07:0x00;
LED_Buf=TS_Pad&0x0008?0x07:0x00;
LED_Buf=TS_Pad&0x0010?0x07:0x00;
LED_Buf=TS_Pad&0x0020?0x07:0x00;
LED_Buf=TS_Pad&0x0040?0x07:0x00;
LED_Buf=TS_Pad&0x0080?0x07:0x00;
LED_Buf=TS_Pad&0x0100?0x07:0x00;
LED_Buf=TS_Ring&0x01?0x07:0x00;
LED_Buf=TS_Ring&0x02?0x07:0x00;
LED_Buf=TS_Ring&0x04?0x07:0x00;
LED_Buf=TS_Slide&0x01?0x07:0x00;
LED_Buf=TS_Slide&0x02?0x07:0x00;
LED_Buf=TS_Slide&0x04?0x07:0x00;
LED_Buf=TS_Slide&0x08?0x07:0x00;
}
void LED(void)
{
unsigned char i;
unsigned char xdata *p=XBYTE+0xFB10;
Seg_Display();
LED_Display();
for(i=0;i<8;i++)
{
*(p+i)=Seg_Map[Seg_Buf;
*(p+8+i)=(LED_Buf&0x07)<<4;
*(p+16+i)=Seg_Map[Seg_Buf;
*(p+24+i)=(LED_Buf&0x07)<<4;
}
// COM0_DA_L=Seg_Map[Seg_Buf;
// CO
免责声明:
本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;
下一篇: 兑换实验板发货问题


