按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1...

按下16个矩阵键盘依次在数码管上显示1-16的平方.如按下第一个显示1,第二个显示4...
Proteus仿真时,用的是元件库自带的矩阵键盘,分别代表1-16,仿真图如下:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
void init<>;//初始化子程序
void delay<uint>;//延时子程序
void display<uint>;//显示子程序
uint keyscan<>;//按键扫描子程序
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar temp;
uint num;远程遥控
void main<>
{
    init<>;
    while<1>
        display<keyscan<>>;
}
void init<>
{生产圆珠笔
    num=0;
    P2=0;
    P1=0xff;
}
void delay<uint ms>
{
    uint x,y;
    for<x=ms;x>0;x-->
        for<y=110;y>0;y-->;
}
void display<uint a>
{
    uchar bai,ge,shi;
    if<a==0>
    {
        P2=0;
        P1=0xff;
    }
    else
    {
        if<a<10>
        {
            P2=table[a];
            P1=0xfe;
        }
        else if<a<100>
        {
            shi=a/10;
            ge=a%10;
            P2=table[shi];
            P1=0xfe;
            delay<1>;
            P1=0xff;
            P2=table[ge];
            P1=0xfd;
            delay<1>;
            P1=0xff;       
        }
        else if<a<1000>
        {
            bai=a/100;
            shi=a%100/10;
            ge=a%10;
            P2=table[bai];
            P1=0xfe;
            delay<1>;
            P1=0xff;
            P2=table[shi];
            P1=0xfd;
            delay<1>;
            P1=0xff;
            P2=table[ge];
            P1=0xfb;
            delay<1>;
            P1=0xff;
        }
    }
}
uint keyscan<>
{
    P3=0xfe;
    temp=P3;
    if<temp!=0xfe>
    {
        delay<5>;
        temp=P3;
        if<temp!=0xfe>
        {   
            switch<temp>
            {   
                case 0xee:num=1;break;
                case 0xde:num=4;break;
                case 0xbe:num=9;break;
                case 0x7e:num=16;break;
            }
        }
        while<temp!=0xfe>
            temp=P3;
    }
    P3=0xfd;
    temp=P3;
    if<temp!=0xfd>
    {
        delay<5>;
乳鸽养殖
        temp=P3;
        if<temp!=0xfd>
        {   
            switch<temp>
            {   
                case 0xed:num=25;break;
                case 0xdd:num=36;break;
                case 0xbd:num=49;break;
                case 0x7d:num=64;break;
            }
        }
        while<temp!=0xfd>
            temp=P3;
    }
    P3=0xfb;
    temp=P3;
    if<temp!=0xfb>
    {
        delay<5>;
        temp=P3;
        if<temp!=0xfb>
液压冷却系统
        {   
            switch<temp>
            {   
                case 0xeb:num=81;break;
                case 0xdb:num=100;break;
                case 0xbb:num=121;break;
                case 0x7b:num=124;break;
            }
        }
        while<temp!=0xfb>
            temp=P3;
    }
    P3=0xf7;
    temp=P3;
太阳能锅炉
    if<temp!=0xf7>
    {
        delay<5>;
        temp=P3;
        if<temp!=0xf7>
        {   
            switch<temp>
            {   
                case 0xe7:num=169;break;BIFEI
                case 0xd7:num=196;break;
                case 0xb7:num=225;break;
                case 0x77:num=256;break;
            }
        }
        while<temp!=0xf7>
            temp=P3;
    }
    return num;
}

本文发布于:2024-09-22 01:39:30,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/329610.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:键盘   矩阵   子程序   显示   遥控
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议