请选择 进入手机版 | 继续访问电脑版

930电子网

 找回密码
 立即注册
快捷导航
搜索
艾克姆科技推出最新产品STM32F103ZET6开发板
查看: 2988|回复: 5

版主求教啊,关于串口的问题

[复制链接]

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2020-5-21 23:58:03 | 显示全部楼层 |阅读模式
就是想问,如何让串口发送程序里设定好的字符串,比如在程序里设定好hello world这个字符串,一打开串口,它就能自动给电脑发送这串字符,而不需要用电脑先给串口发送数据。
回复

使用道具 举报

3

主题

11

帖子

1064

积分

金牌会员

Rank: 6Rank: 6

积分
1064
发表于 2020-5-24 09:43:16 | 显示全部楼层
我给你来个程序试试



  1. //串口通讯实验  
  2. //只发数据
  3. //波特率9600
  4. //主频11.0592


  5. #include "STC8.H"

  6. char  code  MESSAGE[]= "我爱单片机 ";


  7. void delay(unsigned int m) //延时
  8. {
  9.         int  a=0,b=0;
  10.         for(a=0;a<500;a++)
  11.             for(b=0;b<m;b++);
  12.        
  13. }


  14. void ISP_Check()
  15. {
  16.         unsigned char a;

  17.         a=0;
  18.         while(MESSAGE[a]!= '\0')
  19.         {
  20.                 SBUF = MESSAGE[a];                //SUBF接受/发送缓冲器(又叫串行通信特殊功能寄存器)
  21.                 while(!TI);                                // 等特数据传送        (TI发送中断标志)
  22.                 TI = 0;                                        // 清除数据传送标志
  23.                
  24.                 a++;                                            // 下一个字符
  25.         }


  26. }


  27. void main()
  28. {

  29.         P55=1;


  30.         SCON = 0x50;     //REN=1允许串行接受状态,串口工作模式2               
  31.         TMOD= 0x20;      //定时器工作方式2       8位 自动重装载定时器  实现波特率               

  32.         AUXR=0X40;                 //开启1T模式


  33.         TH1 =TL1= 0xDC;                        //  设置波特率为9600  公式 TH1=256-(11059200/32/9600)=256-36=220  0xDC
  34.        
  35.                                 // 如有不明白请查 STC8手册上有详细说明
  36.        
  37.         TR1  = 1;        //开启定时器1                                                                     
  38.         EA   = 1;        // 开总中断
  39.         while(1)
  40.         {
  41.                 ISP_Check();
  42.                 delay(1000);
  43.         }

  44. }










复制代码
回复 支持 1 反对 0

使用道具 举报

99

主题

287

帖子

6981

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6981
发表于 2020-5-22 09:02:29 | 显示全部楼层
这个问题不难啊!你直接调用发送字符串的函数就可以实现!或者使用Printf函数打印也可以,例程都是有的。具体是哪个例程你需要提供下你买的哪款开发板(注意不是单片机型号)。
回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
 楼主| 发表于 2020-5-22 21:37:16 | 显示全部楼层
正是河豚 发表于 2020-5-22 09:02
这个问题不难啊!你直接调用发送字符串的函数就可以实现!或者使用Printf函数打印也可以,例程都是有的。具 ...

买的是艾克姆STC8A8K64S4A12开发板,例程里是两个串口收发字符串的,我确实是新手,之前对这个一点没了解过,例程好不容易大概看懂了,学长要求写的是一把串口打开,串口就自动把程序里设定好的字符串不断发送到串口助手屏幕那里,而不是先发送给串口,串口再发送给电脑,本人确实查了好多看不懂没弄出来,请版主棒棒忙,谢谢!
回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
 楼主| 发表于 2020-5-23 21:03:37 | 显示全部楼层
正是河豚 发表于 2020-5-22 09:02
这个问题不难啊!你直接调用发送字符串的函数就可以实现!或者使用Printf函数打印也可以,例程都是有的。具 ...

买的是艾克姆STC8A8K64S4A12开发板,例程里是两个串口收发字符串的,我确实是新手,之前对这个一点没了解过,例程好不容易大概看懂了,学长要求写的是一把串口打开,串口就自动把程序里设定好的字符串不断发送到串口助手屏幕那里,而不是先发送给串口,串口再发送给电脑,本人确实查了好多看不懂没弄出来,请版主帮帮忙,谢谢
回复 支持 反对

使用道具 举报

1

主题

4

帖子

27

积分

新手上路

Rank: 1

积分
27
 楼主| 发表于 2020-5-24 23:14:50 | 显示全部楼层
angmall 发表于 2020-5-24 09:43
我给你来个程序试试

谢谢您,对于新手来说真的是雪中送炭,解燃眉之急。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2

GMT+8, 2020-10-1 22:49 , Processed in 0.149530 second(s), 26 queries .

Powered by 930电子网 X3.2

© 2013-2023 930ebbs

快速回复 返回顶部 返回列表