|
在線等,挺急的。郭天祥 串口通信 矩陣鍵盤的程序?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ī)源程序如下:
- #include "reg51.h"//有74HC573鎖存器 接收的乙機(jī)
- #define uchar unsigned char
- #define uint unsigned int
- sbit dula=P2^6;//申明U1鎖存器的鎖存端
- sbit wela=P2^7;//申明U2鎖存器的鎖存端
- uchar code table[]=
- {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
- 0x77,0x7c,0x39,0x5e,0x79,0x71};
- uchar buffer[]={0x00,0x00,0x00,0x00,0x00,0x00};
- unsigned char i;
- void display(uchar num){
- P0=table[num];dula=1;dula=0;}
- void main(){
- TMOD=0; //定時(shí)器T1工作于方式2
- TH1=0xfd;
- TL1=0xfd;
- TR1=1;
- REN=1; //接收允許
- SM0=0;SM1=1; //開串行口中斷
- ES=1; EA=1; //開總中斷允許位
- P0=0xc0;wela=1;wela=0;
- while(1);}
- void ser()interrupt 4
- {uchar a;
- EA=0;RI=0;buffer[i]=SBUF;a=buffer[i];i++;if(i==6) i=0;display(a);}
復(fù)制代碼
|
|