的课程设计 内容简介:设计两个单片机实现主从式串行通信的系统,主机发送数据到从机,并在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