单片机系列文章为我们团队其他成员的文章,原发表于与非网,先整理项目文章集中于此
原地址:http://www.eefocus.com/bbs/article_1156_541662.html
转载须注明原地址
首先说下,我和另外一位同学是在智能家居系统中负责单片机部分的成员,我们是计算机专业的,初次接触单片机,以下内容仅适合菜鸟的单片机入门教程。
我们想要实现的功能是PC和51单片机的串口通信,即PC发指令给51,51能够做出相应的反应,51那边按了有关按钮后,PC能收到这个信号。这对于电气,动机专业的同学来说是再简单不过的事了,但是我是学计算机软件的,对硬件不懂。所以下面我要写的内容都是我一步一步摸索的过程。希望对那些还没有入门的同学有一些帮助。
我打定主意要学51后,就去网上搜资料。加了2个51群。有什么不懂的就去群里问。他们都推荐先看郭天祥的《新概念51单片机 C语言 教程》(绝非打广告)。于是网上下了一个PDF(附件太大了就不上传了,自己去网上搜)。一点点开始看,当然了,对于学计算机的我来说,C语言还是懂一点的,所以看起书来比较轻松,一边看一边对着KEIL和proteus练习、仿真。总结起来就一点:查表。各种芯片,哪个管脚有什么功能等等都是查表,然后写程序,有点繁琐,于是我就直接看和我的任务有关的部分,就是51和PC的串口通信那部分。
关于这一部分,网上也都有很多教程,由于当时我还没有买各种元件,所以打算先在笔记本上仿真,于是我找了很多资料,但都说得模棱两可,而且有关于笔记本和51通信的资料很少,其中我看到一篇文章描述的还算清楚,百度文库地址:http://wenku.baidu.com/view/49c49c0d6c85ec3a87c2c5f0.html 我照着上面的步骤做,PC和51还是不能通信,后来可以说是经过我的各种折腾吧,也不知道怎么的就连上了。下面把我的详细过程说下。
在笔记本上模拟PC和51通信:
先看一下电路图吧:
此电路的主要功能就是在PC上发送一个数字,7段数码管能显示相应的数字,发送指定的字母,相应的LED灯会亮或灭。另外LED还可以被物理开关控制。网上说在proteus里仿真不需要MAX232和晶振,但是在实际连电路的时候还是需要的。这里我因为我当时不知道怎么连MAX232所以就没有连。好了,要想实现在笔记本上模拟51和PC通信,需要以下软件:
1) proteus
2) 虚拟串口调试软件(因为笔记本没有物理串口,所以只能虚拟出来)
3) 串口调试助手
Proteus安装没什么好说的,虚拟串口调试软件在下面的附件中,安装很简单,网上找一下,打开虚拟串口软件,它的界面是这样的:
左边的physical ports就是物理串口,由于我的笔记本没有物理串口,所以为空;virtual ports就是虚拟串口,我之前用过,所以有4个串口,other virtual ports其他串口,不管。
你现在要做的就是在右边,端口一,二上选择com1,com2(因为有些串口调试助手只能选择1,2两个口,所以为了照顾后面的操作,最好选择com1,com2),然后点击添加端口。这样左边virtual ports就会多出2个串口,像上图,com2后面有[9600-N-8-1]说明有程序在用这个端口,波特率是9600,校验位为NONE,数据位为8,停止位为1等。其他的就是空的,没有程序在用。
这样就虚拟出了2个串口,比如COM1和COM2。
然后你打开proteus软件,打开上面的电路图,双击单片机选择相应的.hex文件,设置晶振等。重要的一步是:双击compim,设置见下图。
其中的physical port我们选com1,表明这相当于51引出来的一个串口,波特率设置为9600,注意这里的9600要和你的源代码相一致,我的源代码(在末尾附件)中有TH1 = 0xfd;这样一句,就是设置了波特率为9600,所以你这里也要选9600. 校验位为NONE,数据位为8,停止位为1等。设置好后点OK保存。到这一步你就把proteus中的操作完成了。
(由于附件受限,另开一贴)