找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 7298|回復: 1
打印 上一主題 下一主題
收起左側

單片機間串口通信,仿真電路圖+程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:191473 發(fā)表于 2017-5-31 03:19 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

/****A單片機程序***/
#include<reg52.h>
#include"type.h"

uint8 SigNum[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//CC共陰極數(shù)碼管0123456789

void Delay1s(void)
{
        uint8 h,i,j,k;
        for(h=5;h>0;h--)
                for(i=4;i>0;i--)
                        for(j=116;j>0;j--)
                                for(k=214;k>0;k--);
}

/*********************************************************
串口初始化函數(shù)  參數(shù):無  返回值:無
*********************************************************/
void USART_Init(void)
{
        TMOD = 0x20;//將定時器1設置為方式2,8位自動重裝模式
        SCON = 0x50;//串口控制寄存器,使串口工作在方式1,并且接受使能
        PCON = 0x00;//該寄存器第一位為串口波特率倍速控制位,這里不倍速
        TH1 = 0xfd;  //11.0592M晶振,波特率9600
        TL1 = 0xfd;
        TR1 = 1;//開啟定時器1
        ES = 1;//開啟串口中斷
        EA = 1;//開啟總中斷
}

/******************************************************************
發(fā)送一個字節(jié)函數(shù)  輸入?yún)?shù):dat 返回值:無
******************************************************************/
void Send_Dat(uint8 dat)
{        
        SBUF = dat;
        while(TI==0);
        TI=0;
}

void main()
{
        uint8 a=0;
        USART_Init();
        while(1)
        {
                Send_Dat(SigNum[a]);
                Delay1s();
                a++;        
                if(a==10)
                {
                        a=0;
                }
        }
}

void USART_INTR() interrupt 4        //串口中斷
{
        if(RI)
        {
                RI = 0;
                P1 = SBUF;
        }
}
/*********B單片機程序*************/
#include<reg52.h>
#include"type.h"

uint8 LedScan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//LED從上到下依次變化

uint8 Num=0;//該變量用于計算接收到的數(shù)據(jù)的次數(shù)

/*void Delay1s(void)
{
        uint8 h,i,j,k;
        for(h=5;h>0;h--)
                for(i=4;i>0;i--)
                        for(j=116;j>0;j--)
                                for(k=214;k>0;k--);
}*/

/*********************************************************
串口初始化函數(shù)  參數(shù):無  返回值:無
*********************************************************/
void USART_Init(void)
{
        TMOD = 0x20;//將定時器1設置為方式2,8位自動重裝模式
        SCON = 0x50;//串口控制寄存器,使串口工作在方式1,并且接受使能
        PCON = 0x00;//該寄存器第一位為串口波特率倍速控制位,這里不倍速
        TH1 = 0xfd;  //11.0592M晶振,波特率9600
        TL1 = 0xfd;
        TR1 = 1;//開啟定時器1
        ES = 1;//開啟串口中斷
        EA = 1;//開啟總中斷
}

/******************************************************************
發(fā)送一個字節(jié)函數(shù)  輸入?yún)?shù):dat 返回值:無
******************************************************************/
void Send_Dat(uchar dat)
{        
        SBUF = dat;
        while(TI==0);
        TI=0;
}

void main()
{
   uint8 a=0;
   USART_Init();
   while(1)
   {
                   if(Num==10)//接受9之后讓LED變化一次
                {
                        Num=0;
                        Send_Dat(LedScan[a]);
                        a++;
                        if(a==8)
                        {
                                a=0;
                        }
                }        
   }
}

void USART_INTR() interrupt 4        //串口中斷
{
        if(RI)
        {
                RI = 0;
                P1 = SBUF;
                Num++;
                //Delay1s();
        }
}

全部資料下載地址:
單片機間串口通信.rar (65.63 KB, 下載次數(shù): 90)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:241242 發(fā)表于 2018-9-5 10:32 | 只看該作者
太厲害了!學習。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表