资源简介
基于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单片机的音乐播放器,源码详细
- 基于51单片机的智能循迹小车制作
- 基于51单片机电子琴程序
- 基于51单片机的自动加热散热系统,采
- 基于51单片机的闹钟设计
- 基于51单片机的心形流水灯仿真
- 基于51单片机的智能窗帘系统全套资料
- 基于51单片机寻光小车
- 基于51单片机的24l01程序
- 基于51单片机电炉丝加热控制仿真ke
- 基于51单片机仓库温度监控系统仿真设
- 基于51单片机多传感器楼道照明控制系
- 基于51单片机简易信号发生器仿真设计
- 基于51单片机的温度控制系统最终版
- 基于51单片机的电机调速代码
- 基于51单片机的简易频率计程序
- 基于51单片机矩阵键盘的实现含仿真原
- 基于51单片机的两轮平衡车程序
- 基于51单片机的RFID智能门禁系统源码
- 基于51单片机的电子密码锁源码+电路
- 基于51单片机的多路温湿度实时监测的
- 基于51单片机温控系统C程序
- 基于51单片机的GSM功能实现
- 基于51单片机的NRF24L01双向通信
- 基于51单片机的智能交通灯课程设计
- [毕业设计]基于51单片机的太阳能热水
- 基于51单片机的计算器39629
- 基于51单片机的门禁控制器设计
- 基于51单片机的简易电子琴设计
评论
共有 条评论