久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 單片機多機通信Proteus仿真圖+程序 [打印本頁]

作者: tingyushu    時間: 2018-12-19 10:13
標(biāo)題: 單片機多機通信Proteus仿真圖+程序
單片機多機通信仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序:
/**************************************/

#include "PMPDataT.h"

/* 延時t毫秒 */
void delay(uint t)
{
        uint i;
        while(t--)
        {
                /* 對于11.0592M時鐘,約延時1ms */
                for (i=0;i<125;i++)
                {}
        }
}
uchar keyscan(void)
{
        uchar scancode,tmpcode;
        P1 = 0xf0;                                                                 // 發(fā)全0行掃描碼
        if ((P1&0xf0)!=0xf0)                                        // 若有鍵按下
        {
                delay(10);                                                        // 延時去抖動
                if ((P1&0xf0)!=0xf0)                                // 延時后再判斷一次,去除抖動影響
                {
                        scancode = 0xfe;
                        while((scancode&0x10)!=0)                // 逐行掃描
                        {
                                P1 = scancode;                                // 輸出行掃描碼
                                if ((P1&0xf0)!=0xf0)                // 本行有鍵按下
                                {
                                        tmpcode = (P1&0xf0)|0x0f;

                                        /* 返回特征字節(jié)碼,為1的位即對應(yīng)于行和列 */
                                        return((~scancode)+(~tmpcode));
                                }
                                else scancode = (scancode<<1)|0x01;                // 行掃描碼左移一位
                        }
                }
        }
        return(0);                                                                // 無鍵按下,返回值為0         
}

/* 發(fā)送數(shù)據(jù)函數(shù) */
void senddata(uchar buf)
{

        /* 發(fā)送數(shù)據(jù) */
                TI = 0;
                TB8 = 0;                                // 發(fā)送數(shù)據(jù)幀
                SBUF =buf;        
                while(!TI);
                TI = 0;
}

/* 串口初始化函數(shù) */
void init_serial()
{
        TMOD = 0x20;                                // 定時器T1使用工作方式2
        TH1 = 250;
        TL1 = 250;
        TR1 = 1;                                        // 開始計時
        PCON = 0x80;                                // SMOD = 1
        SCON = 0xd0;                                // 工作方式,9位數(shù)據(jù)位,波特率9600kbit/s,允許接收
}
void Getkey()
{
    switch(get_key)
                   {
                      case 0x11:                                                // 1行1列,數(shù)字0
                              key=0xc0;
                                  break;
                        case 0x21:                                                // 1行2列,數(shù)字1
                 key=0xf9;
                                break;                        
                        case 0x41:                                                // 1行3列,數(shù)字2
                                key=0xa4;
                                break;
                     case 0x81:                                                // 1行4列,數(shù)字3
                                key=0xb0;
                                break;
                        case 0x12:                                                // 2行1列,數(shù)字4
                key=0x99;
                                break;
                        case 0x22:                                                // 2行2列,數(shù)字5
                                  key=0x92;
                                break;
                        case 0x42:                                                // 2行3列,數(shù)字6
                                   key=0x82;
                                break;
                        case 0x82:                                                // 2行4列,數(shù)字7
                                   key=0xf8;
                                break;
                        case 0x14:                                                // 3行1列,數(shù)字8
                                   key=0x80;
                                   break;
                        case 0x24:                                                // 3行2列,數(shù)字9
                                 key=0x90;
                                break;
                        case 0x44:                                                // 3行3列,10
                                  key=0x20;
                                break;
                        case 0x84:                                                // 3行4列,11
                                 key=0x83;
                                break;
                        case 0x18:                                                // 4行1列,12
                                 key=0xc6;
                                break;
                        case 0x28:                                                // 4行2列,13
                                 key=0xa1;
                                break;
                        case 0x48:                                                // 4行3列,14
                                 key=0x04;
                                break;
                        case 0x88:                                                // 3行4列,15
                                 key=0x8e;
                                break;
                        default:break;
                }


}
/* 主程序 */
void main()
{
        uchar i = 0;
        key=0xc0;
        while(1)
    {
                  get_key = keyscan();                                // 調(diào)用鍵盤掃描函數(shù)
             Getkey();
                 buf=key;

            /* 通過P0口讀要訪問的從機地址 */
          P0 = 0xff;
          addr = P0&0x0f;
          init_serial();                                // 串口初始化

          EA = 1;                                                // 關(guān)閉所有中斷
        
                     TI = 0;
                    TB8 = 1;                                // 發(fā)送地址幀        
                    SBUF = addr;
                    while(!TI);
                    TI = 0;
                 senddata(buf);                        // 發(fā)送數(shù)據(jù)
         
        }
        
}

全部資料51hei下載地址:
0039、多機通信.rar (196.39 KB, 下載次數(shù): 251)





作者: Jinxmas    時間: 2018-12-27 11:18
好東西,不錯,收藏了
作者: kongle    時間: 2018-12-27 13:34
謝謝分享,收藏了
作者: MigakuYoru    時間: 2019-6-10 10:30
超棒 拿過來當(dāng)參考
作者: zq976493115    時間: 2020-4-25 13:13
你這個挺好的,點贊棒棒噠
作者: antaos    時間: 2020-6-3 21:09
學(xué)習(xí)了,謝謝共享。
作者: qzwxec    時間: 2020-6-8 22:09
這沒有復(fù)位部分嗎
作者: 李著    時間: 2020-12-9 13:29
很有用,也很精簡
作者: LIAOcy    時間: 2023-9-24 01:38
大佬 能不能細(xì)說一下 系統(tǒng)設(shè)計




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久天天操 | 在线播放中文字幕 | jlzzzjlzzz国产免费观看 | 天堂资源av | 国产免费久久 | 自拍偷拍综合 | 免费一级片 | 在线视频亚洲 | 亚洲国产天堂 | 国产二区精品 | 91亚洲精品乱码久久久久久蜜桃 | 六月婷婷激情 | 国产视频一区二区在线观看 | 91视频一区二区三区 | 五月天网址 | 午夜亚洲精品 | 午夜免费福利视频 | 亚洲毛片在线 | 日韩精品在线一区 | 亚洲一区二区三区在线视频 | 日本在线免费 | 亚洲一区二区三区四区在线 | 欧洲色综合 | 国产美女自拍 | 日日夜夜精品 | 日韩www| 一本色道久久综合亚洲精品小说 | 国产黄色片在线观看 | 久久草视频 | 亚洲第一在线 | 一二区视频 | 免费午夜视频 | 中文字幕第7页 | 欧美国产在线观看 | 免费国产一区 | 中国黄色1级片 | 国产乱国产乱300精品 | 视频一二三区 | 91资源在线观看 | 久久久亚洲一区 | 日本少妇一区二区 |