测控课程设计报告 双机通信
- 格式:doc
- 大小:248.00 KB
- 文档页数:11
单片机单片机课程设计-双机串行通信单片机课程设计双机串行通信在当今的电子信息领域,单片机的应用无处不在。
而双机串行通信作为单片机系统中的一个重要环节,为实现设备之间的数据交换和协同工作提供了关键的技术支持。
一、双机串行通信的基本原理双机串行通信是指两个单片机之间通过串行接口进行数据传输的过程。
串行通信相较于并行通信,具有线路简单、成本低、抗干扰能力强等优点。
在串行通信中,数据是一位一位地按顺序传输的。
常见的串行通信协议有 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系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。
成绩:课程设计报告书所属课程名称单片机原理与接口技术题目双机串行通信分院机电学院专业、班级机械设计制造及其自动化B0902学号0612090218学生姓名史强指导教师周春明2012年7月13日目录1课程设计任务书 (1)2总体设计 (2)3硬件系统设计 (3)4程序设计 (6)5程序调试及结果分析 (11)6总结 (13)7参考文献 (14)辽东学院一课程设计任务书课程设计题目:双机串行通信课程设计时间:自2012 年7月2日起至2012 年7月13日。
课程设计要求:1.通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
2.两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,并在接收端显示。
接收完成后,led灯亮。
学生签名:史强2012 年7月13日课程设计评阅意见评阅教师:2012年月日二总体设计2.1 设计目的通过本次课题设计,应用《单片机原理及其接口技术》等所学相关知识及查阅资料,完成简易双机串行通信设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。
通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系统设计有一个比较感性的认识,并具备一定程度的设计能力。
2.2 设计任务两片单片机之间进行串行通信,发送端将0~f循环发送到接收端,完成后在接收端的led 灯亮。
2.3 设计方法本次设计,对于两片89C51,采用RS232进行双机通信。
发送方的数据由串行口TXD段输出。
接受方接收后,灯亮。
为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
软件部分,通过通信协议进行发送接收,主机先送AAH给从机,当从机接收到AAH后,向主机回答BBH。
主机收到BBH后就把数码表TAB[16]中的10个数据送给从机,并发送检验和。
单片机双机串口通信课程设计一、课程设计意义单片机双机串口通信是电子信息类专业中的一门基础课程,包括数据传输原理、串口通信协议等知识点,对于学生的PCB设计、嵌入式系统开发等方向的学习和深入研究都具有非常重要的作用。
通过本课程的设计,学生将能够系统地掌握串口通信技术的原理和实现方法,从而为后续相关课程的学习打下坚实的基础。
二、课程设计步骤1、理论知识讲授首先,需要对串口通信的基本概念、串口的物理接口、RS232、RS485等通信协议及其实现原理进行讲解,学生需要认真记录相关知识点,为后续的实验操作打下基础。
2、实验前准备为了进行单片机双机串口通信实验,需要准备单片机开发板、双机串口通信线、USB转串口模块、连接线等工具。
学生需要根据实验指导书上的引导,仔细按照需求准备好所需要的工具,并理清各项连接关系。
3、实验操作实验是本课程的重头戏,学生需要通过实验来巩固自己所学的相关知识。
在实验过程中,学生需要详细阅读实验指导书,并按照指导书上的步骤完成整个实验过程。
实验完成后,需要仔细分析实验结果,确认实验结果是否正确。
4、实验报告实验完成后,学生需要根据实验结果撰写实验报告,报告需要包括实验过程、实验结果分析、实验总结等内容。
报告需要清晰明了,文本内容清晰、简洁明了,图表简洁、清晰,规范地描写出整个实验过程,总结实验结果,以保证实验教学的质量。
三、课程效果评估通过老师的教学和学生的自主学习,学生能够达到掌握单片机双机串口通信的基本概念和实现方法的目标。
同时,在这个过程中,学生也能够提高实验操作的能力和数据分析的能力,为他们日后的学习和研究打下基础。
单片机双机串口通信课程设计
本课程设计旨在通过单片机双机串口通信的实践,帮助学生掌握串口通信的原理和实现方法,提高学生的嵌入式系统设计能力。
具体内容包括:
1. 串口通信基础知识:串口通信的原理、常用通信协议、串口通信的特点等。
2. 单片机串口通信实践:使用Keil C编程语言,结合串口调试助手等工具,实现单片机之间的串口通信。
包括单向通信、双向通信、数据校验等。
3. 单片机双机串口通信实践:通过两个单片机之间的串口通信,实现数据的互传和双向控制。
包括数据的发送和接收、控制指令的编写等。
4. 应用实践:将所学知识应用到实际项目中,如智能家居、工业控制等领域。
学生需要设计和实现一个具有实际应用价值的小型嵌入式系统。
通过本课程设计,学生将学习到如何使用单片机实现串口通信,掌握串口通信的原理和实现方法,提高嵌入式系统设计能力。
同时,通过实际应用实践,培养学生的综合素质和实践能力。
- 1 -。
双机通信设计实验双机通信是指两台计算机之间进行数据传输和信息交换的过程。
在现实生活和工业应用中,双机通信十分常见,例如,在办公室使用局域网进行文件共享,在工业自动化系统中使用双机通信进行数据监控和控制。
为了更好地理解双机通信设计和实验,以下将介绍双机通信的基本原理、实验目的和实验步骤。
双机通信的基本原理是通过网络连接两台计算机。
网络可以是局域网(Local Area Network,LAN)或广域网(Wide Area Network,WAN)。
局域网是指在较小范围内实现设备互联的网络,例如一栋建筑物、一片园区或一个城市。
广域网则跨越较大范围,连接不同地域的计算机和网络设备。
双机通信的目的是实现数据传输和信息交换。
在实验中,我们可以通过编写软件程序来模拟计算机之间的通信。
实验可以分为三个阶段,包括网络连接、数据传输和信息交换。
第一阶段是网络连接。
我们需要搭建一个简单的局域网环境,可以使用两台计算机和一台交换机。
将两台计算机连接到同一个交换机上,通过交换机实现计算机之间的通信。
在实验中,我们可以使用Ethernet协议来实现局域网连接。
第二阶段是数据传输。
在此阶段,我们需要编写程序来模拟数据的发送和接收。
发送方将数据封装成网络数据帧,并通过网络发送给接收方。
接收方则解析数据帧,提取出数据并进行处理。
在实验中,我们可以使用Socket编程来实现数据的传输。
第三阶段是信息交换。
一旦数据传输成功,我们可以在计算机之间进行信息交换。
信息交换可以包括发送方和接收方之间的会话协商、错误确认和数据重传等。
在实验中,我们可以使用TCP协议来实现可靠的信息交换。
通过以上的实验,我们可以更好地理解双机通信的原理和过程。
实验不仅可以帮助我们理论上掌握双机通信的基本知识,还可以锻炼我们的实验操作能力和问题解决能力。
此外,通过实验,我们还可以对双机通信的性能和应用进行评估和优化,以满足实际需求和应用场景。
在进行实验时,我们应该遵循实验的安全规范,并注意电脑和网络设备的保养和维护。
课程设计题目串口通信二级学院专业班级学生姓名学号指导教师摘要本课程设计利用两片AT89C51实现双机串口通信;主机发送并显示 10 以下的随机数,从机显示该数的阶乘值,通过开关改变主机输出的数值。
设计电路并编写一个串行口方式1收发程序,实现两片AT89C51之间的通信,甲机将数据发送到乙机并显示出来,同样,乙机也可将数据发送到甲机显示出来。
目录一、概述 (2)1、串口通信的意义 (2)2、本人所做的工作 (2)3、系统主要功能 (2)二、硬件电路设计及描述 (2)1、方案选择及设计思想 (2)2、原理框图,各功能单元之间的逻辑关系 (3)3、工作原理 (3)4、原理电路图,各元器件之间的实际连接关系 (7)5、元器件清单列表 (8)三、软件设计流程及描述 (8)1、系统模块层次结构图 (8)2、程序流程图 (9)3、源程序代码 (11)四、测试 (17)五、总结 (18)六、参考文献 (18)一、概述1、串口通信的意义计算机与外界的信息交换称为通信。
通信的基本方式可分为并行通信和串行通信两种。
所谓并行通信是指数据的各位同时在多根数据线上发送或接收。
串行通信是数据的各位在同一根数据线上依次逐位发送或接收。
串口通信的概念非常简单,串口按位(bit )发送和接收字节。
尽管比按字节(byte )的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
2、本人所做的工作在这次的课程设计中我主要负责从机接收数据及编写程序使LED 正确显示出主机发送数据的阶乘数值,。
3、系统主要功能本设计系统是实现两片AT89C51之间的通信,甲机将数据发送到乙机并显示出来,甲机随机发送0~9的数字,而乙机则显示该数字的阶乘值。
二、硬件电路设计及描述1、方案选择及设计思想一开始设计了两种结构,如下:图1图2Pc 机 电平转换单片机显示阶乘值单片机(主机) 单片机(从机)显示发的数 显示阶乘值2、原理框图,各功能单元之间的逻辑关系3、工作原理在串行通信中,数据是在两个站之间传送的。
单片机双机串行实验报告实验目的:通过单片机实现双机串行通信功能,掌握串行通信的原理、方法和程序设计技巧。
实验原理:双机串行通信是指通过串行口将两台单片机连接起来,实现数据的传输和互动。
常用的串行通信方式有同步串行通信和异步串行通信。
异步串行通信是指通过发送和接收数据时的起始位、停止位和校验位进行数据的传输。
而同步串行通信是指通过外部时钟信号进行数据的同步传输。
实验器材:1.两台单片机开发板(MCU7516)2.两个串口线3.两台计算机实验步骤:1.将两台单片机开发板连接起来,通过串口线连接它们的串行口。
2.在两台计算机上分别打开串口调试助手软件,将波特率设置为相同的数值(例如9600)。
3.在编程软件中,编写两个程序分别用于发送数据和接收数据。
4.在发送数据的程序中,首先要设置串口的波特率、数据位、停止位和校验位,并将数据存储在缓冲区中。
然后利用串口发送数据的指令将数据发送出去。
5.在接收数据的程序中,同样要设置串口的参数。
然后使用串口接收数据的指令将接收到的数据存储在缓冲区中,并将其打印出来。
实验结果与分析:经过实验,我们成功地实现了单片机之间的双机串行通信。
发送数据的单片机将数据发送出去后,接收数据的单片机能够正确地接收到数据,并将其打印出来。
实验中需要注意的是,串口的波特率、数据位、停止位和校验位必须设置为相同的数值。
否则,发送数据的单片机和接收数据的单片机无法正常进行通信。
同时,在实验之前,需要了解单片机开发板支持的串口通信相关的指令和函数。
实验总结:通过本次实验,我们深入了解了单片机之间的双机串行通信原理和方法。
掌握了串口的设置和使用方法,以及相关的指令和函数。
在实验中,我们学会了如何通过串行口实现数据的传输和互动,为今后的单片机应用和开发打下了基础。
同时,我们还发现,双机串行通信在实际应用中有着广泛的用途。
例如,可以通过串行通信实现两台计算机之间的数据传输,或者实现单片机与计算机之间的数据收发。
.单片机实验报告(自动化15级)实验名称:串行通讯实验一、实验目的1.掌握单片机串行口工作方式;2.掌握双机通讯的接口电路设计及程序设计。
二、实验设备1. PC机;2.单片机最小系统教学实验模块;3. 数码管显示模块三、实验内容1.双机通信由两套单片机试验装置(两个实验小组)共同完成该实验。
我们U1为甲机,U2为乙机。
甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。
电路如图1所示。
要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。
图1 双机通信原理示意图附加要求:乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。
2.单片机与PC机通信单片机向PC机发送数据。
单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592M。
四、实验原理4.1 串行通讯的方式在串行通讯中,有两种基本的通讯方式:异步通讯,同步通讯。
异步串行通讯规定了字符数据的传送格式,既每个数据以相同的帧格式发送。
每个帧信息由起始位、数据位、奇偶校验位和停止位组成。
本实验主要学习异步通讯的实现方法。
在异步通讯中,每一个字符要用起始位和停止位作为字符开始和结束的标志,以至占用了时间。
所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯。
同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送和接受同步。
而是通过同步字符在每个数据块传送开始时使收/发双方同步。
按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。
(1)单工方式在单工方式下,通讯线的一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定的方向传送。
(2)半双工方式在半双工方式下,系统中的每个通讯设备都由一个发送器和一个接收器组成,通过收发开关接到通讯线路上,如图33-1所示。
双机互联实验报告总结双机互联实验报告总结一、实验介绍本次实验是基于网络通信的双机互联实验,主要内容为设计一个能够在两台计算机之间传输数据的程序,并测试程序的性能和可靠性。
本次实验采用的是C++语言进行编程,运用WinSock库实现网络通信功能。
二、实验原理WinSock是Windows系统提供的一组网络编程接口,通过这组接口可以实现网络通信,包括TCP/IP协议,UDP协议等。
本次实验采用TCP协议,因为TCP协议是一种面向连接的协议,能够确保数据传输的可靠性和完整性,对于本次实验而言显得尤为重要。
三、实验步骤1. 设计服务器端程序服务器端程序主要有以下功能:- 创建socket- 绑定socket到指定端口- 发送数据给客户端- 关闭连接具体实现过程如下:```cpp// 创建socketSOCKET sListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sListen == INVALID_SOCKET) {cout << "创建socket失败:" << WSAGetLastError() << endl;WSACleanup();return 0;// 将socket绑定到指定端口struct sockaddr_in sin;sin.sin_family = AF_INET;sin.sin_port = htons(PORT);sin.sin_addr.S_un.S_addr = INADDR_ANY;if (bind(sListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR) { cout << "绑定socket失败:" << WSAGetLastError() << endl;closesocket(sListen);WSACleanup();return 0;}if (listen(sListen, 5) == SOCKET_ERROR) {cout << "监听socket失败:" << WSAGetLastError() << endl;closesocket(sListen);WSACleanup();return 0;}sockaddr_in remoteAddr;int nAddrLen = sizeof(remoteAddr);SOCKET sClient = accept(sListen, (SOCKADDR *)&remoteAddr, &nAddrLen); if (sClient == INVALID_SOCKET) {closesocket(sListen);WSACleanup();return 0;// 发送数据char szData[] = "Hello, world!";if (send(sClient, szData, strlen(szData), 0) == SOCKET_ERROR) { cout << "发送数据失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}// 关闭连接closesocket(sClient);closesocket(sListen);WSACleanup();return 0;```2. 设计客户端程序客户端程序主要有以下功能:- 创建socket- 连接服务器- 接收从服务器传回的数据- 关闭连接具体实现过程如下:```cpp// 创建socketSOCKET sClient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if (sClient == INVALID_SOCKET) {cout << "创建socket失败:" << WSAGetLastError() << endl;WSACleanup();return 0;}// 设置服务器地址和端口号sockaddr_in remoteAddr;remoteAddr.sin_family = AF_INET;remoteAddr.sin_port = htons(PORT);remoteAddr.sin_addr.S_un.S_addr = inet_addr(SERVER_ADDR);// 连接服务器if (connect(sClient, (SOCKADDR *)&remoteAddr, sizeof(remoteAddr)) == SOCKET_ERROR) {cout << "连接服务器失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}// 接收数据char szData[256];ZeroMemory(szData, sizeof(szData));int nRet = recv(sClient, szData, sizeof(szData), 0);if (nRet == SOCKET_ERROR) {cout << "接收数据失败:" << WSAGetLastError() << endl;closesocket(sClient);WSACleanup();return 0;}cout << "接收到的数据为:" << szData << endl;// 关闭连接closesocket(sClient);WSACleanup();return 0;```3. 编译和运行程序将服务器程序和客户端程序分别编译,并在服务器上先运行服务器程序,再在客户端上运行客户端程序。
单片机课程设计报告书 题目:双机通信
院系名称 自动化学院 学生姓名 专业名称 测控技术与仪器 班 级 测控0801 时间 2011年5 月 23日至 6 月 3 日 双机通信 一、设计目的 利用所学单片机知识解决实际问题。 二、设计要求 1.用两片单片机,实现双机通信; 2.用与A机连接的按键控制与B机连接的LED,每按一次键,LED以1秒的频率闪烁5次; 3.同理,用与B机连接的按键控制与A机连接的LED。 三、设计器材 器件名称 个数 STC8952RC 2 晶振 2 电容(30PF) 6 LED 2 电阻(1K) 4 开关 2 数码管 2 表3-1 实验所需器材清单表 四、设计方案及分析(包含设计电路图) 4.1基本功能采集 实现参数,通信,基本显示形式 4.2扩展功能 在实现基本部分基础上,扩展8路开关信号输入和8位开关量输出带指示灯显示,输出量由后端计算机给定。前端参数采集计算机参数显示为数码管显示。 4.3系统硬件结构图
STC89C52RCSTC89C52RC按键数码管显示LED显示LED显示按键
数码管显示
串口通信
图4-1硬件原理图 4.4硬件仿真图 图4-2硬件仿真图
4.5系统软件流程图及程序代码 下图为本次实验软件流程图 串口初始化串口是否收到数据
进入串口中断子程序
初始化时钟
定时器中断产生
LED闪烁数码管显示
初始化串口关定时器
是是
否
否
程序代码如下: #include #define uint unsigned int #define uchar unsigned char sbit led = P1^0; //位定义 sbit key = P1^1; //位定义 uint a=0,flag1=0,flag2=0,flag3=0; uchar code table[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳极编码 /***********延时函数 ***************/ /**************有形参,无返回值*****/
void delay(int z) //延时约一毫秒 { uint x,y; for(x=z;x>0;x--) //循环相减延时 for(y=110;y>0;y--); }
/*************初始化函时钟数 ********/ /********* 无形参,无返回值*********/
void Init_time() { led=1; //LED灭 TMOD=0X01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; //装初值,20MS中断一次 EA=1; //开总中断 ET0=1; TR0=1; //中断设置 } /************初始化串口函数 ********/ /************无形参,无返回值********/ //说明 /* 串口工作在方式1,波特率9600bit/s,允许接收 *** 定时器T1,工作在方式1 ******/ void InitUART(void) { led=1; TMOD = 0x20; //方式1定时器1 SCON = 0x50; //串口工作方式设置 TH1 = 0xE6; TL1 = TH1; //装初值 EA=1; //开总中断 ES = 1; //串口中断允许 TR1=1; } /***************串口中断函数********* *************无形参,无返回值*********/ void UARTInterrupt(void) interrupt 4 { if(RI) //判断发送结束标志位是否置位 { RI = 0; //清结束标志 flag3=1; //标志位3置位 } } /***********字节发送函数************** ****************有形参,无返回值*******/ void SendByte(uchar c) //发送一个字节 { SBUF=c ; //将要发送的字节给发送寄存器 while(!TI); //判断是否发送完毕 TI = 0; //发送开始标志清零 } /**********按键检测函数 *************/ /**********无形参,有返回值**********/ uchar keyscan() //有返回值 { if(key==0) //判断是否有键按下 { delay(10); //延时10MS if(key==0) //是否真正按下 flag2=1; //标志2位置位 } while(!key); //按键是否释放 return flag2; //返回标志位 } /************ 定时器中断函数 ******/ /************ 无形参,无返回值******/ void time() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; //装初值 a++; //变量a自增 if(a==20) //定时器是否增加到一秒 { a=0; //变量清零 flag1=1; //标志位置位 } } /**************主函数 ************/ /***************无形参,无返回值**/ void main() { int i=0; //定义变量i InitUART(); //初始化串口 while(1) //主循环 { if(keyscan()) //是否有键按下 { flag2=0; //标志位2清零 InitUART(); //初始化串口 SendByte(1); //发送字节数 } if(flag3) //判断串口书否收到数 { ES=0; //禁止串口中断 flag3=0; //请标志位3 Init_time(); //初始化时钟 ES=1; //串口中断置位
}
if(flag1) //定时器是否到一秒 { flag1=0; //标志位清零 led=~led; //led取反 P0=table[i]; //数码管显示当前的计数值 i++; //数值自增 if(i==10) //i值是否为10 { i=0; //i清零 P0=0XFF; //灭数码管 TR0=0; //禁止定时器中断 InitUART(); //初始化串口 } } } //主循环结束
} 五、问题分析与解决方法 课程设计初期主要对课程设计要完成的功能,步骤,最终要达到的要求不是十分清晰,经过小组成员的再三讨论及对老师的请教之后逐渐明确了课程设计的详细内容,从而制定了清晰的设计步骤,为最终顺利完成设计,达到验收标准做好了准备。 在实验过程中遇到了以下几个问题: 1.在PROTUSE中仿真没有错误的电路在实际做完之后不工作,再三检查,发现电路中有虚焊现象。找到原因后及时改正,单片机终于正常工作。 2.在实验的基本要求之外,我们自己加上了数码管显示时间。开始用共阴极的单段数码管,电路做完后还是不亮。在查找资料后,以为要加上三极管放大电路,可是加上之后还是不行。无奈之下,换成了共阳极的数码管结果很快就好了。 六、设计结果 成功完成实验要求,实现了设计要求,并额外发挥,实现了辅助数码管显示功能。 七、设计体会与收获 本次课程设计主要是通过对简单应用系统的设计,来达到充分理解并综合运用所学到的知识的目的。 张献:本次课程设计中最大的感受就是我不会的太多了,需要学习的知识太多了。虽然本次课程设计只有两周时间,可在这两周里,我们把上一个学期所学到的知识都实践了一遍,在这一过程中也暴露了很多问题。我们欠缺解决问题的能力和解决问题的效率,发现了问题往往不会分析问题出现的原因,发现问题是好事,但一定要提高解决问题的效率 付云龙: 在本次课程设计中,我主要负责硬件电路的设计。通过亲身对硬件电路的设计我了解到在硬件电路的设计需要细心,并且熟悉掌握好模电知识及平时的积累也是十分的重要的。还有就是焊接电路板的时候要有全局布图的构成和焊接时的布线。 李力力:本次试验我主要负责软件的编写,虽然软件在流程方面的很简单。但是要想实际写出来却是费了两天的功夫,在PROTUES上仿真的时候也发现了许多在编写过程中不能找到的问题,几经修改之后终于可以正常工作。在硬件做好之后又发现有许多关键的定义和硬件电路不相符合又改了几次,老天保佑终于可以完事了。我觉得写软件不难而真正难的是软件的修改和维护。软件的编写是一件很享受的过程,尤其是最终完成的一刻确实有一种成就感。觉得自己真正学到了知识并且学以致用。
附录: 参考书目: 1.《单片机原理及接口技术》,李全利,迟荣强---北京:高等教育出版社,2004.1 2.《单片机技能与实训》,宋国富---北京:电子工业出版社,2010.2 3.《新概念51单片机C语言教程—入门、提高、开发、拓展全攻略》,郭天祥 4.《51单片机及其C语言程序开发实例》,戴仙金---北京:清华大学