单片机4*4按键数码管显示0-9

发布者:RoboPilot最新更新时间:2017-01-15 来源: eefocus关键字:单片机  4*4按键  数码管显示 手机看文章 扫描二维码
随时随地手机看文章

#include

#define KEY    P1  //键盘

#define SEG    P0  //数码管

sbit COM=P2^0; // 数码管com

sbit OC = P2^1;//573锁存器 


char code TAB[]={//0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x84,0x84,0xbf,0x7f};//共阳极

                0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7D,0x07,0x7f,0x6F};  //共阴极


unsigned char scan[4]={0xef,0xdf,0xbf,0x7f}; //扫描码 低电平动作扫描


void delay1ms(int x);


void main(void)

{    

    unsigned char col,row;           //定义列行

    unsigned char rowkey,kcode;      //定义按键,按键码

     COM=0; //点亮数码管

     OC=0; // 低电平使能

    while(1)

    {

        for(col=0;col<4;col++)      //4列按键

       {

        KEY =scan[col];

        rowkey = ~KEY&0X0F;          //例如 读入低4位 反相清除高4位,求出行键值

        while(rowkey!=0)          //如果按下键

        {

              if(rowkey==0x01)   row = 0;     //如果第0行被按下

            if(rowkey ==0x02)  row = 1;     //如果第1行被按下

            if(rowkey == 0x04) row = 2;     //如果第2行被按下

            if(rowkey == 0x08) row = 3;     //如果第3行被按下

            kcode = 4*col+row;      //算出按键号码

            SEG = TAB[kcode];      //显示

            while(rowkey!=0)      //如果未放开

            rowkey = ~ KEY&0x0f;  //再次读入

     

         }

      

             delay1ms(1);    //消除抖动1ms

       }

   }


 

    void delay1ms(int x) //延迟消抖

{

     int i,j;

     for(i=0;i

     for(j=0;j<120;j++);  // 120 * 8 = 960us = 1ms 

}

关键字:单片机  4*4按键  数码管显示 引用地址:单片机4*4按键数码管显示0-9

上一篇:51单片机运行过程
下一篇:MCS-51单片机存储器扩展

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

基于单片机侵入型攻击的一般过程
侵入型攻击的第一步是揭去芯片封装。有两种方法可以达到这一目的: 第一种是完全溶解掉芯片封装,暴露金属连线。 第二种是只移掉硅核上面的塑料封装。第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作。第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便。 芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接。 接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,然后用清水清洗以除去盐分并干燥。没有超声池,一般就跳过这一步。这种情况下,芯片表面会有点
[电源管理]
合泰:频出新产品 助力物联网
日前,台湾著名专业微控制器IC设计厂商合泰半导体(Holtek)在北京举行2017新产品发布会,合泰中国公司总经理蔡荣宗先生向观众和记者介绍了合泰的全新产品并描述了合泰在MCU上的优势以及看好物联网市场并发力于此的信心。 新品频出,目标可期 总部设在台湾新竹的合泰是成立于1983年的台湾上市公司, 公司资本7700万美金,全球员工700多人,在中国大陆的厦门和东莞都设立有销售和技术中心。 据蔡总介绍,2016年合泰响应市场和客户的需求创新开发了大量的新产品,到目前为止公司在32位MCU、触摸MCU、健康医疗产品方面均已获丰收, 使2017年挑战性目标1.47亿美金指日可待。 蔡总介绍,公司70%的业绩来源于中国
[物联网]
合泰:频出新产品 助力物联网
单片机达人解密:指令数据写哪了?
单片机的运行需要执行程序,同时硬件也是必不可少的,二者缺一不可。大家都知道单片机的运行需要执行写好的程序,但是单片机的指令数据都被写在了哪里?在哪读取指令?单片机达人给你解答技术难题。 让我们从最开始的环节讲起。在单片机上电的瞬间,MCU的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的main之前,还有一系列其他的的初始化要做,如堆栈的初始化,不过这些很少回去修改)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完成了很多初始化操作,最后,调用系统的初始化函数,将控制权交给了操作系统,于是我们看到了Windows、Linux系统启动了。 如果将操作
[单片机]
51单片机学习笔记———8.点亮流水灯的一种奇葩算法
最近学习51单片机的过程发现了一种脑洞大开点亮流水灯的方法,于此分享一下源码: #include reg52.h sbit LED0 = P0^0; sbit LED1 = P0^1; sbit LED2 = P0^2; sbit LED3 = P0^3; sbit LED4 = P0^4; sbit LED5 = P0^5; sbit LED6 = P0^6; sbit LED7 = P0^7; sbit ADDR0 = P1^0; sbit ADDR1 = P1^1; sbit ADDR2 = P1^2; sbit ADDR3 = P1^3; sbit ENLED = P1^4; void Delay2000ms()
[单片机]
51<font color='red'>单片机</font>学习笔记———8.点亮流水灯的一种奇葩算法
如何将ADC连接到8051单片机
ADC(模数转换器)是许多单片机开发中非常重要的一部分,本文是关于将ADC连接到8051单片机。ADC0804是此处使用的ADC,在进行接口程序之前,我们必须清楚地了解ADC0804的工作原理。 一、ADC0804 ADC0804是一颗8位、单通道的A/D转换器。ADC0804的特点是差分模拟电压输入,0-5V输入电压范围,无调零,内置时钟发生器,可以外部调节参考电压以将较小的模拟电压跨度转换为8位分辨率等。ADC0804引脚图如下图所示: ADC0804的Vref/2(引脚9)处的电压可以在外部进行调节,以将较小的输入电压跨度转换为全8位分辨率。Vref/2(pin9)左开表示输入电压跨度为0-5V,步长为5/255=1
[单片机]
如何将ADC连接到8051<font color='red'>单片机</font>
单片机在微型打印机中的应用
1 引 言      由于单片机具有简单实用、高可靠性、良好的性能价格比以及体积小等优点,已经在各个技术领域得到了迅猛发展。本文着重介绍89C52对并行接口的微型打印机的控制,以便更好地了解和掌握单片机对外部接口的一般和一些特殊功能的应用。 2 控制打印原理      89C52单片机执行程序存贮器中的程序,控制电机带动滑槽轮及蜗杆转动 [1] ,使打印机的机头滑架左右移动,从而不断改变同一点行上的打点位置。蜗杆的转动一方面通过凸轮带动走纸机构实行走纸,另一方面驱动色带移动。电机转动时感应线圈有一个3 V的正弦信号,经过整形电路后成为方波,此方波输入到89C52,经过89C52相应的指令检测此方波的变化时刻(从上升沿变到
[应用]
单片机编程时关于int
在进行单片机编程时,我们经常用Int定义变量。以前学C语言时,我知道int它表示的位数跟具体的硬件结构有关。不过看了一本书中 慎用int 这节后,我对int又有了更一步的认识。 原来C语言并没有进一步明确不同硬件平台下int位宽由硬件平台决定这一点,从而导致了对int不同的理解。实际上int并没有具体的位宽限制,是由所用硬件平台(MCU)和编译器共同决定位宽为多少,通常情况下编译器会将int的位宽定为与所用MCU的位宽一致。 文中也举了两个例子说明因为对int理解的不够深入而犯的错误。一个是因为将int误理解为32位,而编译器和MCU为16位宽。一个产品需要显示开机后的时间,显示精度为秒。如果按照int为32位的话,定义secon
[单片机]
简单全能的AVR单片机高压解锁器
简单全能的AVR单片机高压解锁器(制作方法,以MEGA16为例,附电路与C源程序,注:不是高压编程器)AVR高压解锁 概述: 利用常用的AVR单片机ATmega16制作的高压解锁器,可以解开所有芯片锁死的情况(除非芯片损坏、烧毁)。制作作品经实验验证,解开了山东大学物理学院AVR单片机实验室所有近40片锁死的单片机以及许多同学锁死的单片机。制作方法简单,保证你一小时之内做完。 所需元件极少(如电路图所示):仅一只三极管、一片7805,三支电阻、一只LED、三个小电容,一片可用的单片机,一个12V电源。 程序与电路连接可方便的移植到其它型号单片机上(凡支持高压编程的,都可以)。 希望能对初学单片机的同学有所帮助,特别
[单片机]
简单全能的AVR<font color='red'>单片机</font>高压解锁器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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