微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 新手求助~~用普通IO口实现串口通信

新手求助~~用普通IO口实现串口通信

时间:10-02 整理:3721RD 点击:

单片机用普通IO口实现串口通信

在理解单片机异步串口通信的基础上,不使用单片机的串口模块,用普通的IO口实现与PC机的串口通信的功能,要求实现的基本参数:波特率1200、数据位8位、无奇偶校验、停止位1位。

其他功能:有关参数能方便地修改。

可以用Proteus仿真或现成的单片机开发板做。

有没有大神做过相关的设计?初学者搞不定这个设计要求!

如果有做过的希望可以共享一下资料或者经验...

懂得大神也可以说说具体的思路······



大神快来~~

这个问题比较难

怎么都没人呢

有没有有

来人a

在理解单片机异步串口通信的基础上,不使用单片机的串口模块,用普通的IO口实现与PC机的串口通信的功能,要求实现的基本参数:波特率1200、数据位8位、无奇偶校验、停止位1位。
其他功能:有关参数能方便地修改。
可以用Proteus仿真或现成的单片机开发板做。
有没有大神做过相关的设计?初学者搞不定这个设计要求!
如果有做过的希望可以共享一下资料或者经验...
懂得大神也可以说说具体的思路······

首先,我也是初学者,别对咱太期待哈.
个人理解,串行口进行通讯主要是收发方便吧,设定完波特率后,只要数据发到sbuf,就能自动发送出去;接受则将接收位置1,就能不停检测接收口;
如果只用普通IO口,那就通过设定定时器,时间一到触发中断就输出一位,知道发送完毕;
接收么,用另一个定时器不断检测,当有数据就读取(串行口接收在收到之前是以波特率好几倍不断扫描的);
以上大略思路,至于细致的就LZ自己思考哈.有什么不对的也欢迎其它大大指出.

奇怪了,发帖还要审核的

发个回复好难啊!

首先你要知道你的单片机的扫描P口频率是多少(要精准),如果快了就加延时,知道9600的波特率就可以算出每秒钟收发多少个位,要使单片机每秒钟接收多少位(当然每扫描一次肯定就可以接收一位),要通过计算的,而且这之中的计算要很精准,说难也难,说简单也简单,然后通过I/O口读取功能,读取数据,就可以做到和串口一样的效果,希望对你有所帮助。

看看STC15F104E用普通IO口模拟串口的示例就行了。虽然它的那个用状态机写的。比较难懂。但是效率高。

这个就跟用一根普通I/O口实现两个单片机通讯一样,发射比较简单,你模拟串口时序就行了,接收的话你就用一个定时器不断的去采样I/O口的电平高低,打个比方:波特率1200,也就是一位833us,那么你就每83us采样一次,如果连续10次采样到高电平,代表1,连续10次采样到低电平代表0,用这个思路去做就行了,就是比较耗CPU。

主支持小编支持小编主支持小编支持小编主支持小编支持小编

更楼上一样我也是赚积分的

更楼上一样我也是赚积分的

请问你的问题解决了嘛?我也需要做同样的工作,能讲解一下吗?

我使用STC89C52(好老的MCU,时钟频率11059200Hz),实现了这个功能(我是用来做Debug口,硬件串口模块做通信占用了),IO口随便定,波特率目前最高支持19200,准备继续优化到115200,

端口加232 了解下芯片

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top