数电实验之--PS2键盘接口控制器设计_第1页
数电实验之--PS2键盘接口控制器设计_第2页
数电实验之--PS2键盘接口控制器设计_第3页
数电实验之--PS2键盘接口控制器设计_第4页
数电实验之--PS2键盘接口控制器设计_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

1、数字电路实验报告 -PS2键盘接口控制器设计 姓名:赵岩琨 班级:05101 学号:050024 班内序号:24 日期:2007-11-6PS2键盘接口控制器设计一. 实验任务设计一个PS/2键盘接口控制器。1、必做 按照PS/2键盘接口标准设计一个控制器,接收PS/2键盘发送的数据,用数码管显示接收到的键值(只显示09,az,部分不便用数码管显示的字符可自行设定显示方式,接收到其他键值则不显示)。2、 选做:用8×8点阵做显示屏,显示所有按键的键值。二、实验所用仪器及元器件数字系统与逻辑设计实验开发板PS2键盘直流稳压电源二. 硬件说明1、PS/2键盘PS/2键盘具有六脚miniD

2、IN连接器,如图1所示。其中只有四个脚有意义,分别是:CLOCK(时钟脚),DATA(数据脚),+5V(电源脚)和GROUD(电源地),其余两个脚为保留脚。键盘和开发板只要保证四个有意义的脚接正确就可以了。数据和时钟脚都是集电极开路的,所以它们通常保持高电平(逻辑1)并且很容易被拉到低电平(逻辑0),并且在接这两个管脚的设备必须有一个大的上拉电阻,虽然在本实验中不需要焊接硬件电路,但了解这一点还是有必要的。 图一 PS/2键盘的Mini-DIN连接器在具体的实验过程中,PS/2键盘通过CLOCK管脚来控制通信方向并且充当本次实验的一个时钟管脚,DATA管脚用来收发数据,本实验中主要使用它来发送

3、数据,每按下一个键,DATA管脚发送一个数据帧,具体格式如表一所示1个起始位总是逻辑08个数据位(LSB)低位在前1个奇偶校验位奇检验1个停止位总是逻辑11个应答位仅用再主机对设备的通讯中 表一 PS/2键盘扫描码DATA管脚传输的数据是指对特定的符号的编码,采用第二套扫描码集所规定的扫描码集编码。分为通码和断码,通码是指按键接通时所发出的8位编码,断码是指按键断开时发出的16位编码。如按下A,DATA管脚就发送“1C”8位编码,当松开A时,DATA管脚发送“F01C”16位编码。本实验为了降低难度只读取了通码的8个数据位,忽略了其他数据。2 数字系统与逻辑设计实验开发板本次实验主要使用了开发

4、板的数码管部分和点阵显示部分,数码管在以前的实验中已经使用过许多次,基本功能都已掌握,这里不做过多说明。点阵显示模块点阵由8行8列一共64个发光二极管组成,如图2所示,对外一共有16个管脚,RW1ROW8,COL1COL8,分别控制8行8列,点阵一个点亮的条件是,该点所在的行为高电平,所在的列为低电平。由于采用点阵显示模块一次只能显示一行或者一列,所以要采用快速扫描方法扫描各行,利用人眼的视觉暂留现象顺利显示字母。三、硬件流程图按键数据处理SW1拨在高位数码管显示点阵显示四、软件流程及实现方法软件部分主要由三部分(四个进程)构成第一部分: 按键信息的获取,由于PS/2键盘由DATA管脚串行发送

5、数据,但我们需要的是并行数据来进行数据处理,所以首先要进行串并转换获得我们需要的数据,具体实现代码如下: if(psclk'event and psclk='0') then if(psdat='0' and read_ctr='0')then read_ctr<='1' counter<="0000" elsif (read_ctr='1') then if counter<"1001" then counter<=counter+1; da

6、ta_temp(7 downto 0)<=data_temp(8 downto 1); data_temp(8)<=psdat; else read_ctr<='0' getdat<=data_temp(7 downto 0); counter<="0000" end if; end if; end if;上述代码中采用了PS/2键盘的时钟频率作为软件的频率,目的是使接受信号的频率与发送信号的频率一致 read_ctr的作用是判断psdata的逻辑0是我们所需要的数据,还是发送数据前的0(在发送数据前会将DATA 管脚的点评拉低

7、)读取数据时我们只要8位数据位,每次读取一位数据,采用压栈的方式存进data_temp中,但是8位数据位之前会有一位起始位,通过getdat<=data_temp(7 downto 0);语句将u丢弃。第二部分,数码管显示部分根据接受到的信号,我们向led写入相应的数据来显示字符,例如,当接受到的数据位为"00011100"(对应A),则通过led<="11101110”使数码管显示字母A,但在进行数据判断之前,首先会判断choose位Choose 用来 控制数码管显示 点阵显示,当choose=1时,对应的是数码管显示。第三部分,点阵显示 这部分比较

8、复杂,如前面所说,如果想得到真个点阵显示字符的效果,必须通过快速扫描的方式,所以这部分由两部分组成,一个进程负责扫描控制,一个进程负责控制相应的字符显示 扫描控制: if (clk'event and clk='0')then if(number=8) then number<=1; else number<=number+1; end if; end if;通过赋给number相应的数据(18)来使对应的行的二极管亮灭来显示数据 显示控制: when "00011100"=> -'A' case number is

9、 when 1=>row_out<="10000000"col_out<="11101111" when 2=>row_out<="01000000"col_out<="11111111" when 3=>row_out<="00100000"col_out<="11010111" when 4=>row_out<="00010000"col_out<="11111111&q

10、uot; when 5=>row_out<="00001000"col_out<="10000011" when 6=>row_out<="00000100"col_out<="11111111" when 7=>row_out<="00000010"col_out<="01111101" when 8=>row_out<="00000001"col_out<="111111

11、11" when others=>row_out<="00000000"col_out<="11111111" end case;五、仿真波形(按键输入是A)A数码管显示的仿真译码输出是11101110是A的数码管上的译码。B点阵扫描仿真(实验结果没有仿真出来,这是别人的图)逐行显示B的译码。六、 关键技术及问题的解决方案关键技术:关键技术1:串并转换解决方案:由于PS/2键盘在发送数据之前会将DATA管脚拉低,所以当DATA管脚为0时,准备接受数据,但是由于DATA在发送有效数据时也会出现0的情况,为了区别这两种种情况,又添加了一个标志为,当DATA 在发送数据时,将其置1,当DATA 不再发送数据时,将其置零,当DATA出现0时,通过判断标志位来决定是否重新开始接受数据关键技术2:将转化得到的字母并行通码译码并在点阵上显示解决方案:主要同过快速扫描的方法 利用人眼的视觉暂留来“显示”字幕。以行为单位,逐行扫描, 程序所占资源图:七、实验心得及体会1、 关于资料信息的读取,本实验所给的实验资料很复杂,但是

温馨提示

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

评论

0/150

提交评论