2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)

2024-07-10
| 35页
| 50人阅读
| 2人下载
普通

内容正文:

任务4 通信模块设计与制作 单片机技术与应用 项目二 智能车间生产线计数系统设计与制作 【基础任务要求】通过模拟企业智能车间药装生产线,甲单片机利用红外光电传感器检测药瓶并计数,然后把计数结果通过串口传送给乙单片机,并在乙单片机数码管显示药瓶数,当计到3个药瓶时,蜂鸣器报警,同时每1秒钟指示灯闪烁一次。 任务4 通信模块设计与制作 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 任务实现四步骤 绘制控制电路图 搭接硬件电路 硬件设计 调试控制电路 调试控制程序 软硬件调试 仿真运行 实物运行 功能实现 绘制流程图 编程实现功能:串行通信 软件设计 01 02 03 04 重点、难点 难点 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 系统框图 任务4 通信模块设计与制作 甲单片机 乙甲单片机 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 任务名:通信模块设计与制作 元件名称 图片 型号 数量 Proteus中的名称 单片机芯片 AT89C51 1 用AT89C51代替STC89C52 晶振 12MHZ 1 CRYSTAL 电容 22pF 2 CAP 电解电容 22μf/16V 1 CAP-ELEC 电阻 500Ω 1 RES 按钮 1 BUTTON 三极管 1 PNP 发光二极管 1 LED-RED 电阻 220Ω 1 RES 四位一体共阴极数码管 1 7SEG-MPX4-CC 锁存器 2 74HC573 元器件选型 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 硬件设计 甲单片机 乙单片机 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 硬件电路图 【小锦囊】在单片机串行通信接口设计中,建议使用振荡频率为11.0592MHZ的晶振,可以计算出比较精确的波特率。 在单片机与PC机的通信中,必须使用11.0592MHZ的晶振。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 软件设计 1 如何编程实现串行通信? 重点、难点 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 (1) 串行通信:数据字节一位一位在一条传输线上逐个传送。 传输线少,可利用电话网,但传送控制复杂。 1.什么是串行通信? 8位顺次传送 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 (2) 同步通信与异步通信 异步通信 收、发设备使用各自时钟 UART 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 以字符(构成的帧)为单位 字符间是异步的 字符内各位是同步的 数据格式 : 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 同步通信 发送方时钟与接收方时钟同步。既保持位同步,也保持字符同步。同步方法: 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 2.串行通信的传输方向 单工:单工是指数据传输仅能沿一个方向,不能实现反向传输。 单工 广播 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 2.串行通信的传输方向 半双工:半双工是指数据传输可以沿两个方向,但需要分时进行。 半双工 对讲机 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 2.串行通信的传输方向 全双工:全双工是指数据可以同时进行双向传输。 全双工 电话机 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 3. 传输速率与传输距离 传输速率 比特率: 每秒钟传输二进制代码的位数 波特率: 每秒钟调制信号变化的次数,即每秒钟发送的位数,单位是:波特(Baud)。 波特率和比特率不总是相同的,但对于基带传输,比特率和波特率是相同的。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 3.传输速率与传输距离 传输距离 传输距离与传输速率的关系 传输距离随传输速率的增加而减小。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 4. 串行接口的结构及工作方式 串口结构 有两个物理上独立的接收、发送缓存器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓存器,因为发送时CPU是主动的,不会产生重叠错误。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 串口引脚 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 串行通信的数据结构 异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 TI=0 RI=0 工作方式寄存器SCON RI:接收中断标志位 接收结束时,会由硬件置1,向CPU发出中断请求。(要由软件复位) TI:发送中断标志位 发送结束时,会由硬件置1,向CPU发出中断请求。要由软件复位) TB8:用来存放发送的第9位。 RB8:用来存放接收的第9位。 REN:是串行接收允许位 0时:允许串行接收 1时:禁止串行接收 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 SM2:多机通信控制位。 因为多级通信是在工作方式2和工作方式3下进行的,因此SM2主要用在工作方式2和工作方式3。 当SM2=0时:不论接收的第9位是0还是1,都接收数据,产生中断; 当SM2=1时:只有在接收到的第9位为1时,才接收数据,并产生中断;而如果接收到的第9位为0时,则将接收到的数据丢弃,不产生中断。 串行口的工作方式 SM0 SM1 方式 说明 波特率 0 0 0 移位寄存器 fosc/12 0 1 1 10位异步收发器(8位数据) 可变 1 0 2 11位异步收发器(9位数据) fosc/64或fosc/32 1 1 3 11位异步收发器(9位数据) 可变 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 工作方式寄存器PCON PCON是没有位寻址的,也就是说不能直接操作SMOD要直接操作PCON寄存器。 SMOD:是波特率是否加倍的选择位。 0时:波特率不加倍。 1时:波特率加倍。 例如:SMOD=1 × PCON=0x80 √ 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 波特率的概念 波特率的定义是:串行口每秒钟发送的位数称为波特率。 比如说2400的波特率就是每秒钟发送2400个位数。 串行口的波特率是用定时器T1作为波特率发生器的,这是定时器自动设置在工作方式2(可自动重装初值)。 波特率=(2*SMOD)/32*定时器T1的溢出率 定时器T1的溢出率=单片机内部时钟频率/(256-X) X是定时器的初值 波特率=(2*SMOD)/32*(单片机内部时钟频率/(256-X)) 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 知识链接 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 #include<reg51.h> #define uchar unsigned char #define uint unsigned int sbit K1 = P3^6; void delay(uint ms) { uchar i; while(ms--) for(i = 0; i < 120; i++); } void Putc(uchar c) //定义串口发送数据函数 { SBUF = c; //发送C变量中的数据到发送SBUF中 while(TI == 0) //查询等待发送是否完成 { ; //空语句 } TI = 0; //发送完成,TI由软件清0 } 甲单片机程序: 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 void main() { uchar x = 0; SCON = 0x40; //定义串行口工作方式1 TMOD = 0x20; //定时器T1工作方式2 PCON = 0x00; //波特率不变 TH1 = 0xfd; //设置串行口波特率为9600bps TL1 = 0xfd; TI = 0; //TI清0 TR1 = 1; //启动定时计数器T1 while(1) { if(K1 == 0) { while(K1 == 0); //检测到药瓶数 x = x + 1; //计数变量x加1 Putc(x); //调用串口发送数据函数 delay(100); } } } 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int void baojing(); sbit beep=P3^5; //·äÃùÆ÷ sbit led=P3^6; //ÐÅºÅµÆ sbit we = P2^7; sbit du = P2^6; uchar c,x; uchar ge,shi,bai,qian; uchar time; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; 乙甲单片机程序: 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 void delay(uint w) { uint j,k; for(j = 0; j < w; j++) for (k = 0 ; k < 120;k++); } void Delay1000ms() //@11.0592MHz { unsigned char i, j, k; _nop_(); i = 8; j = 1; k = 243; do { do { while (--k); } while (--j); } while (--i); } 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 void display(uint i) { uint qian,bai,shi , ge ; qian = i / 1000; bai = i %1000/100; shi = i % 100 / 10; ge = i % 10; P1 = 0xff; we = 1; P1 = 0xf7; we = 0; du = 1; P1 = table[qian]; du = 0; delay(5); P1 = 0xff; we = 1; P1 = 0xfb; we = 0; du = 1; P1 = table[bai]; du = 0; delay(5); P1 = 0xff; we = 1; P1 = 0xfd; we = 0; du = 1; P1 = table[shi]; du = 0; delay(5); P1 = 0xff; we = 1; P1 = 0xfe; we = 0; du = 1; P1 = table[ge]; du = 0; delay(5); } 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 void main() { SCON = 0x50; TMOD = 0x21; PCON = 0x00; TH1 = 0xfd; TL1 = 0xfd; ET0=1; EA=1; TR0=1; RI = 0; TR1 = 1; P1 = 0; while(1) { display(c); if(RI) { RI = 0; c = SBUF; } if(c==3) { beep = 0; led = ~led; Delay1000ms(); } } } 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 进阶任务 【任务要求】单片机甲使用矩阵式键盘输入6位密码,甲机发送密码给单片机乙机,乙机接收到密码后,在6位一体数码管上显示出来。 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 虚拟仿真 方案设计 任务拓展 实物联调 总结评价 任务引入 每天学习一点点,变成更好的自己 单片机技术与应用 � ��������� ��������� � 8����������� D0� D7� � ��������� ��������� ��������� � 10100100� � 0� 1� 11100110� 0� 1� � 10100100� � 11100110� 1� 0� $$

资源预览图

2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
1
2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
2
2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
3
2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
4
2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
5
2.4 通信模块设计与制作(课件)-《单片机技术与应用》同步教学(机工版)
6
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。