zoukankan      html  css  js  c++  java
  • 并行口设计数字键盘实验

    一、  实验内容

    并行口实现数字0~9A~FLUPn总共19个键盘,将按键的结果用4位数码管(例如:7SEG-MPX-CA-BLUE)显示(可选——按键控制移位)出来。

    二、  实验目的

    掌握动态显示、动态扫描键盘的工作原理及硬、软件的设计、调试方法

    掌握80C51接口硬件电路设计方法及软件编程方法

    了解80C51外部中断的使用和编程方法

    三、  实验设备

    DELL台式机 + proteus版本6 + keilC51版本7

    四、  实验电路图(可打印)

     

     

    五、  程序流程图

     

     

    六、程序源码(可打印)

    #include <reg51.h>

     

    void dlms( );

    void Keys_Scan();

    char PreKey=20,Key=20;

     

     

     

    void dlms(char t)

    { char i;

             while(t--)

             {for( i=200;i>0;i--){}

             }

    }//delay

     

     

    void Keys_Scan()

    {

            char Tmp;

             P2=0x00;

             P1 = 0x0f;

            

             Tmp = P1 ^ 0x0f; // 列:P1.0-P1.3输出1

             switch(Tmp)//读出列数

             {

                     case 1: Key = 0; break;

                       case 2: Key = 1; break;

                       case 4: Key = 2; break;

                       case 8: Key = 3; break;

                       default: Key= 20;

             }

     

             P1=0x00;

             P2 = 0x1f;

     

             Tmp = P2^0x1f; //>> 4 ^ 0x0f;//右移

             switch(Tmp)

             {

                     case 1: Key += 0; break;

                       case 2: Key += 4; break;

                       case 4: Key += 8; break;

                       case 8: Key += 12;break;

                       case 16:Key += 16;break;

                      default: Key=16;

             }

             dlms(5);

    }

     

    void main()

    {

              char code  tab[]={0xc0,0xf9,0xa4,0xb0,

              0x99,0x92,0x82,0xf8,

              0x80,0x90,0x88,0x83,

              0xc6,0xa1,0x86,0x8e,

              0xc7,0xc1,0x8c,0x2b};

              P3=0x00;

       while(1)

             {   P1=0x00;

                        P2=0x1f;

                       if(P2!= 0x1f)

                       Keys_Scan();

                       if(PreKey!= Key)

                       {

                               P3 = ~tab[Key];

                                 

                                PreKey = Key;

                       }

                       dlms(1000);

     }

    }

  • 相关阅读:
    【转帖】关于release和debug的区别
    【转载】技术普及帖:你刚才在淘宝上买了一件东西
    iPhone史上最全的扫盲帖 【越狱,解锁,激活,Cydia,基带,裸机】
    【转帖】深入浅出话事件
    asp.net 4.0 的IIS部署
    【转帖】vs2010 快捷键大全
    C++中在一个类定义的头文件里含有一个对象,这个对象没有默认构造函数,如何实现初始化
    开通博客
    Selenium2+python自动化65js定位几种方法总结
    jps查看不到数据节点
  • 原文地址:https://www.cnblogs.com/johanxu/p/5066361.html
Copyright © 2011-2022 走看看