单片机原理及应用 实验六 双机通信与PCB设计
单片机原理及应用(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)连接各元件
绘制完成后电路图如下:左为发送机,右为接收机
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定时方式2TH1 = TL1 = 0xf4; //2400b/sPCON=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 charuchar 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????2TH1=TL1=0xf4; //2400b/sPCON=0; //??????SCON=0x50; //????1,TI?RI??,????;EA=ES=1;TR1=1;while(1);
}
(2)导出.omf和.hex为后缀的工程文件
3.回到Proteus7中,为单片机添加工程文件并仿真。
分别给左、右两个单片机添加A、B工程文件:
仿真:两个LED完成通信,同时显示0~9之间的数字:
单片机原理及应用 实验六 双机通信与PCB设计相关推荐
- 在学习c51单片机实验七(双机通信及pcb设计)操作Keil uVision4和protus的时候遇到的两个坑
第一个问题,这个问题用keil编程经常遇到 特别是懒的时候,对于新手,每次用一个工程文件,因为创建不熟练,就容易出现这个问题 Build target 'Target 1' linking... ** ...
- 山东大学单片机原理与应用实验 3.4 矩阵键盘扫描实验
目录 一.实验题目 二.实验要求 三.实验过程及结果记录 1. 在Proteus 环境下建立图1所示原理图,并将其保存为keyscan_self.DSN 文件. 2. 编写控制源程序,将其保存为key ...
- 山东大学单片机原理与应用实验 C语言程序实验
一.实验题目 C语言程序实验 二.试验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...
- 山东大学单片机原理与应用实验 汇编程序实验2
一.实验题目 汇编程序实验2 二.实验要求 片内RAM30H开始的32个单元中分布着随机的有符号8位二进制数,按从小到大的顺序进行排序,排序后的数据仍然保存到30H开始的32个单元中(低地址存放小数据 ...
- 山东大学单片机原理与应用实验 3.2 拓展并行I/O口实验
目录 一.实验题目 二.实验要求 三.实验过程及结果记录 1. 在Proteus环境下建立原理图,如图1所示,并保存为expandIO.DSN文件. 2. 将实验代码写入文本文档,并保存为expand ...
- 山东大学单片机原理与应用实验 3.7LCD 1602显示实验
目录 一.实验题目 二.实验要求 三.实验过程及结果分析 四.实验流程图 五.实验源代码 一.实验题目 3.7 LCD 1602显示实验 二.实验要求 1.画出实验的流程图 2.编写源程序并进行注释 ...
- 【数据库 Microsoft SQL Server】实验六 物业收费管理系统数据库设计与实施综合实验
实验六 物业收费管理系统数据库设计与实施综合实验 一.实验目的 1.掌握数据库概念模型和逻辑模型设计,学会使用数据库规范化理论规范关系模式. 2.熟练掌握和使用SQL语言定义数据库.表.索引和视图等对 ...
- 实验六 基本模型机的设计与实现
实验六 基本模型机的设计与实现 一.目的任务 完成基本模型机的数据测试,验证并记录运行结果,分析程序的运行过程及各主要功能部件功能. 二.设计内容 1.基本模型机设计与实现 指令系统至少要包括六条不同 ...
- MSP430单片机原理及应用 实验
单片机原理及应用 课程实验(二) 实验项目:MSP430简单程序设计 实验目的:学会用C语言进行简单程序设计 实验要求:掌握编写排序程序 实验内容: (1)设计一个对8个数据(0-255,任意设置)的 ...
最新文章
- 周报速递丨小红书提出 IDEA 方法论;金融业七大数字化趋势
- java 调整数组顺序使奇数位于偶数前面
- C语言程序设计答案黄保和编,C语言程序设计答案(黄保和编)第5章.pdf
- oraoledb.oracle 12c,关于OraOLEDB.Oracle找不到驱动问题的一种可能解决方案
- 游戏服务器mysql封装_游戏服务端之C++封装Mysql
- Android Notification中PendingIntent.Flag的应用
- 【人工智能】归结演绎推理
- Arcpy处理月NDVI,最大合成法合成年NDVI
- 汇正财经骗局?科创50大涨
- 超参数的选择与交叉验证
- 一把 LOL 案例,学会模板设计模式!
- 项目管理的3个关键动作:启动、推进、复盘
- [转]基于WorldWind平台的建筑信息模型在GIS中的应用
- java中static什么意思_java中static什么意思
- 安装win7-专业版虚拟机
- 优麒麟 19.04 即将发布,华为、阿里云、重大、360四大境像站鼎力支持!
- 安装Docker、Harbor、Jenkins、Gitlab
- 如何修改win10系统的字体
- 易语言多线程大漠多线程进程线程多线程
- [二分+DFS]南蛮图腾
热门文章
- ZXR10 1809 路由器 1800开启WEB配置界面调试方法
- 用C语言实现的简单Web服务器(Linux)
- 【注意力模型】Harmonious Attention Network for Person Re-Identification
- 在nvidia的JETSON XACIER NX上面跑通yolov3
- 服务器时间 验证码不显示,时间不同步导致网页验证码不能正常显示解决方法...
- 【python 爬虫】百度手机助手爬虫
- 辅导作业很“崩溃”?猿辅导教你三招告别怒吼式教育
- 2021年汽车激光雷达行业研究报告
- 小而美的城市,比鸭脖更诱人
- 开发的页面卡顿、慢?一文教你如何进行页面性能优化