单片机原理及应用(C51版)
实验目的及要求:
1.掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程;
2.按照P241图A.72绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能;
3.采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图A.74所示尺寸进行PCB自定义封装。
步骤:
1.根据实验要求绘制电路图。
绘制时(1)选择并摆放电路元件
(2)摆放电源正负极
(3)连接各元件
绘制完成后电路图如下:左为发送机,右为接收机
文章来源地址https://www.toymoban.com/news/detail-461234.html
2.在Keil中编写并编译C51程序6A和6B。
(1)编写并编译程序,将以.c为后缀的程序文件添加到Source Group里(忽略每行注释后的内容,在Keil里注释的中文都没有显示)
实验六A的C51源程序:
//1#机程序
#include<reg51.h>
#define uchar unsigned char
char code map[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//'0'~'9'
void delay(unsigned int time){
unsigned int j = 0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void main(void){
uchar counter=0; //定义计数器
TMOD=0x20; //T1定时方式2
TH1 = TL1 = 0xf4; //2400b/s
PCON=0; //波特率不加倍
SCON = 0x50; //串口方式1,TI和RI清零,允许接收;
TR1=1; //启动T1
while(1){
SBUF = counter; //发送联络信号
while(TI==0); //等待发送完成
TI = 0; //清TI标志位
while(RI==0); //等待乙机回答
RI = 0;
if(SBUF ==counter){ //若返回值与发送值相同,组织新数据
P2 = map[counter]; //显示已发送值
if(++counter>9) counter=0;//修正计数器值
delay(500);
}}}
实验六B的C51源程序:
//2#机程序
#include<reg51.h>
#define uchar unsigned char
uchar receiv;
char code map[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//'0'~'9'
zenmexie0() interrupt 4{
RI = 0; //?RI???
receiv = SBUF; //?????
SBUF = receiv; //??????
while(TI==0); //??????
TI = 0; //?TI???
P2 = map[receiv];//?????
}
void main(void){
TMOD=0x20; //T1????2
TH1=TL1=0xf4; //2400b/s
PCON=0; //??????
SCON=0x50; //????1,TI?RI??,????;
EA=ES=1;
TR1=1;
while(1);
}
(2)导出.omf和.hex为后缀的工程文件
3.回到Proteus7中,为单片机添加工程文件并仿真。
分别给左、右两个单片机添加A、B工程文件:
仿真:两个LED完成通信,同时显示0~9之间的数字:
文章来源:https://www.toymoban.com/news/detail-461234.html
到了这里,关于单片机原理及应用 实验六 双机通信与PCB设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!