51单片机的独立键盘

发布者:电子设计艺术家最新更新时间:2017-01-10 来源: eefocus关键字:51单片机  独立键盘 手机看文章 扫描二维码
随时随地手机看文章

这几天打算好好开始看郭天祥的单片机视频,自己也写了一个独立键盘的51单片机程序,开发环境为Keil C51。

刚开始看,功能并不是很复杂,由51单片机的P1^7口接LED灯,P0口作为6位数码管的位选线和段选线,6位数码管每次显示相同的数字。位选和段选的控制由P2^7,P2^6口。按键只有一个,一端与地相连,一端接P3^7口。

当按下按键时,LED灯会发光,同时6位数码管显示的数字加1,从0~F后返回0。松开按键后,LED灯灭。

闲话少说,上代码:

  1. #include   

  2. #define uchar   unsigned char  

  3.   

  4. sbit RDKey=P3^7;  

  5. sbit LED=P1^7;  

  6. sbit dula=P2^6;  

  7. sbit wela=P2^7;  

  8. uchar code   table[]={  

  9. 0x3f,0x06,0x5b,0x4f,  

  10. 0x66,0x6d,0x7d,0x07,  

  11. 0x7f,0x6f,0x77,0x7c,  

  12. 0x39,0x5e,0x79,0x71};  

  13.   

  14. void ShortDelay();  

  15. void LongDelay();  

  16. void display(uchar num);  

  17. void main()  

  18. {  

  19.     uchar num=0;  

  20.     RDKey=1;  

  21.     LED=1;  

  22.     while(1)  

  23.     {  

  24.         if(RDKey==0)//键可能被被按下,需要消抖,用到了LongDelay函数  

  25.         {  

  26.       LongDelay();  

  27.       if(RDKey==0)   //键被按下,Do Something,这里是数码管显示数字  

  28.       {  

  29.         LED=0;  

  30.         //Do something  

  31.         display(num);  

  32.         num++;  

  33.         if(num>=16)  

  34.           num=0;  

  35.       }  

  36.         }  

  37.         else  

  38.         {  

  39.             LED=1;  

  40.             //Do OtherThing  

  41.         }  

  42.     }  

  43. }  

  44.   

  45. void display(uchar num)  

  46. {  

  47.   wela=1;  

  48.   P0=0xc0;  

  49.   wela=0;  

  50.   P0=0xff;  

  51.   dula=1;  

  52.   P0=table[num];  

  53.   dula=0;  

  54.   ShortDelay();   //数码管动态显示,用到的是ShortDelay函数  

  55. }  

  56.   

  57. void ShortDelay()  

  58. {  

  59.   uchar a=100;  

  60.   while(a--);  

  61. }  

  62.   

  63. void LongDelay()  

  64. {  

  65.   int a=10000;  

  66.   while(a--);  

  67. }  


关键字:51单片机  独立键盘 引用地址:51单片机的独立键盘

上一篇:单片机秒表计时器
下一篇:51操作系统学习笔记(一)

推荐阅读最新更新时间:2024-03-16 15:29

51单片机外围模块——LCD1602液晶模块
LCD1602简介 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号的点阵型液晶模块。它是由若干个5x7或者5x10的点阵字符位组成,每个点阵字符位都可以用显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此,所以它不能很好的显示图片。 1602的引脚 操作步骤 初始化(写命令) 写地址 写数据 时序图及时序参数 LCD1602关键性的指令设置 1.清屏指令 功能: 清除液晶显示器,即将 DDRAM 的内容全部填入 空白 的 ASCII码 20H; 光标归位,即将光标撤回液晶显示屏的左上方; 将地址计数器(AC)的值设为 0。 2.进
[单片机]
<font color='red'>51单片机</font>外围模块——LCD1602液晶模块
keil5编译开发51单片机操作步骤
安装好keil 5 mdk 之后,从keil官网下载 c51v960.exe, 具体操作步骤 1.进入官网 2 3.点击C51之后,会让填写一个个人信息,没啥障碍,正常填写就好了,填写好之后就会出现下面的界面,点击下载就好了 4. 下载之后,运行,安装路径选择原来 keil5 MDK的安装路径 安装完毕之后就大功告成了
[单片机]
keil5编译开发<font color='red'>51单片机</font>操作步骤
AT89C2051单片机在无线门铃报警器的应用
  门铃在中国古代较少听说,有钱的大户人家是在大门上装有装饰性的门环,叫门的人可用门环拍击环下的门钉发出较大的响声,有现代"门铃"的作用。   当今,无线门铃与无线 门铃 报警器比比皆是,但同时按照门铃与报警器还是给家庭带来了些许麻烦。而无线门铃报警器就是将门铃与报警器集于一身。它的体积小,性价比高等特点得到了人们的好评。而现在市场上许多产品的遥控器与接收器件的数据传输都是采用非编码式,因而互相的影响较大,一旦一个院子两户人家同时安装时,就很容易出现错误响应。而基于单片机的无线门铃报警器,将发射器发送的数据进行编码,只有收到与接收机相配套的遥控器发射出的信号时,接收机才会做出反应。从而在降低成本的同时达到了方便实用的目的。
[单片机]
AT89C20<font color='red'>51单片机</font>在无线门铃报警器的应用
51单片机实现贪食蛇的子程序
这是从 http://www.51hei.com/bbs/dpj-20623-1.html 这个 制作 里面截取的一段子程序,调用函数请下载里面的附件. 下面是mysanke.h文件: #ifndef _MYSNAKE_H_ #define _MYSNAKE_H_ /*--------------------------------------------------------- 函数功能:检测随机落食是否压在已存在的亮点上 调用形式:Check_Food(*node); 参数:结构体指针 返回值:返回食物是否可以放置1- 可以 0- 不可以 备注:食物产生函数调用此函数用于 检测 -----------------
[单片机]
<font color='red'>51单片机</font>实现贪食蛇的子程序
有关51单片机读端口、读引脚的问题
80C51单片机有P0-P3四个P口,以P0为例说明: 要搞清这个问题,就要明白p0口的内部结构。P0口是由锁存器经两个驱动场效应管和外部引脚相连的。 读引脚的意思就是直接读P0外部引脚的电位,而读端口(锁存器)读的是内部与数据总线链接的锁存器的电位。 两者不同。一般来说,读取P0的数据,都是读引脚,目的是获取与P0相连的外部电路的状态。而读端口是在执行下述语句时由CPU自行完成的: inc P0;给p0加1 执行这个语句时 ,采用“读-改-写”的过程,先读取p0的端口数据,再加1,然后送到p0锁存器里。注意这个端口数据跟p0的引脚状态不一样,比如你事先给p0写进69H,p0里数据就是69H,而引脚上的状态因为你没有执行MOV A
[单片机]
51单片机按键控制花样灯
/**************************************************** * 本程序实现用按键控制花样灯。 * * 当K1按下时,灯从0xfe向左跑一遍; * * 当K2按下时,LED灯从0x7f向右跑一遍到了0xfe右跑回到起始位置; * * 当K3键按下时,LED灯从0xfe开始作流水灯形式运行一次,然后再流回来。 * * 当K4键按下时,LED灯先亮前四个,接着再转向亮后四个。 * *
[单片机]
51单片机 1602液晶显示控制代码
引脚的连接方式 _ :下面是对其各个引脚进行说明: 1 /*-- 2 REG52.H 3 4 Header file for generic 80C52 and 80C32 microcontroller. 5 Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. 6 All rights reserved. 7 --*/ 8 9 #ifndef __REG52_H__ 10 #define __REG52_H__ 11 12 /* BYTE Registers */ 13 s
[单片机]
<font color='red'>51单片机</font> 1602液晶显示控制代码
基于AT89C51单片机的ADC0808程序
AT89C51单片机介绍 AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。 由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 AT89C51管脚说明 ATMEL公司的AT89C51是一种高效微控制器。采用40引脚双列直插封装形式。AT89C51单片机是高
[单片机]
基于AT89C<font color='red'>51单片机</font>的ADC0808程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved