[其它]1单片机与pc串行通信设计_secret.doc

上传人:音乐台 文档编号:1970129 上传时间:2019-01-27 格式:DOC 页数:40 大小:409KB
返回 下载 相关 举报
[其它]1单片机与pc串行通信设计_secret.doc_第1页
第1页 / 共40页
[其它]1单片机与pc串行通信设计_secret.doc_第2页
第2页 / 共40页
[其它]1单片机与pc串行通信设计_secret.doc_第3页
第3页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《[其它]1单片机与pc串行通信设计_secret.doc》由会员分享,可在线阅读,更多相关《[其它]1单片机与pc串行通信设计_secret.doc(40页珍藏版)》请在三一文库上搜索。

1、毕 业 论 文(设计) 题目: PC与单片机通信专 业: 工业电气自动化 班 级: 12-28 学生姓名: 李凯 指导教师: 徐海涛 提交日期: 二 年 月 日目录1绪 论11.1设计任务11.2 设计方案1 第二章 单片机串口通信的基本原理2.1 单片机组成结构442.2 单片机串行通信的基本方法42.3 RS-232通信协议2.3.1单片机MAX23262.4.1串行通信电路82.4.2单片机外围电路92.4.4 LED数码管显示电路14第三章 器件原理及连接17173.1 基本器件简介173.2 器件的连接173.2.1时钟处理模块173.2.2键盘处理模块183.2.3显示模块19第四

2、章 软件设计214.1 4.1MSCOMM通信控件214.2 4.2程序设计24第五章硬件连接. 结束语26参考文献27致谢28附录29附录1. 系统硬件电路图29附录2. 元件清单30附录3部分程序源代码31 第 一 章 绪 论 介绍了采取专用电平转换芯片MAX232实现PC机与MCS51单片机之间的串行通信的方法.通过对系统的通信方式选择89C51通信波特率的设置、通信的设置,以及对接口电路的软件和硬件的设计分析,展示了该电路的实用性. AbstractIn this artical , a new method of serial communication using special2

3、purpose level2conversion chip MAX232 between PC and MCS251 single2chip microcont roller is introduced. The selection of the communication mode , setting of the baud-rate of the 89C51 and its setting of communication are stated in detail. Through the analysis of the hardware and software design of th

4、e interface circuit , it s practi cability Is presented. 存储信息的采集器,对信息量的大小有严格的要求,由于采集器的存储量有限和进一步针对性处理与显示的需要,信息需要传入微机内. 采集器与微机通过微机的串口实现通信1 . 利用MCS51 单片机的串行口与PC 机的串行口COM1 或COM2 进行串行通信,将单片机采集的数据传送到PC 机中,由PC 机的高级语言或数据库语言对数据进行整理及统计等复杂处理. PC 机串行口给出的信号是一个RS2232 信号. 它是一个基于37V 正电压、 37V 负电压的脉冲链. 这一信号必须转化为一个 05

5、V 的脉冲链,以便处理器读取. 中间转换电路采用MAX232 芯片来实现. 401.1系统开发背景和系统设计的意义 自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域为拉动,表现出较微处理器更具个性的发展趋势。与此同时在市场上以单片机为核心控制器的产品更是层出不穷,各种家用电器、智能仪器仪表、医疗器械、机电一体化、实时工业控制、交通领域无不用到单片机。从目前单片机的发展趋势来看,单片机控制技术已成为电子设计技术及计算机技术不可缺少的一个重要部分,因此单片机系统在

6、电子世界里有着较好的前景,进行单片机的系统开发设计在当今电子领域有着重大的意义。1.2设计目标该设计要求实现:(3)、设计串行通信接口,实现与PC机的通信;(4)、具有人机对话功能,可通过键盘进行输入;(5)、LED显示器能够根据按键的输入进行相应的显示;(6)、自制+5V稳压电源。设计结果要求:完成电路的设计,硬件电路应该设计出原理图并画出PCB板图,完成软件程序的编写(包括流程图和部分源代码)。1.3设计方案的选择根基设计目标的要求,此系统可以采用以下两种设计方案来实现。设计方案一此方案是指PC机与单片机之间通过电缆线传输数据。有线传输的优势是性能比较稳定,调试简单,而不足之处在于它的应用

7、范围不够广、性能不够好,而且传输距离受限,这样就大大影响了系统的应用范围。(2)设计方案二:无线传输此方案是指PC机与单片机通过无线信道传输数据。无线传输的最大优势是应用范围广,受距离约束较小,在一定范围内可以不用考虑距离问题,还可以应用在一些高温、危险的场合。因此,本文选用无线传输方案通过串口来实现PC机与单片机之间的双工通信。无线传输可以用不同的方式来实现,常用的有红外方式、蓝牙方式,其他的还有射频收发芯片如CC1100,PT22622272芯片等。红外通信是利用950 nm近红外波段的红外线作为传递信息的载体,通过红外光在空中的传播来传递信息,由红外发射器和接收器实现。发射端将二进制数字

8、信号调制成某一频率的脉冲序列,经电光转换电路,驱动红外发射管以光脉冲的形式发送到空中。接收端将接收到的光脉冲转换成电信号,再经解调和译码后恢复出原二进制数字信号。其最大优点是:不易被人发现和截获,保密性强;几乎不会受到电气、天电、人为干扰,抗干扰性强。此外,红外线通信机体积小、重量轻、结构简单、价格低廉。不足之处在于它必须在视距内通信,且传播受天气的影响。CCll00是一种低成本真正单片的UHF收发器,为低功耗无线应用而设计。CCll00构建高性能射频无线数据传输技术方案应用无线通讯模块采用透明模式进行通讯,即所收即所发,具有通讯距离远、低功耗、接口灵活等优点,使用者无需编码和控制。CCll0

9、0通信距离(视距)大于300 m,而且能隔墙遥控,操作方便。综合上述分析,本文介绍的是采用CCll00收发器通过串口来实现PC机与单片机之间的双工无线通信。2.1 单片机组成结构单片机的内部、外部结构(一)拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。 1、 电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。 2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图1接上即可

10、。 3、 复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。 4、 EA引脚:EA引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。2.2 单片机串行通信的基本方法单片机接收数据程序框图 PIC16C711单片机的RB0引脚具备外部引脚跳变沿中断功能,向RB0引脚送一个上跳沿或下跳沿信号,则INTCON寄存器的外部引脚跳变沿中断标志位INTF被置1。如果总中断和外部引脚跳变沿中断都使能,并且此时单片机没有执行其他中断服务子程序,程序进入INT中断服务子程序。根据异步串行通信的特点,通信线路空闲时单片机接收的是高电平,起始位到来时单片机接收到

11、低电平,因此空闲位和起始位之间是一个下跳沿。单片机接收到下跳沿即起始位后,马上进入中断服务子程序,准备接收一帧数据。因此在主程序中设置由下跳沿引起外部引脚跳变沿中断。以下内容主要分析接收子程序即中断服务子程序。单片机接收数据程序框图如图3所示。图3 单片机接收数据程序框图 进入中断服务子程序后,首先保护中断现场,然后检测起始位是否是“真的”。由于可能存在的各种干扰,单片机有可能接收到的干扰信号正好是一个下跳沿,而实际上此时根本没有数据到来,从而造成误接收数据。因此检测起始位的真实性是有必要的。采取的方法是在52 us(起始位的中点)后,检测一次RB0上的信号。程序框图中是延时47 us后检测R

12、B0上的信号,原因是保护中断现场的几条指令要耗费几个us。如果是低电平,则起始位是“真的”,否则为干扰信号,单片机清INTF标志位,然后退出中断服务子程序,回到主程序。若起始位是“真的”,则准备接收数据。 本文规定数据位为8位,故首先设置接收计数器R_CNT内容为8。然后将STATUS寄存器中的C位清零,并右移接收数据寄存器RCV_R。C的内容即0移人RCV_R最高位,接下来接收数据位。为尽量保证数据的准确性,应该在每位数据的中点检测该位数据。因此,检测第一位数据的时刻距离检测起始位的时刻应该是一位数据所占的时问即104 us,此后的每一位数据检测时刻之间也是如此。此时又要用到延时程序。因为每

13、两次检测时刻之间除了延时之外,指令(C清零、右移等指令)还要占用时间,这些指令占用56 s,因此,为了尽量保证在每一位的中心位置检测数据,延时时间定为98 s。如果检测得到的数据位为1,则置RCV_R最高位为1。如果数据位为0,则不必改变最高位,因为C为0且已经移人RCV_R的最高位。然后,将接收计数器内容减1。8位数据接收完毕后,清INTF标志。最后,退出中断服务子程序。至此,8位数据接收全部存放于RCV_R中。单片机发送数据程序框图 用RB5引脚作为发送引脚,单片机发送数据程序框图如图4所示。当有数据要从单片机发往PC机时,单片机调用发送子程序。在发送子程序中,首先设置发送计数器内容为8,

14、然后发送起始位,起始位应持续104 us。因此要调用延时子程序,延时子程序执行完后,RB5上的信号并未立刻变成第一位数据的值,这是因为还要执行几条指令,如右移TRS_R、置位等RB5上的信号才会变化。假设延时104 us,那么加上几条指令的执行时间,起始位就比104 us宽了。因此,延时子程序少于104 us,根据具体的程序定为97 us。然后,右移发送数据寄存器TRS_R,将其最低位即要发送的数据位移入C中,再根据C中的内容将RB5清零或置1,然后将发送计数器内容减1,并判断其是否为0。若为1,则说明未发送完毕,继续发送;否则,发送停止位。最后,退出发送子程序。图4 单片机发送数据程序框图5

15、 PC机通信程序 VB6.0提供了串行通讯MSComm(电话盒)控件来为应用程序提供串行通信,它将串口设备当作一个目标封装起来,容易操作,编程很方便,其良好的用户界面、简单方便的串行通信和实用性强的优点,无需借用其他语言就可以开发出优秀的通信软件,因而PC机软件采用VB6.0语言编写。 MSComm控件的调出及其主要属性如下。(1)MSComm控件的调出 VB6.0的MSComm控件并不会主动出现在工具箱中,当需要它时,让它出现在工具箱中的步骤如下:1. 选择菜单上的“工程”; 2. 在“工程”菜单中选择“部件”; 3. 出现对话框后,在可勾选的项目中勾选Microsoft Comm Cont

16、rol 6.0; 4. 按下“确定”按钮,即可在工具箱中见到“电话盒”的图标,就可以将此控件加载进行串行通信。 (2)MSComm属性 MSComm属性很多,其重要的属性说明如下: commPort:设定或返同通信端口号。端口号由1开始往上递增,最大值是16。 Settings:设定通信端口初始化参数。其格式为“Baud,P,D,S”,其中Baud为波特率,可设为1200、2400、9600、14400、19200和28800等几种;P为校验位(E表示偶校验、O表示奇校验、M表示符号校验(即在校验位放置一个1的位)、S表示空白校验(即在校验位放置一个0的位)、N表示无校验位(默认值);D为数据

17、位数,可选值为4、5、6、7、8(默认值);S表示停止位数,可选值为1、1.5、2。 PortOpen:设定并返回通信端口的状态。使用串行端口之前必须先打开该端口(PortOpen=True),而在使用完毕后必须关闭该端口(PortOpen=False)。 Input:从输入缓冲区返回并清除字符。这是一种FIFO(First in First Out)机制。如Buffer $=MSComm1.Input,表示将输入缓冲区的字符读入Buffer字符串变量中。 Output:将一个字符或字符串写入传输缓冲区,如MSComm1.Output=ABCD。此即将ABCD 4个字符通过串行端口传送出去。

18、InBuferCount:传回在接收缓冲区中的字符数,是指已接收,并在接收缓冲区等待读取的字符数。 InputMode:设定和返回类型。该属性设为0时,数据通过Input属性以文本方式取回,如设为1,则数据通过Input属性以二进制方式取回。 为保证通信进行,首先做到单片机的串行口与主控机串行口的设置保持一致,即数据格式一致、通信波特率相同。如果是多点通信,每个从机要分配一个地址码。系统中协议有3种帧格式:呼叫帧、应答帧和数据帧。呼叫帧由主机发出。应答帧只能由从机发出。当从机收到呼叫帧后,把本机地址和当前状态回发给主机。设置开机自检、自诊断程序,机器不能带病工作;如果需要,还可以设置在工作空闲

19、时或定时自检程序。单片机的串行通行模式2、3含第九位数据R B8/TB8 可用于多机通信,然而PC机的帧格式的第九位为校验位,虽然可以通过软件使其置0或置1达到与单片机一样的格式,然而这种方法难以调试,所以本文是采用自行设计的帧格式进行通信。本课题中通信帧的帧结构定义如表1所示。通信帧的内容包括起始字节、地址字节、类型字节、数据长度字节、数据字节、校验和字节和结束字节。表1 帧结构起始字节 地址字节 类型字节 数据长度字节 数据字节 效验和字节 结束字节1字节 1字节 1字节 1字节 N字节 1字节 1字节起始字节定义为“$”字符,其数值为0x24;结束字符定义为“*”字符,其数值为0x2A。

20、 地址字节实际上存放的是下位机的设备号,分别为0x01、0x02、0x03注意,各下位机设备应避免重复地址。 本课题的帧类型主要有6种,这由类型字决定,它们的值及说明如表2所示。 表2 帧结构中类型字节的定义 指令 类型字节 说明 ACTIVE 0x11 上位机询问下位机是否在位 GETDATA 0x22 上位机发送采集命令 READY 0x33 下位机应答在位 SENDDATA 0x44 下位机发送采集的数据 COMTEST 0x55 上位机发送数据(通信测试) RE_COMTEST 0x66 下位机应答通信测试 其中, ACTIVE、GETDATA、READY为单纯的指令帧,即数据字节为0

21、字节,这3种指令帧的长度最短,仅为6字节。其他3种帧为相应的数据帧,数据字节长度N最大为20,所以通信帧的帧长最大为26字节。 采用上述的帧格式传输,既可区分不同的单片机,又可区分不同的帧类型,这样就避免正在通信的某个单片机发送的帧对其他单片机造成干扰。 由于使用R S-485总线结构,所以该系统工作方式为半双工。P C机串口置波特率为9600b p s,无奇偶校验,8位数据位,1位起始位,1位停止位。单片机串口工作于方式1,通过设置T1的TH1,TL1 使波特率也为9600bps。整个系统的通信还需遵守以下协议:P C机主导整个通信过程。由P C选择与其通信的下位机设备号(地址)。PC机在发

22、送完“ACTIVE”指令后,进入接收状态,同时开启超时控制。如果接收到错误帧则继续等待,如果在规定的时间内未能收到下位机的返回指令“READY”,则认为下位机不在位,并给出告示。 P C机收到下位机的返回指令“READ Y”后,可以发送“GETDATA”或“COMTEST”指令,同样开启超时控制。如收到相应的响应帧,则处理之。如果接收到错误帧则继续等待,如果在规定的时间内未能收到下位机的返回指令,则认为下位机未准备好或不在位,并给PC机告示。 下位机复位后,将等待上位机发送指令,并根据具体的指令内容作出应答。如果接收的指令帧或数据帧错误,则会直接丢弃该帧,不做任何处理。21 总体框图此双工无线

23、通信系统的总体框图如图1所示。由于此系统可实现双工通信,因此它可分为两个通信过程:PC机(上位机)通过上位机程序界面发送数据给单片机,并送给液晶屏显示相应的数据;键盘输入数据传给单片机,接着发送给PC机,并在PC机上位机程序界面上显示出来。3.2.4串行通信模块开中断串口是否空闲? Y N发送数据接收数据关空闲信号返 回图4 系统硬件详细设计图(1)电平转换电路PC机的串行口采用的是标准的RS 232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS 232的电气特性不匹配,因此为了使单片机的串行口能与RS 232接口通信,必须将串行口的输入输出电平进行转换。通常用MAX232芯片来

24、完成电平转换。2.3主要芯片的介绍1. S-232串行接口标准 目前RS-232是PC机与通信工业中应用最广泛的一种串行接口。RS-232被定义为一种在低速率串行通讯中增加通讯距离的单端标准。RS-232采取不平衡传输方式,即所谓单端通讯。收、发端的数据信号是相对于信号地。典型的RS-232信号在正负电平之间摆动,在发送数据时,发送端驱动器输出正电平在+5+15V,负电平在-5-15V电平。当无数据传输时,线上为TTL,从开始传送数据到结束,线上电平从TTL电平到RS-232电平再返回TTL电平。接收器典型的工作电平在+3+12V与-3-12V。由于发送电平与接收电平的差仅为2V至3V左右,所

25、以其共模抑制能力差,再加上双绞线上的分布电容,其传送距离最大为约15米,最高速率为20Kbps。RS-232是为点对点(即只用一对收、发设备)通讯而设计的,其驱动器负载为3k7k。所以RS-232适合本地设备之间的通信。 2.3.1单片机AT89S52 AT89S52是低功耗,高性能CMOS 8位单片机,可反复擦写1000次的Flash只读程序存储器,兼容标准MCS-51指令系统及80C51引脚结构,其主要特点为:(1)、40个引脚DIP- 40封装,8k Bytes Flash片内程序存储器;(2)、256 bytes的随机存取数据存储器(RAM);(3)、5个中断优先级2层中断嵌套中断;(

26、4)、2个16位可编程定时计数器,2个全双工串行通信接口。其引脚封装如图5所示;主要引脚介绍如下:图5 单片机AT89S52封装图(1)VCC、GND 电源、接地引脚;(2)XTAL1、AXTAL2 外部振荡器接入的两个引脚;(3)RESET 复位信号输入引脚;(4)RXD、TXD P3 口 作第二功能引脚用作串行通信接口输入、输出引脚;(5)P0.1P0.7 数据/地址总线引脚;P1.0P1.7一般的I/O口;P2.0P2.7一般的I/口。 (2)单片机部分单片机部分包括单片机、复位电路和时钟电路。它将串口送过来的数据传输给CC1100收发器,或者将CCll00收发器传送过来的数据通过串口给

27、PC机。单片机的复位电路和时钟电路是单片机工作所必需的。3 软件设计本系统的软件设计方面包括上位机程序和单片机程序的设计。上位机程序要实现的功能是在电脑上显示一个操作界面,它可代替串口调试工具。1.MSComm(Microsoft Communication Control)控件介绍MSComm控件是Microsoft为简化Windows下串行通信编程而提供的ActiveX控件。每个MSComm控件对应着一个串行端口,在使用MSComm控件时,1个MSComm控件只能同时对应一个串口。MSComm控件有很多重要的属性,其中常用的是如下几个:(1)CommPort设置并返回通信口号,缺省值为OM

28、1,可设置116个。(2)SetStrings设置并返回波特率、奇偶效验、数据位、停止位的字符串。其中波特率的范为 。(3)PortOpe n设置并返回通信口的状态,同时来打开和关闭通信口。(4)InputLen决定每次Input读入的字符个数,缺省为0,表示读取接受缓冲区的全部内容。(5)Input读入并清除接收缓冲区的字符。(6)InBufferCount返回接收缓冲区已接收的字符数,通过置0可清除接收缓冲区。(7)Output将发送的字符串或数组写到发送缓冲区。(8)InputMode定义Input属性获得数据的方式:0为文本;1为二进制。2.PC机的软件设计(1)初始化端口。通信接口部

29、分软件的初始化主要是对串口的初始化,如设置波特率、定义发送缓冲区大小等等。只需在主程序DCDlg.cp p的初始化函数中加入如下代码: BOOL CPCDlg:OnInitDialog () /TODO: Add extra initialization here m_Com.SetCommPort(1); /选择COMl m_Com.SetInBufferSize(512); / 设置输入缓冲区大小,单位为BYTE m_Com.SetOutBufferSize(512); /设置输出缓冲区大小,单位为BYTE m_Com.SetPortOpen(TRUE); /打开串口 m_Com.SetS

30、ettings(9600,n,8,1); /设置波特率、奇偶效验、数据位和停止位参数 m_Com.SetInputMode(1); /设置输入模式。1表示以二进制方式检取数据 m_Com.SetRThreshold (1); /参数1表示接收1个以上字符时,就触发OnComm事件 m_Com.SetInputLen(0); /设置当前接收区数据长度为0 m_Com.GetInput(); /先预读缓冲区以清除残留数据 (2)发送数据。流程图中的“发送ACTIV E帧”在其相应得函数中添加代码如下。 void CPCDlg:OnButtonConnect() / TODO: Add your c

31、ontrol notificati onhandler code here int id=m_CBox.GetCurSel();/获取地址 BYTE addr3=0x01,0x02,0x03; Send_Frame(addrid,ACTIVE,0,m_strSend);/其中Send_Frame() 为发送一完整帧。(3)读取串口。对于上位机,软件编程的难点和重点就是读取串口,上面MSComm 控件添加了函数OnComm(),在该函数中添加代码,就能实现对串口事件的处理。而函数GetInput ()返回的是VARIANT类型,而编辑框中显示的是CStrin g类型,因此必须进行类型转换。先将其

32、转换为COleSafeArray型,再转为BYTE数组,进而转为CString 类型。以下为常见的处理: void PCDlg:OnComm() / TODO: Add your control notification handler code here VARIANT m_Input1; COleSafeArray m_Input2; long len,i; BYTE data512; CString str; if(m_Comm.GetCommEvent()=2) /接收事件 m_Input1=m_Comm.GetInput(); /读取缓冲区数据 m_Input2=m_Input1;

33、/ VARIANT转COleSafeArray len=m_Input2.GetOneDimSize(); for(i=0;ilen;i+) m_Input2.GetElement(&i,data+i);/ COleSafeArray转BYTE数组 for(i=0;ilen;i+) char a=*(char*)(data+i); str.Format(%c,a); m_Receive+=str; /BYTE数组转CString 显示 UpdateData(FALSE); 3.下位机(单片机)的软件设计 就下位机而言,它的工作与上位机密切相关,它是完全被动的,根据上位机的指令执行相应的操作。3

34、1 上位机程序上位机程序可以用VB,VC+等语言来编程,但本方案采用比较方便的C#来编程实现,其流程图如图3所示。CB板图。图20 网络表导入PCB板图文件 5.结束语本单片机开发系统的设计思路与方法新颖,它可满足单片机初学者、在校学生课程设计、毕业设计、电子科技制作使用,也为单片机研究开发人员创造了很好的开发环境,以节省大量的开发时间,它的适用性很强,经过反复验证,仿真,并做好电路板,可直接生产使用。参考文献1 陈明荧8051单片机课程设计实训教材M. 清华大学出版社,2004:2843.2 秦实宏,周龙等单片机原理与应用技术M. 中国水利水电出版社,2005:3550.3 求是科技单片机通

35、信技术与工程实践M. 人民邮电出版社, 2004:1214.4 求是科技单片机典型模块设计实例导航M. 人民邮电出版社, 2004:122135.5 马忠梅等单片机的C语言应用程序设计M. 北京航空航天大学出版社,2003:3739.6 杨将新,李华军等单片机程序设计及应用M. 电子工业出版社, 2006:142154.7 范风强,兰蝉丽单片机语言C51应用实战集锦M. 电子工业出版社, 2005:212234.8 胡汉才单片机原理及接口技术M. 青华大学出版社,1996:132145.9 刘迎春传感器原理设计与应用M. 国防科技大学出版社,2005:122154.10 赵亮,侯国锐等单片机C

36、语言编程与实例M. 人民邮电出版社,2003:5284.11 何立民单片机与嵌入式系统应用J. 北京航空航天出版社,2003:142164.12 夏路易等电路原理图与电路板设计教程M. 北京希望电子出版社, 2002:222284.致 谢经过几个月的努力,我按时完成了毕业设计。毕业设计是对大学四年所学知识的综合应用,也是理论走向实践的第一步,在此设计过程中,我更深刻地理解了设计的概念,扩展了知识面,加深理解了某些知识点,提高了独立思考和自学的能力,更重要的是提高了实践能力,为以后走向工作岗位奠定了基础,这将使我终身受益。当懂得很多以前没有弄懂的知识时,心中充满了欣慰。在此首先感谢母校的辛勤培育

37、之恩;其次,感谢物理学与电子信息工程系给我提供了很好的设计环境,使我的设计得以顺利的进行。最后,感谢设计指导老师,他渊博的专业知识,严谨的治学作风,育人求实的工作态度都体现在这次设计的指导中;每当我遇到困难时,他总是耐心细致地给我讲解,帮助我度过一个又一个难关,使得我的设计能有条不紊的进行。对在整个毕业设计过程中,方老师给予的指导和帮助,我表示衷心的感谢;另外系上其他老师和同学都给了我大力支持和帮助,对这些老师和同学表示诚挚的谢意;谢谢你们。在未来的工作和学习中,我将以更好的成绩来回报各位领导和老师。附录附录1. 系统硬件电路图 系统总的硬件电路图如图27 所示: 附录3. 部分程序源代码/*

38、 本程序集成了与PC通信的串口服务程序,所有按键的功能也可以通过PC机的控制软件实现。状态也可以反馈到此* 控制软件上。* 资源配置:Timer0用于为系统提供时基;Timer2用于串口波特率发生器。* 2个中断源,其中一个为Timer0,另一个为串口中断,主要完成与PC机的通信。*/*/Beginning of Program/*/#include at89x52.h#include #include #define nop _nop_() #define uchar unsigned char #define uint unsigned int#define SCAN_CYCLE 500/

39、*/*Constant Tables*/static const char c_keyCode16=0x01,0x02,0x03,0x0a, /*键盘1,2,3,A*/ 0x04,0x05,0x06,0x0b, /*键盘4,5,6,B*/ 0x07,0x08,0x09,0x0c, /*键盘7,8,9,C*/ 0x0e,0x00,0x0f,0x0d; /*键盘*,0,#,D*/*Constant Tables Over*/*/*DA转化DAC5618sbit DIN=P13; /定义P1.3为串行数据口sbit CLK=P14; /P1.4为串行时钟端sbit CS =P15; /P1.5为片选

40、端/*AD转化MAX187sbit SCLK =P16; /MAX187时钟sbit CS187=P17; /MAX187片选sbit SDOUT=P30; /MAX187数据输出/*System Variables*/、uintkeyFlag;uchar hour=10;min=0;sec=0;uchar DisplayArray6;static uchar LEDFlag=0;bit LEDCycle100msFlag=0,LEDCycle500usFlag=0,LEDCycle10msFlag=0,LEDAutoFlag=1,LEDKeyFlag=0;static uchar s_mus

41、icCounter=0x00,s_tableCounter;uchar Int0Flag,TH0Global,TL0Global;uchar UARTKeyFlag=0xaa,modifyTimeFlag=0;/*System Variables Over*/*/*System Functions*/void Login(void);void MainSystem(void); /*系统主程序*/void ScanKeys(void); /*扫描键盘模块*/uchar KeyJudge(void); /*按键预处理*/void KeyHandle(uchar keyIndex); /*按键处理模块*/void LEDHandle(void); /*流水灯方案选择*/void AutoShow(void); /*开始流水灯自动循环演示*/void StopAutoShow(void); /*停止流水灯自动循环演示*/void DropDown(void); /*水滴方案*/void CircleFlash(void); /*环扫方案*/

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1