串行通信实验
来源:互联网 发布:太阳系3d软件 编辑:程序博客网 时间:2024/05/16 10:22
要求:理解单片机串行口实现通信的各种工作方式,掌握单片机串行通信程序设计、调试方法
实验题目:甲乙两个单片机进行串行通信。采用12MHZ时钟频率晶振频率和方式1进行通信。甲机上有4*4键盘、一个七段数码管,乙机上有两个七段数码管;甲机发出按键显示内容,乙机接收后在数码管上交替显示。
/********************甲机代码******************************/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//0-9,A-F,LUPNuchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e};uchar Pre_KeyNo=16,KeyNo=16;void Delay(uint ms)//延时子程序{ uchar t; while(ms--) for(t=0;t<120;t++) ;}void Keys_Scan(){uchar Tmp;//P1端低四位接列、列的判断P1=0x0F;Delay(1);Tmp=P1^0x0F;switch(Tmp){case 1:KeyNo=0;break;case 2: KeyNo=1;break;case 4: KeyNo=2;break;case 8: KeyNo=3;break;default:KeyNo=16;//无键按下}//P1端口0-4五位接行,行的判断//翻转进行判断P1=0xF0;Delay(1);Tmp=P1>>4^0x0F;//右移四位进行判断switch(Tmp){case 1:KeyNo+=0;break;case 2: KeyNo+=4;break;case 4: KeyNo+=8;break;case 8: KeyNo+=12;break;default:break;}}void putc_toSerialPort(uchar num)//发送数字{SBUF=num;while(TI==0);TI=0;}void main(){P0=0xFF;SCON=0X40;//串口工作在方式1TMOD=0X20; //T1工作在模式2,8位自动装载PCON=0X00; //波特率不递增TH1=0XFD; //波特率9600TL1=0XFD;TI=0;TR1=1;//启动定时器while(1){P1=0xF0;if(P1!=0xF0)Keys_Scan();if(Pre_KeyNo!=KeyNo){P0=DSY_CODE[KeyNo];//在数码管上显示数字putc_toSerialPort(KeyNo);//发送数字Pre_KeyNo=KeyNo;}Delay(100);}}
/****************乙机代码**********************/#include<reg51.h>#define uint unsigned int #define uchar unsigned char//0-9,A-F,LUPNuchar code DSY_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90, 0x88,0x83,0xc6,0xa1,0x86,0x8e};void Delay(uint ms) //延时小程序{uchar i;while(ms--)for(i=0;i<120;i++);}void main()//主程序{uchar i;SCON=0X50;//串口模式1,8位异步,允许接受TMOD=0X20;//T1工作模式2,8位自动装载TH1=0XFD;//保持甲机的同一波特率TL1=0XFD;PCON=0X00;RI=0;TR1=1;P0=0xFF;P2=0xFF;while(1){ if(RI)//接受 { RI=0;for(i=0;i<100;i++){P0=DSY_CODE[SBUF];Delay(60);P0=0xFF;P2=DSY_CODE[SBUF];Delay(60);P2=0xFF;} }// Delay(100);}}
0 0
- 串行通信实验
- 微机接口实验 C# 串行通信
- 单片机C51 - 串行通信原理及串口编程实验
- 【微机实验系列】基于微机的串行通信口扩展
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 串行通信
- 同步串行通信和异步串行通信
- 同步串行通信与异步串行通信
- 串行通信的实现
- 驱动和串行通信
- 串行通信基础
- Android Java 中Thread与Runnable的区别
- IIS6重写配置在IIS7中重写无效解决方案
- struts2系列十四之globalresult全局返回结果
- 如何使用C#加密解密XML文档
- 1352 - Colored Cubes (枚举方法)
- 串行通信实验
- struts2系列十五之result path返回路径为动态结果
- struts2系列十六之复杂的ognl(即<s:pro…..>)变量,类,静态变量,list,map,set
- 服务器种类有哪些?
- json
- 智能温度监测系统
- Cookie例子
- struts2系列十七之常用的struts标签set,property,iterator,include,if,error,判断奇偶
- VS2010进行远程调试方法总结