PS2键盘与单片机通信

PS2键盘与单片机通信
PS2键盘与单片机通信

PS/2键盘与单片机通信

一、实验目的:

掌握PS/2键盘与单片机通信的原理,并能加以应用。

二、实验仪器:

单片机最小实验系统AT89S52,PS/2键盘

三、实验原理:

PS/2接口通信协议PS/2接口键盘与主机采用双向通信方式,键盘可以向主机发送据主机也可以发送命令给键盘。主机具有最高优先权。通信协议是标准的串行异步通信格式,1位起始位,8位数据位(LSB 在先),1位奇校验位P,1位停止位,若为主机发送状态,则还有一位应答位。数据格式如图2所示。

主机同键盘进行通信时,无论发送还是接收数据,都要依赖于键盘发送的时钟脉冲(每次数据传输发送l1个时钟脉冲),时钟频率为

10-16.7kHz,通过判断时钟脉冲的上升沿和下降沿,逐位发送或读取数据位。当数据线DATA和时钟线CLK同时为高电平时,键盘可以发数据给主机。CLK可用作清除发送线。如果主机将CLK拉为低电平,则禁止键盘发送数据,而是将发送数据放到发送缓存区中,直到CLK变为高电平才开始发送数据。如果主机将DATA拉低,则当键盘检测到这一变化时,接收来自主机的命令。概括如表l所示。

当键盘发送数据时,键盘先将DATA 拉低,通知主机准备接收数据。键盘在CLK为高电平时建立数据,主机在CLK为低电平时读取数据。发送数据的时钟信号由键盘产生。时序如图3所示。

图4给出了键盘接受一个字节的时序。为了避免在同一时刻发送数据,应将CLK拉低大约100 uS以上,以禁止键盘发送数据。然后主机将数据线DATA拉低,发送起始位,并释放CLK(高电平),由键盘接管CLK,以产生时钟信号。主机在此同步时钟信号下发送数据。键盘接收数

据是从检测到DATA变低开始,然后在CLK为高电平时读取数据,这与

键盘发送数据时的情形相反。当主机发送完校验位后,释放数据线DATA(停止位)。随后,键盘将DATA置成低电平,作为收到数据的应答信号(ACK),并产生一个周期的时钟脉冲。如果在第11个脉冲后,主机未释放DATA,键盘将继续发送时钟信号到DATA空闲。

四、软件编程与调试

1、接口设计

PS/2键盘单片机

Data T1(P3^5)

CLk INT1(P3^3)

LCD液晶单片机

Data Bus P0

RS P2^3

RW P2^5

E P2^7

2、流程简图

开始

初始化

开中断

BF = = 1

捕获键值,判断后进

行相应操作

操作完毕,

关中断

液晶显示

返回

3、源程序

#include

#include"lcd12864.c"//包含128X64驱动程序

#include

sbit Key_Data =P3^5;//定义Keyboard数据端口引脚sbit Key_CLK=P3^3; //中断端口,时钟线

static unsigned char KeyV=0X00; //键值

static unsigned char BF = 0; //标识是否有字符被收到static unsigned char IntNum = 0; //中断次数计数

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 TempCyc;

signed char k;

TempCyc=KeyV;

if(BF==1) //接收完一个有效数据时

{

B F=0; //准备下一次接收

s witch ( TempCyc ) //键值与显示字符的对应关系

{//键值// //对应字符//

case 0x8A: k=0; break; //0

case 0x2C: k=1; break; //1

case 0x3C: k=2; break; //2

case 0x4C: k=3; break; //3

case 0x4A: k=4; break; //4

case 0x5C: k=5; break; //5

case 0x6C: k=6; break; //6

case 0x7A: k=7; break; //7

case 0x7C: k=8; break; //8

case 0x8C: k=9; break; //9

case 0x64: k=18; break; //b case 0x42: k=19; break; //c case 0x46: k=20; break; //d case 0x48: k=21; break; //e case 0x56: k=22; break; //f case 0x68: k=23; break; //g case 0x66: k=24; break; //h case 0x86: k=25; break; //i case 0x76: k=26; break; //j case 0x84: k=27; break; //k case 0x96: k=28; break; //l case 0x74: k=29; break; //m case 0x62: k=30; break; //n case 0x88: k=31; break; //o case 0x9A: k=32; break; //p case 0x2A: k=33; break; //q case 0x5A: k=34; break; //r case 0x36: k=35; break; //s case 0x58: k=36; break; //t case 0x78: k=37; break; //u case 0x54: k=38; break; //v

case 0x44: k=40; break; //x

case 0x6A: k=41; break; //y

case 0x34: k=42; break; //z

case 0x98: k=10; break; //;

case 0xAA: k=-5; break; //+

case 0xF2: k=43; break; //+

case 0x52: k=-16;break; //空格键

case 0xB0: k=101;break; //大小写控制键Caps lock

}

if(k==101)

{

dx=!dx; //按下大小写控制键时大小写标志取反

}

if(k==-16) //空格键按下时

{

write_data(-16+'0');

}

if(dx==1) //大写标志

{

if(k>=0&&k<=9)

{

if(k==0)

{

write_data(k-7+'0');

}

if(k==1)

{

write_data(k-16+'0');

}

if(k==2)

{

write_data(k+14+'0');

}

if(k>=3&&k<=5)

write_data(k-16+'0'); }

if(k==6)

{

write_data(k+40+'0'); }

if(k==7)

{

write_data(k-17+'0'); }

if(k==8)

{

write_data(k-14+'0'); }

if(k==9)

{

write_data(k-17+'0');

}

else

write_data(k+'0');

}

else//小写标志

{

if(k>16 && k<=42)

{

write_data((k+32)+'0');

}

if(k>=0 && k<=9) {

write_data(k+'0');

}

if(k==10)

{

write_data((k+1)+'0');

}

if(k==-5)

{

write_data((k+18)+'0');

}

}

EA=1;

// write_data(0x01);

}

}

void delay(int x) //延时程序

{

int i,j;

for(i=0;i<600;i++)

for(j=0;j

}

void main()

{

lcd_init(); //初始化液晶驱动硬件

//wlcome() ; //调用开机画面和欢迎界面子程序

IT1 = 1; //设外部中断1为下降沿触发

EA = 1; //开总中断

EX1=1; //开中断1

while(1)

{

Decode();

delay(10);

}

}

4、程序调试与结果

测试软件:KeilC51 Uvision3

结果:按下PS/2键盘0-9、A-Z键都会在液晶上显示相应的键,如果按下CapsLock键再按0-9,A-Z,则显示相应按键的上标,或是大小写切换。

五、问题与讨论

1、PS/2协议是什么?

2、PS/2与单片机通信的原理如何?

附录1:lcd12864.c

#include

#include "LCD12864.h"

#include

#ifndef UCHAR

#define uchar unsigned char

#ifndef UINT

#define uint unsigned int

/*********初始化************/ void lcd_init()

{

writeCmd(0x30);

delayMs(10);

writeCmd(0x0c);

delayMs(10);

writeCmd(0x01);

delayMs(10);

}

void delayUs() //延时约2us

_nop_();_nop_();

}

void delayMs(uint a) //延时a * 1ms

{

uint i, j;

for(i = a; i > 0; i--)

for(j = 100; j > 0; j--);

}

bit checkBusy() //检测LCD是否处于忙状态, 若忙返回1, 空闲返回0 {

bit busy;

RS = 0; //请参考数据共享中的手册

RW = 1;

E = 1;

delayUs();

busy = (bit)(LCD_DATA&0x80);

E = 0;

return busy;

}

void wait() //等待LCD到空闲

{

while(checkBusy());

}

void writeCmd(uchar cmd)//写命令{

wait();

RS = 0;

RW = 0;

E = 0;

delayUs();

LCD_DATA = cmd;

delayUs();

E = 1;

delayUs();

E = 0;

}

void writeData(uchar dat) //写数据{

wait();

RS = 1;

RW = 0;

E = 0;

delayUs();

LCD_DATA = dat;

delayUs();

E = 1;

delayUs();

E = 0;

}

void write_data(unsigned char lcddata) {

writeCmd(0x80);

writeData(lcddata);

}

附录2:lcd12864.h

#ifndef _LCD12864_H_

#define _LCD12864_H_

#ifndef UCHAR

#define uchar unsigned char

#ifndef UINT

#define uint unsigned int

#define LCD_DATA P0

sbit BUSY = P0;

sbit RS = P2^3;

sbit RW = P2^5;

sbit E = P2^7;

void lcd_init( );

void writeCmd(uchar cmd);

void writeData(uchar dat);

void delayMs(uint a);

void delayUs();

bit checkBusy();

void wait();

void write_data(unsigned char lcddata);

#endif

单片机双机之间的串行通信设计

专业方向课程设计报告 题目:单片机双机之间的串行通信设计

单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断

方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图)

本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一 数据的发送过程,然后按照此过程不段循环,直到结束。 晶振电路提供脉冲,加上复位电路,将 EA接入高电电平选择片内程序存储器。 这是一个单片机能够工作的最低设置。

最新单片机与键盘接口

单片机与键盘接口

MCS-51单片机与键盘的接口 键盘接口和数码管接口是构成单片机人机界面的主要方法。键盘是单片机应用系统中最常用的输入设备,操作人员一般都是通过键盘向单片机系统输入指令、数据,实现简单的人机通信。所以学习单片机与键盘接口的原理和编程方法就显得十分的重要。 一.键盘的工作原理 1.1 按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,单片机应用系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路。这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。 1.2 键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据的。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。

对于一组键或一个键盘,总有一个接口电路与单片机相连。单片机可以采用查 询或中断方式了解有无将键输入,并检查是哪一个键按下,将该键号送入累加 器 ACC ,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程 序。. 1.3 按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转 换成为电气上的逻辑关系。也就是说,它能提供标准的 TTL 逻辑电平,以便与 通用数字系统的逻辑电平相容。 机械式按键再按下或释放时,由于机械弹性作用的影响,通常伴随有一定时 间的触点机械抖动,然后其触点才稳定下来。其抖动过程如下图所示,抖动时 间的长短与开关的机械特性有关,一般为 5 ~ 10 ms 。 按键触点的机械抖动 在触点抖动期间检测按键的通与断状态,可能导致判断出错,即按键一次按下或释放被错误地认为是多次操作,这种情况是不允许出现的。为了克服按键触点机械抖动所致的检测误判,必须采取去抖动措施。这一点可从硬件、软件两方面予以考虑。在键数较少时,可用硬件去抖,而当键数较多时,采用软件去抖。 在硬件上可采用在键输出端加 R-S 触发器 ( 双稳态触发器 ) 或单稳态触发器构成去抖动电路。下图是一种由 R-S 触发器构成的去抖动电路,当触发器一旦翻转,触点抖动不会对其产生任何影响。

组态王与单片机通信协议1

一、通讯参数: 通讯参数包括数据位,停止位,波特率、校验方式。 数据位、停止位、波特率由单片机决定。组态王中的设定和单片机一致即可。校验方式参照“数据传输格式”中相关部分。 二、数据传输格式: 格式1、组态王发送地址请求格式:(此时检验位为1) ENQ Sta EOT CRC 格式2、单片机应答地址格式:(此时检验位为0) ACK Sta ETX CRC 格式3、组态王读数据请求格式:(此时检验位为0) ENQ R DataType DataAddr DataNum EOT CRC 格式4、单片机应答读数据格式(正确):(此时检验位为0) ACK DataLong Data….ETX CRC 格式5、单片机应答读数据格式(错误):(此时检验位为0) NAK ErrorCode ETX CRC 格式6、组态王写数据请求格式:(此时检验位为0) ENQ W DataType DataAddr Data….EOT CRC 格式7、单片机应答写数据格式(正确):(此时检验位为0) ACK ErrorCode ETX CRC 三、时序: 读数据: 组态王单片机

第一步:格式1 第二步:格式2 第三步:格式3 第四步:格式4或格式5 第五步:如果第四步单片机执行格式4, 结束。否则,执行格式1。 第六步:格式2 第七步:格式3 第八步:格式4或格式5 写数据: 组态王单片机 第一步:格式1 第二步:格式2 第三步:格式6 第四步:格式7 第五步:如果第四步单片机执行格式7 的ErrorCode=0,结束。否则,执行格 式1。 第六步:格式2 第七步:格式6 第八步:格式7 四、协议说明: 数据传输:所有数据均为16进制数 ENQ(头) H05 询问请求帧的开始代码 ACK(头) H06 确认ACK应答帧的开始代码NAK(头) H15 否认NAK应答帧的开始代码EOT(尾) H04 正文的结束请求帧的结束ASCII代码ETX(尾) H03 结束正文应答帧的结束ASCII代码 Sta::设备地址1字节 R:读标志1字节(0x52) W:写标志1字节(0x57)

单片机双机通信报告

单片机双机通信接口应用 专业班级:电信 设计者:? ? 指导老师:? 设计时间:2011-11-28 ~12-9

一、实验目的与要求: 课程设计目的: 1.通过课程设计巩固、深化和扩展理论知识与初步的专业技能,提高综合运用知识的能力,逐步增强实际工程训练。 2.培养正确的设计思想,掌握课程设计的主要内容、步骤和方法。 3.培养获取信息和综合处理信息的能力、文字和语言表达能力以及协作工作能力。 4.提高运用所学的理论知识和技能解决实际问题的能力及其基本工程素质。 课程设计要求: 1、能够根据设计任务和指标要求,综合运用单片机课程中所学到的理论知识与实践技能独立完成一个设计课题,了解并掌握单片机系统设计的一般设计方法,具备初步的独立设计能力;。 2、根据课题需要选择参考书籍,查阅手册、图表等有关文献资料。要求通过独立思考、深入钻研课程设计中所遇到的问题,培养自己分析、解决问题的能力。 3、学会撰写课程设计总结报告。 4、通过课程设计,逐步形成严肃认真、一丝不苟、实事求是的工作作风和科学态度,培养学生树立一定的全局观点。。 5、在课程设计过程中,要做到团结协作。 意义:单片机应用系统设计是单片机课程的实践性教学环节,既涉及到许多理论知识(设计原理与方法),又强调系统设计能力的锻炼,培养创新设计的能力,养成一丝不苟的工作作风,为今后从事单片机行业的工作打下基础。 二、功能要求: 单片机双机通信接口应用。设计电路并编写程序,完成单片机与单片机之间的通信,甲机发送键盘输入的键号,乙机接收键号并在最右边的LED以十六进制的方式显示出来,通信协议:以方式2工作,波特率为2400b/s,信息格式为8个数据位,无奇偶校验位。

单片机双机通信系统的课程设计

一.课程设计的目的及基本要求: 实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。通过电子技术的综合性工程训练,使学生达到以下的目的和要求: 1、结合模拟电路、数字电路、可编程逻辑 器件、单片机电子线路CAD等课程中所学的 理论知识,按要求独立设计方案,培养学生 独立分析与解决问题的能力; 2、学会查阅相关手册和资料,通过查阅手 册和资料,进一步熟悉常用电子器件的类型 和特性,并掌握合理选用的原则; 3、学会使用常用电子元器件(包括中规模 芯片、专用芯片和可编程器件);

4、掌握基本的现代电子技术设计工具和EDA (Electronic design automation)技术; 5、掌握电子电路的安装与调试技术,进一 步熟悉电子仪器的使用方法; 6、认真撰写总结报告,培养严谨的作风和 科学的态度; 二.课程设计的主要内容: 课题十九单片机双机通信系统 基本要求:设计两个单片机最小系统,能实现有线通信,一方为发送,另一方为接收。 提高要求:两个单片机最小系统能相互通信,并能实现校验。 三.具体要求和时间安排: 每一个学生在教师指导下,独立完成一个应用系统。工作量如下: 1、电路原理图(A3幅面)1张,要求Protel软件绘制; 2、pcb版图(A3及以上幅面)1张;

3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

组态王与单片机多机串口通信的设计

组态王与单片机多机串口通信的设计 发布: 2011-8-18 | 作者: —— | 来源:ranhaiyang| 查看: 300次| 用户关注: 1 引言随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC等。KingView 软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成 1 引言 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王)、MCGS、WinCC 等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DDE)或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供一种与单片机多机串口通信方法,可满足大多数系统需求。 3 PC机与单片机的硬件接口电路 图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上,因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线

MCS-51单片机串行接口

第七章MCS-51单片机串行接口 第一节串行通信的基本概念 (一)学习要求 1.掌握串行通信的基本概念。 2. 掌握异步通信和同步通信的区别。 (二)内容提要 一:基本概念及分类 串行通信是将数据的各位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。 从接收方式来说,串行通信有两种方式: 异步通信方式、同步通信方式。 二:串行口的功能 MCS-51单片机中的异步通信串行接口能方便地与其他计算机或传送信息的外围设备(如串行打印机、CPU终端等)实现双机、多机通信。 串行口有4种工作方式,见表7-1。方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口的功能。该方式又称为移位寄存器方式。方式1、方式2、方式3都是异步通信方式。方式1是8位异步通信接口。一帧信息由10位组成,其格式见图7-2a。方式1用于双机串行通信。方式2、方式3都是9位异步通信接口、一帧信息中包括9位数据,1位起始位,1位停止位,其格式见图7-2b。方式2、方式3的区别在于波特率不同,方式2、方式3主要用于多机通信,也可用于双机通信。 表7-1 (三)习题与思考题 1、什么是并行通信?什么是串行通信?各有何优缺点? 答:并行通信指数据的各位同时传输的通信方式,串行通信是指各位数据逐位顺序传输的通信方式。 2、什么是异步通信?什么是同步通信?各有何优缺点? 3、什么是波特率?某异步串行通信接口每分钟传送1800个字符,每个字符由11位组成,请计算出传送波特率。 第二节MCS-51串行接口的组成 (一)学习要求

基于51单片机的双机串行通信

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

单片机 键盘接口实验

实验六键盘接口实验 一、实验目的 1、掌握Keil C51软件与Protues软件联合仿真调试的方法; 2、掌握单片机的键盘接口电路; 3、掌握单片机的键盘扫描原理; 4、掌握键盘的去抖原理及处理方法。 二、实验仪器与设备 1、微机一台 2、Keil C51集成开发环境 3、Protues仿真软件 三、实验内容 1、用Protues设计一矩阵键盘接口电路。要求利用P1口接一4×4矩阵键盘。串行口通过一74LS164接一共阴极数码管。用线反转法编写矩阵键盘识别程序,用中断方式,并将按键的键值0-F通过串行口输出,显示在数码管上。 2、将P1口矩阵键盘改成8个独立按键,重新编写识别和显示程序。 四、实验说明 矩阵键盘识别一般包括以下内容: ⑴判别有无键按下。 ⑵键盘扫描取得闭合键的行、列号。 ⑶用计算法或查表发的到键值; ⑷判断闭合键是否释放,如没释放则继续等待。 ⑸将闭合键的键值保存,同时转去执行该闭合键的功能。 五、实验步骤 1、用Protues设计键盘接口电路; 2、在Keil C51中编写键盘识别程序,编译通过后,与Protues联合调试; 3、按动任意键,观察键值是否能正确显示。 六、实验电路仿真图 矩阵键盘电路图见附录1。 独立按键电路图见附录2。 七、实验程序 实验程序见附录3、4。 八、实验总结 1、矩阵键盘常用的检测方法有线反转法、逐行扫描法。线反转法较简单且高效。在矩阵键盘的列线上接一与门,利用中断方式查询按键,可提高CPU的运行效率。 2、注意用线反转法扫描按键时,得到的键值不要再赋给temp,最好再设一新变量接收键值,否则再按下按键显示数字的过程中,再按按键会出现乱码。 3、学会常用与门、与非门的使用方法。 附录1:矩阵键盘实验电路图

组态王6.53与51单片机上课讲义

组态王6.53与51单 片机

基于51单片机的智能仪表与组态王的通讯 1242人阅读 | 0条评论发布于:2009-8-10 23:01:00 1、引言 随着工业自动化进程的不断加快,现场仪器、仪表、设备正不断向数字化、智能化和网络化方向推进。 单片机以其强大的现场数据处理能力,低廉的价格,紧凑的系统结构、高度的灵活性,微小的功耗等一系列优良特性成为构建智能化现场仪器仪表、设备的重要手段,现已广泛应用于工业测量和控制系统中。 组态王 Kingview工控组态软件以其工作性能稳定可靠、人机界面友善、硬件配置方便以及编程简单易用同时其驱动程序较为丰富,如支持DDE、板卡、OPC服务器、PLC、智能仪表、智能模块等;支持ActiveX控件、配方管理、数据库访问、网络功能、冗余功能。其扩展性强,配有加密锁,支持工程加密;可方便与管理计算机或控制计算机联网通信等优良特性,提供了对工业控制现场大量数据进行采集、监控、处理的解决方案。在各种工业控制领域中得到了大量使用[1-2]。 将单片机和组态王优良的特性结合起来,使它们实现“强强联合”,成为改造传统工业,提升企业技术竞争力的重要趋势。 目前许多测控系统是由通用机或工控机和底层单片机控制装置组成,通用机或工控机通过组态软件控制现场仪器设备,单片机采集数据和现场状态通过串行口传送到通用机或工控机,由组态软件对采集到的现场数据进行分析、存储或显示,并将命令和控制通过串行口传到单片机以监控现场设备的运转。可靠地实现它们之间的通讯是实现各种测控任务必须解决的首要问题。对于一些重要名家厂商的板卡和模块,一般组态王可直接提供为数据采集和控制所需的底层硬件设备的驱动程序。但对于绝大多数一般用户自行设计开发的采集、控制装置则没有驱动程序提供。因此实现它们“强强联合”,必须解决它们之间之间的通信问题。迄今为止,人们对单片机与组态王的通信问题进行了广泛的研究[1-2]。 目前,单片机与组态王的通讯方法有主要有3种[3]:①利用组态的驱动程序开发包进行驱动开发自己的通讯驱动程序,该方法适用于专业厂商;②通过动态数据交换(DDE)方式进行通讯,该方法带来一些额

Proteus中实现单片机双机通信实验

Proteus中实现单片机双机通信实验 【摘要】本文针对单片机项目设计中出现的问题和基本方法,提出了将Proteus仿真软件和Keil软件引入到单片机项目式开发中。以“单片机双机通信实验”项目为例,详细阐述Proteus软件在单片机课程教学中的使用方法和仿真调试过程。实践证明,该方法能激发开发热情,锻炼创新能力和单片机软硬件综合开发能力,是提高单片机开发效率和设计产品质量的一种有效方法。 【关键词】单片机开发;Proteus软件;仿真调试 引言 单片机开发是一项综合性、实践性、应用性很强的技术。传统的单片机开发采用“先理论设计,再动手实验”的开发模式,该模式造成编程与之实验结果分离,不便于调试,效果并不理想。鉴于此,本文将Proteus和引入到单片机的项目式开发中,通过仿真的直观性和真实感,不仅节约了硬件资源的投入,而且提高了单片机开发效率和产品质量。 一、Proteus简介 Proteus软件是英国Labcenter electronics公司开发的电路分析与实物仿真软件,它除了具有其他EDA工具的原理布图、PCB自动或人工布线、电路仿真等功能外,Proteus最大的特点是基于微控制器的设计连同所有的外围电路一起仿真,可直接在单片机虚拟系统上对MCU编程,并可对软件源代码进行实时调试。同时,它具有电路互动仿真功能,通过动态外设模型,如键盘、LED/LCD等,可实时显示系统输入、输出结果,以实现交互仿真,或配合Proteus配置的虚拟仪器如示波器、逻辑分析仪等,使单片机虚拟系统实现预期的实验效果。 此处还需要用Keil软件来协助。Keil软件是美国Keil Software公司出品的兼容单片机C语言软件的开发系统,是目前世界上最好的51单片机开发工具之一。它提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解。 Proteus和Keil各自都可以进行仿真调试,但效果不是很理想,如把两者结合起来相互配合,则可发挥Proteus和Keil的优势使其在仿真过程中的软件调试和硬件设计更加便捷、高效。 二、仿真项目教学案例 (一)项目要求 本项目要求用两片AT89C51单片机实现A机检测输入键盘信息,并通过串行通信方式,传送给B机,在B机用数码管显示A机所按下的对应按键代号,“0-9”

51单片机键盘设置

\\\§8.3 键盘接口技术 一、键盘输入应解决的问题 键盘是一组按键的集合,它是最常用的单片机输入设备. 操作人员可以通过键盘输入数据或命令,实现简单的人机通讯。 键是一种常开型按钮开关,平时(常态)键的二个触点处于断开状态,按下键时它们才闭合(短路)。 键盘分编码键盘和非编码键盘。 键盘上闭合键的识别由专用的硬件译码器实现并产生编号或键值的称为编码键盘, 如:ASCⅡ码键盘、BCD码键盘等; 靠软件识别的称为非编码键盘。 在单片机组成的测控系统及智能化仪器中用得最多的是非编码键盘。 本节着重讨论非编码键盘的原理、接口技术和程序设计。 键盘中每个按键都是—个常开关电路,如图所示。

1.按键的确认:P1.7=1 无按键; P1.7=0 有按键; 2.去抖动 去抖动的方法: ①硬件去抖动采用RS触发器: 优点: 速度快,实时, 缺点: 增加了硬件成本 ②软件去抖动采用延时方法 延时5—10ms 延时5—10ms P1.7=0 确认P1.7=0 P1.7=1 (去前沿抖动) (去后沿抖动) 二、独立式键盘

每个I/O口连接一个按,S1 P1.0 S2 P1.1 ………………………. S8 P1.7 软件: START:MOV P1,#0FFH ;置P1口为高电平 JNB P1.0, RS1 ; S1按下,程序去执行RS1 JNB P1.1, RS2 ; S2按下,程序去执行RS2

JNB P1.2, RS3 ; S3按下,程序去执行RS3 JNB P1.3, RS4 ; S4按下,程序去执行RS4 JNB P1.4, RS5 ; S5按下,程序去执行RS5 JNB P1.5, RS6 ; S6按下,程序去执行RS6 JNB P1.6, RS7 ; S7按下,程序去执行RS7 JNB P1.7, RS8 ; S8按下,程序去执行RS8 AJMP START ; 继续扫描按键 …………. RS1: AJMP PK1 ; RS2: AJMP PK2 ; RS3: AJMP PK3 ; RS4: AJMP PK4 ; RS5: AJMP PK5 ; RS6: AJMP PK6 ; RS7: AJMP PK7 ; RS8: AJMP PK8 ; AJMP START ; 无键按下,继续扫描………………… PK1: ……….. ;按键S1功能处理程序 AJMP START ;处理S1按键后, 继续扫描PK2: ……….. ;按键S2功能处理程序

基于单片机的双机通信程序设计

前言 单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。主要有五种类型,串行通信接口、并行通信接口、USB接口、现场总线接口以及以太网接口。 串行通讯是单片机的一个重要应用。本设计就是利用两块单片机来完成一个系统,实现单片机之间的串行通讯。 随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用单片机串行口实现不同计算机之间的相互通信,以达到信息或程序的共享是非常有用的。从智能家用电器到工业上的控制系统都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微机分析处理能力强、速度快的特点及下位机(单片机)面向控制、使用灵活方便的优势。利用多机通讯构成的分布式系统逐渐普及。本实验就点对点的双机通信进行训练。学习串口的工作方式,初始化编程,和单片机与单片机点对点通信的编程方法以及硬件电路的设计方法。

1.总体设计方案 1.1 串口通信的设计原理 复位电路复位电路 单片机单片机 电源电路电源电路 时钟电路时钟电路 按键输入1位LED数码管 显示电路 图1 串口通信的设计原理框图 本次设计用于两片89S51,PC机的串行口采用的是标准的RS232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS232的电气特性不匹配,因此为了使单片机的串行口能与RS232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。单片机的发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接收方接收后,在数码管上显示接收的信息,实现串口通讯数据的发送和接收,该系统可采用max232进行串口通讯数据传送。可用LED显示发送的相应据。 1.2 数据传输方案比较与选折 在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可采用三种方案。 方案一:单工制式 单工制式是指甲乙双方通信只能单向传送数据。 发送器A 接收器B 图2 单工制式

双机通信,单片机课程设计

单片机课程设计 双机通信 一、设计目的 1、掌握单片机89C52的程序设计,掌握单片机通信程序编制方法。 2、了解单片机实现通信的硬件环境。 3、掌握双机通信的原理和方法。 二、设计要求 1、用两片单片机,实现双机通信; 2、用与A机连接的按键控制A机对B机的信息传输,每按一次键,首先发送端显示要发送数据,两台机器的发光二极管的显示相同。 3、用与B机连接的按键控制B机对A机的信息传输,每次按键,数码管的显示自动加一。 三、设计器材 器件名称个数 STC8952RC 2 晶振 2 电容(30PF) 4 电容(10uF) 2 LED 4 电阻(10K) 4 电阻(330) 2

电阻(8.2K) 2 开关 4 数码管 2 三极管(NPN) 1 排阻 1 四、设计思路及方案 1、设计思路 计划采用主从共两片STC8952RC单片机来实现双机通信的,我们采用单片机直接交叉连接的方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。需要注意的是一定要保证主从机相同的数据传输速率,即要求设置相同的波特率。电路分为数码管显示模块,单片机工作的基本复位、晶振模块。 2、设计原理 (1)原理概述 双机通信系统通过主从单片机的串行口来实现数据的收发。主单片机通过开关电路来启动发送程序,当开关按下时向从机发送一个数据,从机通过接收中断来接收主机发送过来的数据,并通过编写好的数据代码在LED数码管上显示主机发送过来的数据。同时从机给主机发送一个应答信号来表示已经接收到了主机发送过来的数据,在主机接收应答并校验正确,以二极管显示,这样就完成了一个数据的通信过程,等待按键按下,然后继续下一次数据的发送直到结束。(2)串行通信 串行数据通信要解决两个关键问题,一个是数据传送,另一个是

单片机双机通信与PCB设计

实验六、双机通信与PCB设计 一、实验目的 掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程。 二、实验内容 1、按照P241图A.72绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能; 2、按照图A7.3和表A7.3绘制电路原理图2,并定义电源端口; 3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图A.74所示尺寸进行PCB自定义封装; 4、完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图1,2#机的C51源程序,双机通信仿真效果及讨论*,PCB设计图(电路原理图2、排版图、3D效果图、光绘文件分层图3-4幅)以及实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验六。 *讨论:中断法与查询法的程序结构差异及优缺点。 1、电路原理图1

2、2#机的C51源程序 发送端源程序: #include #define uchar unsigned char char code map[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int time) { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void main() { uchar c=0; TMOD=0x20; TH1=TL1=0xf4; PCON=0; TR1=1; SCON=0x50; while(1) { SBUF=c;

单片机与键盘接口

单片机与键盘接口 键盘是由一组规则排列的按键组成,一个按键实际上是一个开关元件,也就是说键盘是一组规则排列的开关。 键盘工作原理 1.按键的分类 按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点开关按键,如电气式按键,磁感应按键等。前者造价低,后者寿命长。目前,微机系统中最常见的是触点式开关按键。 按键按照接口原理可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。 全编码键盘能够由硬件逻辑自动提供与键对应的编码,此外,一般还具有去抖动和多键、窜键保护电路,这种键盘使用方便,但需要较多的硬件,价格较贵,一般的单片机应用系统较少采用。非编码键盘只简单地提供行和列的矩阵,其它工作均由软件完成。由于其经济实用,较多地应用于单片机系统中。下面将重点介绍非编码键盘接口。 2.键输入原理 在单片机应用系统中,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能,键信息输入是与软件结构密切相关的过程。 对于一组键或一个键盘,总有一个接口电路与CPU相连。CPU可以采用查询或中断方式了解有无将键输入并检查是哪一个键按下,将该键号送入累加器A CC,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。 3.按键结构与特点 微机键盘通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。也就是说,它能提供标准的TTL逻辑电平,以便与通用数字系统的逻辑电平相容。

组态王与单片机的通信

组态王与单片机的通信与设计 前言本文主要是解决装有组态王的PC机与单片机的通信问题,这里选择通过计算机的COM1口进行串行通信。单片机和PC机的串行通行一般采用RS-232、RS-422或RS-485总线标准接口,也有采用非标准的20mA电流环的。为保证通信的可靠,在选择接口时必须注意:(1)通信的速率;(2)通信距离:(3)抗干扰能力;(4)组网方式,既可以保证正常通信时的最大通信端口数量。这里采用RS-232接口与单片机通信的方法。由于两者间的电平规范不一致,实现两者间的通信要解决接口电路的电平转换问题。 正文 选题背景随着单片机和微机技术的不断发展,单片机的应用也从独立的单机向网络发展,由PC机和多台单片机构成的多级网络测控系统已成为单片机技术发展的一个方向。在一个大型的应用系统中,通常由单片机完成数据的采集和上传,后台则通过PC机对数据进行分析并处理,复杂的还要建立数据库形成网络,二者的结合,充分发挥了单片机在实时数据采集和微机对图形处理、显示以及数据库管理上的优点,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。 随着微电子技术、计算机控制技术、工业以太网技术及现场总线技术的发展,作为用户无需改变运行程序原代码的软件平台工具——工控组态软件日渐成熟。由于工控组态软件在实现工业控制的过程中免去了大量烦琐的编程工作,解决了长期以来控制工程人员缺乏计算机专业知识与计算机专业人员缺乏控制操作技术和经验的矛盾,极大地提高了自动化工程的工作效率。近年来,工控组态软件在中小型工业过程控制工程、工业自动化工程中越来越受到欢迎。不仅如此,工控组态软件还在配电自动化、智能楼宇、农业自动化、能源监测等领域也逐步展示了其独特的优势。 单片机控制系统以其高性能价格比、稳定、易于实现等特点而被广泛使用,但他难以实现动态复杂的图形监控界面;而组态王软件具有强大丰富的监控界面设计功能,却难以实现复杂的控制算法,而单片机则难以实现动态复杂的图形监控界面,若采用以单片机为下位机,以装有组态王的PC极为上位机的控制方式,将彻底改变原来单片机控制系统的单调、简单的控制界面的缺陷,进一步推动单片机控制方式的广泛应用。 在这个设计中有以下问题待以解决:1、TTL/RS232电平转换及其接口电路的处理。2、由于组态王接收的是数据的ASCII码,因此要实现数据与它所对应的ASCII码的转换。3、组态王监控界面的设计。 设计要求 设计组态王监控界面,编写单片机发送接受程序以实现组态王与单片机两者间的通信。 方案论证 过程论证

基于单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx 姓名: xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

基于单片机的双机通信

基于单片机的双机通信 [摘要]双机通信是单片机的一个重要应用。本次课程设计就是要利用单片机来完成一个系统,实现两个单片机之间的有序通信。本文详细介绍了关于基于单片机AT89C51实现的双机之间的通信的设计。软件部分采用C语言编程实现接收部分和发射部分的功能,用Protues进行仿真。软件设计完成后,将程序烧入单片机。通信的结果实用数码管进行显示,数码管采用查表方式显示。在通信过程中,使用通信协议进行通信。 [关键词]51单片机;串行通信;接口

Two-machine communication based on single chip [Abstract]Dual machine communication is an important application of single chip. This course is designed to using single chip computer to complete a system, realize the orderly communication between two single-chip microcomputer. This paper introduces the realization based on single-chip microcomputer AT89C51 about the dual machine for communication between the design. Software part adopts the C programming language realization receiving part and emission, part of the Protues function, through simulation. The software design is completed, the procedure spread microcontroller. Communication results and practical to display, digital digital tube pipe, adopting look-up table display. In communication process, USES communication protocol to communicate. [Key words]51 SCM; serial communication; Interface

单片机键盘接口全接触

单片机键盘接口全接触 作者:杜洋 2005-10-25 一般的具有人机对话的单片机系统少不了会有键盘。键盘接口的原理与应用许多的教材都有介绍,但通常各有各的方法,各有各的优劣。下面就我现有的对单片机键盘接口的了解和应用将众家的单片机直接驱动键盘的接口原理及应用作一个总结,并附加相应键盘的汇编子程序和C语言子函数。希望大家可以从中受益。 本文我们以键盘的数目来选择键盘最适合的接法和最佳的编程方法,对各键盘接口的方法的优缺点加以说明。本文旨在让大家掌握一种方法,而不要读死书,举一反三创造更新更好的接口方式才是学习的极致。我最喜欢爱因斯坦的一句话:“想象力比知识更重要,想象力可以创造知识,而知识却只是别人的想象”。 1~4按键的单片机键盘接口: 当键盘的数目最多为4个时,我们最佳的接口方案当然是独立式接法了,即每一个I/O口上只接一个按键,按键的另一端接电源或接地(一般接地)。占用的I/O口数最大为4条。(注意:1~4按键的键盘的接法许多,如果接成扫描式可以占用更少的I/O口,但从程序复杂性和系统稳定性的综合考虑的话,独立式键盘接法应该是首选) 独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。例如,我们将常开按键的一端接地,另一端接一个I/O口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O口与地短路迫使I/O口为低电平。按键释放后,单片机内部的上拉电阻使I/O 口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。 值得注意的事,我们在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般在10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒级的单片机而言则是慢长的。为了提高系统的稳定,我们必须去除或避开它。目前的技术有硬件去抖动和软件去抖动,硬件去抖动就是用部分电路对抖动部分加之处理,但是实现的难度较大又会提高了成本。软件去抖动不是去掉抖动,而是避开抖动部分的时间,等键盘稳定了再对其处理。这里我们只研究软件去抖动,实现方法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O口的值,这一次的值如果为1表示低电平的时间不到10~200毫秒,视为干

相关文档
最新文档