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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2259|回復(fù): 5
收起左側(cè)

單片機(jī)串口通信 矩陣鍵盤的程序?yàn)槭裁匆恢闭{(diào)試不出來 仿真,好像通信不上

[復(fù)制鏈接]
ID:744060 發(fā)表于 2020-5-5 19:07 | 顯示全部樓層 |閱讀模式
在線等,挺急的。郭天祥 串口通信 矩陣鍵盤的程序?yàn)槭裁匆恢闭{(diào)試不出來 proteus仿真,好像通信不上一樣,網(wǎng)上有說到其程序不一定正確,也找了些網(wǎng)友改過的程序,都沒有調(diào)試出來,要么就顯示888888,結(jié)果試過很多種,但無一例外,甲機(jī)不管按下哪個(gè)按鍵,乙機(jī)顯示都毫無改變。   這個(gè)程序改了幾天了都沒弄好-- 請求大佬支援
原程序是甲機(jī)按下按鍵,乙機(jī)就顯示,具體接了什么顯示,有幾個(gè)顯示我不確定。我想在甲機(jī)發(fā)送6個(gè)數(shù)字,乙機(jī)有(6個(gè)連起來的數(shù)碼管)7SEG MPX6 CA就顯示這6個(gè)數(shù),改了一點(diǎn)程序。對串口這塊,試過其他例子有時(shí)也好像通訊不上,所以很迷。仿真的單片機(jī)12MHZ或11.0592MHZ都試過

單片機(jī)源程序如下:
  1. #include "reg51.h"//有74HC573鎖存器 接收的乙機(jī)
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. sbit dula=P2^6;//申明U1鎖存器的鎖存端
  5. sbit wela=P2^7;//申明U2鎖存器的鎖存端
  6. uchar code table[]=
  7. {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
  8.     0x77,0x7c,0x39,0x5e,0x79,0x71};
  9. uchar buffer[]={0x00,0x00,0x00,0x00,0x00,0x00};
  10. unsigned char i;
  11. void display(uchar num){
  12.     P0=table[num];dula=1;dula=0;}
  13. void main(){
  14.     TMOD=0;     //定時(shí)器T1工作于方式2
  15.     TH1=0xfd;
  16.     TL1=0xfd;
  17.      TR1=1;
  18.    REN=1;              //接收允許
  19.      SM0=0;SM1=1;                 //開串行口中斷
  20.     ES=1;    EA=1;             //開總中斷允許位   
  21. P0=0xc0;wela=1;wela=0;   
  22.      while(1);}
  23. void ser()interrupt 4
  24. {uchar a;
  25. EA=0;RI=0;buffer[i]=SBUF;a=buffer[i];i++;if(i==6) i=0;display(a);}
復(fù)制代碼

回復(fù)

使用道具 舉報(bào)

ID:744060 發(fā)表于 2020-5-5 19:09 | 顯示全部樓層
#include "reg51.h"//甲機(jī) 發(fā)送方
#define uchar unsigned char
#define uint unsigned int
    int key,num;
unsigned char code key_code[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,
0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};         //鍵盤按鍵對應(yīng)的掃描碼表
void delay(uint xms)
    {uint i,j;for(i=xms;i>0;i--)
    for(j=110;j>0;j--);}   
void send(uchar key_num)
{SBUF=key_num;
    while(!TI); TI=0;}
void scan(){
    uchar temp,key;
    P2=0xfe;temp=P2;temp=temp&0xf0;
    if(temp!=0xf0){
        delay(5);temp=P2;temp=temp&0xf0;
        if(temp!=0xf0){temp=P2;
            switch(temp)
            {case 0xee:
                key=0;break;
            case 0xde:
                key=1;break;
                case 0xbe:
                key=2;break;
                    case 0x7e:
                key=3;break;}
            while(temp!=0xf0){temp=P2;temp=temp&0xf0;}
            send(key);}}
    P2=0xfd;temp=P2;temp=temp&0xf0;
            if(temp!=0xf0){delay(5);temp=P2;temp=temp&0xf0;
                if(temp!=0xf0){temp=P2;
                    switch(temp)
            {case 0xed:
                key=4;break;
            case 0xdd:
                key=5;break;
                case 0xbd:
                key=6;break;
                    case 0x7d:
                key=7;break;}
            while(temp!=0xf0){temp=P2;temp=temp&0xf0;}
            send(key);}}
            P2=0xfb;temp=P2;temp=temp&0xf0;if(temp!=0xf0){
                delay(5);temp=P2;temp=temp&0xf0;if(temp!=0xf0)
                {temp=P2;
                    switch(temp)
                {case 0xeb:
                key=8;break;
            case 0xdb:
                key=9;break;
                case 0xbb:
                key=10;break;
                    case 0x7b:
                key=11;break;}
                while(temp!=0xf0){temp=P2;temp=temp&0xf0;}
            send(key);}}
            P2=0xf7;temp=P2;temp=temp&0xf0;if(temp!=0xf0){
                delay(5);temp=P2;temp=temp&0xf0;if(temp!=0xf0)
                {temp=P2;
                    switch(temp)
                {case 0xe7:
                key=12;break;
            case 0xd7:
                key=13;break;
                case 0xb7:
                key=14;break;
                    case 0x77:
                key=15;break;}
                    while(temp!=0xf0){temp=P2;temp=temp&0xf0;}
            send(key);}}
        }

void main(){
    TMOD=0x20;     //定時(shí)器T1工作于方式2
    TH1=0xfd;
    TL1=0xfd;
     TR1=1;
   SCON=0x40;
REN=1;
    ES=1;                     //開串行口中斷
EA=1;              //開總中斷允許位        
     while(1){scan(); }}
回復(fù)

使用道具 舉報(bào)

ID:732506 發(fā)表于 2020-5-6 00:26 | 顯示全部樓層
這種兩機(jī)聯(lián)調(diào)的,要先把兩邊分開,確定是哪一邊的問題才能修改程序。可以先用串口助手看甲發(fā)出什么信號是否正常,然后用串口助手向乙發(fā)送應(yīng)由甲發(fā)送的信號看乙是否有反應(yīng),根據(jù)結(jié)果判斷是哪一方的問題。如果仿真就用虛擬終端看串口輸出,或?qū)⒋谳敵鲇成涞教摂M串口,然后使用串口助手。
回復(fù)

使用道具 舉報(bào)

ID:462827 發(fā)表于 2020-5-6 11:32 | 顯示全部樓層
你把仿真圖跟全部的項(xiàng)目文件打包上來那還差不多,光眼看代碼是調(diào)試不了的。
回復(fù)

使用道具 舉報(bào)

ID:744060 發(fā)表于 2020-5-6 19:53 | 顯示全部樓層
好的,我馬上上傳
回復(fù)

使用道具 舉報(bào)

ID:744060 發(fā)表于 2020-5-6 19:57 | 顯示全部樓層
proteus圖之前換過幾個(gè)P口試過

serial.rar

135.58 KB, 下載次數(shù): 12

回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色妞av| jizz18国产| 国产一区二区在线播放 | 97精品国产97久久久久久免费 | av福利网| 久久久久久九九九九九九 | 国产精品久久久久久久久久 | 婷婷去俺也去 | 久草资源网站 | 国产成人精品免费视频 | 91精品久久久久久久久 | 久久成人一区 | 免费午夜视频在线观看 | 免费一看一级毛片 | 亚洲欧美日本在线 | av激情影院 | 国产欧美精品一区 | 国产一区二区三区 | 日本一区二区三区免费观看 | 一级特黄a大片 | 羞羞网站在线免费观看 | 国产精品久久久久久久久久免费看 | 欧美色视频免费 | 97伦理电影网 | 精品色| 色女人天堂 | 亚洲欧美另类在线 | 亚洲高清网 | 一区二区三区久久 | 国产成人在线视频播放 | 国产精品成人一区二区三区夜夜夜 | 找个黄色片 | 日韩一区二区三区在线观看视频 | 日本一卡精品视频免费 | 亚洲福利视频一区二区 | 国产精品激情 | 国产视频亚洲视频 | 国产精品日日摸夜夜添夜夜av | 一区二区三区不卡视频 | 中文字幕在线视频免费视频 | 一区二区三区国产精品 |