单片机串口发送字符串程序.docx

上传人:b****6 文档编号:3233237 上传时间:2022-11-20 格式:DOCX 页数:14 大小:19.04KB
下载 相关 举报
单片机串口发送字符串程序.docx_第1页
第1页 / 共14页
单片机串口发送字符串程序.docx_第2页
第2页 / 共14页
单片机串口发送字符串程序.docx_第3页
第3页 / 共14页
单片机串口发送字符串程序.docx_第4页
第4页 / 共14页
单片机串口发送字符串程序.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

单片机串口发送字符串程序.docx

《单片机串口发送字符串程序.docx》由会员分享,可在线阅读,更多相关《单片机串口发送字符串程序.docx(14页珍藏版)》请在冰豆网上搜索。

单片机串口发送字符串程序.docx

单片机串口发送字符串程序

#include//包含单片机寄存器的头文件

unsignedcharcodezifuchuan[]="nihao!

woshicaihaipenghuanyingxuedanpianji";

//流水灯控制码,该数组被定义为全局变量

/*****************************************************

函数功能:

向PC发送一个字节数据

***************************************************/

voidfasong(unsignedchardat)

{

SBUF=dat;//发送数据

while(TI==0)//检查发送完成中断标志如果未完成就等等否则复位发送标志位以便下个数据可以发送

;

TI=0;

}

/*****************************************************

函数功能:

延时若干毫秒

入口参数:

n

*******************************************************/

voidyanshi(unsignedintn)

{

unsignedinti,j;

for(i=0;i

for(j=249;j>0;j--)

;//什么也不做等待一个机器周期

}

/*****************************************************

函数功能:

主函数

***************************************************/

voidmain(void)

{

unsignedinti;

TMOD=0x20;//TMOD=00100000B,定时器T1工作于方式2

SCON=0x40;//SCON=01000000B,串口工作方式11起始位8数据位1停止位

PCON=0x00;//PCON=00000000B,波特率9600晶振11.0592

TH1=0xfd;//根据规定给定时器T1赋初值

TL1=0xfd;//根据规定给定时器T1赋初值

TR1=1;//启动定时器T1

while

(1)

{i=0;

while(zifuchuan[i]!

='\0')//循环发送字节数组中的数据

{

fasong(zifuchuan[i]);//调用发送函数发送数据

i++;//指向下个字符

yanshi

(1);//150ms发送一次数据

}

yanshi(1000);//150ms发送一次数据

}

}

 

1#include

2#include

3#include

4#include

5

6/*******************************************************

7*宏定义数据类型

8********************************************************/

9

10#defineUCHARunsignedchar

11#defineUINTunsignedint

12#defineTRUE1

13#defineFALSE0

14#defineENABLE1

15#defineDISABLE0

16

17

18/*******************************************************

19*宏定义常量

20********************************************************/

21

22#defineXTAL11059200

23#defineBAUTERATE9600L

24#defineBUTTON_ACCESS1

25#defineBUTTON_NOT_ACCESS2

26#defineBUTTON_FLASHED3

27#defineBUTTON_STOPED4

28

29/********************************************************

30*宏定义名称

31*********************************************************/

32

33#defineSTATIONIDS1

34

35/********************************************************

36*定义变量(永久变量区)

37*********************************************************/

38

39UINTBt_R_State=ENABLE;

40UINTBt_A_State=DISABLE;

41UINTBt_C_State=DISABLE;

42UINTHave_Bt_R_Pressed=FALSE;

43UINTHave_Agree=FALSE;

44UINTHave_Choiced=FALSE;

45

46/********************************************************

47*临时变量区

48*********************************************************/

49UCHARcode*message_request="DATA-2-S1-1-0-1-0-DATA";

50UCHARcode*message_agree="DATA-2-S1-1-0-2-0-DATA";

51UCHARcode*message_cancel="DATA-2-S1-1-0-3-DATA";

52UCHARcode*next_line="\r\n";

53UCHARcode*slider="-";

54UCHARcode*slider2=",";

55UCHARre;

56UCHARstring[30]={0};

57UINTledPre=0;

58UINTtype=0;

59UINTrequest_type;

60UCHARdata_seg[10]={0};

61

62/********************************************************

63*函数定义

64*********************************************************/

65

66//初始化串口

67voidInitUART(UINTbits);

68

69//用串口发送一个字符串

70voidUartSend(UCHAR*Data,intLen);

71

72//用串口接收一个字符串,收到"\0"说明字符串接收完毕

73voidUartRead();

74

75//初始化中断

76voidinitInterrupt();

77

78UINTgetDistancePre();

79

80//普通延时函数

81voidDelay(UINTtimes);

82

83//特殊延时函数

84voidSpecialDelay(UINTtimes);

85

86//根据IO口编号和给定的操作数点亮或熄灭相应的LED状态灯

87voidOperateStatusLed(UINTio_num,UINTstatus);

88

89//根据给定的距离对应的编号使相应的灯亮

90voidOperateDistanceLed(UINTdistancePre);

91

92//根据获取到的串口数据来获取请求类型和数据

93voidGetInfo(UCHAR*info);

94

95

96//根据返回的数据取得请求类型

97UINTgetRequestType(UCHAR*message);

98

99voidFinishFlash();

100

101

102

103

104

105

106/*********************************************************

107*主函数

108**********************************************************/

109

110

111voidmain(){

112P1=0x00;

113initInterrupt();

114IP=0x01;

115InitUART(9600);

116while

(1){

117Bt_R_State=ENABLE;

118Bt_A_State=DISABLE;

119Bt_C_State=DISABLE;

120P1=0x00;

121P2_3=0;

122P2_4=0;

123P2_5=0;

124Have_Agree=FALSE;

125Have_Choiced=FALSE;

126Have_Bt_R_Pressed=FALSE;

127while(!

Have_Bt_R_Pressed);

128Have_Bt_R_Pressed=FALSE;

129UartSend(message_request,strlen(message_request));

130UartRead();

131UartSend("*",1);

132UartSend(string,strlen(string));

133GetInfo(string);

134type=request_type;

135if(type==1){

136OperateStatusLed(1,1);

137ledPre=getDistancePre();

138OperateDistanceLed(ledPre);

139Bt_A_State=ENABLE;

140Bt_C_State=ENABLE;

141SpecialDelay(10000);

142Bt_A_State=DISABLE;

143Bt_C_State=DISABLE;

144if(Have_Agree){

145UartSend(message_agree,strlen(message_agree));

146FinishFlash();

147}else{

148UartSend(message_cancel,strle

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1