• 51单片机的独立键盘


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

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

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

    闲话少说,上代码:

    #include <reg52.h>
    #define uchar   unsigned char
    
    sbit RDKey=P3^7;
    sbit LED=P1^7;
    sbit dula=P2^6;
    sbit wela=P2^7;
    uchar code   table[]={
    0x3f,0x06,0x5b,0x4f,
    0x66,0x6d,0x7d,0x07,
    0x7f,0x6f,0x77,0x7c,
    0x39,0x5e,0x79,0x71};
    
    void ShortDelay();
    void LongDelay();
    void display(uchar num);
    void main()
    {
    	uchar num=0;
    	RDKey=1;
    	LED=1;
    	while(1)
    	{
    		if(RDKey==0)//键可能被被按下,需要消抖,用到了LongDelay函数
    		{
          LongDelay();
          if(RDKey==0)   //键被按下,Do Something,这里是数码管显示数字
          {
            LED=0;
            //Do something
            display(num);
            num++;
            if(num>=16)
              num=0;
          }
    		}
    		else
    		{
    			LED=1;
    			//Do OtherThing
    		}
    	}
    }
    
    void display(uchar num)
    {
      wela=1;
      P0=0xc0;
      wela=0;
      P0=0xff;
      dula=1;
      P0=table[num];
      dula=0;
      ShortDelay();   //数码管动态显示,用到的是ShortDelay函数
    }
    
    void ShortDelay()
    {
      uchar a=100;
      while(a--);
    }
    
    void LongDelay()
    {
      int a=10000;
      while(a--);
    }


     

  • 相关阅读:
    vs2008 服务器控件库
    dropdoenlist 设置默认值
    .NET用HttpFileCollection实现多文件上传
    dropdownlist 绑定
    简单的webservice调用(天气预报)
    统计在线人数
    多文件上传
    dropdownlist1 绑定 value值
    WMI 脚本入门:第一部分 (MSDN)
    WMI 脚本入门:第三部分 (MSDN)
  • 原文地址:https://www.cnblogs.com/xmfbit/p/3872205.html
Copyright © 2020-2023  润新知