(单片机原理与应用)理解单片机串行口实现通信的各种工作方式
2015-03-07 13:26
218 查看
一、实验内容
甲乙两个单片机进行串行通信。采用12MHZ时钟频率晶振频率和方式1进行通信。甲机上有4*4键盘、一个七段数码管,乙机上有两个七段数码管;甲机发出按键显示内容,乙机接收后在数码管上交替显示。
二、实验目的
理解单片机串行口实现通信的各种工作方式
掌握单片机串行通信程序设计、调试方法
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
查询方式接收流程图
查询方式发送流程图
六、程序源码
甲乙两个单片机进行串行通信。采用12MHZ时钟频率晶振频率和方式1进行通信。甲机上有4*4键盘、一个七段数码管,乙机上有两个七段数码管;甲机发出按键显示内容,乙机接收后在数码管上交替显示。
二、实验目的
理解单片机串行口实现通信的各种工作方式
掌握单片机串行通信程序设计、调试方法
三、实验设备
DELL台式机 、keilC51版本7、proteus版本6
四、实验电路图
五、程序流程图
查询方式接收流程图
查询方式发送流程图
六、程序源码
//接收程序 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar old=16; uchar code DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71,0x00 }; //延迟子程序 void DelayMS(uint ms){ uchar t; while(ms--) for(t=0;t<120;t++); } void main(){ P0=0x00;P2=0x00; SCON=0x50;//串口模式1,8位异步,允许接受 TMOD=0x20;//T1工作在模式2,8位自动装载 PCON=0x00;//波特率不倍增 TH1=0xfd;//波特率9600 TL1=0xfd; RI=0; TR1=1;//启动定时器T1 while(1){ if(RI){ RI=0; P0=DSY_CODE[old];//显示旧值 P2=DSY_CODE[SBUF];//显示新值 old=SBUF; } DelayMS(100); } } //发送程序 #include<reg51.h> #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71 }; uchar pre_key=16,key=16; //延迟子程序 void DelayMS(uint ms){ uchar t; while(ms--) for(t=0;t<120;t++); } //键盘扫描子程序 void keys_scan(){ uchar temp; P0=0x0f; DelayMS(1); temp=P0^0x0f; switch(temp){ case 1:key=0;break; case 2:key=1;break; case 4:key=2;break; case 8:key=3;break; } P0=0xf0; DelayMS(1); temp=P0>>4^0x0f; switch(temp){ case 1:key+=0;break; case 2:key+=4;break; case 4:key+=8;break; case 8:key+=12;break; } } //发送子程序 void putc_to_SerialPort(uchar c){ SBUF=c; while(TI==0); TI=0; } void main(){ P1=0x00; SCON=0x40;//串口工作在方式1(01000000) TMOD=0x20;//T1工作在模式2,8位自动装载 PCON=0x00;//波特率不倍增 TH1=0xfd;//波特率9600 TL1=0xfd; TI=0; TR1=1;//启动定时器T1 while(1){ P0=0xf0; if(P0!=0xf0) keys_scan(); if(pre_key!=key){ P1=DSY_CODE[key]; putc_to_SerialPort(key); pre_key=key; } DelayMS(100); } }
相关文章推荐
- PC机如何实现与单片机间串行通信
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- 在VC++中用ActiveX控件实现与单片机的串行通信
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- 简述在VC6.0中使用ActiveX控件实现与单片机的串行通信
- 【转】用VC++6.0实现PC机与单片机之间串行通信的方法
- Windows环境下PC机与单片机串行通信的实现
- 串行通信总结(实现两个单片机之间的通信)
- 串行通信总结(实现两个单片机之间的通信)(很好的例子,跟风进步)
- 用VC++6.0实现PC机与单片机之间串行通信的方法
- 用VC 6.0实现串行通信的三种方法
- 单片机C51串口中断接收和发送测试例程(含通信协议的实现)
- 串行通信的实现
- VC++6.0中用Win32 API实现串行通信
- 用VC 6.0实现串行通信的三种方法
- VC++6.0中用Win32 API实现串行通信
- 串行通信的基本原理及用MFC实现串口通信编程
- 用VC 6.0实现串行通信的三种方法
- VC中利用多线程技术实现线程之间的通信(一)---理解线程
- 用VC 6.0实现串行通信的三种方法