编译环境:keil 5.39 C51编译器:C51V959
使用工具:自制的USB转TTL工具(DAP-LINK,自带一路TTL串口)
1:邵峰开发板串口介绍:
同其他的单片机一样,FU6832开发板提供了两路串口,并将其引出到开发板的CON4引脚,串口的主要作用就是主控芯片与上位机或其他模块进行串口通讯。数据可以通过全双工或者半双工方式进行传输。其中用户手册上面提供了波特率的配置方法,能产生系统所需要的发送和接收数据的特定频率。该芯片的串口功能与基本的C51内核的单片机有所不同,这里简单介绍一下。
串口1模式0: 该模式的工作模式为单线制半双工。在该模式下 RXD 既为发送数据总线,又为接收数据总线, 收发数据为 10 位,即 1 位启动、8 位数据(UT_DR)、1 位停止,波特率由 UT_BAUD 决定。
串口1模式1:该模式的工作模式为全/半双工。在该模式下 TXD 为发送数据总线,RXD 为接收数据总线,收 发数据为 10 位,即 1 位启动、8 位数据(UT_DR)、1 位停止,波特率由 UT_BAUD 决定。
串口1模式2:该模式的工作模式为单线制半双工。在该模式下 RXD 既为发送数据总线,又为接收数据总线, 收发数据为 11 位,即 1 位启动、9 位数据(UT_DR+ UT_CR[RB8]/ UT_CR[TB8])、1 位停止,波特率由 UT_BAUD 决定。
串口1模式3:该模式的工作模式为全/半双工。在该模式下 TXD 为发送数据总线,RXD 为接收数据总线,收 发数据为 11 位,即 1 位启动、9 位数据(UT_DR+ UT_CR[RB8]/ UT_CR[TB8])、1 位停止,波特 率由 UT_BAUD 决定。
2:软件配置:
{
SetBit(P0_OE, P05); //设置IO口P05为输出
SetBit(P0_PU, P05); //设置IO口P05为输出上拉
ClrBit(P0_OE, P06); //设置IO口P06为输入
SetBit(P0_PU, P06); //设置IO口P06为输入上拉
SetBit(PH_SEL, UART1EN); //使能串口
UT_MOD1 = 0;
UT_MOD0 = 1; //MODE1:8bit波特率可变UART模式
SM2 = 0; //禁止Mode2和Mode3多机通讯
REN = 1; //使能接收
ES0 = 0; //先关中断
PI2C_UT11 = 0; //中断优先级时最低
PI2C_UT10 = 0;
ClrBit(UT_BAUD, UART_2xBAUD); //倍频使能0-->Disable 1-->Enable
UT_BAUD = 0x9b; //波特率=fcpu_clk/((16/(1+UT_BAUD[BAUD_SEL]))*(UT_BAUD+1));
ES0 = 1; //ES0 发送/接受中断使能位
EA = 1; //打开总中断
RB8=0;
}
/*
/*串口发送一个字节的函数*/
void put_char(unsigned char c)
{
UT_DR = c;
}
/*串口发送字符串*/
void put_string(unsigned char * str)
{
while (*str != 0)
{
put_char(*str);
str++;
}
}
/******主程序*************/
char i = 0 ;
UART1_Init();
// put_char(0xFA) ;
// memset(StrTemp,0,64);
// strcpy(StrTemp,"芯查查测评活动---邵峰开发板");
// UartTxdate(StrTemp,strlen(StrTemp));
put_string("芯查查测评活动---邵峰开发板");
// put_string("FortiorTech FU6832L");
while (1)
{
put_string("FortiorTech FU6832L");
delay(5000);
put_string("Xin cha cha ce ping huo dong");
delay(5000);
}实际测试:利用串口发送普通字符这里是没有问题的,但是我发现当我想要发送汉字的时候,问题就来了。
这里串口发送的数据就不正常了,截至到写开发过程的时候,都没找到为什么在发送字符串的时候,会导致串口发送数据不正常。后来我才发现是我使用keil时候编译是没有发现问题的,但是在查看put_string ();函数时,就会出现乱码的情况,也不明白为什么会这样。
测试实物图片:

后记:当时调试代码的时候,由于自己忘记清发送中断,导致串口只能发送一个字节出来,后来才想起来在发送和接收时,都需要清除发送和接收的标志位的,大家在使用的时候需要注意下,不要犯同样的错误了,不过通过串口发送汉字出来,还是有问题,也不太清楚问题,我把程序放到附件里面,希望大家能帮忙看下是哪里配置的问题,感谢!!!!!!!!!!!!!

全部评论