基于PS2接口的无线数据传送系统.doc_第1页
基于PS2接口的无线数据传送系统.doc_第2页
基于PS2接口的无线数据传送系统.doc_第3页
基于PS2接口的无线数据传送系统.doc_第4页
基于PS2接口的无线数据传送系统.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

盐城师范学院毕业论文(设计)基于PS/2接口的无线数据传送系统电子信息工程专业 张晓燕指 导 教 师 蒯 剑摘 要:本论文设计了一种基于PS/2接口的无线数据传送系统。键盘输入的数据通过PS/2接口传送到射频发射模块。在一百米以内的射频接收模块接收数据并传送给单片机,并显示在液晶屏上。单片机再通过MAX232进行串口通信,从而实现与上位机的信息交换。 关键词:PS/2接口,射频,单片机,MAX2321 引言随着社会的发展,数据传输已经成为人们生产、生活中不可或缺的一部分,小到用餐时的点菜系统,大到国家中央情报局的情报交换。数据传输中按传输介质可分为有线传输和无线传输。有线传输就是用线缆传输信息,如光纤,同轴电缆,双绞线等等。在许多情况下,用户往往由于受到地理环境和工作内容的限制,例如山地、港口和开阔地等特殊地理环境,对有线网络、有线传输的布线工程带来极大的不便,采用有线的施工周期将很长,甚至根本无法实现。无线就是不用线缆传递信息,而是利用电磁波传递信息,分发射部分和接收部分。采用无线可以摆脱线缆的束缚,有安装周期短、维护方便、扩容能力强,迅速收回成本的优点。在数据接口方面,如果采用键盘输入,那么 PS2键盘接口是个不错的选择。该标准定义了84101键,采用6脚miniDIN连接器,该连接器在封装上更小巧,用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。而且现在市面上的键盘都和PS2键盘兼容,只是功能不同而已。本论文设计了一种基于PS/2接口的无线数据传送系统个人资金管理系统,以便更好地管理个人的资金,知道自己的出账入账。键盘输入的数据通过PS/2接口传送到射频发射模块。在一百米以内的射频接收模块接收数据并传送给单片机,并显示在液晶屏上。单片机再通过MAX232进行串口通信,从而实现与上位机的信息交换。通过本设计要能深入了解并掌握射频的工作原理,编写PS/2的传输程序,并用VB编写上位机程序。提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。2 系统理论基础2.1 单片机STC89S52RC单片机也被称为微控制器(Microcontroller Unit),常用英文字母的缩写MCU表示单片机,它最早是被用在工业控制领域。在本设计中使用的STC89S52RC单片机,它的特点是:是增强型6时钟/机器周期,而51系列是12时钟/机器周期;工作电压为5.5V3.4V(5V单片机);工作频率为040MHZ,相当于普通的8051的080MHZ,实际工作频率可达48MHZ;片上集成1280字节/512字节的RAM;普通的I/O口(32/36个),复位后为:P1/P2/P3/P4是准双向口/弱上拉;共3个16位定时器/计数器,其中定时器0还可以当成两个8位的定时器使用;外部中断4路,下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平方式唤醒。现在单片机的功能越来越强大,16位单片机主要应用于工业控制、智能仪器仪表、便携式设备等场合。1在本设计中是使用外部中断0作为检测PS/2接口的键盘的信号,如果PS/2向单片机中传输数据,则会进入外部中断服务程序。在单片机中断服务程序中不要写过多的处理语句,因为如果语句过多,中断服务程序中的代码还未执行完毕,而下一次中断又来临,这样就会失去中断,当单片机循环执行代码时,这种丢失累积出现,程序便完全乱套。2所以在本设计中中服务程序很高效、简洁。2.2 MAX232模块MAX232芯片是为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。3内部结构基本可分三个部分如图1: 图1 MAX内部结构第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。第三部分是供电。15脚GND、16脚VCC(+5v)。在单片机中,单片机与外界的信息交换成为通信。通信的基本方式分为并口和串口通信两种。串口通信是数据一位接一位地顺序传送。其特点是通信线路简单,只要一对传输线就可以实现通信,从而大大降低了成本,特别适用于远距离通信。其缺点是传送速度慢。2在本设计中使用的是串口方式0。串行口方式0被称为同步移位寄存器的输入/输出方式,主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接受均为8位数据,低位在先,高位在后,波特率固定为fosc/12。12.3 液晶屏模块液晶屏的工作方式分为串口通讯模式和并口通讯模式。在使用并口通讯模式可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。由于本模块中使用的液晶模块是LCM1286445ZK的串口通信,故连接图如图2。3脚和18脚之间要加一个1K的电阻来调节液晶屏的亮度。在编写程序时要特别注意RS,R/W的配合选择决定控制界面的4种模式,如表1:图2 LCM1286445ZK的串口通信连接图表1 RS、R/ W的配合选择决定控制界面的4种模式 RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据而且,当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。2.4 PS/2接口2.4.1 物理连接器一般,具有五脚连接器的键盘称之为AT键盘,而具有六脚miniDIN连接器的键盘则称之为PS/2键盘。在本课题中使用的是六脚miniDIN连接器,其实这两种连接器都只有四个脚有意义,它们分别是Clock(时钟脚)、Data(数据脚)、5V(电源脚)和Ground(电源地)。在PS/2键盘与PC机的物理连接上只要保证这四根线一一对应就可以了。在本设计中只需将5V(电源脚)与STC89S52的40脚相连,Ground(电源地)与STC89S52的20脚相连,Clock(时钟脚)与STC89S52的12脚外部中断相连,Data(数据脚)与其它任一I/O口相连即可。1现在比较常用的连接器如图3所示。图3 PS/2的mini-DIN连接器2.4.2 电气特性PS/2通讯协议是一种双向同步串行通讯协议。通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。4如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备间传输数据的最大时钟频率是33kHz,大多数PS/2设备工作在1020kHz。推荐值在15kHz左右,也就是说,Clock(时钟脚)高、低电平的持续时间都为40s。每一数据帧包含1112个位,具体含义如表2所列。表2 数据帧格式说明表1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇校验1个停止位总是逻辑11个应答位仅用在主机对设备的通讯中2.5 射频技术介绍在本设计中使用的是nRF2401的无线射频收发模块。nRF2401 的收发模式有ShockBurstTM 收发模式和直接收发模式两种,收发模式由器件配置字决定。52.5.1 ShockBurstTM 收发模式ShockBurstTM 收发模式下,使用片内的先入先出堆栈区,数据低速从微控制器送入,但高速(1Mbps)发射,这样可以尽量节能,因此,使用低速的微控制器也能得到很高的射频数据发射速率。与射频协议相关的所有高速信号处理都在片内进行,这种做法有三大好处:尽量节能;低的系统费用(低速微处理器也能进行高速射频发射);数据在空中停留时间短,抗干扰性高。nRF2401 的ShockBurstTM 技术同时也减小了整个系统的平均工作电流。6在ShockBurstTM 收发模式下,nRF2401 自动处理字头和CRC 校验码。在接收数据时,自动把字头和CRC 校验码移去。在发送数据时,自动加上字头和CRC 校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。2.5.2 直接收发模式在直接收发模式下,nRF2401 如传统的射频收发器一样工作。在直接发送时接口引脚为CE、DATA。当微控制器有数据要发送时,把CE 置高,nRF2401 射频前端被激活。所有的射频协议必须在微控制器程序中进行处理(包括字头、地址和CRC 校验码)。在直接接收模式时接口引脚为CE、CLK1 和DATA。3一旦nRF2401 被配置为直接接收模式,DATA 引脚将根据天线接收到的信号开始高低变化(由于噪声的存在), CLK1 引脚也开始工作,一旦接收到有效的字头,CLK1 引脚和DATA 引脚将协调工作,把射频数据包以其被发射时的数据从DATA 引脚送给微控制器,字头必须是8 位。由于DR 引脚没用上,所有的地址和CRC 校验必须在微控制器内部进行。72.4.3 器件配置nRF2401的所有配置工作都是通过CS、CLK1 和DATA 三个引脚完成,把其配置为ShockBurstTM 收发模式需要15 字节的配置字,而如把其配置为直接收发模式只需要2 字节的配置字。由上文对nRF2401 工作模式的介绍,我们可以知道,nRF2401 一般工作于ShockBurstTM 收发模式,这样,系统的程序编制会更加简单,并且稳定性也会更高,因此,下文着重介绍把nRF2401 配置为ShockBurstTM 收发模式的器件配置方法。ShockBurstTM 的配置字使nRF2401 能够处理射频协议,在配置完成后,在nRF2401 工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。在配置模式下,注意保证PWR_UP 引脚为高电平,CE 引脚为低电平。8配置字从最高位开始,依次送入nRF2401。在CS 引脚的下降沿,新送入的配置字开始工作。3 硬件设计图4为基于PS/2接口的无线数据传送模块系统的原理图本设计硬件主要由三个模块组成:MAX232与单片机的通讯模块,PS/2接口的键盘与无线发射模块的数据传送模块,无线接收模块模块。其流程图如图5所示。 图 4 基于PS/2接口的无线数据传送系统原理图MAX232STC89S52RC12864液晶PS/2接口的键盘nRF24L01的发射模块nRF24L01的接收模块块图5 设计的流程图3.1 MAX232与单片机的通讯在MAX232与单片机进行通信时,串行口的SBUF是作为同步移位寄存器使用的。在串行口发送时,SBUF相当于一个并行进入、串行输出的移位寄存器,由单片机的内部总线并行接收8位数据,并从RXD信号线串行输出。在接收操作时,它又相当于一个串行输入、输出的移位寄存器。4在本设计中MAX232与单片机的串口通信原理图如图6。 图6 MAX232 的通信原理图3.2 PS/2接口的键盘与无线发射模块的数据传送在本设计中PS/2键盘与STC89S52RC单片机的连接方式如图9所示。P0.6口接PS/2数据线;P3.2(INT0)接PS/2时钟线,即采用外部中断0的方式来接受PS/2接口键盘的传输数据。从设备到主设备的通信当从设备向主设备发送数据时,首先检查时钟线,以确认时钟线是否为高电平。如果是高电平,从设备就可以开始传输数据;反之,从设备要等待获得总线的控制权,才能开始传输数据。传输的每一帧由11位组成,发送时序及每一位的含义如图7所示。 图7 从设备到主设备的通信每一帧数据中开始位总是为0,数据校验采用奇校验方式,停止位始终为1。从设备到主设备通信时,从设备总是在时钟线为高时改变数据线状态,主设备在时钟下降沿读人数据线状态。 主设备到从设备的通信 主设备与从设备进行通信时,主设备首先将时钟线和数据线设置为“请求发送”状态,具体方式为:首先下拉时钟线至少100us抑制通信,然后下拉数据线“请求发送”最后释放时钟线。在此过程中,从设备在不超过10us的间隔内必须检查这个状态,当设备检测到这个状态时,它将开始产生时钟信号。此时数据传输的每一帧由12位构成,其时序和每一位含义如图8所示。图8 主设备到从设备的通信与从设备到主设备通信相比,其每帧数据多了一个ACK位。这是从设备应答接收到字节的应答位,由从设备通过拉低数据线产生,应答位ACK总是为0。主设备到从设备通信过程中,主设备总是在时钟线为低电平时改变数据线的状态,从设备在时钟上升沿读人数据线状态。STC89S52PS/2键盘GNDGND+5VVCCCLKDATAP3.2P0.6图9 硬件连接电路 单片机接收完数据后便要进入nRF24L01的发射模块。在本设计中nRF24L01选择ShockBurstTM收发工作模式。在ShockBurstTM 发射流程中,接口引脚为CE,CLK1,DATA,当微控制器有数据要发送时,其把CE 置高,使nRF24L01 工作。当nRF24L01工作后,才把接收机的地址和要发送的数据按时序送入nRF24L01,随后微控制器把CE 置低,激发nRF24L01 进行ShockBurstTM 发射。73.3 无线接收模块模块在nRF24L01工作在ShockBurstTM 接收流程中,接口引脚CE、DR1、CLK1 和DATA(接收通道1),首先要配置本机地址和要接收的数据包大小。8一但进入接收状态,便把CE 置高,200us 后,nRF2401进入监视状态,等待数据包的到来。当接收到正确的数据包(正确的地址和CRC 校验码),nRF2401自动把字头、地址和CRC 校验位移去,nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器,之后微控制器把数据从nRF2401移出,所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它工作流程。9在本设计中如果键盘中敲入数据100,并按ENTER键发送,经无线模块传送数据后会在液晶屏中显示用户的消费金额,显示界面如图10。图10 PS/2接口键盘的液晶屏显示界面4 软件流程图4.1 主程序主程序先对系统初始化,开机时先显示“基于PS/2接口的无线数据传送系统;学生:张晓燕;指导老师:蒯剑”,来显示开机信息,同时检查液晶屏的显示是否正常。延时5S后液晶屏显示“请输入您消费金额”来提示用户输入数据。此后等待外部中断和串口中断。在外部中断发生后则进入外部中断处理子程序,后再响应串口中断。在有串口中断的情况下会直接响应,并在液晶屏上显示“您已经充值金额为”来提示用户,并将充值数据显示在液晶屏上。主程序流程图如图11所示。开始系统初始化显示程序外部中断串口中断NNYRI接收数据Y外部中断子程序图11 主程序流程图4.2 外部中断子程序在有外部中断发生时,表示PS/2接口的键盘将向单片机发送数据,待数据发送完成后,单片机保存数据并由无线发射模块发射出去。其程序流程图如图12所示。nRF24L01发射数据外部中断Bitcounet=11?Y数据为1?Bitcounet-1NBitcount=2?YBitcount=1?YBitcoun=1并解码NNNrechar_data右移图12 外部中断子程序流程图4.3 上位机程序部分上位机一般是PC机,上位机软件是能够通过PC机控制下位机(单片机)或和下位机进行交互(通信,数据交换等),一般是一个和下位机通信的PC接口,比如常用的上位机软件编程环境有VB,VC+,Delphi,LabVIEW,Qt4(Linux环境)等。上位机和下位机的连接一般用RS232(串口)或USB协议。 在本设计中是用VB编写上位机,通过MAX232进行通信。上位机的发送程序为:Dim fasong(0) As ByteStatic shuzi As Integerfasong(0) = Val(Text1.Text)shuzi = Val(Text17.Text)Text17.Text = shuzi + Val(Text1.Text)MSComm1.Output = fasong上位机的接受程序为:Private Sub MSComm1_OnComm() Dim rec As StringSelect Case MSComm1.CommEventCase comEvReceive rec = MSComm1.Input Text9.Text = rec MSComm1.InBufferCount = 0End Select上位机的设置如下:MSComm1.Settings = 9600,n,8,1MSComm1.CommPort = 8MSComm1.RThreshold = 1 每一个字符到接收缓冲区都触发接收事件MSComm1.SThreshold = 1MSComm1.InputLen = 0 设置从接受缓冲区读取的字数,为0读取整个缓冲区MSComm1.InputMode = comInputModeText 接收时以文本形式接收MSComm1.InBufferSize = 512 设置接收缓冲区为512 字节MSComm1.OutBufferSize = 512 设置发送缓冲区为512 字节MSComm1.InBufferSize = 8MSComm1.OutBufferSize = 2MSComm1.PortOpen = TrueMSComm1.Output = Text2.Text Me.Caption = 个人资金管理系统上位机的界面如图13:图13 上位机的界面图当在本次输入金额中输入数值时,会通过MAX232串口通信,并显示在液晶屏上,同时会在总资金对应的文本框中将数值累加。图13便是连续两次发送充值100元的效果。5 调试及性能分析硬件调试前先检查印制板的质量问题,在检查无误后可通电检查。本设计的PCB板如图14所示。软件调试用Keil C51编译器,源程序编译应分段或以子程序为单位逐个进行,最后可结合硬件运行调试。在单片机下载程序后,上电复位后,液晶屏的显示界面如图15所示。 图14 基于PS/2接口的无线数据传送系统的PCB图图15 基于PS/2接口的无线数据传送系统的上电显示界面图16是在上位机界面输入充值金额100并点击发送按键后,通过MAX232传输液晶屏的显示界面。图16 上位机充值液晶屏的显示界面通过调试后,可验证无线数据传送系统的数据传送良好。6 结论随着社会的发展对个人理财能力的要求越来越高,如何管理理财一值是一个令人头疼的问题。基于PS/2接口的无线数据传输系统设计的这套个人理财管理系统,液晶屏显示清除,提示一目了然,PS/2键盘接口更加灵巧,无线传输数据的方便快捷,相信这套系统能够得到一定的应用。致谢 光阴似箭,四年的时光转瞬即逝。在大学的这四年时间里,各任课老师严谨求实的治学态度,广阔的胸襟及对学生的孜孜不倦地教诲,让我深深铭记。各老师的学术造诣和执着的敬业精神值得我永远学习。借此论文完成之际,谨向各位任课老师致以崇高的敬意和多年来对我的关心和帮助表示诚挚的感谢。在这里我要特别感谢我的论文导师蒯剑老师,他为人随和热情,治学严谨细心。从选题、定题、撰写提纲,到论文的反复修改以及对不懂的地方耐心讲解,直至定稿,蒯老师始终认真负责地给予我深刻而细致地知指导。正是有了他的无私帮助和热情鼓励,我的毕业论文才得以顺利完成。参 考 文 献1 李建忠.单片机原理及应用.西安:西安电子科技大学出版社,2008.022 郭天祥.51单片机C语言教程.北京:电子工业出版社,2009.63 古辉.微型计算机接口技术.北京:科学出版社,2006.024 卢瑞文.自动识别技术.北京:化学工业出版社,2005.075 刘长军,黄卡玛,闫丽萍.射频通信电路设计.北京:科学出版社,2005.096 路德维格.射频电路设计理论与应用.北京:电子工业出版社,2002.057 陈邦媛.射频通信电路(第2版).北京大学出版社,2006.08 8 林云.射频通信电路.武汉:华中科技大学出版社,2009.089 覃辉.nRF无线SOC单片机原理与高级应用.北京:北京航空航天大学出版社,2009.09Based on the PS / 2 interface of wireless data transmission system AbstractThis paper designs a PS / 2 interface based on wireless data transmission system. Keyboard input data through the PS / 2 interface to rf launch module. In the 100 metres of rf receive send and receive data module, and displayed on the LCD screen. MAX232 again through the SCM, thus realize on serial communication with PC information exchange.Keywords: PS / 2 interface, Radio Frequency, microcontroller, MAX232 附件:/*基于PS/2的无线数据传送系统*/* 设计者: 张晓燕 */* 指导老师: 蒯 剑 */#include #include /#include #define uchar unsigned char#define uint unsigned intbitPS2_SGN_DATA=P06;sbit PS2_SGN_CLOCK=P32; sbit led=P25;bit ps_flag;unsigned char ps2_revchar_cnt ;uchar ps_rechar;uchar bitcount =11;uchar input=0;uchar k_buf4;uchar mcu_rechar;sbit k_data = P26;/定义PS的时数据引脚 sbit k_clk=P32; /定义PS的时钟引脚 sbit LCD_SID=P10; /串行的数据口sbit LCD_SCLK = P11 ; /串行的时钟信号bit revchar_flag;bit F0_FLAG;uchar code dis1 = 基于PS/2接口的无;uchar code dis2 = 线数据传送系统 ;uchar code dis3 = 学 生:张晓燕;uchar code dis4 = 指导老师:蒯 剑;uchar code dis5 = 请输入您消费金额;uchar shu1,shu2,shu3;uchar code dis7 = 您已经充值金额为;uchar codetable10=0,1,2,3,4,5,6,7,8,9;uchar code tab3;uchar str6;unsigned char mcu_revchar;#define delayNOP(); _nop_();_nop_();_nop_();_nop_();void lcd_pos(uchar X,uchar Y);void ps2_sendchar(unsigned char sentchar);uchar flag,a,i;/*/* */* 延时函数 n ms */* */*/void delay(int ms) while(ms-) uchar i; for(i=0;i0;k-) for(i=1000;i0;i-)for(j=1000;j0;j-);void delay100us()uchar i; for(i=0;i100;i+) _nop_(); void delay_us(uchar time) uchar i;for(i=0;itime;i+)_nop_(); void lcd_wbyte(uchar byte_data)uchar i;for(i=8;i;i-) /这句可以完美的编译出汇编的DJNZ来 LCD_SID=(bit)(byte_data&0x80);/高位先传输_nop_(); /必须添加,否则会影响传输数据的准确性。LCD_SCLK=1;byte_data=1;LCD_SCLK=0; /*/* */* LCD初始化设定 */* */*/void lcd_wcmd(uchar cmd)/传输命令lcd_wbyte(0xf8);/A为0(从MCU到LCD),B为0(控制命令),C固定为0_nop_(); lcd_wbyte(cmd&0xf0);_nop_(); lcd_wbyte(cmd&0x0f)4);delay(1);void lcd_wdata(uchar dat)/传输要显示的数据lcd_wbyte(0xfa);/A为0(从MCU到LCD),B为1(显示的数据),C固定为0_nop_(); lcd_wbyte(dat&0xf0);_nop_(); lcd_wbyte(dat&0x0f)4);delay(1);void lcd_init() lcd_wcmd(0x34); /扩充指令操作 delay(4); lcd_wcmd(0x30); /基本指令操作 delay(4); lcd_wcmd(0x0C); /显示开,关光标 delay(4); lcd_wcmd(0x01); /清除LCD的显示内容 delay(4);void init ()TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;REN=1;SM0=0;SM1=1;EA=1;ES=1;/串口中断允许void ps2_sentchar(unsigned char sentchar)uchar sentbit_cnt= 0x00; uchar sentchar_chk = 0x00; EX0=0; /关外部中断0 PS2_SGN_CLOCK = 0; /将时钟线拉低并保持100 us delay100us(); PS2_SGN_DATA= 0; /起始位 PS2_SGN_CLOCK = 1; for(sentbit_cnt=0;sentbit_cnt=1; /待发送数据右移一位 /发送校验位 while(PS2_SGN_CLOCK) _nop_(); /等待时钟线变低 switch(sentchar_chk) case 0: case 2: case 4: case 6:PS2_SGN_DATA =1;break;/奇校验 case 1: case 3: case 5: case 7:PS2_SGN_DATA =0;break;/奇校验 default:break; while(!PS2_SGN_CLOCK) _nop_(); /等待时钟线变高 while(PS2_SGN_CLOCK) _nop_(); /等待时钟线变低 PS2_SGN_DATA =1;/发送停止位,停止位总为1 while(!PS2_SGN_CLOCK) _nop_(); /等待时钟线变高 while(PS2_SGN_CLOCK) _nop_(); /等待时钟线变低 /接收ACK /if(PS2_SGN_DATA) error(); /ACK信号由键盘发出,总为低电平 while(!PS2_SGN_CLOCK) _nop_(); /等待时钟线变高 EX0= 1; /开外部中断0 void decode(uchar rechar_data) static shuzhi,temp;uint temp0;uchar k; +k; if(rechar_data!=0x00) lcd_pos(2,k); /设置显示位置为第一行的第1个字符 if(rechar_data!=Z)if(rechar_data=p)lcd_wdata(0);temp0=0;if(rechar_data=i)lcd_wdata(1);temp0=1;if(rechar_data=r)lcd_wdata(2);temp0=2;if(rechar_data=z)lcd_wdata(3);temp0=3;if(rechar_data=k)lcd_wdata(4);temp0=4;if(rechar_data=s)lcd_wdata(5);temp0=5;if(rechar_data=t)lcd_wdata(6);temp0=6;if(rechar_data=l)lcd_wdata(7);temp0=7;if(rechar_data=u)lcd_wdata(8);temp0=8;if(rechar_data=)lcd_wdata(9);temp0=9;temp=temp+temp0*10; else if(rechar_data=Z)shuzhi=temp;lcd_pos(3,0); lcd_wdata(tab1);temp=0;lcd_init();k=0; /*接收键盘发射的代码*/ void Keyboard_out (void) interrupt 0 using 0 static uchar rechar_data;switch(bitcount)case 11:if(PS2_SGN_DATA)led=1; return; else bitcount-; break; case 2:bitcount-;break;case 1:bitcount-;if(!PS2_SGN_DATA)bitcount=11;return;elsebitcount =11; decode(rechar_data);break;default:rechar_data=rechar_data

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论