文号
t30180
阅读
2407
回复
4
收藏
3
公布一个电话字段提取电路
2010/11/06
IP:贵州
本人受委托开发的一个东西,自动提取市话中的号码等字段信息。
将字段信息通过串口发往PC机,可以进行很多有趣的事情,例如实现黑名单等等。
attachment icon Backup of Sheet1.pdf 128.73KB PDF 160次下载 预览
PHONE.png
4
ehco作者
16年2个月前IP:未同步
264550
1楼
以下是关于这个电路最核心的解码函数,基于C51语言,用户可根据自己用途对其进行扩展。

void UART_init()//初始化串行口和波特率发生器
{
                SCON =0x50;           //选择串口工作方式1,打开接收允许
    TMOD =0x20;           //定时器1工作在方式2,定时器0工作在方式1
    TH1 =0xA0;            //实现波特率1200(系统时钟11.0592MHZ)
    PCON = 0x80;
    TR1 =1;               //启动定时器T1
    ET1 =0;
    ES=1;                 //允许串行口中断
    PS=1;                 //设计串行口中断优先级
    EA =1;                //单片机中断允许
}

//********************************************

void com_interrupt(void) interrupt 4
{
   unsigned char ch;
      if(RI)//处理接收中断
   {
      ch=SBUF;//接收串口数据
      if((ch==0x04)&&(start==0)) //0x04代表为单数据消息格式,还未开始接收
      {
          buffer[0]=ch;//开始保存第一字节
        start=1; //置开始接收标志
        i=1;//数组指针第二个字节
      }
      else if(start==1)//如果已开始接收
      {
            buffer[i++]=ch;  //存放
      }
      if(i>1 &&  buffer[1]>25)//接收超过了25个字节(我简单用来防干扰后不退出的情况)
      {
             i=1;//变量复位
        start=0;
      }
      if(i>2 && i>(buffer[1]+2))  //取完了长度字节标示的长度  (原来是 if(i>2 && i>(buffer[1]+2)))
      {
              
        Length=i;
        New_Number=1;
        i=1; //变量复位
        start=0;
            
      }
   }
   TI=0; //清除中断标志位
   RI=0;   //清除中断标志位
}
引用
评论
16年2个月前IP:未同步
264576
2楼
MC145447 ---- CLID Receiver

attachment icon MC145447.pdf 309.16KB PDF 124次下载 预览
引用
评论
16年2个月前IP:未同步
264581
3楼
果然还是直接调用人家做好的模块方便啊汗。。。
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的