51单片机的数码管和矩阵键盘

发布者:幸福自在最新更新时间:2018-06-22 来源: eefocus关键字:51单片机  数码管  矩阵键盘 手机看文章 扫描二维码
随时随地手机看文章

使用4*4的矩阵键盘和一个数码管

在4*4的矩阵键盘上编码0-F的字符,和一个数码管显示每个键盘上输入的字符。

//4*4键盘检测程序,按下键后相应的代码显示在数码管上  

#include  

typedef unsigned char UINT8;  

UINT8 i=100;  

UINT8 j,k,temp,key;  

void delay(unsigned char i)  

{  

  for(j=i;j>0;j--)  

    for(k=125;k>0;k--);  

}  

UINT8 code table[]=  

{  

    0x3f,0x06,0x5b,0x4f,  

    0x66,0x6d,0x7d,0x07,  

    0x7f,0x6f,0x77,0x7c,  

    0x39,0x5e,0x79,0x71  

};  

  

void display(unsigned char num)  

{  

     P0=table[num];  

}  

  

void init_led()  

{  

    P0 = 0x00;  

}  

                                                                                                       

void main()  

{  

    while(1)  

    {    

        P1 = 0xef;  

        temp = P1;  

        temp = temp&0xf0;  

        if (temp != 0xf0)  

        {  

            temp = P1;  

            switch(temp)  

            {  

                  case 0xee:  

                       key=0;  

                       break;  

                  case 0xed:  

                       key=1;  

                       break;  

                  case 0xeb:  

                       key=2;  

                       break;  

                  case 0xe7:  

                       key=3;  

                       break;  

                  default:                      

                      break;  

            }  

            display(key);  

            P1=0xfe;  

        }  

        P1 = 0xdf;  

        temp = P1;  

        temp = temp&0x0f;  

        if(temp != 0x0f)  

        {  

            temp = P1;  

            switch(temp)  

            {  

                  case 0xde:  

                       key = 4;  

                       break;  

                  case 0xdd:  

                       key = 5;  

                       break;  

                  case 0xdb:  

                       key = 6;  

                       break;  

                  case 0xd7:  

                       key = 7;  

                       break;  

                  default:  

                      break;  

             }  

             display(key);  

        }  

        P1=0xbf;  

        temp=P1;  

        temp=temp&0x0f;  

        if(temp != 0x0f)  

        {  

            temp=P1;  

            switch(temp)  

            {  

                  case 0xbe:  

                       key=8;  

                       break;  

  

                  case 0xbd:  

                       key=9;  

                       break;  

  

                  case 0xbb:  

                       key=10;  

                       break;  

  

                  case 0xb7:  

                       key=11;  

                       break;  

                  default:  

                       break;  

            }  

            display(key);  

        }  

        P1=0x7f;  

        temp=P1;  

        temp=temp&0x0f;  

        if(temp!=0x0f)  

        {           

            temp=P1;  

            switch(temp)  

            {  

                  case 0x7e:  

                       key=12;  

                       break;  

  

                  case 0x7d:  

                       key=13;  

                       break;  

  

                  case 0x7b:  

                       key=14;  

                       break;  

  

                  case 0x77:  

                       key=15;  

                       break;  

                    

                  default:  

                      break;  

            }  

            display(key);  

        }  

    }     

}  

这个上面有一个bug就是每进入的时候数码管不是空的而是现实“0”这个没有解决。

关键字:51单片机  数码管  矩阵键盘 引用地址:51单片机的数码管和矩阵键盘

上一篇:51单片机之矩阵按键
下一篇:单片机实验——4X4矩阵键盘识别技术

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

51单片机与PIC单片机和AVR单片机的性能对比分析
八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较,供读者在使用时作参考。 1. 51系列 应用最广泛的八位单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准MCU芯片。 51系列优点之一是它从内部的硬件
[单片机]
<font color='red'>51单片机</font>与PIC单片机和AVR单片机的性能对比分析
用proteus8.0仿真51单片机控制步进电机实验报告与源码
用proteus8.0仿真51单片机控制步进电机,实现简单的正反转、加减速控制。 ps. 该贴仅为获取黑币而法,如有雷同,多多保函 实验内容 掌握KeilC51软件与Protues软件联合仿真调试的方法; 掌握步进电机的工作原理及控制方法; 掌握步进电机控制的不同编程方法。 电路图 实验心得 这次实验让我学到了通过改变延时函数的参数可以实现步进电机的增减速,改变驱动电机的数模可以实现电机的正反转,中途遇到的困难不少,但在老师的指导下总算是完成任务。这两次实验使我能更熟练地运用微机来控制其他器件,获益良多。 单片机源程序如下: #include reg52.h sbit KEY0=P0^0; sbit KE
[单片机]
用proteus8.0仿真<font color='red'>51单片机</font>控制步进电机实验报告与源码
51单片机的调试经验分享
简介:一个全双工UART(通用异步接收发送器)的串行I/O口,用于实现单片机之间或单片机与微机之间的串行通信; 片内振荡器和时钟产生电路,石英晶体和微调电容需要外接。最高振荡频率取决于单片机型号及性能。 一.单片机的组成: CPU:由运算和控制逻辑组成,同时还包括中断系统和部分外部特殊功能寄存器; RAM:用以存放可以读写的数据,如运算的中间结果、最终结果以及欲显示的数据; ROM:用以存放程序、一些原始数据和表格; I/O口:四个8位并行I/O口,既可用作输入,也可用作输出; T/C:两个定时/记数器,既可以工作在定时模式,也可以工作在记数模式; 五个中断源的中断控制系统; 一个全双工UART(通
[单片机]
单只按键控制单只数码管滚动显示
程序源代码如下: /* 单只按键控制单只数码管滚动显示 */ #include reg51.h typedef unsigned char uint8; typedef unsigned int uint16; #define Key() (P1 & 0x01) code uint8 LED_CODE = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8E,0x00}; void delay(uint16 x) { uint16 i,j; for(i = x; i 0; i --) for(j
[单片机]
单只按键控制单只<font color='red'>数码管</font>滚动显示
以AT89C51单片机为核心的量程自动切换频率设计
近年来,随着科学技术的快速发展,特别是类似单片机等相关集成电路生产技术的快速堀起,推动了仪器仪表及家电产业的快速发展,用程序代码来简化硬件电路的复杂程度,使其不断向着体积小,价格低廉,功能更加多样化、智能化的方向发展。功能齐全,价格低廉的产品越来越受到人们的青睐,当然,科技的发展最先受益的 还是从事前沿科技研究领域的人员,对于他们来说,一款好的测量设备将为他们的研究工作带来便利的同时也减轻很多负担。就目前而言,高端仪器设备很多均依赖进口,研究并制造出属于我们国家自己的高端仪器设备将是我们一直努力的方向,而且也具有非常广阔的发展前景。 1 硬件电路设计 本设计主要由信号采集电路、放大整形电路、分频电路、信号处理电路、电源电路和显
[单片机]
以AT89C<font color='red'>51单片机</font>为核心的量程自动切换频率设计
51单片机测量温度 显示时间和日期 OLED显示 通过蓝牙发送
单片机源程序如下: #include reg52.h #include oled.h #include bmp.h #include ds18b20.h #include stdio.h #include ds1302.h sbit key_s2 = P2^0;//独立按键S2 //串口初始化 void UARTInit() { SM0 = 0; SM1 = 1;//串口工作方式1,8位UART波特率可变 TR1 = 1;//启动定时器1 TMOD |= 0x20;//定时器1,工作模式2 8位自动重装 TH1 = 0xfd; TL1 = 0xfd;//
[单片机]
<font color='red'>51单片机</font>测量温度 显示时间和日期 OLED显示 通过蓝牙发送
51单片机,计数溢出
51单片机,计数溢出,CPU响应中断,执行中断函数过程中,计数器是否已清0开始计数,还是等CPU执行完中断函数后再计数, 请以下面程序为例解释解释 //用T0使隔1秒流水灯亮一次,用T1使隔2秒静态数码管依次显示数字 #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar tcount0,tcount1,temp,num; uchar code table ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80, 0x90,0x88,0x83,0xc6,0
[单片机]
基于51单片机的调光控制器设计
1 调光控制器设计 在日常生活中,我们常常需要对灯光的亮度进行调节。本调光控制器通过单片机控制双向可控硅的导通来实现白炽灯(纯阻负载)亮度的调整。双向可控硅的特点是导通后即使触发信号去掉,它仍将保持导通;当负载电流为零(交流电压过零点)时,它会自动关断。所以需要在交流电的每个半波期间都要送出触发信号,触发信号的送出时间就决定了灯泡的亮度。 调光的实现方式就是在过零点后一段时间才触发双向可控硅开关导通,这段时间越长,可控硅导通的时间越短,灯的亮度就越低;反之,灯就越亮。 这就要求要提取出交流电压的过零点,并以此为基础,确定触发信号的送出时间,达到调光的目的。 1.1 硬件部分 本调光控制器的框图如下: 控
[单片机]
基于<font color='red'>51单片机</font>的调光控制器设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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