资源简介
AT89C51的矩阵键盘、跑马灯和呼吸灯设计.rar
代码片段和文件信息
#include “reg52.h“ //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
sbit d1=P0^0; //16个LED灯:D1-D16
sbit d2=P0^1;
sbit d3=P0^2;
sbit d4=P0^3;
sbit d5=P0^4;
sbit d6=P0^5;
sbit d7=P0^6;
sbit d8=P0^7;
sbit d9=P2^0;
sbit d10=P2^1;
sbit d11=P2^2;
sbit d12=P2^3;
sbit d13=P2^4;
sbit d14=P2^5;
sbit d15=P2^6;
sbit d16=P2^7;
sbit P32=P3^2; //P3.2引脚是外部中断INT0的信号
sbit xintiaodeng=P3^3; //P3.3引脚作为心跳灯的控制信号
int a[]={0xfe0xfd0xfb0xf70xef0xdf0xbf0x7f};//顺序流水灯数组
int b[]={0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe};//倒序流水灯数组
int c[]={0xfe0xfc0xf80xf00xe00xc00x800x000x800xc00xe00xf00xf80xfc0xfe0xff}; //顺序逐盏点亮逐盏灭掉数组
int d[]={0x7f0x3f0x1f0x0f0x070x030x010x000x010x030x070x0f0x1f0x3f0x7f0xff}; //倒序逐盏点亮逐盏灭掉数组
u8 KeyValue; //用来存放读取到矩阵键盘的键值
u8 k; //定义循环变量k
void delay(u16 i) // delay延时函数 i=1时,大约延时10us
{
while(i--);
}
void KeyDown(void) //该函数用于检测是否有按键按下并读取键值
{
char a=0;
P1=0x0f; //高四位为0,低四位为1,当按键被按下后,会有某个低四位变为0
if(P1!=0x0f)//读取按键是否按下
{
delay(100);//延时10ms进行消抖
if(P1!=0x0f)//再次检测键盘是否按下
{
//测试列
P1=0X0F;
switch(P1) //按键被按下后,会有某个低四位变为0
{
case(0X07): KeyValue=0;break; //P1.3=0,即第一列有某个按键被按下
case(0X0b): KeyValue=1;break; //P1.2=0,即第二列有某个按键被按下
case(0X0d): KeyValue=2;break; //P1.3=0,即第三列有某个按键被按下
case(0X0e): KeyValue=3;break; //P1.4=0,即第四列有某个按键被按下
}
//测试行
P1=0XF0;
switch(P1)
{
case(0X70): KeyValue=KeyValue;break; //P1.7=0,即第一行有某个按键被按下
case(0Xb0): KeyValue=KeyValue+4;break; //……每行相差4,因此为+4
case(0Xd0): KeyValue=KeyValue+8;break;
case(0Xe0): KeyValue=KeyValue+12;break;
}
while((a<50)&&(P1!=0xf0)) //检测按键松手检测
{
delay(100);
a++;
}
}
}
}
void zoumadeng2(void) //D1-D8,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P0=a[k];
delay(30000);
}
P0=0XFF;
}
void zoumadeng3(void) //D8-D1,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P0=b[k];
delay(30000);
}
P0=0XFF;
}
void zoumadeng4(void) //D9-D16,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P2=a[k];
delay(30000);
}
P2=0XFF;
}
void zoumadeng5(void) //D16-D9,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P2=b[k];
delay(30000);
}
P2=0XFF;
}
void zoumadeng6(void) //D1-D16,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P0=a[k];
delay(30000);
}
P0=0xff;
for(k=0;k<8;k++)
{
P2=a[k];
delay(30000);
P2=0xff;
}
}
void zoumadeng7(void) ////D16-D1,单点循环一次,长按无限循环
{
for(k=0;k<8;k++)
{
P2=b[k];
delay(30000);
}
P2=0xff;
for(k=0;k<8;k++)
{
P0=b[k];
delay(30000);
}
P0=0xff;
}
void zoumadeng8(void) ////D1-D8顺序逐盏点亮逐盏灭掉数组单点循环一次,长按无限循环
{
for(k=0;k<16;k++)
{
P0=c[k];
delay(30000);
}
}
void zoumadeng9(void) ////D8-D1倒序逐盏点亮逐盏灭掉数组单点循环一次,长按无限循环
{
for(k=0;k<16;k++)
{
P0=d[k];
delay(30000);
}
}
void zoumadeng10(void) ////D9-D16顺序逐盏点亮逐盏灭掉数组单点循环一次,长按无限循环
{
for(k=0;k<16;k++)
{
P2=c[k];
delay(3000
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 23462 2019-11-15 14:01 Backup Of new51.pdsbak
文件 22759 2019-11-16 20:15 Last Loaded new51.pdsbak
文件 18641 2019-11-16 20:14 new51
文件 8586 2019-11-16 20:13 new51.c
文件 4754 2019-11-16 20:14 new51.hex
文件 27 2019-11-16 20:14 new51.lnp
文件 18504 2019-11-16 20:14 new51.LST
文件 22893 2019-11-16 20:14 new51.M51
文件 22056 2019-11-16 20:14 new51.OBJ
文件 22784 2019-11-16 20:21 new51.pdsprj
文件 3152 2019-11-16 20:32 new51.pdsprj.LAPTOP-4TU8EL4B.win10.workspace
文件 337 2019-11-16 20:14 new51.plg
....... 55217 2019-11-16 20:14 new51.uvopt
....... 13227 2019-11-15 14:38 new51.uvproj
....... 55217 2019-11-16 20:13 new51_uvopt.bak
....... 0 2019-11-15 14:05 new51_uvproj.bak
----------- --------- ---------- ----- ----
291616 16
- 上一篇:Hyperion-2.3.1.zip
- 下一篇:信息隐藏技术及其攻击方法
相关资源
- 直流无刷电机方波驱动 stm32 例程代码
- layui后台管理模板
- 仿知乎界面小程序源代码
- 云平台-阿里云详细介绍
- photoshop经典1000例
- scratch垃圾分类源码(最终版本).sb
- IAR ARM 7.8破解
- TI CCS V5.4 安装步骤及破解文件
- 松下plc FP-XH的驱动
- 局域网硬件信息收集工具
- 加快Windows XP操作系统开机速度
- 联想启天M4350 BIOS升级文件
- 操作系统教程课后答案华中科技大学
- 用友ERP考试系统练习题库及答案
- 北京邮电大学数据结构历年考研真题
- 真正!!!概率论与数理统计浙江大
- TMS320VC5509A_开发板使用手册
- hxdef100源码、远控、后门
- CentOS-6.7-x86_64-bin-DVD1to2
- 点阵字库显示中英文
- caxa实体设计2019破解补丁
- Dibrugarh地区牛场土壤中潜在的益生菌
- nasm-2.15-x64
- RADMIN 3.4 注册机WIN10可用
- Radmin Server-3.5 完美绿色破解版x32 x64通
- Radmin 3.5 简体中文版附完美破解
- radmin3.51完美破解版(支持win10)
- PDF格式的白话孙子兵法
- 蓝牙驱动补丁IVT.BlueSoleil.6.4.240.2.Cra
- 易语言注册码验证思路模块源码
评论
共有 条评论