
1、首先,打开proteus9.5软件。
2、点击P字按钮。
3、输入AT89C51就会出现各种51单片专机。
4、用鼠标双击。
5、然后快捷小窗就会出现选好的单片机,选中放置到编辑区即可。
仿真图用了DB9接口,那个DB9是对应电脑硬件的串口的,即仿真时,数据从DB9收/发,对应的电脑实际串口数据收发。所以,两个DB9是不能用导线连接起通信片,你那三条线画了也没用。DB9是直接与单片机的RXD,TXD连接的,不能姿衫加MAX232,加了反倒不对了。
要仿真双机通信,很简单,两迹郑腔个单片机的TXD,RXD直接交叉连接就行,而你这么画,又加MAX232,又用DB9反倒不行了。要用MAX232也可以,但丛昌不能用DB9了,两个单片机的MAX232对接。
双机通信不需要安装明蠢虚拟端口软件 ,两机通过TXD <==>RXD 直接通信。#include<reg51.h>
#define uchar unsigned char
#define uint unsigneed int
uchar a0,a1,a2,a3,temp,i
uchar code tab[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}
sbit P2_0=P2^0
sbit P2_1=P2^1
sbit P2_2=P2^2
sbit P2_3=P2^3
void delay(int ms)
{
while(ms--)
for(i=0i<123i++)
}
void initUART()
{
TMOD=0x20 //M1=1,M0=0 定时器1工作方式2(定时常数重装,慎槐宴8 位)
SCON=0x50 //SM0=0,SM1=1,REN=1 串口工作方式1,允宽银许接收
TH1=0xfd //晶振11.0592时,波特率9600
TL1=TH1//TL1计数,溢出后,TH1值送入TL1
EA=1 //开总中断
ES=1 //允许串口中断
TR1=1 //启动定时器1
}
void disp()
{
a0=temp%2
a1=temp/2%2
a2=temp/2/2%2
a3=temp/2/2/2%2
P2_0=0
P0=tab[a0]
delay(1)
P2_0=1
P2_1=0
P0=tab[a1]
delay(1)
P2_1=1
P2_2=0
P0=tab[a2]
delay(1)
P2_2=1
P2_3=0
P0=tab[a3]
delay(1)
P2_3=1
}
void main()
{
initUART() //调用串口初始化子程序
while(1)
{
disp()
SBUF=P1
while(TI==0)
TI=0
}
}
void UARTinterrupt( ) interrupt 4
{
if(RI)
{
RI=0
temp=SBUF
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)