课程设计单片机与PC机串行通讯设计
- 格式:doc
- 大小:229.00 KB
- 文档页数:17
第一章串口通讯的系统组成与原理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)之间的接口信号特性。
实验6 单片机与PC机间的串行通信一、实验目的1、掌握电平转换器件RS-232的使用方法;2、掌握Proteus VSM虚拟终端(VITUAL TERMINAL)的使用;3、掌握单片机与PC机间的串行通信软硬件设计方法。
二、实验内容实现利用虚拟终端仿真单片机与PC机间的串行通信。
PC机先发送从键盘输入的数据,单片机接收后回发给PC机。
单片机同时将收到的30~39H间的数据转换成0~9的数字显示,其他字符的数据直接显示为其ASCII码。
单片机和PC机进行通信时,要求使用的波特率、传送的位数等相同。
要能够进行数据传送也必须首先测试双方是否可以可靠通信。
可在PC机和单片机上各编制非常短小的程序,具体可分成PC机串行口发送接收程序、单片机串行口发送程序和单片机串行口发送接收程序。
这三个程序能运行通过,即可证明串行口工作正常。
PC机串行口发送接收程序设置串行口为波特率9600、8位数据、1位停止位、无奇偶校验的简单设置。
从键盘接收的字符可从串行口发送出去,从串行口接收的字符在屏幕上显示。
通过让串行口发送线和接收线短接可测试微机串行口,通过让串行口和单片机系统相接,使用此程序可进一步测试单片机的串行通信状况。
具体程序用BASIC编制,简单易懂。
直接输入即可运行。
程序RS232.三、实验电路原理图图7-1 单片机与PC机间电路原理图四、实验步骤1、在PROTEUS中画好电路原理图。
2、串口模型属性设置串口模型属性设置为:波特率―4800;数据位―8;奇偶校验―无;停止位-1,如图7-2所示。
图7-2 串口模型属性设置3、虚拟终端属性设置PCT代表计算机发送数据,PCR用来监视PC接收到的数据,它们的属性设置完全一样,如图7-3所示。
SCMT和SCMR分别是单片机的数据发送和接收终端,用来监视单片机发送和接收的数据,它们的属性设置也完全一样,如图7-4所示。
单片机和PC机双方的波特率、数据位、停止位和检验位等要确保和串口模型的设置一样,并且同单片机程序中串口的设置一致。
单片机与PC机通信实验实验报告一、实验目的进一步学习使用Keil C51集成环境和硬件实验箱。
(1)学习UART的初始化和波特率设置;(2)学习接收程序的设计;(3)学习发送程序的设计。
二、实验环境准备1.、本计算机系统已经安装Keil C51 开发环境。
2、以“MCU+各自的学号”为文件夹名建立自己的单片机实验目录。
再在该文件夹下建立实验目录“EX??”,“??”为实验序号。
三、要求完成的实验内容1、定时器0,设置为2ms定时中断;定时器1,设置为波特率发生器,定时方式,允许不中断;使用11.0592MHz晶振,请计算2400波特率的时间常数,_____0CH______,T1的计数初值__ F4H____。
TMOD______22H______ SMOD=02、UART设置为中断允许,8为数据,一个起始位置,一个停止位,即M0 M1=01H ,M2=1,REN = 1 , SCON _______77H___________;PCON中的SMOD=03、在当前实验文件夹中,建立ExPrj07.uv2,将上一次实验的源文件Ex06.c,复制到当前文件夹,改名为“EX07.C”,存放在实验文件夹中。
将EXP07.C添加到工程中。
4、如果8051MCU与PC通信,则将51的TXD=>PC的RXD,51的RXD<= PC的TXD。
请理解和掌握8051的P3.0输出的电平是经过哪些芯片转换至RS232电平的?由于本实验仿真系统占用了PC机仅有的一个串口,所以,无法进行MCU与PC间的通信,本实验需将实验箱上8051连接的RS232端口的2、3脚短接,进行8051自发自收的串行通信实验。
5、在主程序中初始化定时器0、SCON、PCON、IE、IP,请参考以往实验;6、串行中断服务程序具体见下面的程序。
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机之间的数据交换。
现今我国工业迅速发展的情况下,对工业中的计算机控制提出了较高的要求。
比如在常见的现场数据采集中,对各个采集点需要采集不同的数据,比如温度、湿度、压力、照度,这就需要单片机对计算机发出的不同的指令做出不同的反应,并且返回相应的采集到的数据。
xxxxxx 大学课程设计报告课程设计名称:单片机系统综合课程设计课程设计题目:单片机与PC 机串行通讯设计系):业:级:o,号:名:指导教师:完成日期:第1章总体设计方案……1 10 13 14课程设计的内容和要求 …… 课程设计原理 课程设计思路 实验环境1.1 1.2 1.3 1.4 1 .. 1 .. 2 .. 2 ..第2章详细设计方案 ................ 2.1实现方法 .................2.2 ^模块设^计 ............... 2.2.1主函数流程图 ......... 2.2.2功能1模块 ............ 2.3程序连线图 ............... 第3章调试及结果分析…… 3 .. 3 .. 3… 4… 7 ..3.1调试步骤及方法…•… 3.2实验结果及分析…•… 参考文献 .......................8.. 8 .. (源程序) ........ (原理图) ........ (元器件清单)••…第1章总体设计方案1.1课程设计的内容和要求(1)、课程设计内容:利用南京伟福公司的LAB6000通用微控制器仿真实验系统开发单片机与PC机串行通讯系统,实现单片机与PC机的通讯。
要求实现数据收发功能。
具要求容如下:①通过LAB6000的小键盘选择功能;②.功能1:接收PC机发送的数据,并将其回发给PC 机;③•功能2:从LAB6000的小键盘输入数据,发送给PC机。
(2)、课程设计要求:①.认真完成课程设计任务;②.通过老师现场验收;③.交出完整的课程设计报告。
1.2课程设计原理根据题目要求,要完成LAB6000的小键盘选择,接收并且回发数据,小键盘可以输入并发送数据等功能,在本次设计中主要使用了MCS-51芯片以及部分连线来完成串行通讯的模拟。
采用MCS-51芯片实现不同模式串行通讯,通过延时程序控制串行通讯的频率。
课程设计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 毕业论文(设计)2014年 5月 10日论文独创性声明本人所呈交的毕业论文(设计)是我个人在指导教师指导下进行的研究工作及取得的成果。
除特别加以标注的地方外,论文中不包含其他人的研究成果。
本论文如有剽窃他人研究成果及相关资料若有不实之处,由本人承担一切相关责任。
本人的毕业论文(设计)中所有研究成果的知识产权属三亚学院所有。
本人保证:发表或使用与本论文相关的成果时署名单位仍然为三亚学院,无论何时何地,未经学院许可,决不转移或扩散与之相关的任何技术或成果。
学院有权保留本人所提交论文的原件或复印件,允许论文被查阅或借阅;学院可以公布本论文的全部或部分内容,可以采用影印、缩印或其他手段复制保存本论文。
加密学位论文解密之前后,以上声明同样适用。
论文作者签名:年月日三亚学院毕业论文(设计)第I页PC机与单片机串行通信实现点阵字符显示的设计摘要随着我国经济的快速发展,LED点阵被越来越广泛的应用到我们的日常生活中。
LED就是light emitting diode,发光二极管的英文缩写,简称LED。
LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示器件,通常由显示模块、控制系统及电源系统组成。
LED点阵显示屏制作简单,安装方便,不仅可以用于室内环境还可以用于室外环境,环境适应能力强,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
本系统设计是由硬件电路和软件电路综合完成,第一部分采用了AT89C51单片机控制点阵动态刷新显示,第二部分采用了计算机上的串口调试助手与单片机通信,通过虚拟串口,可以实现单片机与串口调试助手的连接,从而完成单片机与串口调试助手的UART通信,实现控制点阵字符显示的目的。
为了提高系统的可靠性,采用Proteus仿真软件对硬件模块进行仿真。
此次设计基本完成了设计要求,能够在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(原理图) (13)附录C(元器件清单) (14)第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机。
·软件环境:W A VE2000应用软件第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 键盘图xxxxxx大学课程设计报告第3章调试及结果分析第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;//定义段码输出地址uchar ascii[]={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,0x7c,0x39,0 x5e,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(元器件清单)。