基于PS2协议的条码扫描器与单片机接口设计
十五.标准键盘 PS/2与单片机通信
十五.标准键盘PS/2与单片机通信[实验任务]标准键盘PS2 向单片机输入数字.字母.字符等,用128X64 液晶显示器显示出来。
[硬件电路图][实验原理]键盘通过时钟线和数据线和单片机通信,键盘和系统的相互通信都是采用11 位格式的串行方式。
第1 位是起始位0;第2 到9 位是8 位数据位,第10 位是奇偶校验位。
第11位停止位。
时序图如下[C语言源程序]//注意与第十三个实验128X64液晶显示器的基本应用一样,以下提供程序并没//有包含128X64 液晶显示驱动程序,只有主程序和PS2 键盘通信的驱动程序。
//请大家到QQ 群:19305255,资源共享里面去下//以下程序只有单片机接收PS2 键盘程序,没有单片机向PS2 发送命令程序。
//还有键盘数据处理上不是很完善,主要是为用户提供一个参考程序。
//如果把此实验看作是一个系统的话,那么这一个系统就是一个漏洞百出,充满//Bug 系统。
大家在用的时侯可以对它多作改进。
#include<reg52.h>#include<lcd12864.h>//包含128X64 驱动程序#include<hzzi.H> //包含图片和汉字库sbit Key_Data =P2^0;//定义Keyboard 数据端口引脚sbit Key_CLK=P3^3; //中断端口,时钟线static unsigned char KeyV=0X00; //键值static unsigned char BF = 0; //标识是否有字符被收到static unsigned char IntNum = 0; //中断次数计数unsigned char lie,hang;//lie 为列值, hang 为行值bit dx=0; //大小写标志dx==1 时大写状态void Keyboard_out(void) interrupt 2//键盘中断处理键值存储在KeyV 中{if ((IntNum>0) && (IntNum <9)){KeyV = KeyV >> 1; //因键盘数据是低>>高,结合上一句所以右移一位if (Key_Data==1) //当键盘数据线为1 时{KeyV = KeyV | 0x80;} //存储一位}IntNum++; //中断次数加一(中断一次接收一位数据)if (IntNum > 10) //中断11 次后数据发送完毕{IntNum=0; //当中断11 次后表示一帧数据收完,清变量准备下一次接收BF = 1; //标识有字符输入完了EA = 0; //关中断等显示完后再开中}}void Decode() //键值处理{unsigned char data TempCyc;signed char data k;TempCyc=KeyV;if(BF==1) //接收完一个有效数据时{BF=0; //准备下一次接收switch ( TempCyc ) //键值与显示字符的对应关系{ //键值// //对应字符//case 0x8A: k=0; break; //0 case 0x3C: k=2; break; //2case 0x2C: k=1; break; //1 case 0x4C: k=3; break; //3case 0x4A: k=4; break; //4 case 0x88: k=24; break;case 0x5C: k=5; break; //5 case 0x9A: k=25; break;case 0x6C: k=6; break; //6 case 0x2A: k=26; break;case 0x7A: k=7; break; //7 case 0x5A: k=27; break;case 0x7C: k=8; break; //8 case 0x36: k=28; break;case 0x8C: k=9; break; //9 case 0x58: k=29; break;case 0x38: k=10; break; //a case 0x78: k=30; break;case 0x64: k=11; break; //b case 0x54: k=31; break;case 0x42: k=12; break; //c case 0x3A: k=32; break;case 0x46: k=13; break; //d case 0x44: k=33; break;case 0x48: k=14; break; //e case 0x6A: k=34; break;case 0x56: k=15; break; //f case 0x34: k=35; break;case 0x68: k=16; break; //g case 0x98: k=63; break;case 0x66: k=17; break; //h case 0xAA: k=65; breakcase 0x86: k=18; break; //i case 0xF2: k=68; break;case 0x76: k=19; break; //j case 0x52: k=-16;break; //空case 0x84: k=20; break; //k case 0xB0: k=101;breacase 0x96: k=21; break; //l 大小写控制键Caps lockcase 0x74: k=22; break; //m }case 0x62: k=23; break; //nif(k==101) {dx=!dx;} //按下大小写控制键时大小写标志取反if(k==-16) //空格键按下时{lcd_putchar8x8(lie, hang, -16+'0'); //清除光标lcd_putchar8x8(lie+8, hang, 79+'0');//光标移一位}if(dx==0) //小写状态时显示{lcd_putchar8x8(lie, hang, k+'0');//小写字符lcd_putchar8x8(lie+8, hang, 79+'0');//光标}if(dx==1)//大写状态时显示{if(k>9 && k<=35){lcd_putchar8x8(lie, hang, (k+26)+'0');//大写字符lcd_putchar8x8(lie+8, hang, 79+'0');//光标}if(k>=0 && k<=9){lcd_putchar8x8(lie, hang, (k-10)+'0');//数字键对应的符号lcd_putchar8x8(lie+8, hang, 79+'0');//光标}}if(lie==120) //写满一行{lie=0;hang=hang+1;//换行lcd_putchar8x8(lie, hang, 79+'0');}//光标下移else {lie=lie+8;}EA=1;}}void delay(int x) //延时程序{ int i,j;for(i=0;i<600;i++)for(j=0;j<x;j++); }void wlcome() //开机画面和欢迎界面{lcd_init(); //初始化液晶驱动硬件hz_disp(lie+24,hang, shu );//'输' lcd_clr(); //清屏hz_disp(lie+40,hang, ru);//'入'Disp_Img(yema);//显示一张图片hz_disp(lie+56,hang, xi);//'系' delay(200); //延时等待hz_disp(lie+72, hang, tong);//'统'lie=20; hang=1; delay(200);lcd_clr();lcd_clr(); lie=8; hang=0;hz_disp(lie+0, hang, huan);//'欢' hz_disp(lie+16,hang, qing);// '请' hz_disp(lie+16,hang, ying);//'迎' hz_disp(lie+32,hang, shu);//'输' hz_disp(lie+32,hang, shi);//'使' hz_disp(lie+48,hang, ru);//'入'hz_disp(lie+48,hang, yong);//'用' hz_disp(lie+64,hang, zi);//'字'hz_disp(lie+64,hang, DP);//'DP' hz_disp(lie+80,hang, fu);//'符'hz_disp(lie+80,hang, Y);//'Y' for(lie=0;lie<128;lie++)//画一条直线lie=8;hang=4; {set_point(lie,15);}}void main(){wlcome() ; //调用开机画面和欢迎界面子程序IT1 = 1; //设外部中断1 为下降沿触发EA = 1; //开总中断EX1=1; //开中断1hang=2; lie=0;//输入的字符从第2 行第0 列开始显示while(1){Decode();delay(50);}}。
PS2协议单片机实时模拟的实现
第39卷
Realizaion of real-time simulation of PS/2 protocol through chip micro-controller
XUE Mengqian,OUYANG Binlin,GUO Li,WANG Lu
(Engineering College。Northeast A鲥cultural University,Harbin 150030,China)
通过课题的研究,成功设计了无线课堂教学网络的PDA终端并且制作出产品。产品在实际使用过程中能够符合功能要求并且性能稳定可靠,证实本文 在硬件电路设计和软件架构设计上所作的论证是切实可行的。
引证文献(1条)
1.滕一宁.赵玉刚.高玉龙 基于PS/2协议和AT89S51的数控设备专用键盘设计[期刊论文]-山东理工大学学报(自然
(东北农业大学工程学院,哈尔滨150030)
摘要:PS/2协议用于键盘和鼠标中,文中介绍了PSl2接口协议的内容以及数据传输的时序图,并且给出了
以AT89C52单片机作为主机与鼠标进行通讯的一个例程,该例中单片机利用外部中断串行的接收鼠标上传的数
据。
关键词:PS/2协议;AT89C52单片机;中断
中图分类号:TP368.1:TP334
Key worBiblioteka s:PS/2 protocol;AT89C52 micro-controller;interrupt
万方数据
PS/2协议单片机实时模拟的实现
作者:
作者单位: 刊名: 英文刊名: 年,卷(期): 被引用次数:
薛孟谦, 欧阳斌林, 果莉, 王璐, XUE Mengqian, OUYANG Binlin, GUO Li, WANG Lu 东北农业大学工程学院,哈尔滨,150030
单片机实现PS_2键盘的接口设计及模块化编程
本栏目责任编辑:谢媛媛开发研究与设计技术1PS/2通讯简述PS/2接口有4个有效管脚:电源地、5V、数据和时钟,见图1。
主机提供5V,并且外设的地连接到主机的电源地上。
数据和时钟都是集电极开路的。
PS/2外设履行一种双向同步串行协议。
换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。
外设可以发送数据到主机而主机也可以发送数据到外设,但主机总是在总线上有优先权,它可以在任何时候抑制来自于外设的通讯,只要把时钟拉低即可。
2键盘构成及其硬件设计键盘由按键阵列和识键、通讯电路构成。
键盘按键构成的电路原理如图2。
按键设置在行列线交叉点上,行列线分别连接到按键开关的两端。
行线通过上拉电阻接到+5V上。
平时无按键动作时,行线处于高电平状态,当有按键按下时,行线电平状态将由与此行线相连的列线电平决定。
如果列线为低电平,则行线为低电平;如果列线为高电平,则行线也为高电平。
这是识别矩阵键盘按键是否被按下的关键。
图2键盘按键构成的电路原理本设计以AT89C52为例,对键盘按键阵列的扫描以及与PC机的通讯电路进行设计,见图3。
其中KEY_CLK和KEY_DAT对应PS/2接口的时钟线和数据线,负责键盘与PC机之间的通讯对话。
3模块化编程设计键盘程序需要按PS/2协议要求跟主机PS/2接口进行正常的通讯,同时对键盘按键进行扫描及去抖,并向主机发送按键相应的扫描码(包括通码和断码)。
其模块流程如图4。
3.1PS/2协议接口通讯模块主机和外设通过PS/2接口进行双向通讯。
从外设发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到外设的数据在上升沿(当时钟从低变到高的时候)被读取。
不管通讯的方向怎样,外设总是产生时钟信号。
图3键盘控制电路图3.1.1设备到主机的通讯过程当键盘想要发送数据时它首先检查时钟以确认它是否是高电平;如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据,直到重新获得总线的控制权(键盘有16字节的缓冲区)。
用单片机来模拟ps2电脑键盘的程序
用单片机来模拟ps2电脑键盘的程序//本程序可实现用单片机来代替ps2键盘来给电脑输入数据.//您只需从单片机上引出2根线到电脑的ps/2接口就可实现//本程序在51hei-5开发板上测试通过//跳线设置:默认//晶振:6M#include<reg51.h> //包含单片机寄存器的头文件#include<intrins.h> //包含_nop_()函数定义的头文件//#include"51hei.h"/************************************************************** *****************以下是引脚定义*************************************************************** ****************/sbit PS2CLK=P3^5;sbit PS2DAT=P2^7;/*****************************************************函数功能:延时1ms(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒***************************************************/void delay1ms(){unsigned char i,j;for(i=0;i<10;i++)for(j=0;j<33;j++);}//===================================== =================================//2051模拟PS2键盘和PC机通讯程序 6M下发送程序代码//程序的完整版本及hex文件下载地址://===================================== =================================PS2keytohost(unsigned char vale){unsigned char h = 0;unsigned char i = 8;unsigned char J;unsigned char t;bit bparity =0 ;ACC = vale;//获取字节的奇偶信息if(!P) //ACC中偶数时,P为0,但是PS2中时奇校验( 字节中的1的个数+校验位 = 奇数){ bparity = 1; }if(PS2CLK&&PS2DAT) //发送前检测PS2总线{for(J = 12 ;J > 0;J--) {;}//6M,大约延时40uS后再检测if(PS2CLK)//时钟线空闲{if(PS2DAT)//数据线空闲{//for(t = 10;t > 0;t--){;} //6M,大约延时20uSfor(J = 11;J > 0;J--) //1共11个数据{if(h == 0) // 送起始位{PS2DAT = 0;h++;}else if(h == 1)//送8位数据位{PS2DAT = vale & 0x01;//先LSB开始vale >>= 1;i--;if(i == 0) //发送完成{ h++; }}else if(h == 2)//送校验位{PS2DAT = bparity;h++;}else{ PS2DAT = 1; } //送停止位for(t = 12;t > 0;t--){;} //6M,大约延时40uS PS2CLK = 0;//拉低时钟线,主机接收for(t = 12;t > 0;t--){;} //6M,大约延时40uS PS2CLK = 1;//拉高时钟线,设备发送if(!PS2CLK) //检测到时钟线变低{ //主机不要这次通讯 (很罕见)return(0);//返回 0}for(t = 6;t > 0;t--){;} //6M,大约延时20uS}//for(J = 11;J > 0;J--)for(t = 12;t >0;t--){;}return(1);//返回 1}//if(PS2DAT)}//if(PS2CLK)}//if(PS2CLK&&PS2DAT)}//end/***************************************************** 函数功能:主函数***************************************************/ void main(void){PS2keytohost(0X1C);while(1){delay1ms(); }}。
单片机系统中PS2键盘驱动程序设计
单片机系统中PS/2键盘驱动程序设计摘要分析PS/2协议;介绍PS/2标准健盘的第二套扫描码和命令集,并给出在单片机系统中支持PS/2健盘的硬件连接方式和利用Keil C51语言实现的驱动程序设计及部分代码。
该驱动程序可以方便地移植到其他单片机或嵌入式系统中。
关健词 PS/2协议 PS/2健盘单片机驱动程序在单片机系统中,经常使用的键盘都是专用键盘。
这类键盘都是单独设计制作的,成本高,连线多,且可靠性不高。
这些问题在那些要求键盘按键较多的应用系统中显得更加突出。
与此相比,在 PC系统中广泛使用的PS/2键盘具有价格低、通用可靠,且使用的连线少(仅使用2根信号线)的特点,并可满足多数系统的要求。
因此,在单片机系统中应用PS/2键盘是一种很好的选择。
本文在分析PS/2协议和PS/2键盘工作原理与特点的基础上,给出在AT89C51单片机上实现对PS/2键盘支持的硬件连接方法以及驱动程序的设计实现。
1 PS/2协议现在PC机广泛采用的PS/2接口为mini - DIN 6引脚的连接器。
其引脚如图1所示。
740)this.width=740" border=undefined>PS/2设备有主从之分,主设备采用female插座,从设备采用male插座。
现在广泛使用的PS/2键盘鼠标均工作在从设备方式下。
PS/2接口的时钟与数据线都是集电极开路结构的,必须外接上拉电阻。
一般上拉电阻设置在主设备中。
主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生。
(1)从设备到主设备的通信当从设备向主设备发送数据时,首先会检查时钟线,以确认时钟线是否是高电平。
如果是高电平,从设备就可以开始传输数据;否则,从设备要等待获得总线的控制权,才能开始传输数据。
传输的每一帧由11位组成,发送时序及每一位的含义如图2所示。
740)this.width=740" border=undefined>每一帧数据中开始位总是为0,数据校验采用奇校验方式,停止位始终为1。
单片机与PS2键盘接口程序
/*---------------------------------------------
2个放键事件处理(集中管理)
----------------------------------------------*/
PS2Buffers.PS2Keyco u* nt = 0;//脉冲计数归零
if (PS2DATA){//高电平是停止位
if (key == 0xe0){//本次是扩展键
PS2Buffers.PS2KeyExtFlage = 0xe0;//置扩展键标志(小键盘只有回车键)
}
else if (key == 0xf0){//本次是键断码,键释放
void int1proc() interrupt IE1_VECTOR using 1
{
unsigned ch* ar i, key;
code unsigned ch* ar PS2TAB[] = {//20键PS2小键盘键码表
0x70,//0
0x69,//1
0x72,//2
0x7a,//3
计数器清零
PS2CLOCK = 1;//释放PS2时钟总线
}
}
}
else PS2Buffers.PS2KeyPopError = 0xed;//置停止位错误号0xed
}
else PS2Buffers.PS2Keyco u* nt = 0;//PS2键盘出错
}
/*------------------------------------------------------------------
PS_2鼠标和单片机的接口
收稿日期:2003-12-08作者简介:赵玉昆(1955-),男,高级工程师.文章编号:1671-7333(2004)01-0048-04PS/2鼠标和单片机的接口赵玉昆(上海应用技术学院机械与自动化工程学院,上海 200235)摘要: 介绍PS/2鼠标的工作原理、数据通讯格式以及和单片机的硬件接口线路和软件接口程序,并有详细的注解。
对于在单片机系统中应用PS/2鼠标具有参考价值。
关键词: PS/2鼠标;单片机;TP8452;接口芯片中图分类号:TP 39 文献标识码:A The Interface of PS/2Mouse and MCUZHA O Y u 2kun(School of Mechanical and Automation Engineering ,Shanghai Institute of Technology ,Shanghai 200235,China )Abstract :This paper introduces the theory and specification of PS/2mouse.The hardware and the software with detailed comments for interface to MCU is presented too.It is beneficial to use PS/2mouse in the MCU application system.Key words :PS/2mouse ;microcontroller ;TP8452;interface 鼠标有RS232串口和PS/2二种接口,在单片机应用中,由于PS/2鼠标是TTL 电平,和单片接口更方便,通常PS/2鼠标控制芯片采用TP8452。
以TP8452为例说明PS/2鼠标的工作原理,其他的PS/2鼠标控制芯片均与TP8452兼容。
TP8452能接受3个按键和2组光电探头的信号,组合成一定格式的信息,传送给系统。
PS2协议的条码扫描器与单片机接口设计
Based on PS/2 Protocol
LI Jianguo,ZHAO Zhanmin,LIU Qing
(School of Information Engineering。ShiJiaZhuang University Of Economies,ShiJiaZhuang,05003 1,China)
图3数据输出时序图
3接口设计实现
当条码扫描器扫描到有效条形码时,会自动产生时钟信号,同时通过数据线按位将扫描码送到单片机。
因此,可利用单片机内部串行口来接收扫描码。因为单片机本身集成了串口通信的IP核,串口的控制是相
当成熟和简单的,只需做软件上的设计。但当单片机的串行口被用来与其他设备通信时,就必须重新设计
n/c
未定义
3
GND
电源地
4
VCC
+5 V电源
5
CU(
时钟信号端
6
n/c
未定义
图2连接器插头
2.2 PS/2协议分析 软件设计的关键是模拟PS/2协议,PS/2协议是键盘与PC连接的双向异步串行通信协议。它选用键码
扫描集作为按键识别体系。扫描码和ASCII码完全不相同,所以接口设计的一个重要任务是在扫描码和 ASCII之间建立一种映射关系,将读取的扫描码转换为ASCII码。对于大多数键码而言,在键盘被打开的情 况下。只要一个键被按下,就一定会产生一个通码;只要一个键被释放,就一定会产生一个断码。于是,对于 一个键值而言,它的组成就是通码+断码。在第二套通码中,对于绝大多数键而言,通码为单字节,断码为 双字节的。其规则为:断码的第一个字节是F0h,第二个字节是这个键的通码。比如:按键“a”的通码为 1CH,而其断码则为FOH,1CH,整个代码ICH,F0h,lcH就表示按键小写字母“a”的一个动作。若在PS/2键 盘中整个击键的过程,先按下左SHIFT键,再按下a键,释放a键,释放左SHIFT键,这些时间段内分别产生 了左SHIFT的通码(12H),A的通码(1CH),A的断码(FOH,1CH),SHIFT断码(FOH,12H),查表后可以得 出产生了12H,1CH,FOH,lCH,FOH,12H这一连串表示大写字母“A”的扫描码¨J。
PS_2协议的研究及其在单片机系统中的应用
7C 、 %#"# 、 DE+./ 。 其 中 B7C 是 由 主 机 提 供 给 外 设 的 电 源 , %#"# 和 DE+./ 都 是 具 有 集 电 极 开 路 性 质 的 双 向 信 号 线 ,
且主 机 和 外 设 都 可 以 控 制 它 们 。但 在 协 议 中 , 主机具有较 高的优先级。 —
! "$ 扫 描 码 转 换 为 对 应 %&’(( 码 的 应 用 程 序
在 主 程 序 将 中 断 口 9AB& 初 始 化 为 下 降 沿 触 发 方 式 , 并 将 34 5 ( 接 口 的 <6E6 线 和 8CD." 线 都 初 始 化 为 空 闲 状 态, 即高电平状态, 使程序在每个时钟下降沿时自动进入
( 下转第 */ 页)
!"# 条 码 扫 描 仪 工 作 原 理
条 码 扫 描 仪 是 通 过 一 个 / 芯 接 口 插 座 +34 5 ( 接 口 , 与 如在计算机系统中, 计 算 机 或 单 片 机+以 下 统 称 主 机,相 接 。 可以直接插入计算机的键盘插孔,其工作原理与键盘相 似。当扫描到有效条形码后, 条码扫描仪会将扫描信号通
00
—
《 微型机与应用》 !""# 年第 ! 期
以 到 数 据 线 上 读 取 数 据 。同 步 时 钟 的 最 大 频 率 为 !!"#$ , 一 般 情 况 下 使 用 %&’(&"#$ 的 频 率 。
过 34 5 ( 接 口 送 至 主 机 , 再 由 主 机 对 其 进 行 处 理 。 但 应 注 意的是: 此时扫描仪送到主机的是条码字符的扫描码而不 是 -4899 码 。例 如 : 在扫描条形码“ 时, 扫描仪会依 %(!*1 ” 次将字符‘ 、 ‘ 、 ……‘ 的扫描码送至主机, 即扫描仪 %’ (’ 1’ 会传送如下数据到接口: ‘ %/# :&# %/# %;# :&#
在51单片机上使用PC机ps2键盘
在51单片机上使用PC机ps/2键盘(附源码)本人弄了几天,终于在今天晚上,也就是刚才实验成功,心情特佳,特写出来以享大家。
单片机上应用非编码键盘,各书上均有介绍。
作为实验用,我想到了用PC机的ps/2键盘。
PC机键盘内部有单片机电路来完成编码和去抖动,它按照ps/2协议来发送扫描码。
因此在应用中,我们需要做的只是将扫描码与字符对应起来,大部分事情都由键盘自己完成了。
首先介绍一下键盘的接口,典型的几种接口如下图:其中第一种用于老式键盘(我原来的键盘就是),第二种便是现在的PS/2键盘,第三个不用去管它。
我的实验是按照最常用的PS/2(即第二种)来做的。
再略微介绍一下PS/2协议的相关内容。
PS/2的一个数据帧为11位,时序如下:PS/2帧的第一位是起始位,为0,然后是8位数据位,发送键盘扫描码的一个字节(扫描码为1-4个字节),然后是奇偶校验位,最后是停止位,为1。
这些是在数据线(即1号引脚线)上发送的。
无键按下时,数据线和始终线都保持为1。
当有键按下时,时钟线CLOCK 送出脉冲,同时数据线送出数据。
主机(此处是89c51 MCU)在始终脉冲的下降沿对数据线采样获得数据。
键盘扫描码包括通码和断码,当键按下时发送通码,抬起时发送断码。
更详细的内容可参考所附的《PS/2技术参考》。
根据上述原理,我这样设计了实验:将键盘的脉冲线接至89c51的外部中断输入口(INT0或INT1),当键按下和抬起时有脉冲产生,此脉冲引发MCU中断。
将键盘的DATA线连至89c51的输入口(如P1.0)。
在中断处理程序中,从输入口读入数据,然后通过循环移位对读进的数据位进行处理,1(起始位)、10(奇偶校验)、11(停止位)可抛弃,如不嫌麻烦也可将奇偶校验位加以应用。
当一个数据帧收完后,将处理后剩下的2-9位(即扫描码)通过串口发至PC机,通过PC机的串口监视软件(如“串口调试助手”)来查看。
硬件连线和源码如下:源码:ORG 0000HAJMP MAIN;转入主程序ORG 0003H ;外部中断P3.2脚INT0入口地址AJMP INT ;转入外部中断服务子程序;以下为主程序进行CPU中断方式设置MAIN:MOV SCON,#50H;设置成串口1方式MOV TMOD,#20H;波特率发生器T1工作在模式2上MOV PCON,#80H;波特率翻倍为2400x2=4800BPSMOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)SETB EA ;打开CPU总中断请求SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发SETB EX0 ;打开INT0中断请求SJMP $INT: CLR EA ;暂时关闭CPU的所有中断请求CJNE R0,#0,L1L3: INC R0SJMP L5L1: CJNE R0,#9,L2SJMP L3L2: CJNE R0,#10,L4SETB TR1;启动定时器T1MOV SBUF,AMOV R0,#0L5: SETB EA ;允许中断RETI ;退出子程序L4: MOV C,P1.0RRC ASJMP L3END搞定后,当按下和释放键时,会在PC机上显示其扫描码。
FPGA控制的PS2接口电路设计 毕业论文 毕业设计
FPGA控制的PS/2接口电路设计摘要:PS2作为键盘接口至今仍在广泛使用。
本论文根据PS2键盘接口的协议,用VHD语言编程,用FPGA控制PS2,使其能够接收从键盘键入的信息,并把它显示在数码管和液晶显示频上。
The Design of PS / 2 Interface Circuit by Control of FPGAAbstract:Today,PS2 keyboard interface is still being used widely.This report is based PS2 keyboard interface protocol, with VHD language programming, using FPGA control PS2, so that it can receive information from the keyboard to type, and display it in the digital frequency of the tube and liquid crystal display.关键词:VHDL,FPGA , PS2, QuartusII引言:PS2是一类应用广泛的键盘接口。
本文论述了用FPGA控制PS2的设计思想及方法,并实现把按键的扫描码及其对应的ASCII码显示在LED及LCD上。
设计原理通过分析,本次设计需要分四部分实现:1.接收从键盘发出的扫描码信息2.把接收到的扫描码转换成ASCII码3.把扫描码和ASCII码显示在数码管上4.把扫描码和ASCII码显示在LED液晶上。
1.PS2键盘接口协议介绍PS2协议和接口最初是由IBM公司开发并广泛使用的应用于键盘/鼠标的协议和接口。
PS2键盘接口是6芯的插头,各插头定义如下:在PS2的6个芯中,2和6未定义,3和4为电源和地,需要用FPGA控制的只有1(数据)和5(时钟)。
2.把从键盘发出的数据转换成扫描码每当有按键按下或弹起时键盘都会发出一帧或几帧数据,每一帧数据一共都12位,其数据格式如下表所示:从键盘发出的数据是在时钟信号的下降沿的时候才被读取,FPGA要想接收到键盘发出的数据就要配合PS2的时序。
实例制作一个51单片机连接PS2键盘
实例制作的是用一个AT89C51单片机连接PS/2键盘接口和一个16x2的液晶显示屏,当敲击键盘时,字母可以显示在液晶显示屏上。
这个实例能启发你如何利用单片机来实现对PS/2接口的控制。
实例中提供的源代码修改后可以用到其他PS/2键盘制作项目中。
实例中提供的16x2字符型的液晶显示屏的驱动函数也可以其他项目。
电路原理主电路板中的AT89C51单片机(可以用AT89C52/S51/S52直接替换,如用AT89C2051/4051则需要改程序)组成了51最小化系统。
液晶显示屏于嗯了SMC1602A. 键盘通过PS/2六孔插座和主电路板。
PS/2设备的连接器使用mini-DIN连接器,正有6个引线,其中2个保留为用。
DATA和CLK是可双向通信的I/O线,也就是说通过这两根线,既可以把主机的数据发送到PS/2设备,有可以把设备的数据发向主机。
在无键按下是,DATA 和CLK一直处于高电平状态。
但有键按下时,键盘先检查CLK,看它是否处于高电平,如果是处在低电平,说明主机无空闲接收数据,这是键盘将会把数据放在自己的缓冲区(16Bytes).直到CLK重新被拉高。
键盘获得总线权,这是键盘产生始终信号在CLK上输出。
同时每一个时钟周期在DATA 线上输出一位数据。
第1位是起始位为0,第2-9位为一个八位二进制数据由地位到高位依次输出,第10位为奇偶校验位下面是电路原理图PS/2设备接口用于许多现代的鼠标和键盘,PS/2连接器上有四个管脚:电源地、+5V、数据和时钟。
Host(计算机)提供+5V并且键盘/鼠标的地连接到host的电源地上,数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地(逻辑0)。
任何你连接到PS/2鼠标、键盘或host 的设备,在时钟和数据线上要有一个大的上拉电阻。
置“0”就把线拉低,置“1”就让线上浮成高。
从键盘/鼠标发送到主机的数据在时钟信号的下降沿(当时钟从高变到低的时候)被读取;从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取。
PS2接口协议和键盘扫描码
PS2接口协议1.PS/2接口标准的发展过程随着计算机工业的发展,作为计算机最常用输入设备的键盘也日新月异。
1983年IBM推出了IBM PC/XT键盘及其接口标准。
该标准定义了83键,采用5脚DIN连接器和简单的串行协议。
实际上,第一套键盘扫描码集并没有主机到键盘的命令。
为此,1984年IBM推出了IBM AT键盘接口标准。
该标准定义了84~101键,采用5脚DIN连接器和双向串行通讯协议,此协议依照第二套键盘扫描码集设有8个主机到键盘的命令。
到了1987年,IBM又推出了PS/2键盘接口标准。
该标准仍旧定义了84~101键,但是采用6脚mini-DIN连接器,该连接器在封装上更小巧,仍然用双向串行通讯协议并且提供有可选择的第三套键盘扫描码集,同时支持17个主机到键盘的命令。
现在,市面上的键盘都和PS/2及AT键盘兼容,只是功能不同而已。
2.PS/2接口硬件2.1 物理连接器一般,具有五脚连接器的键盘称之为AT键盘,而具有六脚mini-DIN连接器的键盘则称之为PS/2键盘。
其实这两种连接器都只有四个脚有意义。
它们分别是Clock(时钟脚)、Data(数据脚)、+5V(电源脚)和Ground(电源地)。
在PS/2键盘与PC机的物理连接上只要保证这四根线一一对应就可以了。
PS/2键盘靠PC的PS/2端口提供+5V电源,另外两个脚Clock(时钟脚)和Data(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。
它们平时保持高电平,有输出时才被拉到低电平,之后自动上浮到高电平。
现在比较常用的连接器如图1所示。
2.2 电气特性PS/2通讯协议是一种双向同步串行通讯协议。
通讯的两端通过Clock(时钟脚)同步,并通过Data(数据脚)交换数据。
任何一方如果想抑制另外一方通讯时,只需要把Clock(时钟脚)拉到低电平。
如果是PC机和PS/2键盘间的通讯,则PC机必须做主机,也就是说,PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。
基于51单片机的PS2键盘1602显示24c02存储的密码锁设计(附程序)
基于51单片机的PS2键盘密码锁设计摘要:AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash 存储器,被广泛应用于各个领域。
LCD1602液晶显示器以其微功耗、体积小、超薄轻巧等诸多优点而备受人们喜爱。
本作品是以AT89S52作为主控芯片,LCD1602作为显示器,以PS2键盘作为输入设备的密码锁。
PS2键盘与AT89S52通过PS2接口协议进行通信,可以完成密码设置,密码重置及显示等诸多功能。
本作品还使用了24C02存储器来实现密码锁的掉电保存功能。
关键词:AT89S52;LCD1602;24C02;PS2键盘Abstract:AT89S52 is a low power,high performance CMOS 8 bit microcontroller, with 8K flash memory, is widely applied in various fields. LCD1602 liquid crystalDisplay with its low power consumption, small size, thin lightweight and many other advantages, is liked by people.This work is based on the AT89S52 as the main chip, the LCD1602 as display, PS2 keyboard as an input device of the cipher lock. PS2 keyboard and AT89S52 through PS2 interface protocolFor communication, can complete password, password reset and display and other functions. This work we also used the 24C02 memory to realize the password lock the power-down save function.Keywork: A T89C52; LCD1602; 24C02;PS/2 keyboard1 实验目的及意义在单片机系统中,经常使用的键盘都是专用键盘.此类键盘为单独设计制作的,成本高、使用硬件连接线多,且可靠性不高,这一状况在那些要求键盘按键较多的应用系统中更为突出.与此相比,在PC系统中广泛使用PS/2键盘具有价格低、通用可靠,且使用连接线少(仅使用2根信号线)的特点,并可满足多种系统的要求.因此在单片机系统中应用PS/2键盘是一种很好的选择.对于单片机初学者的我而言,AT89S52简单易学,非常适合我学习。
条码扫描器硬件设计
The Hardware Design of Barcode Scanner摘要论文首先介绍了条码扫描器的发展趋势以及国内外的概况,并且对单片机的结构和特点进行了详细的阐述,然后在此基础上进行系统的设计。
设计的主要内容有:单片机、无线传输系统、条码扫描系统、供电系统、键盘系统、报警提示系统和显示系统。
系统的核心模块包括单片机、无线传输模块以及条码扫描模块。
单片机采用的为SoC单片机芯片,并且对此芯片以及各应用模块的应用的进行了详细的介绍和说明。
系统设计了单片机的I/O接线图,并且设定了各个管脚的功能。
无线传输系统采用STR-11微功率无线数据传输模块,介绍了此模块的特点、连接端子定义及连接示意图。
条码扫描系统选用了SE-923II 类激光扫描引擎,详细介绍了激光扫描器的各个部件。
关键词条码扫描器单片机AbstractFirst of all, the paper introduced the developing trends and the overview at home and abroad of the barcode scanner, setout the structure and character of the singlechip also. Then it designs the system basing on the singlechip. The main design includes some aspects, for example, the singlechip, the system of wireless transmission, the system of barcode scanning, the system of power supply, the system of keyboard, the system of alarming and the system of displaying. The system uses the singlechip of SoC. It introduces the application of the chip and applied module. The system designs the hookup of the singlechip, and enactments the function of every pin. It designs the program of system basing on work principle of singlechip. Wireless transmission system adopts STR-11 micro power wireless data transmission module, and introduces the characteristics, the terminals definition and connection schemes of the module. Barcode scanning system chooses the SE - 923II laser scanning engine, introduces laser scanner parts in detail.Key Words barcode scanner singlechip目录前言 (1)第1章设备选取方案 (4)1.1 单片机的选取方案 (4)1.1.1 51系列单片机 (4)1.1.2 61系列单片机 (4)1.2 无线数据传输模块的选择方案 (5)1.3 条码扫描模块的选择方案 (5)1.4一些辅助器件的选择方案 (6)1.4.1 电源模块 (6)1.4.2 充电模块 (6)1.4.3 LED显示模块 (6)1.4.4 系统工作框图 (6)第2章C8051F022单片机 (8)2.1 CIP-51内核 (8)2.2 片内存储器 (10)2.3 JTAG调试和边界扫描 (10)2.4 可编程数字I/O和交叉开关 (11)2.5 可编程计数器阵列 (11)2.6 串行端口 (12)2.7 12位模/数转换器 (12)2.8 比较器和DAC (12)第3章无线传输的应用 (14)3.1 STR-11微功率无线数据传输模块特点 (14)3.2 STR-11系列微功率无线数据传输模块的使用方法 (15)3.2.1 电源 (15)3.2.2 STR-11连接端子的定义 (15)3.2.3 STR-11的连接示意图 (16)3.2.4 信道、接口、数据格式设定 (16)3.2.5 休眠功能说明 (17)第4章条码扫描的选择与应用 (18)4.1 激光源 (18)4.2 光学扫描系统 (19)4.3 光接收系统 (19)4.4 光电转换、信号放大及整形 (20)4.5 译码 (21)第5章一些辅助器件的选择与应用 (22)5.1 电源模块 (22)5.2 LED显示模块 (23)5.3 键盘输入电路 (24)5.4 报警提示系统 (25)结束语 ....................................................................................... 错误!未定义书签。
基于单片机的PS2键盘设计
PS2键盘在单片机上的应用摘要:在嵌入式PC应用系统中,作为人机交互设备的键盘,往往采用结构简单按键少的矩阵键盘。
标准键盘虽然能直接与嵌入式PC机的PS/2接口相连,但是体积大,按键多,不能满足需求,本文提出用一种AT89C52单片机实现具有标准PS/2接口的矩阵键盘,具有便捷,实用的特点。
关键词:PS/2接口,PS/2键盘,拨号键,AT89C52,LCD1602Abstract:PS/2 interface is one of the most useful mouse interface.It was IBM’s patent named osulum before. It is the dedicate interface of mouse and keyboard. This text implied a plan using PS/2 to make a system. PS/2 tansmit the data which was pressed, and AT89C52 receive it ,disposed it and transmit it to Lcd1602. Lcd1602 discover it to make us know which key has been pressed. PS/2 simulate a phone’s dial keyboard. This system’s feature is the circuit is sample and useful.Keywords:PS/2 keyboard, AT89C52, LCD1602,PS/2 interface,dial keyboard目录1、前言 (1)2、整体方案设计 (2)2.1方案论证 (2)2.2方案比较 (3)3、单元模块设计 (4)3.1PS2键盘模块 (4)3.2单片机模块 (6)3.3LCD显示模块 (7)4、软件设计 (9)5、系统技术指标及精度和误差分析 (10)6、结论 (11)7、设计小结 (12)8、致谢 (14)9、参考文献 (14)附录1:电路总图 (15)附录2:仿真图 (16)附录3:软件代码 (17)1、前言单片机因其性价比高, 处理能力强, 且抗干扰能力好, 在医疗器械、机电液控制、数据传输等各类工控系统和设备仪器中得到广泛应用。
条码扫描器与单片机的接口设计
条码扫描器与单片机的接口设计
李建国;赵战民;刘卿
【期刊名称】《中国自动识别技术》
【年(卷),期】2008(000)006
【摘要】@@ 条码扫描器是计算机系统的标准输入设备之一,它将扫描到的图像信息转换为数字信号,继而转化为与计算机兼容的数据,而且它与计算机的接口可以直接识别,无需做额外的接口设计.尽管可与PC机简单直接相连,但在一些较小系统中这样设计也是不经济的.举例说明,像自动存包柜系统中设置条码扫描器,如果在每一个存包柜配一台PC机来完成条码数据的读取和柜子的开关的话,那由于PC机价格高、体积大,这样组成的系统一方面成本高,另一方面要设计PC机的安放位置.【总页数】3页(P97-99)
【作者】李建国;赵战民;刘卿
【作者单位】
【正文语种】中文
【相关文献】
1.基于PIC单片机的19264点阵型液晶显示屏接口设计 [J], 彭胜敏
2.基于AVR单片机的SPI接口设计与实现 [J], 杨启帆;赵腊才
3.基于PS/2协议的条码扫描器与单片机接口设计 [J], 李建国;赵战民;刘卿
4.基于MODBUS协议的单片机与触摸屏通讯接口设计 [J], 欧阳崇伟;杨秋萍;李疆
5.单片机控制蓝牙模块硬件接口设计 [J], 董国钢
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
连接上只要保证这四根线一一对应就可以了。PS/2设备靠Pc的PS/2端口提供+5V电源,另外两个脚
Clock(时钟脚)和Data(数据脚)都是集电极开路的,所以必须接大阻值的上拉电阻。它们平时保持高电平,
有输出时才被拉到低电平,之后自动上浮到高电平【2I。
表1 PS/2端口定义
l
DATA
数据信号端
2
码输入设备的串行输出扫描码转换成并行数据,然后利用单片机的并口读取。
3.1直接读取串行数据
在接13设计中条码扫描器的输出接口选用键盘13搭配PS/21协议,采用串行方式进行数据传输时,连线
较为简单,主要将Clock线和Data线与单片
机相连,为了读取数据时可以采用中断触发
方式,将Clock线接到单片机外部中断0请
万方数据
50
表2数据输出格式表
1个起始位
总是逻辑0
8个数据位
(LSB)低位在前
1个奇偶校验位
奇校验
1个停止位
总是逻辑1
微计算机应用
2008年
面:八[X](][[X]二)口[厂 面丽1几厂]几厂]n r]几r]几:厂]厂一
呈囊苫 ; 囊苫 《墨舌t'q墨差苫 薹差舌 翟 差舌 墨差舌 =差舌 己垂苫
如果将条码扫描器设置为键盘接口,它输出的信号就完全按照PS/2的数据格式编码。这就是我们识 别数据的基础。在键盘口接121系统中,由Data线和Clock线来控制对扫描码的检索和传递。如果Data线和 Clock线都处于高电平状态,则扫描器每次检索到一个扫描码,就会立即将其发送。每位发送的数据在时钟 信号的下降沿(当时钟从高变到低的时候)被单片机读取。数据格式如表2,时序图如图3。需要指出的是, 条码扫描器在一行条码数据输入完成后,会在结尾自动加上一个“回车”符,这一点在单片机条码数据接口 设计中很有必要,利用它可以在软件程序设计中判断一行条码数据的读取结束。
进入到中断服务程序读取数据。当中断进 行1 1次后说明一帧数据接收完毕,安排一
图4串行方式中ps/2口硬件连接
个标志BF为后续程序表明,然后关闭中断,转向扫描码的判断和ASCII码的转换程序。 如果设计中其他应用程序占用了中断口,就必须采用查询方式来接收条码数据。设计中要保持CPU一
直检测Clock线上的电平,一旦出现拉低,开始检测Data线的电平状态,得到一位数据,同时记录Clock线跳 变次数,满11次记录—个8位的字符数据。这两种方式各有优缺点:中断触发减轻了CPU负担,处理速度更 快,查询方式为系统设计节省中断13,供应用程序使用,在实际应用中,可根据设计需要采用不同的触发方式。 3.2数据的并行传输方式
万方数据
12期
李建国等:基于PS/2协议的条码扫描器与单片机接口设计
51
此,为了保证单片机准确读取74HCll64的Qo—Q7脚上的扫描码,设计一片74HC245将他们隔开, 74HC245是八位双向3态缓冲电路,在ENABLE与DIR同时为低电平的时候,74HC245将Bl—B8上的数据 传送至A1一A8上,为使单片机准确地发出读数命令,接口电路要完成74HCl64转换完一个扫描码之后通 知单片机接收74HCl64的Q0一Q7数据。设计中采用对Clock脉冲的下降沿记数来实现,在图5所示电路 中,输入至74HCl64的CLK脉冲同时又输入至单片机的Tl脚。利用Tl对CLK脉冲记数,因为条码扫描器 输出数据中每9个负脉冲对应一帧扫描码,因此Tl每记数9次向CPU发出中断请求,从而保证CPU准确地 读取数据。
Interface Design Between the Bar Code Reader and MCU
Based on PS/2 Protocol
LI Jianguo,ZHAO Zhanmin,LIU Qing
(School of Information Engineering。ShiJiaZhuang University Of Economies,ShiJiaZhuang,05003 1,China)
n/c
未定义
3
GND
电源地
4
VCC
+5 V电源
5
CU(
时钟信号端
6
n/c
未定义
图2连接器插头
2.2 PS/2协议分析 软件设计的关键是模拟PS/2协议,PS/2协议是键盘与PC连接的双向异步串行通信协议。它选用键码
扫描集作为按键识别体系。扫描码和ASCII码完全不相同,所以接口设计的一个重要任务是在扫描码和 ASCII之间建立一种映射关系,将读取的扫描码转换为ASCII码。对于大多数键码而言,在键盘被打开的情 况下。只要一个键被按下,就一定会产生一个通码;只要一个键被释放,就一定会产生一个断码。于是,对于 一个键值而言,它的组成就是通码+断码。在第二套通码中,对于绝大多数键而言,通码为单字节,断码为 双字节的。其规则为:断码的第一个字节是F0h,第二个字节是这个键的通码。比如:按键“a”的通码为 1CH,而其断码则为FOH,1CH,整个代码ICH,F0h,lcH就表示按键小写字母“a”的一个动作。若在PS/2键 盘中整个击键的过程,先按下左SHIFT键,再按下a键,释放a键,释放左SHIFT键,这些时间段内分别产生 了左SHIFT的通码(12H),A的通码(1CH),A的断码(FOH,1CH),SHIFT断码(FOH,12H),查表后可以得 出产生了12H,1CH,FOH,lCH,FOH,12H这一连串表示大写字母“A”的扫描码¨J。
Abstract:The PSl2 protocol and the data signal output style of bar code reader are discussed in this paper,On the basis of this,It de- tailed analyses the stripe code detect theory and realize methods of MCU in trigger mode and receive mode,also the design of eonver- 8ion process between scanning code and ASCII code is given.In application,the einmit of interface and communication scheme be- tween bar code reader interface and MCU are provided,It also introduces a typical utility of this system..
求人口端P3.2上,接13连线如图4;为保证
在每一个时钟信号的下降沿单片机能准确
读取Data线的状态(一位数据),触发形式
有两种方案:中断方式和查询方式。
在中断方式中,在主程序将中断口初始
化为下降沿触发方式,并将PS/2接口的Da—
ta线和Clock线都初始化为空闲状态,即高
电平状态,使程序在每个时钟下降沿时自动
2键盘接口和PS/2协议
条
扫
码
描 识别.
扫 =o 器
r】
描
接
器
口
805l 单片机
亡=一LCD显示接口
匕=纠电磁锁驱动电路
2.1连接器的电气特性
匕=d其他应用接口
条码扫描器的插头为如图2所示的键盘 圆形插针,其中只有四个脚有意义,如表1:它
图1条码扫描器应用系统原理框图
们分别是Clock(时钟脚)、Data(数据脚)、+5V(电源脚)和Ground(电源地)。在PS/2键盘与PC机的物理
2第0028年9拳第1月2皆期
MICR微OCO计MPU篡TER机APP应LICA用TIONS
V01.29 No.12 Dec.2008
基于PS/2协议的条码扫描器与单片机接口设计宰
李建国赵战民 刘 卿
(石家庄经济学院信息工程学院石家庄050031)
摘要:基于对PS/2接口协议和条码扫描器输出数据格式的认识,从触发方式和接收方式两个方面详细分析了单片机读取条 码数据的原理与实现方法,同时给出了扫描码与ASCII码的转换程序设计。在应用中,给出了条码扫描器与MCU的接口电路 及通行方案,并介绍了单片机对条码数据识别系统一种典型应用方法。 关键词:PSl2协议条码扫描器单片机接口设计
+5V
眦丽糜燃Biblioteka U1:A胁加l 06
i。 74HCl64 Qo
A
Ql
B
Q2
Q3 Q4 Q5 Q6
Q7
瓣
Bl
Al
B2
A2
B3
A3
B4
A4
B5
A5
B6
A6
B7
A7
B8
ENABLE DlR
805I单片机
012 3 4 5 6
m眦mmm眦mm 7
眩7
¨吲7纠
图5 串并转换传输方式电路的设计 3.3键盘扫描码转换程序设计