的课程设计 内容简介:设计两个单片机实现主从式串行通信的系统,主机发送数据到从机,并在LED数码管上显示。 可通过接在主机上的键盘输入数据,通过主机发送到从机
主机
#include <REGX51.H>
#define F_OSC 12000000//晶振平率Hz
#define F_BAUD 1200
#define RELOAD 256-F_OSC/12/32/F_BAUD
unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
//段码值0123456789
sbit key = P1^0;
unsigned char count;
//串口初始化
void UARTInit()
{
SCON=0x40;//工作与方式1不接受
TMOD=0x20;//定时器1工作与方式2
TH1=RELOAD;
TR1=1;
TI=0;
}
void delay()
{
unsigned char t,l;
for (l=0;l<10;l++)
for (t=0;t<110;t++);
}
void main()
{
UARTInit();
P2 = duanma[0];
while(1)
{
if (!key)
{
delay();
if (!key)
{
count ++;
if (count == 10)
count = 0;
SBUF = count;
while(!TI);
TI = 0;
P2 = duanma[count];
}
while(!key);
}
}
}
从机
#include <REGX51.H>
#define F_OSC 12000000//晶振平率Hz
#define F_BAUD 1200
#define RELOAD 256-F_OSC/12/32/F_BAUD
unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77};
sbit key = P1^0;
unsigned char count;
void UARTInit()
{
SCON=0x50;//工作与方式1接受
TMOD=0x20;//定时器1工作与方式2
TH1=RELOAD;
TR1=1;
TI=0;
}
void main()
{
UARTInit();
P1 = duanma[0];
while(1)
{
while(RI)
{
RI = 0;
P1 = duanma[SBUF];
}
}
}
原创文章,作者:晴空,如若转载,请注明出处:http://www.dlgrdx.com/kechuang/15293.html