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);

     }

    }

  • 相关阅读:
    sql server日志已满报错
    图片基础信息
    android小细节
    内存泄露分析
    一个非常快的android模拟器
    activity退出
    ListView中内容的动画效果
    视频相关android软件
    Android Screen Monitor抓取真机屏幕
    ListView中使用type需要注意的东西
  • 原文地址:https://www.cnblogs.com/johanxu/p/5066361.html
Copyright © 2011-2022 走看看