2366|4

6

帖子

1

TA的资源

一粒金砂(初级)

楼主
 

帮忙看一下设计哪里有问题。(无线收发系统,通过lcd显示键盘的输入) [复制链接]

下面是程序

QQ图片20160416113014.png (16.25 KB, 下载次数: 0)

接受模块

接受模块

QQ图片20160416170804.png (16.51 KB, 下载次数: 0)

发射模块

发射模块
此帖出自51单片机论坛

最新回复

楼主前几天好像贴过,仿真显示乱码   详情 回复 发表于 2016-4-17 06:28
点赞 关注
 

回复
举报

6

帖子

1

TA的资源

一粒金砂(初级)

沙发
 
发射---
#include   
static bit OP;      
static unsigned int count;     
static unsigned int endcount;
static unsigned char Flag;     
char iraddr1;
char iraddr2;
void SendIRdata(char p_irdata);
void delay();
char getkey()
{   
P1=0xfe;P3_6=P3_7=1;P3_3=1;
if(!P1_4)return 1;  
if(!P1_5)return 2;   
if(!P1_6)return 3;  
if(!P1_7)return 4;  
if(!P3_6)return 5;
if(!P3_7)return 6;   
P1=0xfd;
if(!P1_4)return 11;  
if(!P1_5)return 12;  
if(!P1_6)return 13;  
if(!P1_7)return 14;  
if(!P3_6)return 15;
if(!P3_7)return 16;   
P1=0xfb;  
if(!P1_4)return 21;
if(!P1_5)return 22;   
if(!P1_6)return 23;   
if(!P1_7)return 24;
if(!P3_6)return 25;
if(!P3_7)return 26;
   P1=0xf7;
if(!P1_4)return 31;
if(!P1_5)return 32;   
if(!P1_6)return 33;   
if(!P1_7)return 34;
if(!P3_6)return 35;
if(!P3_7)return 36;   
P1=0xfF;P3_3=0;
if(!P1_4)return 41;
if(!P1_5)return 42;   
if(!P1_6)return 43;   
if(!P1_7)return 44;
if(!P3_6)return 45;
if(!P3_7)return 46;
  
   return 0;
}
void main(void)
{
char key;
  count = 0;
  Flag = 0;  
OP = 0;   
P3_4 = 1;
EA = 1;
  TMOD = 0x11;
    ET0 = 1;
  P1=0xff;   
TH0 = 0xFF;  
TL0 = 0xE6;
TR0 = 1;
iraddr1=0xff;
  iraddr2=0xff;
do{  
key=getkey();
   if(key==1)SendIRdata(0x12);
      if(key==11)SendIRdata(0x0b);
      if(key==25||key==35)SendIRdata(0x1a);
      if(key==15)SendIRdata(0x1e);
      if(key==6)SendIRdata(0x0e);
      if(key==16)SendIRdata(0x1d);
if(key==26)SendIRdata(0x1f);
  if(key==36)SendIRdata(0x1b);
   if(key==32)SendIRdata(0x00);
      if(key==22)SendIRdata(0x01);
       if(key==23)SendIRdata(0x02);
if(key==24)SendIRdata(0x03);
       if(key==12)SendIRdata(0x04);
     if(key==13)SendIRdata(0x05);
     if(key==14)SendIRdata(0x06);
     if(key==2)SendIRdata(0x07);
      if(key==3)SendIRdata(0x08);
if(key==4)SendIRdata(0x09);
    if(key==21)SendIRdata(0x2A);
     if(key==5)SendIRdata(0x2B);
     if(key==33)SendIRdata(0x2C);
       if(key==34)SendIRdata(0x2D);
      if(key==31)SendIRdata(0x2E);
                        if(key==41)SendIRdata(0x2F);
    if(key==42)SendIRdata(0x30);
     if(key==43)SendIRdata(0x31);
     if(key==44)SendIRdata(0x32);
       if(key==45)SendIRdata(0x33);
      if(key==46)SendIRdata(0x34);
   }while(1);
}
void timeint(void) interrupt 1
{  
TH0=0xFF;  
TL0=0xE6;
  count++;
}   
void SendIRdata(char P_irdata)
{
         int i;
         char irdata=P_irdata;
         endcount=223;
         Flag=1;
         count=0;
         P3_4=0;
         do{}while(count                 endcount=117;
                 Flag=0;
                 count=0;
                 P3_4=1;
                 do{}while(count                          irdata=iraddr1;
                 for(i=0;i<8;i++)
                 {
                         endcount=10;
                         Flag=1;
                         count=0;
                         P3_4=0;
                         do{}while(count                                  if(irdata-(irdata/2)*2)
                                 {
                                         endcount=15;
                         }
                         else
                         {
                                 endcount=41;
                         }
                         Flag=0;
                         count=0;
                         P3_4=1;
                         do{}while(count                                  irdata=irdata>>1;
                         }
                         irdata=iraddr2;
                         for(i=0;i<8;i++)
                         {
                                 endcount=10;
                         Flag=1;
                         count=0;
                         P3_4=0;
                         do{}while(count                                  if(irdata-(irdata/2)*2)
                                         {
                                         endcount=15;
                         }
                         else
                         {
                                 endcount=41;
                         }
                         Flag=0;
                         count=0;
                         P3_4=1;
                         do{}while(count                                  irdata=irdata>>1;
                         }
                         irdata=~P_irdata;
                         for(i=0;i<8;i++)
                         {
                                 endcount=10;
                         Flag=1;
                         count=0;
                         P3_4=0;
                         do{}while(count                                  if(irdata-(irdata/2)*2)
                                         {
                                         endcount=15;
                         }
                         else
                                 {
                                 endcount=41;
                         }
                         Flag=0;
                         count=0;
                         P3_4=1;
                         do{}while(count                                  irdata=irdata>>1;
                         }
                         irdata=P_irdata;
                         for(i=0;i<8;i++)
                         {
                                 endcount=10;
                         Flag=1;
                         count=0;
                         P3_4=0;
                         do{}while(count                                  if(irdata-(irdata/2)*2)
                                         {
                                         endcount=15;
                         }
                         else
                                 {
                                 endcount=41;
                                          }
                         Flag=0;
                         count=0;
                         P3_4=1;
                         do{}while(count                                  irdata=irdata>>1;
                         }
                         endcount=10;
                         Flag=1;
                         count=0;
                         P3_4=0;
                         do{}while(count                                  P3_4=1;
                                 Flag=0;
                         }
                         void delay()
                         {
                                 int i,j;
                                 for(i=0;i<400;i++)
                                 {
                                         for(j=0;j<100;j++)
                                 {
                                         }
                                 }
                         }
此帖出自51单片机论坛
 
 
 

回复

6

帖子

1

TA的资源

一粒金砂(初级)

板凳
 
接受--
#include
#include
#include
#include
#include"stdlib.h"
#include"string.h"
#define JINGZHEN 48
#define TIME0TH ((65536-100*JINGZHEN/12)&0Xff)>>8
#define TIME0TL ((65536-100*JINGZHEN/12)&0xff)
#define TIME1TH ((65536-5000*JINGZHEN/12)&0xff00)>>8
#define TIME1TL ((65536-5000*JINGZHEN/12)&0xff)
#define uchar unsigned char
#define uint unsigned int
#define BUSY 0x80
#define DATAPORT P0
sbit light=P1^3;
sbit LCM_RS=P2^0;
sbit LCM_RW=P2^1;
sbit LCM_EN=P2^2;
void delay_LCM(uint);
void lcd_wait(void);
void WriteCommandLCM(uchar WCLCM,uchar BusyC);
void WriteDataLCM(uchar WDLCM);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
void initLCM(void);
void DisplayListChar(uchar X,uchar Y,unsigned char *DData);
void delay_LCM(uint k)
{
uint i,j;
for(i=0;i {
for(j=0;j<60;j++)
{;}
}
}
void WriteCommandLCM(uchar WCLCM,uchar BusyC)
{
if(BusyC)lcd_wait();
DATAPORT=WCLCM;
LCM_RS=0;
LCM_RW=0;
LCM_EN=1;
_nop_();
_nop_();
_nop_();
LCM_EN=0;
}
void WriteDataLCM(uchar WDLCM)
{
lcd_wait();
DATAPORT=WDLCM;
LCM_RS=1;
LCM_RW=0;
LCM_EN=1;
_nop_();
_nop_();
_nop_();
LCM_EN=0;
}
void lcd_wait(void)
{
DATAPORT=0xff;
LCM_RS=0;
LCM_RW=1;
LCM_EN=1;
_nop_();
while(DATAPORT&BUSY)
{
LCM_EN=0;
_nop_();
_nop_();
LCM_EN=1;
_nop_();
_nop_();
}
LCM_EN=0;}
void initLCM()
{
DATAPORT=0;
delay_LCM(15);
WriteCommandLCM(0x38,0);
delay_LCM(5);
WriteCommandLCM(0x38,0);
delay_LCM(5);
WriteCommandLCM(0x38,0);
delay_LCM(5);
WriteCommandLCM(0x38,1);
WriteCommandLCM(0x08,1);
WriteCommandLCM(0x01,1);
WriteCommandLCM(0x06,1);
WriteCommandLCM(0x0c,1);
}
void DisplayOneChar(uchar X,uchar Y,uchar DData)
{
uchar mx,my;
my=Y&1;
mx=X&0xf;
if(my>0)mx+=0x40;
mx+=0x80;
WriteCommandLCM(mx,0);
WriteDataLCM(DData);
}
void DisplayListChar(uchar X,uchar Y,uchar *DData)
{
uchar i=0,n;
Y&=0x01;
X&=0x0f;
n=strlen(DData);
while(i {
DisplayOneChar(X,Y,DData[1]);
i++;
X++;
}
}
code uchar BitMsk[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,};
uint IrCount=0,Show=0,Cont=0;
uchar IRDATBUF[32],s[20];
uchar IrDat[5]={0,0,0,0,0};
uchar IrStart=0,IrDatCount=0;
extern void initLCM(void);
extern void DisPlayListChar(uchar X,ucharY,unsigned char*DData);
void timerlint (void) interrupt 3 using 3{
EA=0;
TH1 = TIME1TH;
TL1 = TIME1TL;
Cont++;
if(Cont>10)Show=1;
EA=1;
}
void timer0int (void) interrupt 1 using 1{
uchar i,a,b,c,d;
EA=0;
TH0 = TIME0TH;
TL0 = TIME0TL;
if(IrCount>500) IrCount=0;
if(IrCount>300&&IrStart>0)
{IrStart=0;IrDatCount=0;IrDat[0]=IrDat[1]=IrDat[2]=IrDat[3]=0;IrCount=0;}
if(IrStart==2)
{  
IrStart=3;
for(i=0;i {   
if(i<32)
   {  
a=i/8;
b=IRDATBUF[i];
c=IrDat[a];
d=BitMsk[i%8];
if(b>5&&b<14)c|=d;
if(b>16&&b<25)c&=~d;
IrDat[a]=c;  
}
  }
if(IrDat[2]!=~IrDat[3])
  {
  IrStart=0;IrDatCount=0;IrDat[0]=IrDat[1]=IrDat[2]=IrDat[3]=0;IrCount=0;   
}  
EA=1;
  return;
}
IrCount++;
   EA=1;
}
void int0() interrupt 0  using 0  {
EA=0;
if(IrStart==0)
  {

IrStart=1;IrCount=0;TH0 = TIME0TH;TL0 = TIME0TL;
   IrDatCount=0;EA=1;  
  return;
}
if(IrStart==1)  
{
if(IrDatCount>0&&IrDatCount<33)  
IRDATBUF[IrDatCount-1]=IrCount;
if(IrDatCount>31)   
{IrStart=2;TH0 = TIME0TH;TL0 = TIME0TL;EA=1;return;}
if(IrCount>114&&IrCount<133&&IrDatCount==0)  
  {IrDatCount=1;}else if(IrDatCount>0)IrDatCount++;
}
IrCount=0;TH0 = TIME0TH;TL0 = TIME0TL;
  EA=1;
} main()
{
   uchar *a,n;
  TMOD  |= 0x011;  
TH0 = TIME0TH;
TL0 = TIME0TL;
  ET0=1;
TR0=1;
ET1=1;
TR1=1;     
IT0 = 1;  
EX0 = 1;
initLCM();  
EA=1;
for(;;)  
{
if(Show==1)
  {  
                Show=0;
    Cont=0;  
DisplayListChar(0,1,"Please keys");
a="";
switch(IrDat[3])
{
    case 0x12://ON/C
      a="ON/C";
  break;
                case 0x0b://+/-
                        a="+/-";
  break;
   case 0x1a://+
    a="+";
  break;
         case 0x1e://-
    a="-";
  break;
         case 0x0e://+
                 a="/";
  break;
         case 0x1d://MRC
  a="MRC";
  break;
         case 0x1f://M-
a="M-";
         break;
         case 0x1b://M+
    a="M+";
  break;
     case 0x00://0
        if(IrDat[2]==0xff)a="0";
  break;
    case 0x01://1
       a="1";   
  break;
  case 0x02://2
a="2";   
  break;
    case 0x03://3
       a="3";
  break;
    case 0x04://4
         a="4";
  break;
   case 0x05://5
         a="5";
  break;   
  case 0x06://6  
a="6";     
  break;   
   case 0x07://7
a="7";

  break;
      case 0x08://8
a="8";
  break;   
   case 0x09://9
a="9";
  break;   
  case 0x2A://%
   a="%";   

  break;

   case 0x2B://X
   a="X";

  break;

       case 0x2C://.
        a=".";


  break;

    case 0x2D://=
a="=";



  break;

    case 0x2E://
        a=" ";
     break;

}
n=strlen(a);
if(n>0) sprintf(s,"Key is [%s]",a);
else sprintf(s,"Not Key",a);
DisplayListChar(0,0,s);
}

}
}
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

4
 
楼主的帖子希望改一改。

让大家看哪有问题,---------  出了什么问题了?
再者,贴的程序要把出问题的部分贴出来,别不贴或全部都贴。
此帖出自51单片机论坛
 
 
 

回复

2万

帖子

340

TA的资源

版主

5
 
楼主前几天好像贴过,仿真显示乱码
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表