这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 我想找来电显示接收程序的例子.

共2条 1/1 1 跳转至

我想找来电显示接收程序的例子.

院士
2006-09-17 18:14:16     打赏
我想找来电显示接收程序的例子.



关键词: 我想     来电     显示     接收     程序     例子    

院士
2006-12-22 22:43:00     打赏
2楼
问 我在用9030\9032\88E39等这些芯片来作为来电显示解码并用单片机接收来电号码时这些芯片的时序我看懂,不知怎样接收.

我想找一些用9030\9032\88E39等这些芯片来作为来电显示解码并用单片机接收的实例程序.

无限感激!!
无限感激!! 1: 是单数据格式的!是单数据格式的! 2: 不好意思,我自已来顶一顶.  3: 我自已找到了一个例子,但不明白.现用AT89s52做语音项目。因Mcu串口与上位机实时通讯。只好模拟串口来捕捉用户电话号码。其来电显示+模拟串口详细过程如下:
/********************************************************************/
电话号码格式:(单数据消息格式)
00 00 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 D5 04 14 30 38 30 35 31 30 33 33 30 37 35 35 32 38 31 35 38 37 33 34 DD 50 01
04H------- 表示单数据消息格式;
14H------- 表示后跟有效数据个数;(20个)
30 38 30 35 31 30 33 33 --表示主叫来电的时间--8月5日10点33分;
DDH --表示效验位,是从04(包含04)到DD(不包含)所有字符按256 的模求和取补
(04h+14h+....+37h+33h+34h=423h=1059(dec)--    求和
  1059-256x4=35(dec)
  256-35=221(dec)=DDh----------------------     取补)
/*******************************************************************/
电话号码通过HD9032芯片第一脚输出,接Mcu P3.2脚,用中断0检测起始位,然后通过定时器0来判断数据。每次都能正确接收电话号码。
通讯格式为:1200bps ,8 ,1  晶体:11.0592M

程序如下:
sbit HT_out=P3^2;
void service_int0()interrupt 0 using 3
{
EX0=0;
TH0=0xFE;  /*检测数据位的中间值*/
TL0=0x80;  
TF0=0;
TR0=1;
IT0=0;
ET0=1;
}

void  timer0(void)  interrupt 1   using 2
{
if(Time_flg)  /*不用模拟串口时,做一秒定时用*/
{
  TF0=0;
  TH0=0x4C;
  TL0=0x00;
  Time_num++;
  if(Time_num>19)
  {
   Time_num=0;
   Time_sec++;   
  }  
}  
else   /*用模拟串口接收数据处理*/
{
  TF0=0;  
  TH0=0xFD;         
  TL0=0x00;  
  switch(RxdCnt++)
  {
   case   0:
   if(HT_out==1)
   RxdCnt=0;
   break;
     
   default:
   if(RxdCnt>9){ RxdCnt=0;break;}
   RSBUF>>=1;
   RSBUF|=HT_out?0x80:0;
   break;
  
   case    9:
   RxdCnt=0;
   if(HT_out==0)
   break;  
   
   if(RSBUF==0x55&&Tel_num==0)
    aa++;    
   if(aa>20&&RSBUF==0x04&&Tel_num==0)
    Tel_flg=1;
   if(Tel_flg&&RSBUF!=0x04)
    Tel[Tel_num++]=RSBUF;    /*判断有用的数据后保存到数组*/
   if(Tel_num<=(Tel[0]+1))
    {
     EX0=1;
     TR0=0;
    }
   else       /*接收完全部有用数据后关闭INT0和TIME0*/
    {
     EX0=0;
     TR0=0;
    }
  }
}  
}   


这样的程序是用9032C 还是用9032D啦?  
这处程序的变量:Time_flg  HT_out  RSBUF Tel_num Tel_flg  是什么东东啦?
我真的看不明白.

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]