打印

大型触摸屏的主程序.当家参考,原创

[复制链接]
2659|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangkj|  楼主 | 2008-4-8 17:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*******************************************
巨型触摸屏程序 
version 0.1 
by wangkj@yahoo.com 
create 2008-03-27 
*******************************************/


//#include "REG51F.H"
//#include <REG52.H>
#include <STC12C5410AD.h>
#include <serial.h>

sbit SYNC_LINE           = P3 ^ 2 ;
sbit FLAG_LED1          = P3 ^ 3;         
sbit IR_EN              = P3 ^ 4;        

#define        TRUE        1
#define        FALSE        0
#define        LIGHT        0                                // 亮逻辑值,用直观的符号化常数替换与硬件密切相关的逻辑值,增加程序的可读性、可移植性。
#define        DARK        1                                // 暗逻辑值
#define     IR_PORT1 P1
#define     IR_PORT2 P2
#define     IR_SEND_CHANEL P0
unsigned char ir_chanel = 0;
volatile unsigned  int data TimerCounter=0;
unsigned short int My_Addr=0;//Default address of self
/********************************************/
/*          定时器 0 中断服务               */ 
/* 说明:  100us 中断一次, 优先级最高                                         */
/********************************************/

void  Timer0_Int(void) interrupt 1 using 1 //自动reload方式
{
    TimerCounter++;
   //65536*65536*0.1/1000/3600/24 = 4.971026962962963 天
   //65536*0.1/1000  = 6.5536000000000001 大约6.6s
   if (My_Addr==0)     //first as sync driver
   {
     if ((TimerCounter & 0x7ff )==0)     //200ms   全体同步
      {
         SYNC_LINE = 1;
      }
     else if ((TimerCounter & 0x7ff )==0x3c)     //60,6ms   
      {
         SYNC_LINE = 0;
         ir_chanel=0;
         //start IR_chanel;
         CR = 1; //Start PCA Timer. IR_PWM=57Khz now
         IR_EN=0;//允许本机红外发送
      }
     else if ((TimerCounter & 0x07 )==0)         //8,0.8ms
      {
         SYNC_LINE = ~SYNC_LINE;
         if (ir_chanel < 32)
           IR_SEND_CHANEL=ir_chanel>>1; 
         else //close IR_chanel
         {
           CR = 0; //stop PCA Timer. IR_PWM=57Khz now
           IR_EN=1;//停止本机红外发送
         } 
         ir_chanel++;  
      }
    }
}
/********************************************/
/*          int0 中断服务               */ 
/* 说明:                               */
/********************************************/

void  Int0_Int(void) interrupt 0 using 0 
{
   static unsigned int Int_time,Int_time_counter; 
   if ((My_Addr==1)) // #1 is received
   {
     Int_time_counter=TimerCounter-Int_time;
     Int_time=TimerCounter;
     if ((Int_time_counter < 70 ) && (Int_time_counter > 40 ))     //>5ms all sync
     {
        ir_chanel=0;Ir_Stat1=0x00;Ir_Stat2=0x00;
     }
     if ((Int_time_counter < 20 ) && (Int_time_counter > 10 ))      //>1.6ms 
     {
        if (ir_chanel<8) //for diff My_Addr
        {
          Ir_Stat1=Ir_Stat1|(IR_PORT1&(1<<ir_chanel));
        }
        else if (ir_chanel<16) //for diff My_Addr
        {
          Ir_Stat2=Ir_Stat2|(IR_PORT2&(1<<(ir_chanel-8)));
        }
        ir_chanel++;  //ir_chanel>16 will other received board ,those code should add after
     }
   } 
}

//延时1ms
void Delay1ms(void) 
{
   unsigned  int data OldTimerCounter;
   OldTimerCounter = TimerCounter;
   while((TimerCounter-OldTimerCounter)<=10){}//无符号数减法

//延时1ms,同时转发串口中收到的数据
void Delay1ms_Tran(void) 
{
   unsigned  int data OldTimerCounter;
   OldTimerCounter = TimerCounter;
   while((TimerCounter-OldTimerCounter)<=10)//无符号数减法
   {
       if (char_can_read()>=3)
         {
            send_char(get_char());//转发
            send_char(get_char());
            send_char(get_char());
         }
   }

//主程序
void main(void)
{
  
 unsigned int  i,OldTimerCounter;
 unsigned int j;
 unsigned char LedStat=0,Ir_Stat1=0x00,Ir_Stat2=0x00,Ir_Stat1_old=0x00,Ir_Stat2_old=0x00;

 P1M0=0xff;
 P1M1=0x00;
 P2M0=0xff;
 P2M1=0x00;
 FLAG_LED1=LIGHT;
 SYNC_LINE=0;
// AUXR = 0x40;  //可能不能位寻址以及OR,AND 操作,待验证
 AUXR=0x20;//6x UART  速度
//T0 正常 T1/1 12倍速, UART正常 ,禁用ADC,SPI,低压中断。
/***********************************************
AUXR 地址8EH 复位值=xxxx xx00B

7     6     5         4     3    2     1      0
T0x12 T1x12 UART_M0x6 EADCI ESPI ELVDI            - - 0000,00xx
定时器0 和定时器1:
STC12C5410AD 和STC12C2052AD 系列是 1T 的8051 单片机,为了兼容传统8051,定时器0 和定时器1 复
位后是传统8051 的速度,即12 分频,这是为了兼容传统8051。但也可不进行12 分频,实现真正的1T。
T0x12: 0, 定时器0 是传统8051 速度,12 分频;1, 定时器0 的速度是传统8051 的12 倍,不分频
T1x12: 0, 定时器1 是传统8051 速度,12 分频;1, 定时器1 的速度是传统8051 的12 倍,不分频
如果UART 串口用定时器1 做波特率发生器,T1x12 位就可以控制UART 串口是12T 还是1T 了。
UART 串口的模式0:
STC12C5410AD 和STC12C2052AD 系列是 1T 的8051 单片机,为了兼容传统8051,UART 串口复位后是兼容
传统8051 的。
UART_M0x6: 0, UART 串口的模式0 是传统12T 的8051 速度,12 分频;
1, UART 串口的模式0 的速度是传统12T 的8051 的6 倍,2 分频
如果用定时器T1做波特率发生器时,UART串口的速度由T1的溢出率决定
EADCI: 0, 禁止A/D 中断; 1,允许A/D 中断
ESPI: 0, 禁止SPI 中断; 1,允许SPI 中断
ELVDI: 0, 禁止低压中断; 1,允许低压中断
5V 单片机,3.7V 以下为低压,3V 单片机,2.4V 以下为低压,
如ELVDI=1(允许低压中断),则会产生低压中断,现版本无低压检测中断,是低压复位。
STC12C5410AD 系列无低压检测中断,只有STC12C2052AD 系列单片机才有低压检测中断。
*************************************************/
// 28.636晶振,bps 2400 误差 0.21% STC5410可以12倍速T1,
// T0 标准51方式,做 1ms 基准时间用

//  PCON=0x80;  //12倍T1 *  2 倍 bps 2400*12*2=57600 
  PCON=0x00; //正常操作,没有倍速
/***********************************************
7    6     5    4   3   2   1  0 
SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 
POF:上电复位标志位,单片机停电后,上电复位标志位为1 ,可由软件清0 。
    实际应用:要判断是上电复位(冷启动),还是外部复位脚输入复位信号产生的复位,还是内部看门狗复位
P D: 将其置1 时,进入Power Down 模式,可由外部中断低电平触发或下降沿触发中断模式唤醒。
    进入掉电模式时,外部时钟停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。
IDL:将其置1,进入IDLE 模式(空闲),除CPU 不工作外,其余仍继续工作,可由任何一个中断唤醒。
    现C 版本开始大量供货,C 版本IDLE 模式可正常使用(原A 版本和B 版本建议不要用IDLE 模式)。
GF1,GF0: 两个通用工作标志位,用户可以任意使用。
SMOD: 波特率倍速位,置1,串口通讯波特率快一倍
***********************************************/

  IE=0x00;  //disable all interrupt    
/************************************************
IE(0A8H) 
7  6   5  4  3   2   1   0
EA EC ET2 ES ET1 EX1 ET0 EX0
使能位=1 使能中断
使能位=0 禁止中断
位标号功能
IE.7 EA 全局禁止位如果EA=0 禁止所有中断如果EA=1 通过置
位或清除使能位对应的每个中断被使能或禁止
IE.6 EC PCA中断使能位
IE.5 ET2 定时器2 中断使能位
IE.4 ES 串行口中断使能位
IE.3 ET1 定时器1 中断使能位
IE.2 EX1 外部中断1 使能位
IE.1 ET0 定时器0 中断使能位
IE.0 EX0 外部中断0 使能位
*************************************************/
  IP=0x02;  //Timer0 is first level of interrupt
/**********************************************  
IP(0B8H) 7 6 5 4 3 2 1 0
PT2 PS PT1 PX1 PT0 PX0
中断优先级控制位=1 定义为高优先级中断
中断优先级控制位=0 定义为低优先级中断
IP.6 PPC PCA中断优先级控制位
IP.5 PT2 定时器2 中断优先级控制位
IP.4 PS 串行口中断优先级控制位
IP.3 PT1 定时器1 中断优先级控制位
IP.2 PX1 外部中断1 中断优先级控制位
IP.1 PT0 定时器0 中断优先级控制位
IP.0 PX0 外部中断0 中断优先级控制位
************************************************/
  TMOD=0x22; //T0,T1 8 bit Reload
             
/***********************************************
TMOD 地址:89H 不可位寻址 复位值:00H
7    6   5  4  3    2   1  0
GATE C/T M1 M0 GATE C/T M1 M0
定时器1 定时器0
位符号 功能
TMOD.7/ GATE TMOD.7 控制定时器1,置1 时只有在INT1 脚为高及TR1 控制位置1 时才可打开定时器/ 计数器1。
TMOD.3/ GATE TMOD.3 控制定时器0,置1 时只有在INT0 脚为高及TR0 控制位置1 时才可打开定时器/ 计数器0。
TMOD.6/ C/T TMOD.6  控制定时器1 用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),
                    置1 用作计数器(从T1/P3.5 脚输入)
TMOD.2/ C/T TMOD.2  控制定时器0 用作定时器或计数器,清零则用作定时器(从内部系统时钟输入),置1 
                    用作计数器(从T0/P3.4 脚输入)
                    
TMOD.5/TMOD.4 M1、M0 定时器定时器/计数器1模式选择
0 0   13位定时器/ 计数器,兼容8048 定时器模式,TL1 只用低5 位参与分频,TH1 整个8 位全用。
0 1   16位定时器/ 计数器,TL1、TH1 全用
1 0   8 位自动重装载定时器,当溢出时将TH1 存放的值自动重装入TL1。
1 1   定时器/ 计数器1 此时无效(停止计数)。
TMOD.1/TMOD.0 M1、M0 定时器/ 计数器0 模式选择
0 0   13位定时器/ 计数器,兼容8048 定时器模式,TL0 只用低5 位参与分频,TH0 整个8 位全用。
0 1   16位定时器/ 计数器,TL0、TH0 全用
1 0   8位自动重装载定时器,当溢出时将TH0 存放的值自动重装入TL0。
1 1   定时器0 此时作为双8 位定时器/ 计数器。TL0 作为一个8 位定时器/ 计数器,通过标准定时器0 
      的控制位控制。TH0 仅作为一个8 位定时器,由定时器1 的控制位控制。


***********************************************/
  TH1=BAUD_19200;                 //设置串口的波特率为2400 for OSC 28.636Mhz//19200 for 29.08M
  TL1=BAUD_19200;                 //It Will be 2400*12*2 = 57600              //19200*6-115200 6x UART模式 
/**********************************************
  串行口在方式1和方式3的波特率可变,与定时器T1或T2的溢出速率有关。51子系列
’常用定时器T1作为波待率发生器,这时方式1和方式3的波特率由定时器Tl的溢出率
确定
***********************************************/

  SCON=0x42;  //8bit variable,四轴飞行器通讯,REN=0,disable receive and set TI to generate serial send interupt 
              //else the serial interupt will not work.
/**********************************************
  sc0N是一个可位寻址的专用寄存器,用来设定串行口的工作方式、控制串行口的接收
’发送以及状态标志。SCON的字节地址为98H,位地址为98H一9FH。其格式如下:
    D7  D6  D5  D4  D3  D2  Dl  D9
    SM0 SM1 SM2 REN TB8 RB8 TI  RI
各位的定义说明如下
SMO SCON.7  Serial Port mode specifier.(NOTE 1).
SM1 SCON.6  Serial Port mode specifier.(NOTE 1).
SMO SM1 Mode Description baud Rate
0   0   0    SHIFT REGISTER FOSC/12
0   1   1    8-BitUART      Variable
1   0   2    9-BitUART      Fosc/64 or Fosc/32
1   1   3    9-BitUART      Variable
SM2 SCON.5  
  在工作方式2和方式3中允许多机通信控制位。若SM 2置1,则允许多机通
信。当串行口以方式2或方式3接收时,若SM2=1,且接收到的第9位数据(RB8)为l,则
接收到的前8位数据送入SBUF,并置位RI产生中断请求;否则,RI=o,接收到的前8位数
据丢失。而当sM2=o时,则不管RB8是o还是1,都将前8位数据装入SBUF中,并产生中
断请求。
  在方式1中,若SM2=1,则只有接收到有效的停止位时,RI才置1,否则RI 0
在方式o中,SM2必须为o。
REN SCON.4  允许串行接收位。该位由软件置位或清除。REN=1时,允许接收;REN=o时,禁止接收 
TB8 SCON.3  
在工作方式2或方式3时,该位为发送的第9位数据,可按需要由软件置位或
清零。在许多通信协议中,该位常作为奇偶校验位。在Mc5—5l多机通信中,TB8的状态用
来表示发送的是地址帧还是数据帧,TB8=o时,为地址帧,TB8=1时,为数据帧。
RB8 SCON.2
在工作方式2或方式3时,存放接收到的第9位数据,代表着接收效据的某种
特征。例如,可能是奇偶位,或为多机通信中的地址/数据标识位。在方式o中,RB8未用;在
方式1中,若SM2=o,RB8是已接收到的停止位。
TI SCON.1     
发送中断标志。方式0中,串行发送完第8位数据后,由硬件置位;在其它方
式中,在发送停止位开始时,由硬件置位。TI=1时,表示帧发送结束,其状态既可供软件查
询使用,也可申请中断。在任何方式中,TI都必须由软件清0。
RI SCON.O
接收中断标志。在方式o中,接收完第8位数据后,由硬件置位;在其它方式中,
在接收到停止位的中间时由硬件置位。RI=1时,表示帧接收结束,其状态既可供软件查询
使用,也可申请中断。RI也必须靠软件清o。
when reset ,SCON=0;
***********************************************/
  REN=1;      //enable serial receive
  TH0=0;      
  TL0=0;      // 1S 中产生的溢出和中断的次数:28636000/256.0/12=9321.6145833333339 
              // 大约107us(107.27755273082832) 本程序不需要精确定时,差不多就行可以当作100us用
              // if TH=256-239 则周期为:0.10015365274479675
  TH0=256-243;//1000000/(29.08*1000*1000/256/12)=105.63961485557083
  TL0=256-243;//1000000/(29.08*1000*1000/243/12)=100.27510316368638
  TR0=1;
  TR1=1; //TCON=0x50;//0B01010000;  //Timer1 enable    Timer0 enable,No external INT
  ET0=1; //enable Timer0 interupt
//  ET1=1; //enable Timer1 interupt
  ES=1;  //enable serial interupt
  EA=1;  //enable  interupt
/*************************************************
    TCON作为定时器/汁数器的技制寄存器,其功能是控制定时器T0或T1的运行或停
止,标志定时器的溢出和中断情况。
TCON: TIMER/COUNTER CONTROL REGISTER. BIT ADDRESSABLE.
        TFl TR1  TFO  TRO  IE1  IT1  IEO  ITO
位地址  8FH  8xH  8DH  8CH  8BH  8AH  89H  88H
    (1)TF1(TCON.7):定时器T1溢出标志。TI溢出时,由硬件自动使置1,并向
CPU申请中断。当进入个断服务程序时,硬件自动将TFl清0。TFl也可以用软件清0。
    (2)TR1(TCON.6);定时器T1运行控制1位。由软件来置1或清0。 1启动工作,0停止。
    (3)TF0(TCON.5):定时器T0溢出标志。
    (4)TR0(TCON.4):定时器T0控制位
    (5)IE1(TCON.3):外部中断1(INT1)请求标志。
    (6)IT1(TCON.2):外部中断1触发方式选择位。
    (7)1E0(TCON .l):外部中断0(INT0)请求标志。
    (8)IT0(TCON.0):外部中断0触发方式选择位。当ITo=o时,为电平触发方式当ITo=1时,为边沿触发方式
       检测到由高到低的负跳变,,则置IEo标志为1,表示外部中断o正在向CPU申请中断必须保证外部中断源输人的高电平
       和低电平的持续时间在12个时钟周期以上
    TCON中的低四位(1E1、ITl、IE0,IT0)与中断有关
TCON.7 Timer 1 overflow flag. Set by hardware when the Timer/Counter 1 overlows.Cleared by hardware
processer vectors to the interrupt service routine.
TCON.6 Timer 1 run control bit. Set/cleared by software to turn Timer/Counter 1 ON/OFF.
TCON.5 Timer O overflow flag. Set by hardware when the Timer/CounterO overflows.Cleared by hsrdware
proceaser vectors to the service routine.
TCON.4 Timer O run control bit. Set/cleared by software to turn Timer/Counter O ON/OFF.
TCON.3 External Interrupt 1 edge flag. Set by hardware when External Interrupt edge is detected.
Cleared by hardware when interrupt is processed.
TCON.2 Interrupt 1 type control bit. Set/cleared by sotlwsre to specify falling edge flow level triggered
External Interrupt.
TCON. 1 External Interrupt O edge flag.Setby hardware when External Interrupt edge deteeted.Cleared
by hardware when interrupt is proeeased.
TCGN.O Interrupt O type control bit. Set/cleared by sotlwsre to specify fsfling edge/low level triggered
External Interrupt.
**************************************************/



//IR_PWM IRPWM2 initial
/*56.7Khz IR PWM setting
*/
/*
位  7    6 5 4 3 2    1    0
符号CIDL - - - - CPS1 CPS0 ECF
计数器阵列空闲控制: CIDL= 0 时, 空闲模式下PCA 计数器继续工作。CIDL= 1
时, 空闲模式下PCA计数器停止工作。
6 - 3 - 保留为将来之用。
2 - 1 CPS1,CPS0 PCA 计数脉冲选择( 见下表) 。
0 ECF
PCA 计数溢出中断使能: ECF = 1 时, 使能寄存器C C O N C F位的中断。ECF= 0 时,
禁止该功能。
*/
  CMOD = 0x02; // Setup PCA timer as FOSC/2
  CL = 0x00;   
  CH = 0x00;
 // CCAP0L = 0xc0; //Set the initial value same as CCAP0H
 // CCAP0H = 0xc0; //25% Duty Cycle
  //CCAP0L = 70; //Set the initial value same as CCAP0H
  //CCAP0H = 70; //70/256
  CCAP0L = 52; //Set the initial value same as CCAP0H
  CCAP0H = 52; 
  CCAPM0 = 0x42; //0100,0010 Setup PCA module 0 in PWM mode
  CR = 1; //Start PCA Timer. IR_PWM=57Khz now
  IR_EN=0;//允许本机红外发送
/********************
*/
  for(i=0;i<1000;i++)//延时1s,等待所有的机器都启动
    Delay1ms();
//发送本机地址+两个0
  send_char(My_Addr);
  send_char(0);
  send_char(0);
//如果在2S内收到其他主机发来的数据,是地址,则+1后发出
//2s时间到,地址固定,不再改变。
   OldTimerCounter = TimerCounter;
   while((TimerCounter-OldTimerCounter)<=20000)//无符号数减法
   {
       if (char_can_read()>=3)//后面还有机器
         {
            send_char(get_char()+1);//转发
            send_char(get_char());
            send_char(get_char());
            My_Addr++;//本机编号+1
         }
   }
//LedStat=本机地址
   LedStat=My_Addr&1;//只有1位,没办法
   FLAG_LED1=LedStat;
//两个字符一组数据,第一个是编号,第2,3个是状态。

    Ir_Stat1=0x00; //都应该能收到,收到时,状态为0 其他手册中波形图是这样,本芯片也应该如此(手册中没有描述)
    Ir_Stat2=0x00;
    Ir_Stat1_old=0x00;
    Ir_Stat2_old=0x00;

    SYNC_LINE=1;
    //IT0 = 0; //外部中断0,低电平触发中
    IT0 = 1; // 外部中断0,下降沿触发中
    EX0 = 1; // 允许外部中断0 中断     
    SYNC_LINE=0;//  1->0  edge interupt    (the first interupt)
  
  
  while(1)
  {
    //如果在串口缓冲中>3个字符,则,转发
  if (char_can_read()>=3)
       {
          send_char(get_char());//转发
          send_char(get_char());
          send_char(get_char());
       }
    //发送本机状态,如果状态改变的话。
    if((Ir_Stat1_old!=Ir_Stat1) ||(Ir_Stat2_old!=Ir_Stat2)) 
      {
        //保存现在的状态
        Ir_Stat1_old=Ir_Stat1;
        Ir_Stat2_old=Ir_Stat2;
        while (char_can_write()<4);//空位置小于4个,只能等待
          {
            send_char(My_Addr);
            send_char(Ir_Stat1);
            send_char(Ir_Stat2);
        }
          LedStat++;
          if (LedStat==4) LedStat=0;
          FLAG_LED1=(LedStat&1); //状态灯闪烁,给用户提示
        }
    Ir_Stat1=0xff; //初始值为都没有收到
    Ir_Stat2=0xff;
    for (i=0;i<16;i++) //16对发射接受
      {
      //    IR_SEND_CHANEL=8;//发送给对面信号的通道
        Delay1ms_Tran();//保持时间 把后面发来的串口数据转发走,以免缓冲满,丢数据
/*        for(j=0;j<1;j++)
          {  
           Delay1ms();//保持时间 把后面发来的串口数据转发走,以免缓冲满,丢数据
        }
          //IR_EN=1;//停止本机红外信号,防止接受本机信号(硬件接受光头错位放置,应该不被收到)
          //delay_withh_receive _IRDA//稍微给点延时,等待外设相应,很快进入下次循环
*/          Ir_Stat1=Ir_Stat1&IR_PORT1;//无阻挡的位收到信号,被置零;有阻挡,无信号的位仍旧为0 

          Ir_Stat2=Ir_Stat2&IR_PORT2;
      }//扫描时间是32ms,所以遮挡物必须超过32ms才能确保被扫描到。
  }//end of while(1);
  
}

相关帖子

沙发
wangkj|  楼主 | 2008-4-8 17:22 | 只看该作者

做过红外发射接收或者触摸屏的朋友想创业的

或者有需要的,请说说自己的看法。我询价2*1.5M的触摸屏要8万,实际上,2000能坐下来(硬件成本),如果简化的话,估计200都够。
这或许是创业的好思路。

使用特权

评论回复
板凳
cumtnj| | 2008-4-8 18:33 | 只看该作者

希望你能给点资料

本人想倒塌一下红外发射和接收,能给点资料不,如果兄弟方便的话,呵呵……
顺便问一下,你是在创业吗?

使用特权

评论回复
地板
wangkj|  楼主 | 2008-4-8 18:38 | 只看该作者

明天传一些

今天在家不干活

使用特权

评论回复
5
cumtnj| | 2008-4-8 18:51 | 只看该作者

谢谢

恩,先行谢过了,兄弟!呵呵

使用特权

评论回复
6
wangkj|  楼主 | 2008-4-9 08:49 | 只看该作者

38khz 接收,最常用的

使用特权

评论回复
7
wangkj|  楼主 | 2008-4-9 08:50 | 只看该作者

irm 38khz 接受

使用特权

评论回复
8
wangkj|  楼主 | 2008-4-9 08:52 | 只看该作者

irm 56khz 接收

使用特权

评论回复
9
wangkj|  楼主 | 2008-4-9 08:53 | 只看该作者

5mm 圆头940nm红外发射

使用特权

评论回复
10
wangkj|  楼主 | 2008-4-9 08:54 | 只看该作者

56.7khz 接收

使用特权

评论回复
11
wangkj|  楼主 | 2008-4-9 08:58 | 只看该作者

3mm 红外发射管

15度发射角,按说应该比5mm的那款30度的效果好,实际上,刚好相反。
应该能达到15m以上的距离,间歇发射方式。
实际上,我测试的结果,无论间歇否(56.7khz),距离用5mm的发射管,
用mos管或者3极管,限流27欧电阻,只能到4.9m,虽然超过预计的2m很多,
但是,还是不理想。或许是频率不对?我用的是56.4Khz,理论讲,没那么大
影响。
相关链接:https://bbs.21ic.com/upfiles/img/20084/20084985442327.pdf

使用特权

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

本版积分规则

581

主题

9976

帖子

24

粉丝