基于51单片机的串口通信proteus仿真电路及代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1};
void delay(uchar n) {
uchar x,y; for(x=n;x>0;x--) for(y=110;y>0;y--); }
uchar key_putdown() {
P1=0xf0; if(P1!=0xf0) {
delay(5); if(P1!=0xf0) {
return 1; } } else return 0; }
基于 51 单片机的串口通信 proteus 仿真电路 及代码(2014.10.27)
本电路采用晶振为 11.0592MHz,采用串口工作方式 1,波特 率为 9600Bps,双机通信,U1 将 4*4 矩阵键盘送来的 0~f 字 符先用一位共阴数码管显示出来,再通过 P3.0 和 P3.1 两个 引脚送到 U2,U2 再用一位共阴数码管显示出来。
P0=0x00; P0=table[n]; }
void main() {
SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; ES = 1; EA = 1;
//串口方式 1, 8-n-1, 允许接收. //T1 方式 2
//开中断.
P0=0x3f; while(1) {
if(key_putdown()) {
key_scan(); led_disp(key); send();
} } }
这是从机 U2 接收使用的代码:
#include<reg51.h> #define uchar unsigned #define uint unsigned
uchar
code
table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7 1};//7 段共阴数码管 0~f
uchar a;
void led_disp(uchar wei,uchar n) {
P0=0x00; P0=table[n]; }
void receive()interrupt 4 {
if(RI) {
RI=0; a=SBUF; led_disp(1,a); } }
void main() {
SCON = 0x50; TMOD = 0x20; TH1 = 0xFD; TL1 = 0xFD; TR1 = 1; ES = 1; EA = 1;
这是主机 U1 发送使用的代码:
#include<reg51.h> #define uchar unsigned char #define uint unsigned intucFra bibliotekar key;
uchar
code
table[16]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x7
void key_scan() {
key=0; P1=0xf0; switch(P1) {
case 0xe0:key=0;break; case 0xd0:key=4;break; case 0xb0:key=8;break; case 0x70:key=12;break; } P1=0xff;
P1=0x0f; switch(P1) {
case 0x0e:key+=0;break; case 0x0d:key+=1;break; case 0x0b:key+=2;break; case 0x07:key+=3;break; } }
void send() {
TI=0; SBUF=key; while(!TI); TI=0; }
void led_disp(uchar n) {
//串口方式 1, 8-n-1, 允许接收. //T1 方式 2
//开中断.
P0=0x3f; while(1); }
相关文档
最新文档