实验3 串行口应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} return; } display(SBUF); SM2=1; }
五、报告要求 1.完整阐述相关实验原理。 2.实验详细步骤须阐述清楚。 3.电路所用元件以列表的形式给出,标号、名称、参数等内容应清楚注明。 4.仿真电路图打印后贴于报告相应位置,图纸清晰,大小合适,剪贴规范。 5.画出实验内容相应程序代码的流程图。 6.程序代码书写工整,注释清楚(可打印)。 7.报告结尾附“实验总结”,对相关实验结果、问题进行详细分析。
case 1: {
SBUF=str[pointer_1++]; if(pointer_1>=16)
pointer_1=0; break; } case 2: { SBUF=str[pointer_2++]; if(pointer_2>=16)
pointer_2=0;
break; } default:break; while(TI==0); TI=0; } } void main(void) { while(1) { P1=0xff; while(P1==0xff); switch(P1) {
SCON=0xf0; TMOD=0x20; TH1=TL1=0xfd; TR1=1; ES=1; EA=1; while(1); } void receive(void) interrupt 4 { RI=0; if(RB8==1) {
if(SBUF==NODE2_ADDR)
{ SM2=0Leabharlann Baidu P3_7=!P3_7;
uchar i,j; for(i=0;i<130;i++) for(j=0;j<time;j++); } void proc_key(uchar node_number) { delay(200); SCON=0xc0; TMOD=0x20; TH1=TL1=0xfd; TR1=1; TB8=1; SBUF=node_number; while(TI==0); TI=0; TB8=0; switch(node_number) {
SCON=0xf0; TMOD=0x20; TH1=TL1=0xfd; TR1=1; ES=1; EA=1; while(1); } void receive(void) interrupt 4 { RI=0; if(RB8==1) {
if(SBUF==NODE1_ADDR) {
SM2=0; P3_7=!P3_7; } return; } display(SBUF); SM2=1; }
3)从机 2: #include <reg51.h> #define NODE2_ADDR 2 #define uchar unsigned char sbit P3_7=P3^7; uchar code table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void display(uchar ch) {
if((ch>=48)&&(ch<=57))
P2=table[ch-48]; else if((ch>=65)&&(ch<=70))
P2=table[ch-55]; } void main(void) {
三、实验原理 1.串行通信的基本概念 2.串行口的结构组成及相关特殊功能寄存器 3.串行口的工作方式与控制方法
四、实验内容
[项目 1] 主-从多机通信系统
图 3.1.1 主-从多机通信系统原理图
程序代码: 1)主机: #include <reg51.h> #define uchar unsigned char #define NODE1_ADDR 1 #define NODE2_ADDR 2 uchar KeyValue=0; uchar code str[]="0123456789ABCDEF"; uchar pointer_1=0,pointer_2=0; void delay(uchar time) {
case 0xfe:proc_key(NODE1_ADDR);break; case 0xef:proc_key(NODE2_ADDR);break; } } } 2)从机 1: #include <reg51.h> #define NODE1_ADDR 1 #define uchar unsigned char sbit P3_7=P3^7; uchar code table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
实验 3 串行口应用
一、实验目的 1.了解串行通信的基本应用 2.掌握 51 单片机通过串行口扩展输出口的工作原理和编程方法 3.掌握 51 单片机串行口工作于 UART 方式时的工作原理和编程方法
二、实验器材 1.计算机 2.Keil µVision5(C51)软件 3.Proteus 8 Professional v8.5 SP0 软件
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void display(uchar ch) {
if((ch>=48)&&(ch<=57)) P2=table[ch-48];
else if((ch>=65)&&(ch<=70)) P2=table[ch-55];
} void main(void) {
相关文档
最新文档