历史上的今天
今天是:2024年10月19日(星期六)
2021年10月19日 | 51单片机双向通信实例
2021-10-19 来源:eefocus
通过甲机按键控制点亮乙机LED灯,通过控制乙机按键向甲机发送数字,并且使用数码管显示。
电路原理图:

甲机代码:
#include #define uchar unsigned char #define uint unsigned int sbit LED1=P1^0; sbit LED2=P1^3; sbit K1=P1^7; uchar Operation_No=0; //操作代码 //数码管代码 uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //延时 void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } //向串口发送字符 void Putc_to_SerialPort(uchar c) { SBUF=c; while(TI==0); TI=0; //TI硬件置1,软件清0 } //主程序 void main() { LED1=LED2=1; P0=0x00; SCON=0x50; //串口模式 1,允许接收 TMOD=0x20; //T1 工作模式 2 PCON=0x00; //波特率不倍增 TH1=0xfd; TL1=0xfd; //9600 TI=RI=0; // TR1=1; IE=0x90; //允许串口中断 while(1) { DelayMS(100); if(K1==0) //按下 K1 时选择操作代码 0,1,2,3 { while(K1==0); { Operation_No=(Operation_No+1)%4; } switch(Operation_No) //根据操作代码发送 A/B/C 或停止发送 { case 0: Putc_to_SerialPort('X'); LED1=LED2=1;break; case 1: Putc_to_SerialPort('A');LED1=~LED1;LED2=1;break; case 2: Putc_to_SerialPort('B'); LED2=~LED2;LED1=1; break; case 3: Putc_to_SerialPort('C'); LED1=~LED1;LED2=LED1; break; } } } } //甲机串口接收中断函数 void Serial_INT() interrupt 4 { if(RI) { RI=0; if(SBUF>=0&&SBUF<=9) { P0=DSY_CODE[SBUF]; } else { P0=0x00; } } } 乙机代码: #include #define uchar unsigned char #define uint unsigned int sbit LED1=P1^0; sbit LED2=P1^3; sbit K2=P1^7; uchar NumX=-1; //延时 void DelayMS(uint ms) { uchar i; while(ms--) { for(i=0;i<120;i++); } } //主程序 void main() { LED1=LED2=1; SCON=0x50; //串口模式 1,允许接收 TMOD=0x20; //T1 工作模式 2 TH1=0xfd; //波特率 9600 TL1=0xfd; PCON=0x00; //波特率不倍增 RI=TI=0; TR1=1; IE=0x90; while(1) { DelayMS(100); if(K2==0) { while(K2==0); NumX=++NumX; //产生 0~10 范围内的数字,其中 10 表示关闭 SBUF=NumX; if(NumX==10) { NumX=-1; } while(TI==0); TI=0; //TI硬件置1,软件清0 } } } void Serial_INT() interrupt 4 { if(RI) //如收到则 LED 则动作 { RI=0; switch(SBUF) //根据所收到的不同命令字符完成不同动作 { case 'X': LED1=LED2=1;break; //全灭 case 'A': LED1=0;LED2=1;break; //LED1 亮 case 'B': LED2=0;LED1=1;break; //LED2 亮 case 'C': LED1=LED2=0; //全亮 } } } 效果截图: 搜索 会员中心 收藏 动态 消息 创作 青烨慕容 2020-05-06 09:16:53 18 篇文章2 订阅

51单片机双向通信实例

2089 51单片机
专栏收录该内容电路原理图:
甲机代码:
#include
乙机代码:
#include
效果截图:
史海拾趣
|
电子行业制造自功化是世界发展的趋势,电子产品设计复杂化,产品生命周期越来越短。将计算机、网络、先进的管理软件应用于电子制造,日益被各先进国家及厂商所重视,CAM文件格式的改进工作都有相应的进展并己经有所应用,国内未能进行相应研究。 ...… 查看全部问答> |
|
1. 不要第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。 2. 初学者请不要看太多的书那会误人子弟的。先找一本好书系统的学习。很多人用了很久都是 ...… 查看全部问答> |
|
小菜鸟提问:电话的两根平行线是如何实现全双工通信的 如题对于座机电话如何用两根平行线就实现全双工通信一直很是困惑,希望哪位大虾指教。见笑见笑。 再一个问题就是一般的座机电话在平时不通话时(并且无人拨打)时,两根电话线上的信号是如 ...… 查看全部问答> |
|
Windows CE系统 platform builder仿真系统黑屏问题 我用的是WinCE5.0 platform builder . 在建系统时 编译没有问题 但Attach Device后模拟器黑屏 看过以前的帖子 已经把分辨率调到640*480 内存开到128 可是还是建好后还是黑屏 等了很长时间都不行 不知道怎么回事 请高手解决一下… 查看全部问答> |
|
4月21日(本周六),在北理工,选取目前最流行的嵌入式协处理器DSP和FPGA,基中DSP选取TI公司的2000和6000两个系列专题,希望通过本次活动半天的时间使大家快速了解DSP和FPGA的关键技术。 活动详情:http://www.farsight.com.cn/lecture/L070421.a ...… 查看全部问答> |
|
鑫海宝贝兄弟,你发的同类型帖子太多了,眼睛都看不过来,严重影响大家查找资料,我帮你汇总一下,希望不要介意 【MP430共享】具有检测电池容量功能的充电器设计https://bbs.eeworld.com.cn/thread-301578-1-1.html 【MP430共享】 ...… 查看全部问答> |





