找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

关于使用at89c51单片机通过矩阵键盘输入数据并显示

关于使用at89c51单片机通过矩阵键盘输入数据并显示
商品类型:
全新商品
运费:
虚拟物品
剩余时间:
成交结束
商品数量:
1000
累计售出:
0
现价:

5 黑币

使用at89c51单片机通过矩阵键盘,采用中断方式,输入数据并显示。
当无按键按下时,数码管循环画8
有按键按下时产生中断并将按键的键值0~F通过串行口输出,显示3秒后返回
返回后循环画8
[free]使用at89c51单片机通过矩阵键盘,采用中断方式,输入数据并显示。
当无按键按下时,数码管循环画8
有按键按下时产生中断并将按键的键值0~F通过串行口输出,显示3秒后返回
返回后循环画8
[attach]94394[/attach]
部分程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ledcode[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code key_table[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
uchar code table1[]={~0xfe,~0xde,~0x9e,~0x9a,~0x92,~0x82,~0x82,~0x80};
uchar count=0,flag=0;
void delay(uint c)
{
uchar  a,b;
        for(;c>0;c--)
        for(a=142;a>0;a--)
        for(b=2;b>0;b--);
}
void main()
{
        uchar i;       
        EX0=1;
           IT0=1;
        EA=1;
        SM0=0;SM1=0;
           P1=0xf0;
        while(1)
        {
         for(i=0;i<8;i++)
         {
                 SBUF=table1[i];
                while(TI==0);TI=0;
                delay(500);
         }
        }       
}[/free]

部分程序如下:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ledcode[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code key_table[]={ 0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};
uchar code table1[]={~0xfe,~0xde,~0x9e,~0x9a,~0x92,~0x82,~0x82,~0x80};
uchar count=0,flag=0;
void delay(uint c)
{

        uchar  a,b;
        for(;c>0;c--)
        for(a=142;a>0;a--)
        for(b=2;b>0;b--);
}
void int_0() interrupt 0
{
         uchar key,temp,i,num;
         EX0=0;
         delay(10);
         EX0=1;

        temp=P1;
        P1=0x0f;
        key=temp|P1;
        for(i=0;i<16;i++)
        {
                if(key==key_table[i])
                {       
                        num=i;
                        break;
                }
        }
        SBUF=ledcode[num];
        while(!TI);        TI=0;
        delay(3000);
        P1=0xf0;
}
void main()
{
        uchar i;       
        EX0=1;
           IT0=1;
        EA=1;
        SM0=0;SM1=0;
           P1=0xf0;
        while(1)
        {
         for(i=0;i<8;i++)
         {
                 SBUF=table1[i];
                while(TI==0);TI=0;
                delay(500);
         }
        }       
}

信用评价

卖家实名
卖家信用 
买家信用 

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表