在线等,挺急的。郭天祥 串口通信 矩阵键盘的程序为什么一直调试不出来 proteus仿真,好像通信不上一样,网上有说到其程序不一定正确,也找了些网友改过的程序,都没有调试出来,要么就显示888888,结果试过很多种,但无一例外,甲机不管按下哪个按键,乙机显示都毫无改变。 这个程序改了几天了都没弄好-- 请求大佬支援
原程序是甲机按下按键,乙机就显示,具体接了什么显示,有几个显示我不确定。我想在甲机发送6个数字,乙机有(6个连起来的数码管)7SEG MPX6 CA就显示这6个数,改了一点程序。对串口这块,试过其他例子有时也好像通讯不上,所以很迷。仿真的单片机12MHZ或11.0592MHZ都试过
单片机源程序如下:
- #include "reg51.h"//有74HC573锁存器 接收的乙机
- #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; //定时器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);}
复制代码
|