找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1235|回复: 0
打印 上一主题 下一主题
收起左侧

蓝牙与1602通信

[复制链接]
跳转到指定楼层
楼主
ID:249463 发表于 2018-1-15 17:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define uchar unsigned char                     
#define uint unsigned int
uint i;
uchar table[8]={0};
void delay(uint x)
{
        uchar i,j;
        for(i=x;i>0;i--)
                for(j=110;j>0;j--);        
}
void init()                        
{
        TMOD = 0x20;                                           //֨ʱǷ٤ط׽ʽһ
        //SCON = 0x50;                                        //ԮࠚՊѭޓ˕˽ߝ
        TH1 = 0xfd;                                      
        TL1 = 0xfd;
        TR1 = 1;
                SM0=0;
                SM1=1;
                EA=1;                                                
}
void  send (uchar  dat)
{


        for(i=0;i<8;i++)
        table[i]=dat;
        if(dat==11)
        {
       
        for(i=0;i<8;i++)
        {
                ES=0;
                SBUF = table[i];
          while(!TI);
           TI = 0;
          
   }
   ES=1;
   }
}



/*4*4ߘֳݼƌP0ࠚìɨĨگ˽*/
void keyscan1()
{
        uchar temp,num;        
        P3= 0xfe;                                                                       //1111 1110   ֚һПˤԶһٶ֍֧ƽ
        temp = P3;                                                                    //temp = 1111 1110
        temp = temp&0xf0;                                                         //1111 1110 & 1111 0000 = 1111 0000 =0xf0
       if(temp != 0xf0)                                         //ձԐдݼдЂìղP0ֵעʺلҤì
        {
                delay(10);                                                                      //ғʱms
                temp = P3;
                temp = temp & 0xf0;
               if(temp != 0xf0)                                    //ՙՎȷɏˇرԐдݼдЂ
                {
                        temp = P3;                                                   //ׁȡP0ࠚքֵ
                                                                             //ғʱ
                        switch(temp)                                                //޸ѐݼֵƐ׏
                        {
                                case 0xee:num =0;  break;        
                                case 0xde:num =1;  break;
                                case 0xbe:num =2;  break;
                                case 0x7e:num =3;  break;

                        }

                while(temp != 0xf0)
                        {
                                temp = P3;
                                temp = temp&0xf0;
                        }
                                          send(num);
                }
        }         
        P3 = 0xfd;                                                            // 1111 1101         ֚׾ПˤԶһٶ֍֧ƽ
        temp = P3;
        temp = temp&0xf0;                        
if(temp != 0xf0)
{
              delay(10);  
        temp = P3;
        temp = temp&0xf0;
                if(temp != 0xf0)
                {
                        temp = P3;

                        switch(temp)
                        {
                                case 0xed:num =4; break;
                                case 0xdd:num =5; break;
                                case 0xbd:num =6; break;        
                                case 0x7d:num =7; break;

                        }

                while(temp != 0xf0)
                        {        
                                        temp = P3;
                                        temp = temp&0xf0;
                        }
                                                 send(num);
                }
}
        P3 = 0xfb;                                                                         // 1111 1011  ֚ɽПˤԶһٶ֍֧ƽ
        temp = P3;
        temp = temp&0xf0;
if(temp != 0xf0)
{
        delay(10);
        temp = P3;
        temp = temp&0xf0;
                if(temp != 0xf0)
                        {
                                        temp = P3;

                                switch(temp)
                        {
                                case 0xeb:num =8;  break;
                                case 0xdb:num =9;  break;
                                case 0xbb:num =10; break;
                                case 0x7b:num =11; break;
                        }

                while(temp != 0xf0)
                        {
                                temp = P3;
                                temp = temp&0xf0;
                        }
                                                 send(num);
                        }
}

}



/*׷گ˽*/
void main()
{       

     init();                              //ַԃԮࠚԵʼۯگ˽
while(1)
{       
     keyscan1();           //ַԃߘֳݼƌɨĨگ˽

}
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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