完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
#include
#define jingzhen 12000000UL /*使用12.0M晶体*/ #define botelv 4800UL /*波特率定义为4800*/ unsigned char zifu='a'; //待显示字符 volatile unsigned char sending; ***it S4=P3^2;//setting a key void delay(unsigned char i)//延迟函数 { unsigned char j,k; for(j=i;j>0;j--) for(k=90;k>0;k--); } /************************************************************************* 函数名称:UART_init 函数功能:串口初始化 **************************************************************************/ void UART_init(void) //串口初始化 { EA=0; //暂时关闭中断 TMOD&=0x0F; //定时器1模式控制在高4位 TMOD|=0x20; //定时器1工作在模式2,自动重装模式 SCON=0x50; //串口工作在模式1 TH1=256-jingzhen/(botelv*12*16); //计算定时器重装值 TL1=256-jingzhen/(botelv*12*16); PCON|=0x80; //串口波特率加倍 ES=1; //串行中断允许 TR1=1; //启动定时器1 REN=1; //允许接收 EA=1; //允许中断 } /************************************************************************* 函数名称:UART_Send_char 函数功能:发送一个字符 **************************************************************************/ void UART_Sendchar(unsigned char d) //发送一个字节的数据,形参d即为待发送数据。 { SBUF=d; //将数据写入到串口缓冲 sending=1; //设置发送标志 while(sending); //等待发送完毕 } /************************************************************************* 函数名称:UART_SendString 函数功能:发送一个字符串 **************************************************************************/ void UART_SendString(unsigned char *String) { while(*String) { UART_Sendchar(*String); String++; } } /************************************************************************* 函数名称:UART_SendLine 函数功能:串口发送换行 **************************************************************************/ void UART_SendLine(void) { UART_Sendchar(0x0D); UART_Sendchar(0x0A); } //*********************************************************************************** 函数名称:UART_SendIntNumber 函数功能:串口发送整型数字 //*********************************************************************************** void UART_SendIntNumber(int Number) { unsigned char NumbArray[6]={0}; // 定义局部数组,用于数据存储 if(Number<0) { Number=0-Number; UART_Sendchar('-'); } else { UART_Sendchar('+'); } NumbArray[0]=(Number/10000)%10+0x30; NumbArray[1]=(Number/1000) %10+0x30; NumbArray[2]=(Number/100) %10+0x30; NumbArray[3]=(Number/10) %10+0x30; NumbArray[4]=(Number/1) %10+0x30; NumbArray[5]= 0; UART_SendString(NumbArray); } //*********************************************************************************** 函数名称:UART_SendFloatNumber 函数功能:串口发送浮点型数字 //*********************************************************************************** void UART_SendFloatNumber(float Number) { unsigned char NumberArray[11]={0}; // 定义局部数组,用于数据存储 unsigned char i=1; // 定义局部变量,记录整数位数 long j=1; unsigned int Real_Int=0; // 定义局部变量,记录整数部分 unsigned int Real_Dec=0; // 定义局部变量,记录小数部分 double Deci=0; // 定义局部数组,暂存小数数值 //---------------------------------------------------------------------------------------------- // 判断 浮点数字正负 //---------------------------------------------------------------------------------------------- if(Number<0) { Number=0-Number; UART_Sendchar('-'); } else { UART_Sendchar('+'); } //---------------------------------------------------------------------------------------------- // 分离 整数位与小数位 //---------------------------------------------------------------------------------------------- Real_Int=(int)Number; // 取整数部分 Deci =Number-Real_Int; // 取小数部分 Real_Dec=(unsigned int)(Deci*1e4); // 小数变整型数字,1e4科学计数法 //---------------------------------------------------------------------------------------------- // 串口输出 //---------------------------------------------------------------------------------------------- NumberArray[0] = (Real_Int/10000)%10+0x30; NumberArray[1] = (Real_Int/1000) %10+0x30; NumberArray[2] = (Real_Int/100) %10+0x30; NumberArray[3] = (Real_Int/10) %10+0x30; NumberArray[4] = (Real_Int/1) %10+0x30; NumberArray[5] = '.'; NumberArray[6] = (Real_Dec/1000)%10+0x30; NumberArray[7] = (Real_Dec/100) %10+0x30; NumberArray[8] = (Real_Dec/10) %10+0x30; NumberArray[9] = (Real_Dec/1) %10+0x30; NumberArray[10]= 0; UART_SendString(NumberArray); } /************************************************************************* 函数名称:MAIN 函数功能:主函数 **************************************************************************/ void main() { UART_init(); while(1) { if(S4==0) { delay(20); if(!S4) { while(!S4); //UART_Sendchar(zifu); //UART_SendString("dpj"); UART_SendString("wlb"); UART_SendLine(); UART_SendIntNumber(100); } } } } void uart(void) interrupt 4 //串口发送中断 { if(RI) //收到数据 { RI=0; //清中断请求 } else //发送完一字节数据 { TI=0; sending=0; //清正在发送标志 } } |
|
|
|
只有小组成员才能发言,加入小组>>
2518 浏览 0 评论
1098浏览 2评论
710浏览 1评论
460浏览 0评论
201浏览 0评论
346浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 07:58 , Processed in 1.222141 second(s), Total 78, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号