单片机双机通信系统课程设计

合集下载

单片机课程设计 双机通信 西安邮电大学

单片机课程设计 双机通信 西安邮电大学

西安邮电大学单片机课程设计报告书题目:双机通信院系名称:自动化学院学生姓名:专业名称:测控技术与仪器班级:时间:2012年 5 月 21 日至 6 月 1 日一、设计目的利用所学单片机知识解决实际问题。

二、设计要求1.用两片单片机,实现双机通信;2.利用与A(主机)连接的按键控制与B(从机)连接的数码管,每按一次键,主机LED亮同时数码管显示数据,随后从机LED亮,伴随着数码管显示与主机相同的数据;3.同理,用与B机连接的按键控制与A机连接的数码管。

1. STC89C52单片机介绍(1)STC89C52是一种带8K字节闪烁可编程可檫除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能COMOS8的微处理器,俗称单片机。

(2)外部时钟电路(3)复位电路(4)系统硬件结构图(5)硬件仿真图(6)系统软件流程图及程序代码程序流程图程序代码如下:#include <reg52.h>#define uchar unsigned charsbit COM1 = P2^1;sbit COM2 = P2^0;sbit LED = P1^0;uchar ch, x = 0;uchar ge, shi;uchar const NUM[10] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; void delay_ms(uchar ms);void initModule(void);void sendOneChar(uchar ch);**************函数功能:发送数据*********** void sendOneChar(uchar ch){ES = 0;SBUF = ch;while(!TI);TI = 0;ES = 1;}void initModule(){TMOD = 0x20;TH1 = 0xfd;TL1 = 0xfd;SCON = 0x50;COM1 = 0;COM2 = 0;LED = 1;}**************函数功能:延迟************ void delay_ms(uchar ms){uchar i, j;for (i=0; i<ms; i++)for(j=0;j<110;j++);}*************主函数************void main(){initModule();EX0 = 1;IT0 = 1;ES = 1;EA = 1;TR1 = 1;P0 = NUM[0];while(1){}}void button() interrupt 0{uchar num = 0;delay_ms(20);if (INT0 == 0){LED = 0;delay_ms(500);LED = 1;x++;if(x==25){x=0;}}shi = x / 10;ge = x % 10;while (num < 20){COM1 = 1;P0 = NUM[shi];delay_ms(15);COM1 = 0;COM2 = 1;P0 = NUM[ge];delay_ms(15);COM2 = 0;num++;}sendOneChar(x);}void read() interrupt 4 {uchar num = 0;RI = 0;LED = 0;delay_ms(300);LED = 1;shi = SBUF / 10;ge = SBUF % 10;while (num < 20){COM1 = 1;P0 = NUM[shi];delay_ms(15);COM1 = 0;COM2 = 1;P0 = NUM[ge];delay_ms(15);COM2 = 0;num++;}}五、问题分析与解决方法问题一:仿真问题仿真图画好之后,开始运行,发光二极管没有反应。

单片机课程设计_基于单片机的双机之间的串联通信

单片机课程设计_基于单片机的双机之间的串联通信

单片机系统课程设计成绩评定表设计课题基于单片机的双机之间的串联通信学院名称:电气工程学院学生姓名:学号:指导教师:设计地点:设计时间:单片机系统课程设计课程设计名称:基于单片机的双机之间的串联通信专业班级:学生姓名:学号:指导教师:课程设计地点:课程设计时间:单片机系统课程设计任务书目录一. 设计目的 (4)二. 串行口及其扩展简介 (4)三.设计要求 (5)四.硬件电路设计 (8)五.流程图设计 (10)六.程序设计 (12)七.设计小结 (17)八.参考文献 (17)双机之间的串行通信设计一、设计目的1、了解串行通信的工作原理2、了解键盘设定的工作原理3、掌握80C51的定时器1计数器1的编程4、掌握电路板的实物焊接随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。

对于莫一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。

如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。

但能在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。

这就对单片机通信提出了很高要求。

二、串行口及其扩展简介1.串行通信的基本特征是数据逐位顺序进行传送2.全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送3.串行通信的传送速率用于说明数据传送的快慢.“波特率”表示每秒种传输离散信号事件的个数,或每秒信号电平的变化次数,单位为band(波特)。

单片机课程设计——双机通信课设

单片机课程设计——双机通信课设
1.1 串行通信的发展状况...................................................................................................... 1 1.2 Protues 软件简介.............................................................................................................. 1 1.3 Keil 软件简介....................................................................................................................2 2 主要设计任务............................................................................................................................. 3 3 串行通信的基本原理................................................................................................................. 4 3.1 单片机串行通信功能...................................................................................................... 4
I
1 绪论
武汉理工大学《单片机原理与应用》课程设计说明书源自1.1 串行通信的发展状况

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信单片机课程设计双机串行通信在当今的电子信息领域,单片机的应用无处不在。

而双机串行通信作为单片机系统中的一个重要环节,为实现设备之间的数据交换和协同工作提供了关键的技术支持。

一、双机串行通信的基本原理双机串行通信是指两个单片机之间通过串行接口进行数据传输的过程。

串行通信相较于并行通信,具有线路简单、成本低、抗干扰能力强等优点。

在串行通信中,数据是一位一位地按顺序传输的。

常见的串行通信协议有 UART(通用异步收发器)、SPI(串行外设接口)和 I2C(内部集成电路)等。

在本次课程设计中,我们主要采用 UART 协议来实现双机串行通信。

UART 协议包括起始位、数据位、奇偶校验位和停止位。

起始位用于标识数据传输的开始,通常为逻辑 0;数据位可以是 5 位、6 位、7 位或 8 位,具体取决于通信双方的约定;奇偶校验位用于检验数据传输的正确性,可选择奇校验、偶校验或无校验;停止位用于标识数据传输的结束,通常为逻辑 1。

二、硬件设计为了实现双机串行通信,我们需要搭建相应的硬件电路。

首先,每个单片机都需要有一个串行通信接口,通常可以使用单片机自带的UART 模块。

在硬件连接方面,我们将两个单片机的发送端(TXD)和接收端(RXD)交叉连接。

即单片机 A 的 TXD 连接到单片机 B 的 RXD,单片机 B 的 TXD 连接到单片机 A 的 RXD。

同时,还需要共地以保证信号的参考电平一致。

此外,为了提高通信的稳定性和可靠性,我们可以在通信线路上添加一些滤波电容和上拉电阻。

三、软件设计软件设计是实现双机串行通信的核心部分。

在本次课程设计中,我们使用 C 语言来编写单片机的程序。

对于发送方单片机,首先需要对 UART 模块进行初始化,设置波特率、数据位、奇偶校验位和停止位等参数。

然后,将要发送的数据放入发送缓冲区,并通过 UART 发送函数将数据一位一位地发送出去。

对于接收方单片机,同样需要对 UART 模块进行初始化。

单片机双机通信系统课程设计

单片机双机通信系统课程设计

一.课程设计的目的及基本要求:实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。

通过电子技术的综合性工程训练,使学生达到以下的目的和要求:1、结合模拟电路、数字电路、可编程逻辑器件、单片机电子线路CAD等课程中所学的理论知识,按要求独立设计方案,培养学生独立分析与解决问题的能力;2、学会查阅相关手册和资料,通过查阅手册和资料,进一步熟悉常用电子器件的类型和特性,并掌握合理选用的原则;3、学会使用常用电子元器件(包括中规模芯片、专用芯片和可编程器件);4、掌握基本的现代电子技术设计工具和EDA(Electronic design automation)技术;5、掌握电子电路的安装与调试技术,进一步熟悉电子仪器的使用方法;6、认真撰写总结报告,培养严谨的作风和科学的态度;二.课程设计的主要内容:课题十九单片机双机通信系统基本要求:设计两个单片机最小系统,能实现有线通信,一方为发送,另一方为接收。

提高要求:两个单片机最小系统能相互通信,并能实现校验。

三.具体要求和时间安排:每一个学生在教师指导下,独立完成一个应用系统。

工作量如下:1、电路原理图(A3幅面)1张,要求Protel软件绘制;2、pcb版图(A3及以上幅面)1张;3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

目录一、前言 (4)二、键盘设计 (5)1、硬件接线部分 (5)2、4×4矩阵键盘识别处理 (7)3、键盘识别处理程序 (8)三、单片机的选择及其程序设计 (10)1、单片机型号的选择 (10)2、协议设计 (10)3、双机连接电路图 (11)4、甲机程序 (11)5、乙机程序 (16)四、数码管显示设计 (16)五、总体电路图 (21)六、设计小结 (22)七、参考文献 (23)一.前言由于MCS51系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信

单片机单片机课程设计-双机串行通信摘要由单片机构成的双机通信系统采用总线型主从式结构。

程设计就是要利用单片机来完成一个系统,实现双片单片机串行通信。

通信的结果实用数码管进行显示,数码管采用查表方式显示。

所谓主从式结构,即在两个单片机中,一个主机负责通信管理,另一个为从机,从机要负责主机的调度与支配。

该设计用A T89C51芯片,并用C语言程序来控制A T89C51,使之能实现两个单片机之间的通信。

通信方式为单工通信,一个为主单片机,作为发送方,另一个为从单片机,作为接收方。

关键字:单片机.AT89C51.C语言目录摘要 (1)前言 (3)二绪论 (4)2.1单片机 (4)2.2C语言: (4)2.3双机通信 (5)三.系统分析 (6)3.1 基本原理 (6)3.2波特率选择 (7)3.3通信协议的使用 (7)四、硬件设计 (7)4.1单片机串行通信功能 (10)4.2 MAX232芯片 (12)4.3整体电路设计 (13)五、软件设计 (14)5.1串行通信软件实现 (14)5.2程序流程图 (14)六.联合调试 (17)总结 (18)参考文献 (23)前言近年来,在自动化控制和只能仪器仪表中,单片机的应用越来越广泛,由于单片机的运算功能较差,往往需要借助计算机系统,因此单片机和PC机进行远程通信更具有实际意义,通信的关键在于互传数据信息。

51单片机内部的串行口具有通信的功能,该串口可作为通信接口,利用该串口与PC机的串口通信进行串行通信,将单片机采集的数据进行整理及统计等复杂处理就能满足实际的应用需要。

51单片机的开发除了硬件支持外,同样离不开软件。

用汇编语言或C 语言等高级语言编写的源程序必须转化为机器码才能被执行。

目前流行的Keil 8051c编译器。

它提供了集成开发环境,包括C编译器、宏编码、连接器、库管理和仿真调制器。

利用keil 8051ccuvision编写的程序可直接调用编译器编译,连接后可直接运行。

单片机双机串口通信课程设计

单片机双机串口通信课程设计

单片机双机串口通信课程设计一、课程设计意义单片机双机串口通信是电子信息类专业中的一门基础课程,包括数据传输原理、串口通信协议等知识点,对于学生的PCB设计、嵌入式系统开发等方向的学习和深入研究都具有非常重要的作用。

通过本课程的设计,学生将能够系统地掌握串口通信技术的原理和实现方法,从而为后续相关课程的学习打下坚实的基础。

二、课程设计步骤1、理论知识讲授首先,需要对串口通信的基本概念、串口的物理接口、RS232、RS485等通信协议及其实现原理进行讲解,学生需要认真记录相关知识点,为后续的实验操作打下基础。

2、实验前准备为了进行单片机双机串口通信实验,需要准备单片机开发板、双机串口通信线、USB转串口模块、连接线等工具。

学生需要根据实验指导书上的引导,仔细按照需求准备好所需要的工具,并理清各项连接关系。

3、实验操作实验是本课程的重头戏,学生需要通过实验来巩固自己所学的相关知识。

在实验过程中,学生需要详细阅读实验指导书,并按照指导书上的步骤完成整个实验过程。

实验完成后,需要仔细分析实验结果,确认实验结果是否正确。

4、实验报告实验完成后,学生需要根据实验结果撰写实验报告,报告需要包括实验过程、实验结果分析、实验总结等内容。

报告需要清晰明了,文本内容清晰、简洁明了,图表简洁、清晰,规范地描写出整个实验过程,总结实验结果,以保证实验教学的质量。

三、课程效果评估通过老师的教学和学生的自主学习,学生能够达到掌握单片机双机串口通信的基本概念和实现方法的目标。

同时,在这个过程中,学生也能够提高实验操作的能力和数据分析的能力,为他们日后的学习和研究打下基础。

《单片机技术》课程设计课题任务书(双机通信系统)

《单片机技术》课程设计课题任务书(双机通信系统)
(1)主控模块
(2)供电模块
(3)显示模块
(4)键盘模块
(5)报警模块
2、双机通信系统软件部分
(1)系统监控程序模块
(2)显示程序模块
(3)键盘程序模块
(4)通信程序模块
三、设计要求
1、采用两个单片机系统板A/B,连接好A/B两板子的串行通信线路(A板必须是自己的,B板可以借用它人的板子)。上电或按键复位后显示器件自动显示待发送/接收状态(例如显示“Send?”“Receive ?”),进入准备阶段。通过按键“OK”选择确认功能;数码管或液晶屏做状态显示(液晶屏加分)。
2、可以通过按键修改设置通信参数,例如串行通信的速率,数据位数等。
3、对接收到的数据进行甄别,接收到特定数据后触发蜂鸣器报警。
4、能随时暂停系统通信。
5、以上功能全部实现,另外再做出配套上位机软件者满分(上位机语言工具不限)。
主要参考资料
[1]李广弟.单片机基础[M].第3版.北京:北京航空航天大学出版社,2003.6.
教研室
意见
教研室主任:(签字)
年月日
[2]李全利.单片机原理及应用(C51编程)[M].北京:高等教育出版社,2012.12.
[3]马忠梅.单片机的C语言应用程序设计[M].第4版.北京:北京航空航天大学出版社,2003.6.
[4]李光飞.单片机C程序设计指导[M].北京:北京航空航天大学出版社,2003.01.
[5]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.9.
湖南工学院《单片机技术》课程设计课题任务书
学院:电气与信息工程学院专业:电气1301~2
指导教师
王韧
学生姓名
课题名称
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机双机通信系统课程设计一.课程设计的目的及基本要求:实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。

通过电子技术的综合性工程训练,使学生达到以下的目的和要求:1、结合模拟电路、数字电路、可编程逻辑器件、单片机电子线路CAD等课程中所学的理论知识,按要求独立设计方案,培养学生独立分析与解决问题的能力;2、学会查阅相关手册和资料,通过查阅手册和资料,进一步熟悉常用电子器件的类型和特性,并掌握合理选用的原则;3、学会使用常用电子元器件(包括中规模芯片、专用芯片和可编程器件);4、掌握基本的现代电子技术设计工具和EDA(Electronicdesign automation)技术;5、掌握电子电路的安装与调试技术,进一步熟悉电子仪器的使用方法;6、认真撰写总结报告,培养严谨的作风和科学的态度;二.课程设计的主要内容:课题十九单片机双机通信系统基本要求:设计两个单片机最小系统,能实现有线通信,一 23方为发送,另一方为接收。

提高要求:两个单片机最小系统能相互通信,并能实现校验。

三.具体要求和时间安排:每一个学生在教师指导下,独立完成一个应用系统。

工作量如下:1、电路原理图(A3幅面)1张,要求Protel软件绘制;2、pcb版图(A3及以上幅面)1张;3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

23目录一、前言 (4)二、键盘设计 (5)1、硬件接线部分 (5)2、4×4矩阵键盘识别处理 (7)3、键盘识别处理程序 (8)三、单片机的选择及其程序设计 (10)1、单片机型号的选择 (10)2、协议设计 (10)3、双机连接电路图 (11)4、甲机程序 (11)5、乙机程序 (16)四、数码管显示设计 (16)23五、总体电路图 (21)六、设计小结 (22)七、参考文献 (23)一.前言由于MCS51系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。

一个MCS51系列的单片机(如Atmel89c**)内部包含有RAM、FLASH ROM、两个或者三个16位的定时器/计数器、一个通用异步串行通信控制器(UART)等多种资源。

但即便如此,在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、RAM、ROM等。

采用通用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用,也不失为一个好的方法。

在这种情况下,一个系统中就使用了两个或两个以上的单片机,而单片机之间就要通过互连来进行数据通信。

MCS51系列的单片机(以下简称单片机)都带有串口,利用串口进行互连通信极为方便,其各种连接方式在许多书籍和资料上都有介绍,在此不再重述。

但如果系统要求扩充的资源是对外连接的串口,或对相互之间的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口了。

所幸的是,单片机的并行端口也能相互连接来进行数据通信。

根据单片机端口内部结构的特点,这些端口的端口线可以23直接相连,从而使两单片机之间并行通信接口的实现不用另外的硬件电路设备。

此次设计就是针对上述情况展开的。

系统结构框图如图(1)所示:二、键盘设计(1)硬件接线部分考虑到此次设计要求用到的按键数比较多(0~9,A~F 共16个按键),为了节约I/O资源,采用行列式键盘,如图(1)所示23图(1)按键编排如图(2)所示2323图(2)(2)4×4矩阵键盘识别处理按键设置在行列式交点上,行列线分别连接到按键开关的两端。

当行线通过上拉电阻接+5伏时,被钳位在高电平状态 ,事先认为设定好行线和列线的序号。

此处设行号为i ,从上到下编为0-3对应于p1.0-p1.3口,列线设为j ,从左到右编为0-3对应于p1.4-p1.7口。

每个按键有它的行值和列值 ,行值和列值的组合就是识别这个按键的编码。

事先有数组存放好对应键值的段选码。

矩阵的行线和列线分别通过两并行接口和CPU 通信。

每个按键的状态同样需变成数字量“0”和“1”,开关的一端(列线)通过电阻接V CC ,而接地是通过程序输出数字“0”实现的。

键盘处理程序的任务是:确定有无键按下,判断哪一个键按下,键的功能是什么;还要消除按键在闭合或断开时的抖动。

两个并行口中,一个输出扫描码,使按键逐行动态接地,另一个并行口输入按键状态,由行扫描值和回馈信号共同形成键编码而识别按键,通过软件查表,查出该键的功能。

(3)键盘识别处理程序键盘实现程序如下:void scanf(void) /*键盘扫描子程序*/{uchar i,j,k=0; /*i为行号,j为列号*/unsigned char num[4][4]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84};/*采用共阳极输出*/while(1){for(k=0;k<8;k++) /*循环8次,取得8个键盘键值*/{ /*存入TAB[]数组*/P1=0x0F;delay(); /*软件延时去抖动*/if((P1&0x0F)!=0x0F){23switch(P1) /*确定行号*/{case 0x07: i=3; break;case 0x0b: i=2; break;case 0x0d: i=1; break;case 0x0e: i=0; break;default: break;}}P1=0xF0; //反转行和列上的电平if((P1&0xF0)!=0xF0){switch(P1) /*确定列号*/{case 0x70: j=3; break;case 0xb0: j=2; break;case 0xd0: j=1; break;case 0xe0: j=0; break;default: break;}23TAB[k]=num[j][i]; /*P1输出对应的按键值*/}}}三、单片机的选择及其程序设计(1)单片机型号的选择单片机选用两片Atmel公司的常用芯片AT89C51,一片用于接收键盘的输入并做出判断,一片用于接收数据并驱动8个七段数码管实现动态显示。

AT89C51完全可以满足功能要求,而且价格便宜,容易获得。

(2)协议设计规定协议内容如下:数据传输的双方均使用2400bps的速率传送数据,使用主从通信方式,主机发送数据,从机接收数据,双方在发送数据和接收数据时使用查询方式。

(此处设计甲机发送,乙机接收)双方开始数据传输时,甲机先发送AAH给乙机,当乙机接收到AAH之后,向甲机回答BBH。

甲机收到BBH后就把数码表TAB[8]中的8个数据发送给乙机,并发送校验和。

乙机收到8个数据并计算收到的数据的校验和,与甲机发送过来的校验和进行比较,若校验和相同(正确)则发送00H给甲机;否则发送FFH(错误)甲机,重新接收。

乙机接收到8个数据后送8个数码管动态显示。

(3)双机连接电路图如图(4)所示图(4)(4)甲机程序#include<reg52.h>#define uchar unsigned charuchar TAB[8];uchar i,sum; /*sum为求和校验*/void delay(void) /*延时程序*/ { int j;for(j=0;j<12000;j++);}void scanf() /*键盘扫描程序*/{uchar i,j,k=0;unsigned char num[4][4]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};while(1){for(k=0;k<8;k++){P1=0x0F;delay(); /*软件去抖动*/if((P1&0x0F)!=0x0F){switch(P1){case 0x07: i=3; break;case 0x0b: i=2; break;case 0x0d: i=1; break;case 0x0e: i=0; break;default: break;}}P1=0xF0; /*反转行和列上的电平*/if((P1&0xF0)!=0xF0){switch(P1){case 0x70: j=3; break;case 0xb0: j=2; break;case 0xd0: j=1; break;case 0xe0: j=0; break;default: break;}TAB[k]=num[j][i]; /*P1输出对应的按键值*/}}}}void init(void) /*初始化程序*/{TMOD=0x20;TH1=0xf3; /*波特率为2400bps*/TL1=0xf3;PCON=0x00;/*SMOD=0*/TR1=1; /*开T1中断*/SCON=0x50; /*接收允许*/}void send(void) /*发送函数*/{do{SBUF=0xaa; /*发送握手信号0XAA*/while(!TI); /*等待接收*/TI=0; /*传送完复位*/while(!RI); /*等待接收*/RI=0; /*接收完复位*/}while(SBUF!=0xbb); /*甲机收到BBH后就把数码表*/TAB[8] /*中的8个数据发送给乙机,并发送校验和*/do{sum=0;for(i=0;i<=7;i++){SBUF=TAB[i]; /*发送段选码*/ sum+=TAB[i]; /*和校验*/while(!TI);TI=0;}SBUF=sum; /*发送校验和*/while(!TI);TI=0;while(!RI);RI=0;}while(SBUF!=0); //等待接收}main() //主程序{init();scanf();send();}(5)乙机程序#include<reg52.h>#define uchar unsigned charvoid init(void) //初始化程序{TMOD=0x20;TH1=0xf3; //波特率为2400bpsTL1=0xf3;PCON=0x00;TR1=1;SCON=0x50;}void delay(void) /*延时程序*/{uchar j;for(j=0;j<12000;j++);}void receive(void) //接收函数{ uchar i,sum;uchar TABS[8]; //定义接收数组do { while(!RI);RI=0;}while(SBUF!=0xaa); //接收完0XAA则向主机发送0XBBSBUF=0xbb; while(!TI);TI=0;while(1){ sum=0;for(i=0;i<=7;i++){ while(!RI);RI=0;TABS[i]=SBUF; //装人接收的数据sum+=TABS[i];}while(!RI);RI=0;if (SBUF==sum) //和校验{ SBUF=0X00;while(!TI);TI=0;break;}else{ SBUF=0xff;while(!TI);TI=0;}}while(1) //p2口为位选码P2=0xfe;{ for(i=0;i<=7;i++){ P0=TABS[i]; //p0口输出段选码P2=P2<<1|0x01; //位选码左移,并或0X01实现动态显示delay(); } //延时}}void main(void) //接收主函数{ init();receive();}四、数码管显示设计为了显示所需字符,我们必须先查的对应字符的段选码,如图()所示。

相关文档
最新文档