课程设计单片机与PC机串行通讯设计
- 格式:doc
- 大小:214.50 KB
- 文档页数:18
第一章串口通讯的系统组成与原理1.1 系统组成及通讯原理1.1.1 系统构成一、MSP430F149功能简介:本设计选用的主要芯片为MSP430F149,该单片机属于德州仪器公司MSP430F14X/16X FLASH 系列。
该系列是一组工业级超低功耗的微控制器,运行环境温度为 -40~+85 摄氏度工作电压范围 1.8~3.6V, MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。
由于具有16位RISC(精简指令集)结构,16位寄存器和常数寄存器,MSP430 达到了最大的代码效率。
数字控制的振荡器提供快速从所有低功耗模式苏醒到活动模式的能力时间少于6ms。
MSP430F149有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns。
另外它带有两个16 位定时器(带看门狗功能)、速度极快的8 通道12 位A/D 转换器(ADC)(带内部参考电压、采样保持和自动扫描功能)、一个内部比较器和两个通用同步/异步发射接收器、48个I/O口(均可独立控制)的微处理器结构。
硬件乘法器提高了单片机的性能并使单片机在编码和硬件上可兼容[3]。
这些特点保证了可编制出高效率的源程序。
二、系统构成1、系统框图系统构成如图1-1所示,由上位机(即工业控制计算机)、通讯接口和下位机3部分组成。
上位机选用的是工控机,智能终端由单片机MSP430F149和外围传感器放大电路等构成(本设计部涉及该部分的设计)。
单片机与PC 机之间通信方式为串行异步方式(UART),下位机采用中断方式进行与上位机的数据交换,上位机采用按时查询方式对各串口进行读写操作。
单片机MSP430要想与PC 串口连接或者其它带有串口的终端设备连接,接口电路部分必须要进行EIA-RS-232-C 与MSP430 电平和逻辑关系的转换[4]。
本设计将采用MAX3221芯片,完成3V~5V 电平与串口电平的双向转换。
课程设计单片机与PC机RS232串行通讯设计班级学号学生姓名指导教师目录0. 前言 (2)1. 总体方案设计 (2)2 硬件电路的工作原理 (3)2.1 AT89C51外围电路模块 (3)2.1.1 复位电路 (3)2.1.2 时钟电路 (4)2.1.3 键盘电路 (4)2.2 显示部分 (5)2.2.1 LED显示部分 (5)2.2.2 MAX232电平转换 (5)2.2.3 PC机采用DB-25型连接器 (6)3 软件设计 (7)4 调试分析 (9)5. 结论及进一步设想 (11)参考文献 (11)课设体会 (12)附录I 元件清单 (13)附录І І 总电路图 (14)附录ІІІ 总程序 (15)单片机与PC机RS232串行通讯设计摘要:设计单片机与PC机的串行通讯系统,PC机是主机,PC机发送的数据单片机接收,单片机输入的数据通过LED显示在发送给PC机,其中单片机选择RS232通讯标准接口。
采用了串行口通讯技术作为核心技术,主要解决方案是通过自定义通讯协议实现多机通讯,优点是结构简单,软件简单,硬件资源少,价格便宜。
关键词:串行通讯;单片机;PC机;RS-2320. 前言自1971年微型计算机问世以来,由于实际应用的需要,微型计算机向着两个方向发展:一个是向着高速度、大容量、高性能的高档微机方向发展;而另一个则是向着稳定可靠、体积小、功耗低、价格低廉的单片机方向发展。
而两者之间的通讯设备也变得愈来愈重要,串行总线技术就是其中尤为重要的技术之一。
RS-232C是在异步串行通信中应用最广的总线标准,它适用于短距离或带调制解调器的通信场合。
RS-232C标准是美国EIA与BELL等公司一起开发的1969年公布的数据通信标准。
它适合于数据传输速率在0~20000b/s范围内的通信。
该标准定义了数据终端设备DTE(DataTerminal Equipment)和数据通信设备DCE( Data Communication Equipment)之间的接口信号特性。
PC机与单片机之间的串行通讯、数据的发送和接收【摘要】本文以MCS-51单片机为例,详细介绍了PC机与单片机之间的串行通讯、数据的发送和接收。
在Windows98下利用VB的串行通讯控件可实现PC机与单片机之间的通讯。
其数据的发送和接收采用红外线通信方式,其优点是:省去了有线通信信号线的直接连接,使用简单,移动方便,微机与单片机无直接连接,属完全隔离状态,两者间不会因为电平的不同而造成数据传输的失误,抗干扰能力强。
本设计主要应用AT89C51作为控制核心,并与LED数码显示管、双向可控硅、红外发射与接收相结合的系统,充分发挥了单片机的性能。
其优点硬件电路简单,软件功能完善,控制系统可靠,性价比较高等特点,具有一定的使用和参考价值。
【关键字】MSC-51(单片机),红外,RS-232,电平转换器,串行通信半双工【Abstract】This text take one-chip computer MCS-51 for example , introduce a serial communication, data’s sending and receiving . Under the Windows98 we make use of a communication control of VB to achieve the communication of the machine of PC and one-chip computer. Its data’s sending and receiving adopts the method of the infrared ray communication, its advantage is that it exclude the direct link of signal line of with-wired communication ,and usage are simple, and move is convenience etc. The tiny machine have no direct conjunction with single a machine, belonging to the complete insulation appearance, can't result in the error that data deliver both because give or get an electric shock even and different, the antijam ability is strong.This design is a system that it applies AT89C51 as control core and combine the LED figures manifestation tube, MAX232CPE level changer, infrared’s sending and receiving. The system completely exerts the function of one-chip computer. Its advantage is that the hardware circuit is simple; the software function is perfect; the control system is dependable; the rate of price and function is high etc. So the system has certainly consult value.【Keyword】MSC-51(One-chip computer), infrared, RS-232, Level changer, serial communication,half duplex目录前言3第一章系统分析4 1.1 系统功能的概述 5 1.2 系统要求及主要内容 5 1.3 系统技术指标 5第二章系统总体设计6 2.1硬件设计思路 6 2.2软件设计思路 7第三章硬件电路设计7 3.1 单片机模块设计 8 3.2 红外通信(发射与接收)电路的设计 14 3.3 PC机模块的设计 17第四章串行口通信技术20 4.1 单片机串行口通信 21 4.2 PC机串口通信 24第五章软件设计25 5.1 单片机通信程序设计 25 5.2 PC机通信程序设计 29第六章系统调试30 6.1 硬件调试 30 6.2 软件调试 31 6.3 综合调试 33 6.4 故障分析及解决方案 33 6.5 结论与经验 34结束语35附录36 附录1 电路原理图 36 附录2程序流程图 38 附录3程序清单 41 附录4元器件清单 44 附录5 英文资料 45 附录6 中文翻译 52参考文献56前言单片机的英文名称是Micro Controller unit,缩写为MCU,又称为微控制器,它是一种面向控制的大规模集成电路芯片。
目录1 选题 (1)1.1选题背景 (1)1.2设计任务 (1)2 整体通信设计 (2)2.1 总体方框图 (2)2.2 通信过程分析 (3)2.3 通信方式的选择 (3)3 硬件电路的设计 (5)3.1 AT89C52单片机引脚及其说明 (5)3.2 MAX232芯片引脚及其说明 (6)3.3 DB9及其说明 (7)3.4 数码显示、驱动电路及说明 (9)4 PC端软件设计 (10)4.1 用户界面设计 (10)4.2 程序设计 (10)5 原理总图 (11)6 元器件清单 (12)7 调试 (13)7.1 调试过程 (13)7.2 调试结果 (13)8 小结和设计体会 (15)9 单片机程序 (16)参考文献 (16)Ⅰ1 选题1.1选题背景在各种单片机应用系统的设计中,如智能仪器仪表、各类手持设备、GPS接收器等,常常遇到计算机与外界的信息交换,即通讯。
通信的基本方式可分为并行通信与串行通信两种。
目前,在许多单片机应用系统中,上、下位机分工明确,作为下位机核心器件的单片机往往只负责数据的采集和通信,而上位机通常以基于图形界面的Windows系统为操作平台。
现阶段这种应用的核心便是数据通信,它包括单片机和上位机之间、客户端和服务器之间以及客户端和客户端之间的通信,而在单片机和上位机之间的数据通信则是整个系统的基础。
单片机和PC的通信是通过单片机的串口和PC机之间的硬件连接实现。
鉴于PC 机具有强大的监控和管理功能,单片机则具有快速以及容易控制的特点,在数据量不大、传输要求不高的情况下,一般都采用给PC机配置的RS-232标准串行接口COM1、COM2等相连接来实现应用系统与PC机之间的数据交换。
现今我国工业迅速发展的情况下,对工业中的计算机控制提出了较高的要求。
比如在常见的现场数据采集中,对各个采集点需要采集不同的数据,比如温度、湿度、压力、照度,这就需要单片机对计算机发出的不同的指令做出不同的反应,并且返回相应的采集到的数据。
课程设计IV设计说明书8251A可编程通讯接口与PC机通讯学生姓名周勇学号1018014086班级计本103班成绩指导教师冯永政数学与计算机科学学院2013年9月10日课程设计任务书2013—2014学年第一学期专业:计算机科学与技术学号: 1018014086 姓名:周勇课程设计名称:课程设计IV设计题目:8251A可编程通讯接口与PC机通讯完成期限:自2013 年9 月2日至2013年9 月14 日共 2 周设计依据要求及主要内容一、目的任务:依据实验器材提供的功能,利用可编程串行接口8251芯片,实现与PC机通讯。
二、设计内容:1. 复习相关课程内容:微机原理及应用课程相关内容;汇编语言程序设计的相关内容;熟悉模拟电路、数字电路的相关知识;2. 熟悉实验相关器材的主要功能。
3. 在上述基础上,根据课程设计的基本要求,完成以下各项任务(反映在设计说明书中):(1)题目要求涉及的硬件电路图及摘要说明。
(2)题目的工作原理及相应描述。
(3)程序流程框图。
(4)程序文本输入及实验完成。
三、设计要求:1.软件程序文档;2.硬件电路图(用专用软件);3.完成实验;4.完成设计说明书。
课程设计评阅设计了一个8251可编程通讯接口与PC机通信,8251是一种可编程的通用同步/异步接收发送器,被广泛应用于Intel80X86为CPU的微型计算机中。
本设计采用8253芯片的分频作为8251的收发时钟频率,实现8251可编程通信接口与PC机的通讯。
关键词:异步;串行通信;82511课题描述 (1)2课题分析 (2)2.1 8251基本功能 (2)2.2 8251的内部结构 (2)2.3 8251编程字 (2)3.设计过程 (4)3.1 电路图设计 (4)3.2 硬件设计 (4)3.3 软件设计 (4)4验证测试 (12)5总结 (13)参考文献 (14)利用8253芯片的分频作为8251的收发时钟频率,8251异步串行通信,实现8251可编程通信接口与PC机的通讯。
目录1 引言 (1)1.1 单片机与PC机串行通信研究背景 (1)1.2 单片机与PC机串行通信研究目的和意义 (1)2 串口通信基础 (1)2.1 两种常用接口方式 (2)2.1.1 并行接口 (2)2.1.2 串行接口 (2)2.2 RS-232串行接口标准 (2)3 系统总体设计 (3)3.1 系统指标设计 (3)3.1.1 通信协议设定 (3)3.1.2 系统实现描述 (3)3.2 总体方案设计 (3)4 硬件接口电路设计 (4)4.1 主要芯片 (4)4.1.1 AT89C51 (4)4.1.2 单电源转换芯片MAX232 (6)4.1.3 74LS245LED驱动芯片 (7)4.2 LED显示器 (7)4.2.1 LED显示器工作原理 (8)4.2.2 LED显示器接口 (8)4.3 系统设计 (8)5 PC机程序设计 (9)5.1 MSComm控件 (9)5.1.1 MSComm控件处理通信的方式 (9)5.1.2 MSComm控件的主要属性 (10)5.2 应用界面设计流程 (10)5.2.1 创建项目文件 (10)5.2.2 加入串口通信控件 (11)5.2.3 设计窗体界面 (12)5.3 代码实现 (12)6 仿真调试及结果分析 (15)7 结语 (17)参考文献 (18)致谢 (19)2.1 两种常用接口方式2.1.1 并行接口并行接口是指8位数据同时通过并行线进行传送,这样数据的传输率能得到极大的提高。
但在并行传输中,干扰会随线路长度的增加而增加,产生传输错误。
因此,并行传输主要应用在近距离数据传输中,如连接打印机端口。
并行接口主要使用36针接头和25针D形接头,目前以25针D形接头为主[4]。
2.1.2 串行接口串行口也是计算机的一种标准接口,PC机一般至少有两个串行口Com1和Com2。
串行口不同于并行口,它的数据和控制信息是一位接一位在一根传输线上传送的,这样串行口较并行口能够进行远距离传送信息。
西南交通大学本科毕业设计(论文)单片机与PC机串行通信系统设计年级: 200X级学号: 200XXXX姓名: XXX专业: 机电一体化指导老师: XXX200X年6月院系机械工程系专业机电一体化年级200X 姓名XXX题目单片机与PC机串行通信系统设计指导教师评语指导教师(签章)评阅人评语评阅人(签章)成绩答辩委员会主任(签章)年月日毕业设计(论文)任务书班级机电一体化二班学生姓名XXX 学号200XXXX发题日期:200X年 4 月9日完成日期: 6 月20 日题目单片机与PC机串行通信系统设计1、本论文的目的、意义单片机与PC机的数据通信是非常重要、实用的计算机应用系统,广泛应用于数据通信,数据采集,计算机控制系统中。
该题目使学生进一步巩固所学的单片机系统硬件知识,汇编程序设计方法,计算机通信原理,计算机可视化程序设计等,综合性非常强,学生得到很大的锻炼。
2、学生应完成的任务(1)收集资料;熟悉单片机MCS-51的工作原理和程序设计,尤其是串行接口部分;PC机与单片机的通信原理,一种可视化计算机语言;外出实习。
(2)详细掌握单片机与PC机之间串行通信的硬件连接;软件程序设计方法;英文翻译。
(3)单片机部分和PC机部分的串行数据收发程序设计;利用单片机实验板对程序进行调试。
(4)完成具有规定格式的设计说明书(不少于15000字)一份。
提交设计制作的硬件电路,程序。
3、论文各部分内容及时间分配:(共11.5 周)第一部分搜集资料,学习原理方法,调研(2 周)第二部分硬件电路设计、系统功能程序设计(3 周)第三部分软件程序和硬件电路图的绘制,程序调试(3 周)第四部分设计说明书、电路图的书写整理等工作(2 周)第五部分(0.5周)评阅及答辩(1周)备注指导教师:年月日审批人:年月日摘要随着计算机技术特别是单片机技术的发展,单片机的应用领域越来越广泛,单片机在工业控制、数据采集以及仪器仪表自动化等许多领域都起着十分重要的作用。
信息科学与技术学院《单片机原理》课程设计报告PC机与单片机通信目录第一章设计任务及要求 (3)1.1 设计任务 (3)1.2 设计要求 (3)第二章设计设计思路与原理 (3)2.1设计思路 (3)2.2设计原理 (4)第三章系统功能模块 (5)3.1 总原理图 (5)3.2温度测量电路 (5)3.3通信模块 (8)3.4发光二极管电路 (10)3.5复位电路及时钟电路 (11)第四章程序设计 (12)4.2 软硬件功能............................................................................错误!未定义书签。
第五章参考结论与体会 .. (13)第六章参考文献 (15)附录 (15)一、设计任务及要求1.1 设计任务PC机与单片机通信1.2 设计要求1、通过DS18B20采集当前温度2、将当前温度发送至PC机,在PC机上设计接收温度界面,(并绘制接收温度曲线);3、根据温度值向单片机传送不同字符,并点亮相应的二极管。
若温度值在20~26,传送字符A,点亮绿灯;温度值在27~30,传送B,点亮黄灯;温度值在31~40,传送C,点亮蓝灯。
二、设计思路与原理2.1 设计思路在测控系统中,经常采用单片机在操作现场进行数据采集,但是单片机数据储存和数据处理能力较低,当需要处理较复杂数据或需要对多个采集数据进行综合处理以及需要进行集散控制时,单片机的算术运算和逻辑运算能力显的不足,这时往往需要借助计算机系统。
将单片机采集的数据通过串行口传给PC机,由PC机高级语言或数据库语言进行处理,或者实现PC机对远程单片机进行控制。
所以一般情况下单片机通过串行口与PC机的串行口相连,把采集到的数据传送到PC机上。
总体思路:首先利用DS18b20采集温度数据,然后使用单片机串口将温度数据发送至PC机。
再判断温度值的范围控制发光二级管。
2.2 设计原理目前RS-232是PC与通信工业中应用最广泛的一种串行接口,其中EIA代表美国电子工业协会,RS代表推荐标准,232是标识号。
单片机与PC机之间的串行通信设计【课程设计报告】本报告旨在介绍单片机与PC机之间的串行通信设计。
我们将阐述课程设计报告的主题和目的,并说明单片机与PC机之间串行通信的重要性和应用领域。
串行通信是一种在单片机和PC机之间进行数据传输的常用方法。
在许多电子系统中,单片机扮演着控制和数据处理的重要角色,而PC机作为用户与单片机之间的接口和信息处理中心。
为了实现单片机与PC机之间的通信,串行通信技术成为一种高效、可靠的选择。
串行通信的重要性主要体现在以下几个方面:数据传输速度:串行通信可以提供较高的数据传输速度,使单片机和PC机在快速处理和传输大量数据时更加高效。
数据传输距离:串行通信可以允许单片机和PC机之间的数据传输距离较远,适用于需要远程控制和监测的应用场景。
电路连接简单:串行通信只需要少量的电气接口和信号线,使得硬件连接更加简单,降低了系统的成本和复杂度。
应用广泛:串行通信被广泛应用于各种领域,如工业自动化、物联网、通信设备等。
掌握串行通信设计技能对于电子工程师具有重要意义。
通过本课程设计报告,我们将详细介绍单片机与PC机之间的串行通信设计原理、方法和相关技术要点。
我们将讨论不同的通信协议和接口标准,并给出具体的设计实例和案例分析。
我们相信通过对串行通信设计的深入研究和实践,我们可以提高对单片机与PC机之间通信的理解和应用能力。
让我们开始我们的单片机与PC机之间的串行通信设计之旅吧!在本报告中,我们将简要介绍单片机和PC机的基本概念,解释串行通信的原理与方法。
单片机的基本概念单片机是一种集成电路,也称为微控制器,具有处理和控制电子设备的能力。
它通常包括中央处理器、存储器、输入输出设备和各种接口。
单片机广泛应用于各种电子设备中,如家电、汽车、通讯设备等。
PC机的基本概念PC(个人电脑)机指的是个人使用的计算机系统,通常包括中央处理器、主板、内存、硬盘、显示器、键盘、鼠标等设备。
PC机是一种通用计算机系统,可运行各种软件应用。
xxxxxx大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:单片机与PC机串行通讯设计院(系):专业:班级:学号:姓名:指导教师:完成日期:目录第1章总体设计方案 (1)1.1课程设计的内容和要求 (1)1.2课程设计原理 (1)1.3课程设计思路 (2)1.4实验环境 (2)第2章详细设计方案 (3)2.1实现方法 (3)2.2模块设计 (3)2.2.1主函数流程图 (3)2.2.2功能1模块 (4)2.3程序连线图 (7)第3章调试及结果分析 (8)3.1调试步骤及方法 (8)3.2实验结果及分析 (8)参考文献 (9)附录A(源程序) (10)附录B(原理图) (14)附录C(元器件清单) (15)第1章总体设计方案1.1 课程设计的内容和要求(1)、课程设计内容:利用南京伟福公司的LAB6000通用微控制器仿真实验系统开发单片机与PC 机串行通讯系统,实现单片机与PC机的通讯。
要求实现数据收发功能。
具要求容如下:①.通过LAB6000的小键盘选择功能;②.功能1:接收PC机发送的数据,并将其回发给PC机;③.功能2:从LAB6000的小键盘输入数据,发送给PC机。
(2)、课程设计要求:①.认真完成课程设计任务;②.通过老师现场验收;③.交出完整的课程设计报告。
1.2 课程设计原理根据题目要求,要完成LAB6000的小键盘选择,接收并且回发数据,小键盘可以输入并发送数据等功能,在本次设计中主要使用了MCS-51芯片以及部分连线来完成串行通讯的模拟。
采用MCS-51芯片实现不同模式串行通讯,通过延时程序控制串行通讯的频率。
将键盘选择功能、PC机发送及接收数据功能、小键盘发送功能等通过不同的子程序实现,然后在程序中调用不同的子程序来实现不同的功能。
因为需要实现小键盘输入数据,所以必须实现键盘扫描功能及按键检测功能。
按键的扫描方法有扫描法和线反转法,因为小键盘按键不是非常多,所以本设计采用行列扫描法来进行小键盘扫描。
1.3课程设计思路(1).提出方案设计键盘扫描函数函数和按键检测函数,通过MCS-51芯片,实现键盘扫描。
通过小键盘设置17个键位选择键,输入“1”时在LED灯显示并选择功能1(接收和发送PC机发送的数据);输入“2”时在LED灯显示并选择功能2(从小键盘输入数据并发送给PC机)。
小键盘选择功能:首先设置定时器及波特率,然后再设计键盘扫描函数和按键检测函数,使之能实现小键盘选择功能。
输入不同的数实现调用不同的函数,从而实现不同的功能。
功能1:设计PC发送函数,此功能还需要有串行口中断处理函数。
目的是实现单片机可以接受PC机发送的数据,并将其回发给PC机。
设置一个返回键,如按键“1”时返回小键盘选择功能,可以重新选择功能1还是功能2。
功能2:设计小键盘发送程序,需调用键盘扫描函数及按键检测函数,若有键按下,将键值发送到LED灯上,并将其转为ASCII码发送回PC机。
同样设置一返回键,如按键“NEXT”(右数第一列,下数第一行)时返回小键盘选择功能。
使函数能循环使用。
(2).方案论证从实际应用的角度,用户可以任意选择事先设计好的2种状态,当选择完一种状态时,它可以无限的按照这种方案循环的运行下去,在此过程中,用户可以选择退出这种工作状态,从而实现对当前进行状态的控制,即可以令程序重新开始。
在整个串行口输入过程中可随时做出不同的输入方式,对输入数据的工作状态进行控制。
1.4 实验环境·硬件环境:MCS-51实验箱,PC机。
·软件环境:WAVE2000应用软件第2章详细设计方案2.1 实现方法开始运行程序时数码管初始化显示6个数字0,然后选择一种模式(1和2),若输入的数不是“1”或“2”,只在LED灯上显示该数,等待重新输入一工作状态。
此处在扫描键盘并按键检测后需将扫描到的段码发送到LED灯上。
若选择“1”,即要实现功能1则调用PC机发送函数,用串行口中断函数来保存断点(防止计数器溢出)。
使之能实现接收PC机发送的数据后再将其回发给PC 机。
设置一全局变量flag,当用户输入一个数(例如“1”的ASCII码)时flag置1使之跳出while语句死循环,从而达到返回小键盘选择功能的目的。
若选择“2”,即要实现功能2需调用小键盘扫描函数和按键检测函数,将小键盘输入的数据发送到LED灯上,同时然后将该数据转换成ASCII码的形式通过串行口发送到PC机上。
同小键盘选择功能一样该功能也要调用小键盘扫描函数和按键检测函数。
由于要实现按键返回的目的,在小键盘扫描函数中设置了“NEXT”键(变量kk=100时),同样利用了while语句来跳出死循环。
2.2模块设计2.2.1主函数流程图主程序用于控制个功能子程序的调用和相应的芯片及内存、寄存器、变量的初始化,协调整个程序的运行。
由于本课设只用了8031芯片,小键盘和LED灯来显示模拟结果,而且所有的功能都是用软件实现的,所以主程序要能很好的组织程序的运行。
主函数模块首先设置定时器及波特率的选择,根据标志位k1的值选择是PC 模式发送数据还是小键盘模式发送数据,并根据功能选择模块中对各模式的信息的进行相应的初始设置。
通过小键盘选择功能控制数据的输出方式,还能接受新的键值来执行相应的功能。
读取的键值要先判断是否是无效键,是无效键要执行死循环程序,按下“1”或“2”键才能继续显示。
如果是停止键(指程序设计功能1中的“1”键和功能2中的“NEXT”键),应立刻清空数码管的显示内存并将其重新初始化。
如下页图2. 1所示。
图2.1 主函数模块流程图2.2.2功能1模块功能1模块利用单片机的串行口,实现PC机的串行通讯。
启动功能1时开启定时器,调用串行中断函数,通过while(!flag)语句实现循环发送的功能,在串行中断子函数中先将PC机中输入的内容发送到单片机上,执行while(!RI) (即RI=1单片机接收完数据跳出该循环) 语句。
在单片机将其内容回发给PC机之前需要进行是否返回小键盘选择功能的判定,通过if(temp==49)flag=1语句,判断是否是数1的ASCII码49,若是则将flag置1,达到跳出该循环的目的。
如图2.2所示。
8031的RXD、TXD接线柱在POD51仿真板上,8086的TXD、RXD在POD8086仿真板上的8031芯片旁边。
通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本设计中为减少连线可将电平转换略去,而将双方的RXD、TXD直接交叉连接。
图2.2 功能1模块流程图2.2.3功能2模块功能2模块实现小键盘发送数据的功能,需调用小键盘扫描函数和按键检测函数,将小键盘输入的数据发送到LED灯上。
启动功能2时同功能1一样先启动定时器工作,扫描小键盘使之能够在小键盘输入数据,对输入的数据进行判定,若为返回键(NEXT)则跳出该函数重新进行小键盘选择功能,使之能够循环使用;若为基本键,将扫描到的按键的键值通过查表的方式转为ASCII码,好发送回PC机中。
如图2.3。
图2.3 功能2模块流程图2.3程序连线图本设计提供了一个6*4的小键盘,向列扫描地址(0X002H)逐列输出低电平,然后从行码地址(0X001H)读回。
如果有键按下,则对应行的值应为低电平;如果无键按下,由于上拉的作用,行码为高。
这样就可以通过输出的列码和读取的行码来判断按下的是什么键。
地址中的X是由KEY/LED CS决定,做键盘和LED相连时,需将KEY/LED CS接到相应的地址译码上,以便用相应的地址来访问。
例如将KEY/LED CS信号接CS0上,则列扫描地址为08002H,行码地址为08001H。
列扫描码还可以分时用作LED的位选通信号。
如图2.4所示。
图2.4 键盘图第3章调试及结果分析3.1 调试步骤及方法编译并连接程序后全速运行,在数码管上显示六个LED灯都初始化为0,然后按下小键盘键中的任意一个键,若为3—F中的任意一键在LED的6个灯都显示该数,此时并没有选择执行功能1和2;若为1则执行功能1,即可以在PC机上输入数据并且可以回发,此时在右数第2个LED灯上始终显示1;若为2则执行功能2,即实现小键盘发送数据功能,此时在右数第2个LED灯上始终显示2。
3.2 实验结果及分析本程序满足课程设计要求,在程序运行时,一共有17个按键,“1”和“2”键即为功能选择键,又为输入数据键,NEXT为复位键其他键为普通数据键,各个按键均能实现其所拥有的功能,程序能很好的模拟串行发送功能。
功能1模式切换时,按下PC机大键盘的“1”键后,返回功能选择模块,可以重新选择工作方式;同样功能2模式切换时,按下小键盘的“NEXT”键也可以返回功能选择模块,从而实现程序循环使用的功能。
参考文献[1] 张毅刚.刘杰.MCS-51单片机原理及应用 [M].哈尔滨:哈尔滨工业大学出版社,2008[2] 王忠民.微型计算机原理 [M].西安:西安电子科技大学出版社,2003[3] 高峰.单片微型计算机原理与接口技术 [M].北京:科学出版社,2007[4] 郑初华.汇编语言、微机原理及接口技术[M].北京:电子工业出版社,2006[5] 谢瑞和.微型计算机原理与接口技术 [M].北京:高等教育出版社,2004[6] 胡汉才.单片机原理及接口技术 [M].北京:清华大学出版社,2007附录A(源程序)#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intxdata uchar key _at_ 0x8001;//定义键盘行地址xdata uchar led _at_ 0x8002;//定义键盘列地址并定义段码显示所在列xdata uchar dat _at_ 0x8004;//定义段码输出地址ucharascii[]={48,49,50,51,52,53,54,55,56,57,0x41,0x42,0x43,0x44,0x45,0x46 };ucharledmap[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7 c,0x39,0x5e,0x79,0x71};uint k1;uchar flag;uchar temp;void pcsend();void keysend();int i,j,p;void delay(){for(i=0;i<100;i++)for(j=0;j<100;j++)for(p=0;p<100;p++) ;}unsigned char testkey() //数码管显示函数{led = 0;return (~key&0x0f);}uint getkey() //键盘扫描函数{ uint k;led=0xfb; //扫描左数第四列switch(key){case 0x0e:k=13; while(testkey());return (k); //下数第一行dcase 0x0d:k=12; while(testkey());return (k); //下数第二行ccase 0x0b:k=11; while(testkey());return (k); //下数第三行bcase 0x07:k=10; while(testkey()); return (k); //下数第四行adefault:break;}led=0xf7; //扫描左数第三列switch(key){ case 0x0e:k=14; while(testkey());return (k);case 0x0d:k=3; while(testkey());return (k);case 0x0b:k=6; while(testkey());return (k);case 0x07:k=9; while(testkey());return (k);default:break;}led=0xef; //扫描左数第二列switch(key){ case 0x0e:k=15; while(testkey());return (k);case 0x0d:k=2; while(testkey());return (k);case 0x0b:k=5; while(testkey());return (k);case 0x07:k=8; while(testkey());return (k);default:break;}led=0xdf; //扫描左数第一列switch(key){ case 0x0e:k=0; while(testkey());return (k);case 0x0d:k=1; while(testkey());return (k);case 0x0b:k=4; while(testkey());return (k);case 0x07:k=7; while(testkey());return (k);default:break;}led=0xfe;switch(key){case 0x0e: k=100; while(testkey());return(k);default: return(-1); break;}}void main()//主函数{TMOD=0x20;TH1=0xF3;TL1=0xF3;SCON=0x50;PCON=0x80;while(1){k1=getkey();//k1=1;led=2;flag=0;dat=ledmap[k1];if(k1==1||k1==2){switch(k1){ case 1: pcsend();IE=0x00;k1=0; break; case 2: keysend();k1=0; break;}}}}void pcsend()//PC发送函数{TR1=1;IE=0x90;while(!flag);}void keysend()//小键盘发送函数{ uint kk=0;uchar knum;TR1=1;kk=getkey();while(kk!=100){kk=getkey();if(kk==-1)continue;led=2;knum=ascii[kk];SBUF=knum;while(!TI);TI=0;}}void Int1() interrupt 4//串行口中断函数{while(!RI);temp=SBUF;RI=0;SBUF=temp;while(!TI); TI=0;if(temp==49) flag=1; }附录B(原理图)附录C(元器件清单)。