//返回键值
/********************************************************************/
//键盘扫描子程序 获取键值函数
/****************************************************************************/
uchar keyscan(void)
{ uchar temp;
P0=0xfe; //第一行置低
temp=P0;
temp&=0xf0;
if(temp!=0xf0)
{
delay_nms(10);
if(temp!=0xf0)
{
switch(temp) //根据列线获取第一行的键值
{
case 0xe0: key=3; break;
case 0xd0: key=2; break;
case 0xb0: key=1; break;
case 0x70: key=0; break;
}
}
}
P0=0xfd; //扫描第二行,置低
temp=P0;
temp&=0xf0;
if(temp!=0xf0)
{
delay_nms(10);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: key=7; break;
case 0xd0: key=6; break;
case 0xb0: key=5; break;
case 0x70: key=4; break;
}
}
}
P0=0xfb; //扫描第三行,置低
temp=P0;
temp&=0xf0;
if(temp!=0xf0)
{
delay_nms(10);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: key=11; break;
case 0xd0: key=10; break;
case 0xb0: key=9; break;
case 0x70: key=8; break;
}
}
}
P0=0xf7; //扫描第四行,置低
temp=P0;
temp&=0xf0;
if(temp!=0xf0)
{
delay_nms(10);
if(temp!=0xf0)
{
switch(temp)
{
case 0xe0: key=15; break;
case 0xd0: key=14; break;
case 0xb0: key=13; break;
case 0x70: key=12; break;
}
}
}
else
{
;
}
return(key);
}
关键字:AT89S52 键盘程序
引用地址:
AT89S52键盘程序
推荐阅读最新更新时间:2024-03-16 15:06
腹腔压力动态测量系统设计
腹腔是一个封闭的腔隙,其中的任何器官体积增加超过一定限度均可导致腹内高压, 腹腔压力 监测旨在通过观察腹部手术后及重症病人的腹内压变化,为及时地给予干预性治疗、护理提供有效的依据。现在对腹腔压力的测量,人们通常采用测量膀胱压力的办法,这种方法是通过一根导尿管插入膀胱,并往膀胱缓慢灌注大约50ml生理盐水,然后测量液体从膀胱流出时的压力。这种方法简单实用,测量数值能够真实反映人体腹腔压力值。但是这种方法有一个非常致命的缺点:每测量一次膀胱压力就需要灌注一次,医务人员不可能不停的去灌注生理盐水,一般的重症监护是每隔4~12小时灌注测量一次,这种间断测量就有可能影响医务人员及时了解病人腹腔压力变化情况,甚至延误实施抢救的最佳时间。本
[单片机]
4X4矩阵键盘(查表法)C语言程序设计
/*行线接P1.0-P1.3,列线接P1.4-P1.7。 根据扫描键盘返回的键值编码查键值编码表,从而得到键值并送数码管显示。 开机时,数码管显示 - 。 当键按下时,数码管显示按下键的键值,蜂鸣器响一声。*/ #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit BEEP = P3^6; //蜂鸣器驱动线 uchar key; unsigned char code disp_code ={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,
[单片机]
基于AT89S52的单片机的LED点阵显示屏的设计
第一章 概述 LED点阵显示屏是通过PC机将要显示的汉字字模提取出来,并发送给单片机,然后显示在点阵屏上,主要适用于室内外汉字显示。 第二章 硬件设计 2.1 主要器件介绍 LED 点阵显示屏是由20 个8*8 的LED 点阵块组成,形成16*80 矩形点阵,以Atmel 公司的AT89S52单片机为控制核心。显示屏的其他主要硬件有:①带锁存输出的8位移位寄存器74HC595,作为LED的列线驱动输入;②三八译码器74LS138,作为LED行线的译码选择;③三极管C9012,连接两个三八译码器的十六个输出端,作为开关使用,驱动LED 的行线 2.2 主要器件详细连接说明 Atmel的AT89S52芯片相关器件连接的接脚如下:
[单片机]
键盘显示模块调试程序
键盘显示模块调试 其程序框图如下图所示: #include reg51.h #include absa CC .h #define com XBYTE ;8279命令入口地址 #define dat XBYTE ;8279数据入口地址 #define uchar unsigned char #define uint unsigned int sbit cflag=ACC^7; uchar j=0,sq; uchar code keytab ={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, 0x0a,0x0b,0x0c,0x0d,0x0e,
[单片机]
zlg7289键盘和数码管驱动程序+应用电路
zlg7289应用电路图: zlg7289资料: zlg7289矩阵键盘的应用: 源程序: /*该程序实现的功能是在小键盘按键,在LED上显示所按的键的数值*/ #include stdio.h #include hardware.h #include zlg7289.h #define SDIO_CTRLIO 0X4 //PF2 #define SDIOOUT() (PDATF&=(~SDIO_CTRLIO)); #define SDIOIN() (PDATF|=SDIO_CTRLIO); unsigned char keymap ={ 7,4,1,0,10,0,0,0,8,5, 2,17,
[单片机]
AT89S52键盘程序
//返回键值 /********************************************************************/ //键盘扫描子程序 获取键值函数 /****************************************************************************/ uchar keyscan(void) { uchar temp; P0=0xfe; //第一行置低 temp=P0; temp&=0xf0; if(temp!=0xf0) { delay_nms(10); if(temp!=0xf0) {
[单片机]
AVR单片机(ATMEGA16)矩阵键盘扫描程序
程序思路与缺陷参考:51单片机(AT89C52)矩阵键盘检测程序 #include iom16v.h typedef unsigned char uchar; typedef unsigned int uint; #define dula_h PORTD|=0x01 #define dula_l PORTD&=0xfe #define wela_h PORTD|=0x02 #define wela_l PORTD&=0xfd #define keyport PORTB #define keypin (PINB) #define keydre DDRB #define keystate0 0 //按键确认
[单片机]
用单片机AT89S52实现DTMF信号译码
引言 DTMF信号首先用于电话的拨号系统,在频率编码遥控系统及数据编码传输中的应用也很普遍。目前的DTMF译码器中,大多采用通用集成器件(单音译码电路和组合门电路)或专用DTMF信号译码集成电路(如MC145436等)组成译码电路。在很多情况下,DTMF译码器输出的数据仍需送入单片机进行相应的运算及处理,进而控制其它各种设备的动作。因此,如果能找到一种基于单片机的DTMF信号的译码算法,再辅之以简单的整形电路就可以,既可省去成套译码电路,又能达到简化电路降低成本的目的。本文所要介绍的,就是这种构想的初衷,结果通过计算机仿真计算数据论证认为完全能够达到设计要求。 1、DTMF信号频率组成及整形前DTMF信号的幅值
[单片机]