打印
[51单片机]

求 大神帮忙啊 哎 自学难啊

[复制链接]
1357|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一点也不懂|  楼主 | 2014-1-12 18:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
TE, se, While, tc, ui
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar Key_num;
uint a[17]={0x00,0x0f,0xf0,0xdb,0xbd,0x7f,0x3f,0x1f,0x07,0xcd,0x8d,0xd5,0x7c,0x6e,0x7e,0xbf,0xff};
void delay(uint x)
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);       
}
void display()
{
        P0=a[Key_num-1];
}
void Keyboard(void)
{
        uchar temp;
        P2=0x7f;
        temp=P2;
        temp=temp&0xf0;
        if(temp!=0x0f)
        {
                delay(10);
                temp=P2;
                temp=temp&0xf0;
                while(temp!=0xf0)
                {
                        switch(temp)
                        {
                                case 0xe0:Key_num=1;break;
                                case 0xd0:Key_num=2;break;
                                case 0xb0:Key_num=3;break;
                                case 0x70:Key_num=4;break;
                        }
                }
                if(temp==0xf0)
                {
                        Key_num=17;
                }
       
        }
        P2=0xbf;
        temp=P2;
        temp=temp&0xf0;
        while(temp!=0xf0)
        {
                delay(10);
                temp=P2;
                temp=temp&0x0f;
                while(temp!=0x0f)
                {
                        switch(temp)
                        {
                                case 0xde:Key_num=5;break;
                                case 0xdd:Key_num=6;break;
                                case 0xdb:Key_num=7;break;
                                case 0xd7:Key_num=8;break;
                        }
                }
                if(temp==0x0f)
                {
                        Key_num=17;
                }
       
        }
        P2=0xfb;
        temp=P2;
        temp=temp&0x0f;
        if(temp!=0x0f)
        {
                delay(10);
                temp=P2;
                temp=temp&0x0f;                 
                while(temp!=0x0f)
                {
                        switch(temp)
                        {
                                case 0xbe:Key_num=9;break;
                                case 0xbd:Key_num=10;break;
                                case 0xbb:Key_num=11;break;
                                case 0xb7:Key_num=12;break;
                        }
                }
                if(temp==0x0f)
                {
                        Key_num=17;
                }
               
        }
        P1=0xf7;
        temp=P2;
        temp=temp&0x0f;
        if(temp!=0x0f)
        {
                delay(10);
                temp=P2;
                temp=temp&0x0f;                 
                while(temp!=0x0f)
                {
                        switch(temp)
                        {
                                case 0x7e:Key_num=12;break;
                                case 0x7d:Key_num=14;break;
                                case 0x7b:Key_num=15;break;
                                case 0x77:Key_num=16;break;
                        }
                }
            if(temp==0x0f)
                {
                        Key_num=17;
                }       
        }
       
}
void main(void)
{
        while(1)
        {
                Keyboard();
                display();
        }
}不知道哪里错了

相关帖子

沙发
651927693| | 2014-1-12 21:05 | 只看该作者
请明确你的问题。
具体是什么现象?

使用特权

评论回复
板凳
niuyaliang| | 2014-1-12 21:43 | 只看该作者
发一段没头没脑的程序。。不知道你要干什么

使用特权

评论回复
地板
linfeng24| | 2014-1-12 23:54 | 只看该作者
第一:说清楚你的程序是要实现什么目标;
第二:最后运行结果是啥,出现什么问题,因为有时候不是程序问题,有可能也是硬件的问题;
把两点描述清楚了我们就好给你分析

使用特权

评论回复
5
dota_yy| | 2014-1-13 01:23 | 只看该作者
目测按键显示结果

使用特权

评论回复
6
一点也不懂|  楼主 | 2014-1-13 13:38 | 只看该作者
我现在搞出来了  不好意思 我的表达 能力不好

使用特权

评论回复
7
chenyu988| | 2014-1-13 13:53 | 只看该作者
加个注释吧,不然过两天自己都忘了是什么意思了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

6

帖子

0

粉丝