资源简介
基于51单片机3x4拨号系统,附加详细代码注释讲解,给大家带来方便

代码片段和文件信息
#include
#include
#define null
#define u8 unsigned char
#define u16 unsigned long int
unsigned char h=0;
sbit LCDEN=P3^4;
sbit RS=P3^5;
sbit RW=P3^6;
sbit BF=P0^7;
sbit dx=P2^0;
sbit wx=P2^1;
u8 ycount=0;
u8 key=12;//按键号,初值设置为12,目的是:没有按键按下时返回12;
u8 code keyval[]=“123456789*0#“; //按键对应的符号 unsigned int code chr1[]={7890456012300000};
unsigned char code chr2[]=“input number:“;
unsigned char code chr3[100];
//////////////////// 延时函数/////////////////////////////////
void delay(unsigned int xms)
{
int ij;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
////////////////扫描获取按键值函数/////////////////////////////
u8 keypad4_3()//按键扫描函数:要去抖,若有按键按下,返回对应的按键值(0-11)没有按键按下返回12
{
u8 irowtemp;
//若不设初值(默认值为0),没有按键按下时,将返回0,会误认为0被按下
row=0xef; //从第一行开始
for(i=0;i<4;i++)
{
P1=0xff;
P1=row; //第i行信号,对应行为低,其他全为高
row=_crol_(row1); //生成下一行信号
temp=P1; //读入扫描信号
temp=temp&0x07; //屏蔽高5位信号,只保留低3位列信号
if(temp!=0x07)//有按键被按下,因为第i行某列有按键按下,则低3位中有一位为低
{
delay(20); //延时去抖
temp=P1;
temp=temp&0x07;
if(temp!=0x07) //再次确认有按键被按下
{
switch(temp) //根据低3位列信号,判断哪个按键被按下
{
case 0x06:key=0+3*i;break; //第i行第1列按键被按下
case 0x05:key=1+3*i;break; //第i行第2列按键被按下
case 0x03:key=2+3*i;break; //第i行第3列按键被按下
}
do
{
temp=P1; //再次扫描按键
temp=temp&0x07;
}while(temp!=0x07); //等待按键释放
}
}
}
return(key);//扫面结束,返回按键值
}
///////////////////////////////////////////////////////////////////////
//////////////////////////////4x4按键扫描//////////////////////////////////
u8 keypad4_4()//按键扫描函数:要去抖,若有按键按下,返回对应的按键值(0-15)没有按键按下返回16
{
u8 irowtemp;
u8 key=16;//按键号,初值设置为16,目的是:没有按键按下时返回16;
//若不设初值(默认值为0),没有按键按下时,将返回0,会误认为0被按下
row=0xef; //从第一列开始
for(i=0;i<4;i++)
{
P1=0xff;
P1=row; //第i列信号,对应列为低,其他全为高
row=_crol_(row1); //生成下一列信号
temp=P1; //读入扫描信号
temp=temp&0x0f; //屏蔽高4位列信号,只保留低4位行信号
if(temp!=0x0f)//有按键被按下,因为第i列某行有按键按下,则低4位中有一位为低
{
delay(20); //延时去抖
temp=P1;
temp=temp&0x0f;
if(temp!=0x0f) //再次确认有按键被按下
{
switch(temp) //根据低4位行信号,判断哪个按键被按下
{
case 0x0e:key=0+i;break; //第i列第1行按键被按下
case 0x0d:key=4+i;break; //第i列第2行按键被按下
case 0x0b:key=8+i;break; //第i列第3行按键被按下
case 0x07:key=12+i; //第i列第4行按键被按下
}
do
{
temp=P1; //再次扫描按键
temp=temp&0x0f;
}while(temp!=0x0f); //等待按键释放
}
}
}
return(key);//扫面结束,返回按键值
}
//////////////////////////////////////////////////////////////////////////
unsigned char DectectBusyBit(void)//状态判断函数(忙/闲?)
{
bit result;
P0 = 0xff; //读状态前先置高电平,防止误判
RS = 0;
delay(5);
RW = 1;
LCDEN = 1;
delay(5);
result=BF; //若LCM忙则反复测试在此处原地踏步;当LCM闲时,才往下继续
LCDEN = 0;
return resu
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-02-24 14:05 3x4拨号\
文件 126487 2018-10-21 20:50 3x4拨号\3x4电话.DSN
文件 742 2018-11-05 23:37 3x4拨号\3x4电话.PWI
文件 132396 2018-10-16 23:47 3x4拨号\Last Loaded 3x4电话.DBK
目录 0 2019-02-24 14:05 3x4拨号\project\
文件 7022 2018-10-16 20:00 3x4拨号\project\34text.c
文件 742 2018-10-17 10:35 3x4拨号\project\3x4电话.PWI
文件 2074 2018-10-06 17:50 3x4拨号\project\4x4矩阵按键扫描.c
文件 132396 2018-10-16 23:47 3x4拨号\project\Last Loaded 3x4电话.DBK
文件 127682 2018-10-10 08:48 3x4拨号\project\Last Loaded 液晶1602.DBK
文件 124283 2018-10-06 15:52 3x4拨号\project\Last Loaded 矩阵按键扫描keypad4_4.DBK
目录 0 2019-02-24 14:05 3x4拨号\project\Listings\
文件 14151 2018-10-16 18:32 3x4拨号\project\Listings\34text.lst
文件 4459 2018-10-06 17:46 3x4拨号\project\Listings\4x4矩阵按键扫描.lst
文件 14138 2018-10-21 21:40 3x4拨号\project\Listings\STARTUP.lst
文件 13401 2018-10-21 21:40 3x4拨号\project\Listings\text6.lst
文件 18915 2018-10-21 21:40 3x4拨号\project\Listings\text6.m51
文件 4458 2018-10-06 15:45 3x4拨号\project\Listings\定时扫描.lst
文件 613 2018-10-06 16:29 3x4拨号\project\Listings\矩阵按键定时扫描.lst
目录 0 2019-02-24 14:05 3x4拨号\project\ob
文件 11625 2018-10-16 18:32 3x4拨号\project\ob
文件 4929 2018-10-06 17:46 3x4拨号\project\ob
文件 819 2018-10-21 21:40 3x4拨号\project\ob
文件 13317 2018-10-21 21:40 3x4拨号\project\ob
文件 1252 2018-10-21 21:40 3x4拨号\project\ob
文件 2772 2018-10-21 21:40 3x4拨号\project\ob
文件 102 2018-10-21 21:40 3x4拨号\project\ob
文件 14518 2018-10-21 21:40 3x4拨号\project\ob
文件 4810 2018-10-06 15:45 3x4拨号\project\ob
文件 6376 2015-05-29 12:09 3x4拨号\project\STARTUP.A51
文件 6001 2018-10-17 10:16 3x4拨号\project\text6.c
............此处省略5个文件信息
- 上一篇:基于51单片机的音乐播放器,源码详细注释
- 下一篇:基于51单片机呼吸灯
相关资源
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 基于51单片机的计算器(C51编写,有
- 基于51单片机的交通信号灯程序
- 基于51单片机的多通道数据采集范围控
- 基于51单片机的直流电机转速控制及显
- 基于51单片机的教室智能照明控制系统
- 基于51单片机的交通灯设计
- 基于51单片机的智能十字路口交通灯系
- 基于51单片机的超声波测距技术实现含
- 基于51单片机射频密码锁设计门禁刷卡
- 基于51单片机的十字路口交通灯Protu
- 基于51单片机的刷卡签到系统
- 基于51单片机的十字路口交通灯控制系
- 基于51单片机的直流电机PID控制
- 基于51单片机超声波测距毕业设计
- 基于51单片机电子万年历的设计
- 基于51单片机控制的婴儿电子驱蚊器的
- 基于51单片机的温度检测系统的设计与
- 基于51单片机的NRF2401无线火灾的报警
- 基于51单片机的脉搏监测系统
- 基于51单片机数控直流电源的设计
- 基于51单片机的led点阵显示屏设计
- 基于51单片机的火焰传感器检测与报警
- 基于51单片机的PID调温系统热得快
- 基于51单片机设计的简易电子琴.
- 基于51单片机室内环境检测仪.zip
- 基于51单片机的智能晾衣架设计.docx
- 基于51单片机的电机转速监测
评论
共有 条评论