5152单片机1602时钟上显示红外摇控键十进制数值

分享给朋友:通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制51单片机红外线密码锁带键盘1602液晶显示下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效51单片机红外线密码锁带键盘1602液晶显示扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本
药品服务许可证(京)-经营- 请使用者仔细阅读优酷、、、Copyright(C)2017 优酷
版权所有不良信息举报电话:lcd1602 利用51单片机,外接独立按键和 显示,并 对 器上的数字进行调节 SCM 开发 263万源代码下载-
&文件名称: lcd1602& & [
& & & & &&]
&&所属分类:
&&开发工具: Visual C++
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 13
&&提 供 者:
&详细说明:利用51单片机,外接独立按键和LCD1602显示,并利用按键对显示器上的数字进行调节-Use SCM, external independent press and LCD1602 display, and use the buttons on the digital display can be adjusted
文件列表(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&lcd1602.h&&main.c&&types.h&&delay.c&&delay.h&&lcd1602.c
&[]:和说明完全不符&[]:纯粹是垃圾
&近期下载过的用户:
&输入关键字,在本站263万海量源码库中尽情搜索:
&[] - 利用51单片机,外接4×4按键,在对按键进行扫描。并在数码管上显示,实现0到F的显示
&[] - 通过PIC单片机控制LCD显示时间,时间显示方式为24小时进制。
&[] - 模仿手机键盘,可显示数字和拼音,并按键有声音。。。。。。。。。。
&[] - 单片机使用按键按一次加1,并显示在数码管上,另外一个按键按一次减1.。。
&[] - 51单片机实现按键数值加减,并显示在LCD上,有负数处理功能,可以用在仪表的数值设定场合。带PROTEUS仿真。
&[] - 键盘控制lcd1602的显示,一个按键实现位置选择,其余两个按键实现数字的加减
&[] - 按键程序,LCD显示,每按一下就实现1602中的数字从OO到99.是基本的程序。
&[] - 基于单片机自做的一个万年历,12864液晶显示,有以下功能;1、温度显示;2、独立按键模块;3、闹钟;4、农历显示;附上原理图。
&[] - 51单片机生成SPWM波形,并用PROTEUS仿真
&[] - proteus仿真,基于51单片机的系统仿真,很好的 很实用的 ,可以尝试欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 3401 人关注过本帖
标题:求助51单片机LCD1602数字显示的问题
等 级:新手上路
帖 子:58
结帖率:83.33%
&&已结贴√
&&问题点数:20&&回复次数:9&&&
求助51单片机LCD1602数字显示的问题
程序代码:
#include&stc15.h&
#include&intrins.h&
#include&gpio.h&
#define uchar unsigned char
#define uint&&unsigned int
#include&lcd1602.h&
//uint m,f,s;&&&&&//秒、分、时
uint m1,m2;&&&&&//秒的个位、十位
uint f1,f2;&&&&&
uint s1,s2;
uchar dis1[]={0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30};
void Delay1ms()&&&&&&&&//@11.0592MHz
&&& unsigned char i,
&&& _nop_();
&&& _nop_();
&&& _nop_();
&&& i = 11;
&&& j = 190;
&&&&&&&&while (--j);
&&& } while (--i);
void Delayxms(uint x)
&&& for(i=0;i&x;i++)
&&&&&&&&Delay1ms();
&void init()
&&& TMOD=0x01;&&&&&&&&&&&&&&& //计数器T0计数
&&& TH0=()/256;&&& //设置T0&&50ms定时的初始值
&&& TL0=()%256;
&&& EA=1;&&&&&&&&&&&&&&&&&&&&//开放CPU中断
&&& ET0=1;&&&&&&&&&&&&&&&&&&&&//允许外部中断
&&& TR0=1;&&&&&&&&&&&&&&&&&&&&//定时器开始计时
void timer0() interrupt 1
&&& TH0=()/256; //每50MS产生一次中断,给寄存器装初值并累加aa
&&& TL0=()%256;
void time_add()
&&& /*m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
&&& lcd_data(0x30+0x30+0x3a+0x30+0x30+0x3a+0x30+0x30);*/
&&& if(aa==20)
&&&&&&&&aa=0;
&&&&&&&&m1++;
&&&&&&&&if(m1&9)
&&&&&&&&&&&&m1=0;
&&&&&&&&&&&&m2++;
&&&&&&&&&&&&if(m2&5)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& m2=0;
&&&&&&&&&&&&&&& f1++;
&&&&&&&&&&&&&&& if(f1&9)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&f1=0;
&&&&&&&&&&&&&&&&&&&&f2++;
&&&&&&&&&&&&&&&&&&&&if(f2&5)
&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&f2=0;
&&&&&&&&&&&&&&&&&&&&&&&&s1++;
&&&&&&&&&&&&&&&&&&&&&&&&if(s1&9)
&&&&&&&&&&&&&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&&&&&&&&&&&& s1=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&& s2++;
&&&&&&&&&&&&&&&&&&&&&&&&&&& if(s2&5)
&&&&&&&&&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&m1=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&m2=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&f1=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&f2=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&s1=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&s2=0;
&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&}
void main()
&&& gpio();
&&& lcd_init();&&&&&&//初始化
&&& Delayxms(20);
&&& m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
&&& init();&&&&&&//定时器
&&& while(1)
&&&&&&&&time_add();
&&&&&&&&dis1[7]=m1+'0';
&&&&&&&&dis1[6]=m2+'0';
&&&&&&&&dis1[4]=f1+'0';
&&&&&&&&dis1[3]=f2+'0';
&&&&&&&&dis1[1]=s1+'0';
&&&&&&&&dis1[0]=s2+'0';
&&&&&&&&i=0;
&&&&&&&&while(i&8)
&&&&&&&&&&&&lcd_start(4+i);
&&&&&&&&&&&&lcd_data(dis1[i]);
&&&&&&&&&&&&i++;
请问红色部分的代码是怎么回事?是加上'0'就能将数字转换成ASCII码了吗?
搜索更多相关主题的帖子:
等 级:新手上路
帖 子:58
dis1[7]=m1+'0';
dis1[6]=m2+'0';
dis1[4]=f1+'0';
dis1[3]=f2+'0';
dis1[1]=s1+'0';
dis1[0]=s2+'0';
来 自:红土地
等 级:版主
威 望:322
帖 子:11046
专家分:41822
&&得分:15&
“0”的ASII码是32,“1”是33,余类推。加上32的基数之后,就可以显示出m1、m2、f1、f2、s1、s2等变量的数值(仅限于0-9,大于9则不能正确显示)。
活到老,学到老!
E-mail:hu-
等 级:新手上路
帖 子:58
回复 3楼 hu9jj
那如果我想其他的字符也能正常显示,我应该怎么做啊?
等 级:贵宾
威 望:117
帖 子:1568
专家分:8772
“0”的ASII码是十进制数48(30H),32是空格的asc码
查了下LCD1602资料,该模块自带字符集,只需向对应寄存器写字符asc码即可,要显示其他的也很简单,如下:即显示“AB:CD:EF”了。
dis1[7]='F';
dis1[6]='E';
dis1[4]='D';
dis1[3]='C';
dis1[1]='B';
dis1[0]='A';
[此贴子已经被作者于 20:50编辑过]
能编个毛线衣吗?
来 自:红土地
等 级:版主
威 望:322
帖 子:11046
专家分:41822
以下是引用ID不见了在 09:59:11的发言:
那如果我想其他的字符也能正常显示,我应该怎么做啊?
在C下面可以直接将显示的字符发送给LCD显示屏,编译后会自动转换为ASCII码。也可以直接将字符的ASCII码发送给显示屏,只是要从对照表中查出代码。
活到老,学到老!
E-mail:hu-
来 自:红土地
等 级:版主
威 望:322
帖 子:11046
专家分:41822
这是1602LCD的资料,里面有其自带的字符集:
附件: 您没有浏览附件的权限,请
活到老,学到老!
E-mail:hu-
等 级:新手上路
'0' 是取ascill, dis1[7]=m1+'0';实际就是取m1数值的ascill,m1为偏移量
来 自:红土地
等 级:版主
威 望:322
帖 子:11046
专家分:41822
5楼说的极是,‘0’的ASCII码是48,是我记错了,在此表示歉意!
活到老,学到老!
E-mail:hu-
等 级:新手上路
帖 子:19
1602的字符显示都是assic查表,理解下,没啥好说的
版权所有,并保留所有权利。
Powered by , Processed in 0.062572 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights Reserved51单片机-红外遥控_文库下载
1亿文档 免费下载
当前位置: &
& 51单片机-红外遥控
51单片机-红外遥控
51单片机-红外遥控
51单片机综合学习系统
红外线遥控篇―
通过以前的学习,已经对51单片机综合学习系统的使用方法及学习方式有所了解,并学会了12864点阵型液晶显示的基本知识,体会到了综合学习系统的易用性与易学性,这一期我们将学习红外线遥控的基本原理与使用方法。
先看一下将要使用的51单片机综合学习系统能完成的实验和产品开发工作:流水灯、数码管显示、液晶显示、按键开关、蜂鸣器奏乐、继电器控制、IIC总线、
光/电放大
遥控接收器遥控发射器
发射部分包括键盘矩阵、编码调制、2所示。LED红外发送器;接收部分包括光/电转换放大、解调、解码电路。
2.遥控发射器及其编码
SPI总线、PS/2实验、AD模数转换、光耦实验、串口通
信、红外线遥控、无线遥控、温度传感、步进电机控制等。
图1所示是将要使用的51单片机综合学习系统硬件平台。本期实验用到了综合系统主机、1602液晶屏、超薄型红外线遥控器,综合系统其他功能模块原理与使用详见前几期的《电子制作》及以后连载教程。
图2红外遥控系统框图
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里以使用比较广泛,解码比较容易的一类来加以说明。现以日本NEC的μPD6121G组成发射电路为例说明编码原理,我们使用的如图3所示的超薄型红外线遥控器使用的就是6121编码。当发射器按键按下后,即有遥控码发出,按的键不同遥控编码也不同。这种遥控码具有以下特征:
图1硬件平台
红外线遥控是目前使用最广泛的一种通信和遥控方式。由于红外线遥控装置具有体积小、功耗低、成本低等特点,因而继彩电、录像机之后,它在录音机、音响设备、空凋机以及玩具等小型电器装置上也被广泛采用。
下面详细介绍红外线遥控的基本原理和使用方法。
高质量超薄型红外线遥控器
采用脉宽调制的串行码,以脉宽为0.565ms、间隔周期为1.125ms的组合表示二进制的“0”;以脉0.56ms、
宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,其波形如图4所示。
和“1”组成的32位二进制码经38kHz的上述“0”载频进行二次调制以提高发射效率,达到降低电源功
1.红外遥控系统
通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制操作,如图
电子制作2008年第3期
Word文档免费下载:(下载1-3页,共3页)
基于51 单片机的红外遥控红外遥控是无线遥控的一种方式, 本文讲述的红外遥控, 采用 STC89C52 单片机, 单片机, 1838 红外遥控是无线遥控的一种方式, 本文讲述的...上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率,达到降低电源功51 单片机综合学习系统 ―――红外线遥控篇图1硬件平台键盘编码调制...课程设计论文 版面不对 论文题目 学生姓名 学专班号业级 基于 51 单片机的红外遥控的 开关的设计 电子信息科学与技术
何宁 2012 年 12 月 指导教师 ...51单片机红外遥控程序_电子/电路_工程科技_专业资料。红外线遥控系统原理及软件解码实例 简介:红外线遥控是目前使用最广泛的一种通信和遥控手段。由于红外线 遥控装置...单片机红外发射(原理与设... 8页 1下载券 基于51单片机红外发射与... 7页 ...红外线遥控就是利用波长为 0.76~ 1.5m 之间的近红外线来传送控制信号的。...51单片机红外遥控解码好例程_电子/电路_工程科技_专业资料。//51 单片机红外遥控解码 /*红外遥控发射芯片采用 PPM 编码方式,当发射器按键按下后,将发射一组 108ms...51 单片机解码红外遥控器原理 电视遥控器使用的是专用集成发射芯片来实现遥控码的发射,如东芝 TC9012,飞利浦 SAA3010T 等,通常彩电遥控信号的发射,就是将某个按键所...interrupt 1 void IR_send(char cmd); Description : 红外遥控的驱动程序,调节 IR_Pulse 函数中的 dt 可将 程序从传统 51 单片机移殖至增强型(1T)51 单片机...红外遥控编码原理及C程序,51单片机红外遥控_信息与通信_工程科技_专业资料。红外编码原理及C程序,51单片机红外遥控解解码程序 #include &reg52.h& #include&intrins...51单片机制作---红外遥控电灯_信息与通信_工程科技_专业资料。红外遥控电灯――ClimberWin 红外遥控电灯的制作――郑文
序前一段时间我在家里的时候,制作...基于红外PS/2键盘的设计与实现 PC机和PS/2键盘间的通讯,则PC机必须做主机,即PC机可以抑制PS/2键盘发送数据,而PS/2键盘则不会抑制PC机发送数据。一般两设备之间传输数据的最大时钟频率是33kHz,大多数PS/2设备工作在10~20kHz。每一数据包含11~12个位,具体含义如下表1所列。
1个起始位 8个数据位 1个奇偶校验位 1个停止位 1个应答位 总是逻辑0 (LSB)低位在前 奇校验 总是逻辑1 仅用在主机对设备的通讯中
数据帧格式 表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中的1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。 PS/2设备有主从之分,主设备采用Female插座,从设备采用Male插头。现在广泛使用的PS/2键盘鼠标均在从设备方式下工作,主从设备之间数据通信采用双向同步串行方式传输,时钟信号由从设备产生。在本系统中,在部分时刻只需从主设备接收命令,并适当根据接收到的命令采取相应的动作,向主设备发送从命令方式,而在大多数时候都是主动向主设备发送数据,并实现应答。 3.3.3
PS/2设备和PC机的通讯 PS/2设备的Clock(时钟脚)和Data(数据脚)都是集电极开路的,平时都是高电平。当PS/2设备等待发送数据时,它首先检查Clock(时钟脚)以确认其是否为高电平。如果是低电平,则认为是PC机抑制了通讯,此时它必须缓冲需要发送的数据直到重新获得总线的控制权。如果Clock(时钟脚)为高电平,PS/2设备便开始将数据发送到PC机。一般都是由PS/2设备产生时钟信号。发送时一般都是按照数据帧格式顺序发送。其中数据位在Clock(时钟脚)为高电平时准备好,在Clock(时钟脚)的下降沿被PC机读入。
当时钟频率为15kHz时, Clock(时钟脚)的上升沿到数据位转变时间至少要5us。数据变化到Clock(时钟脚)下降沿的时间至少也有5us,但不能大于25us【5】,这是由PS/2通讯协议的时序所规定的。如果时钟频率是其它值,参数的内容应该要做一些调整。
以上所论述中传输的数据是指对特定键盘的编码或者对特定命令的编码。目前一般是采用第二套扫描码集所规定的码值来编码。其中键盘码分为通码(Make)和断码(Break)。通码是按键所接通时发送的编码,用两位十六进制数来表示,断码通常是按键断开时所发送的编码,用四位十六进制数来表示。
在协议通讯过程中分为两种,一种是设备到主机的通讯过程,而另外一种是主机到设备的过程,下面分别说明这两种双向通讯协议过程中的详细过程。 ① 设备到主机的通讯过程
上面已经论述过,当键盘等待发送数据时,它首先检查时钟以确认它是否是高电平。如果不是,那么是主机抑制了通讯,设备要缓冲任何要发送的数据直到重新获得总线控制权,如果时钟线是高电平,设备就可以开始传送数据。每位在时钟的下降沿被主机读入,如图6所示:
6 基于红外PS/2键盘的设计与实现
设备到主机数据通讯过程② 主机到设备的通讯过程 【5】
这个过程有点不同于设备到主机的通讯过程,首先,PS/2设备总是产生时钟信号。如果主机要发送数据,它必须首先把时钟和数据线设置为“请求发送”状态,比如:首先通过下拉时钟线至少100us来抑制通讯,然后下拉数据线来应用“请求发送”,再然后释放时钟。 设备应该在不超过10ms的间隔内就要检查这个状态。当设备检测到这个状态,它将开始产生时钟信号,并且时钟脉冲标记下输入八个数据位和一个停止位。主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存。这在发生在设备到主机通讯的过程中正好是相反的。在停止位发送之后,设备要应答接收到的字节,就把数据线拉低并产生最后一个时钟脉冲。如果主机在第11个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放(然后设备将产生一个错误)。主机可以在第11个时钟脉冲(应答位)前中止一次传送,只要下拉时钟线至少100us。数据在时钟的上升沿被锁存,如图7所示:
主机到设备数据通讯过程【5】
3.4 键盘接口与扫描码 3.4.1 键盘扫描码 在传统的键盘上,键盘的处理器花费很多的时间来扫描或监视按键矩阵。如果发现有键被按下、释放或按住,键盘将发送“扫描码”的信息包到计算机【5】。扫描码有两种不同的类型:“通码”和“断码”。当一个键被按下或按住就发送通码;当一个键被释放就发送断码。每个按键被分配了唯一的通码和断码,这样主机通过查找唯一的扫描码就可以测定是哪个按键。每个键一整套的通断码组成了“扫描码集”。目前有三套标准的扫描码集分别是第一套、第二套和第三套。而所有现代的键盘默认使用第二套扫描码。扫描码是唯一代表一个键的码,由键码和ASCII码组成。键码就是键的键盘矩阵中的位置符号,但这与一般情况下的矩阵定义是有所不同的,键盘扫描码在键盘矩阵中的代号是没有确定的规律的,键码是扫描码的一部分,另一部分则是国际标准字符码表ASCII和扩展ADCII代码。 实际应用中的扫描码不仅反映键的位置,还要反映键盘的接通、断开、重复等动作信息。因而组成 7 基于红外PS/2键盘的设计与实现 的格式较为复杂,一个基本按键的扫描码由3个基本字节组成,1个字节的接通扫描码和2个字节的断开扫描码,其中第一个字节和第三个字节相同,中间的字节为断开标志F0H。例如ENTER键的接通扫描码为5AH,断开扫描码为F0H、5AH,ENTER键按下时,5A被发送出去,若一直按住不放,则键盘将以按键重复码与断开扫描码前各多一个固定字节E0H。扫描码与按键在键盘上的位置有关,而与其对ASCII码没有对应关系。键盘上还有部分扩展键(功能键与控制键等),这些键的扫描码由5个字节组成,与基本键相比,接通扫描键PrintScreen键的接通扫描码为E0H、12H、E0H、7CH,而断开扫描码为E0H、F0H、7CH、E0H、F0H、12H。而DELETE键的接通扫描码为E0、71H,而断开扫描码为E0H、F0H、71H。 在通码、断码发送过程中,它们的发送顺序有着标准的规定,例如:要发送一个字符“A”到计算机并使“A”出现在处理软件中,那它是以什么样的序列发送呢?因为这是一个大写字母“A” ,它存在这样的事件次序:按下“Shift”键,按下“A”键,释放“A”键,释放“Shift”键。与这些时间相关的扫描码如下:“Shift”键的通码(12H),“A”键的通码(1CH),“G”键的断码(F0H,1CH),“Shift”键的断码(F0H,1CH)。因此,发送到计算机的数据应该是:12H,1CH,F0H,1CH,F0H,12H。 3.4.2
键盘接口 键盘接口的功能是将串行扫描转换成为并行扫描码,键盘信息变成扫描码后,经串行数据总线KBDDATA和串行时钟线KBDCLK到达PC机,由键盘接口电路通知系统进行处理。 3.4.3键盘机打延时【5】 本系统采用红外遥控器作为键盘向PC机发送数据,所以在按键发送数据至PC机上速率的问题上较不同于标准PS/2键盘,标准PS/2键盘上“机打”的概念是:如果按住一个键,这个键的通码就被发送到计算机。当按下并按住了这个键,则这个键就变成了“机打”,这就意味着键盘一直发送这个键的通码直到它被释放或者其他键被按下。要证实这一点,只要打开一个文本编辑器并按下“H”键。 当按下这个键,字符“h”立刻出现在电脑屏幕上。在一个短暂的延迟之后,接着出现一整串的“h”,直到释放“H”键。这里有两个重要的参数:机打延时,是第一个和第二个“h”之间的延迟;机打速率是在机打延时后每秒有多少字符出现电脑屏幕上。机打延时的范围可以从0.25秒到1.00秒;机打速率的范围可以从2.0cps(字符每秒)到30.0cps。如果需要改变这个速率,可以用“Set Typematic Rate/Delay”(0xF3)命令来改变机打速率和延时。 机打的数据不被键盘所缓冲。在多个键被按下的情况下,只有最后一个按下的键变成机打。当这个键被释放时,就算其它的键盘依然还被按着,机打重复也会停止。 3.5 键盘与PC机的串行通信 3.5.1键盘与PC机通信时序 时序是设计电路和编程的基本依据,通过对PS/2扩展键盘进行了分析,键盘与PC机的通信是串行异步与同步相结合的方式。键盘发送到PC机的数据格式采用串行异步通信方式,即1位起始位,8位数据位(LSB在前),1位校验位P,1位停止位。如图8所示。
0 1 2 3 4 5 6 7 P 停止位
通信数据格式
由于各键盘的发送速率不同以及按键的速度不一致,为了提高兼容性,又在异步通信的基础上增加了同步时钟,在时钟的下降沿对数据进行采样。 PC机与键盘的通信只有经过握手信号之后才能进行,KBDCLK可能作为清除发送线,当PC机动性将KBDCLK置为低电平时,键盘将不能发送数据给PC机,而是将要发送的数据放入发送数据缓冲区中,直到KBDCLK为高电平才开始发送数据。当KBDDATA和KBDCLK同时为高电平时(当没有数据传送时KBDATA和KBDCLK保持为高电平)键盘可以发送字节给PC机,键盘将KBDDATA拉为低电平(即PC机接收键盘数据的起始位),通知PC机应接收来自键盘的数据。如果PC机将KBDDATA拉为低电平时(即键盘接收PC机数据的起始位),表明PC机将发送字节给键盘。这就表明PC机具有较高的优先权,可以控制PC机和 8 基于红外PS/2键盘的设计与实现 键盘的通信方向。 3.5.2 键盘与PC机通信命令字【7】 键盘与PC机通信命令字很多,如下是单片机系统和PC机通信部分相关的命令字。
① PC机发往键盘的命令字
EDH: 设置状态指示灯,用以控制键盘上的NumLock、ScrollLock、CapLock指示灯的亮和灭。键盘接收到EDH后发送FAH字节以回应。
EEH: 回送响应,用以诊断键盘工作是否为正常命令,键盘工作正常时回送EEH字节。
F3H: 设置键盘重复速率,键盘接收到该命令后回送收到信号FAH。然后等待PC机的下一个字节,该字节用以控制键盘按键的重复速率。
F4H: 键盘使能命令,键盘收到该命令后,回送收到信号FAH,并将清除键盘的发送缓冲区中的字节,重新进行扫描工作。、
F5H: 禁止键盘命令,键盘收到该命令后,回送信号FAH,并将使键盘停止扫描工作。
FEH: 重发命令,键盘收到该命令后,将重新发送一次最后发送过的字节。
FFH: 重位键盘命令,键盘收到该命令后,回送收到信号FAH,并将使键盘复位,重新开始工作。 ② 键盘发往PC机的命令字
00H:缓冲区已满命令。 AAH:键盘上电时自检通过命令。 EEH:回送响应命令。 FAH:收到信号回应命令,键盘每收到PC机的命令后,都以该字节回送至PC机。 FEH:重发命令,PC机收到该字节后,将上次发送的最后一个字节重新发送一次。 3.6 本系统仿真键盘的设计及接口 由于本系统要模拟PS/2键盘与PC机进行通信,因此单片机应用系统通过键盘接口与PC机通信必须严格地按照键盘与PC机通信的时序要求并且按照命令字进行应答。首先,当系统上电复位后,单片机应用系统通过键盘接口向PC机发送0AAH,模拟键盘完成自检信息,并检通过PC机的BIOS自检,之后,单片机应用系统检测键盘接口数据线(Data)上的电平,若数据线(Data)被PC机拉低,单片机系统就进入接收数据状态。当单片机系统要发送数据或命令时,先将数据线(Data)拉低通知PC机准备接收数据,PC机操作系统能识别这些键盘命令并进行相应的操作。而发送的数据则是模拟键盘上各个键盘的编码,即键盘的通、断码等。PC机操作系统可将编码解释为对应的键盘字符。在PC机端通信程序中,根据接收到的字符串执行相应的操作。这样就基本完成了键盘与PC机的基本通信。 本系统设计中,仿真PS/2键盘由四个端口构成,分别为VCC、GND、DATA、CLK,其中,VCC可以由PC机的+5V电源提供,而DATA、CLK分别与单片机AT89S52的P1.3和P1.4相连,如图9所示: 图9
PS/2键盘与PC机连接图
系统软件设计
本系统软件设计采用Keil uVision3作为开发平台,该软件支持C语言和汇编语言进行描述,本次软件设计主要分为三个部分,分别为主程序以及定时中断服务程序描述、红外线解码程序、键盘与PC机通信程序。在此次软件设计中,运用了C语言和汇编语言相结合的方式,使系统在实时性要求较高的地方更方便准确地对系统进行控制。
9 基于红外PS/2键盘的设计与实现
4.1 红外线解码的程序设计 在红外线控制中,单片机程序主要解决的问题就是如何对接收到的TC9012F型红外遥控器所发射的信号进行解码,编码脉冲信号是由引导码、用户码、和功能码等部分组成,而这里只需要对功能码的过程进行分析。在本软件中,对这部分的设计主要是根据其时序进行严格的解码,然后通过从编码脉冲信号中提取出来的功能码(即数据码)来对应各个按键的键值,在本设计中,将编码脉冲信号直接用LCD1602液晶显示模块来显示,因此,可以更直观地看出其编码的值,对软件的调试起到了很大的辅助作用。如下是解码程序流程图:
4.2 仿真PS/2键盘与PC机通信程序设计
在这一模块的程序设计中,主要应该注意和解决的问题就是,PS/2键盘与PC机之间应该遵循的通信协议,并且需要掌握微机在上电的过程之中,会向PS/2键盘发送哪些命令字,而PS/2设备应该完全针对PC机(即主机)端发送过来的命令回送相应的数据作为应答信号;
下图是PS/2协议的位发送与接收流程图:}

我要回帖

更多关于 单片机恒流源 lcd1602 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信