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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 8813|回復: 8
打印 上一主題 下一主題
收起左側

單片機多機通信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;                                                                 // 發全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;

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

/* 發送數據函數 */
void senddata(uchar buf)
{

        /* 發送數據 */
                TI = 0;
                TB8 = 0;                                // 發送數據幀
                SBUF =buf;        
                while(!TI);
                TI = 0;
}

/* 串口初始化函數 */
void init_serial()
{
        TMOD = 0x20;                                // 定時器T1使用工作方式2
        TH1 = 250;
        TL1 = 250;
        TR1 = 1;                                        // 開始計時
        PCON = 0x80;                                // SMOD = 1
        SCON = 0xd0;                                // 工作方式,9位數據位,波特率9600kbit/s,允許接收
}
void Getkey()
{
    switch(get_key)
                   {
                      case 0x11:                                                // 1行1列,數字0
                              key=0xc0;
                                  break;
                        case 0x21:                                                // 1行2列,數字1
                 key=0xf9;
                                break;                        
                        case 0x41:                                                // 1行3列,數字2
                                key=0xa4;
                                break;
                     case 0x81:                                                // 1行4列,數字3
                                key=0xb0;
                                break;
                        case 0x12:                                                // 2行1列,數字4
                key=0x99;
                                break;
                        case 0x22:                                                // 2行2列,數字5
                                  key=0x92;
                                break;
                        case 0x42:                                                // 2行3列,數字6
                                   key=0x82;
                                break;
                        case 0x82:                                                // 2行4列,數字7
                                   key=0xf8;
                                break;
                        case 0x14:                                                // 3行1列,數字8
                                   key=0x80;
                                   break;
                        case 0x24:                                                // 3行2列,數字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();                                // 調用鍵盤掃描函數
             Getkey();
                 buf=key;

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

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

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




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:194625 發表于 2018-12-27 11:18 | 只看該作者
好東西,不錯,收藏了
回復

使用道具 舉報

板凳
ID:456364 發表于 2018-12-27 13:34 來自手機 | 只看該作者
謝謝分享,收藏了
回復

使用道具 舉報

地板
ID:494335 發表于 2019-6-10 10:30 | 只看該作者
超棒 拿過來當參考
回復

使用道具 舉報

5#
ID:145038 發表于 2020-4-25 13:13 | 只看該作者
你這個挺好的,點贊棒棒噠
回復

使用道具 舉報

6#
ID:96381 發表于 2020-6-3 21:09 | 只看該作者
學習了,謝謝共享。
回復

使用道具 舉報

7#
ID:773349 發表于 2020-6-8 22:09 | 只看該作者
這沒有復位部分嗎
回復

使用道具 舉報

8#
ID:857362 發表于 2020-12-9 13:29 | 只看該作者
很有用,也很精簡
回復

使用道具 舉報

9#
ID:1094371 發表于 2023-9-24 01:38 | 只看該作者
大佬 能不能細說一下 系統設計
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区中文在线 | 91久久久久 | 最新国产精品精品视频 | 看av片网站 | 国产免费高清 | 亚洲五码在线 | 亚洲精选一区二区 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 日韩精品视频一区二区三区 | 颜色网站在线观看 | 亚洲免费成人 | 97精品一区二区 | 精品免费国产一区二区三区四区介绍 | 久久久久国| 亚洲欧美精品在线观看 | 超碰一区二区 | 亚洲一区二区三区久久久 | 国产精品美女 | 国产精品福利网 | 久久综合一区 | 精品国产乱码久久久久久果冻传媒 | 国产精品久久久久久妇女 | 成人欧美一区二区三区视频xxx | 国产精品久久久久久久久免费 | 一区二区三区视频在线 | 在线国产视频观看 | 精品国产乱码久久久久久图片 | 最新日韩在线 | 久久在线看 | 伊人电影院av | 成人精品一区 | 亚洲午夜电影 | 亚洲啊v在线 | 国产欧美一级二级三级在线视频 | 国产精品欧美一区二区三区不卡 | 日韩成人中文字幕 | 国产第二页 | 农村真人裸体丰满少妇毛片 | 日韩影音 | 免费视频一区二区三区在线观看 | 国产高清自拍视频在线观看 |