科技制作来电显示教材.docx
- 文档编号:4666938
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:22
- 大小:211.99KB
科技制作来电显示教材.docx
《科技制作来电显示教材.docx》由会员分享,可在线阅读,更多相关《科技制作来电显示教材.docx(22页珍藏版)》请在冰点文库上搜索。
科技制作来电显示教材
来电显示装置
摘要:
本设计是由单片机STC89C52RC、来电显示模块HT9032C及其它外围电路构成的来电显示系统,并描述了系统的硬件构成和软件流程。
该系统可显示主叫电话号码、呼叫时间,带有E2PROM存储等功能,方便用户清楚地预知来电者身份。
关键词:
89C52RC、来电显示、HT9032C、FSK
一、引言
来电显示,全称为主叫识别信息传送及显示(CID),是指在被叫用户终端设备上显示主叫电话号码、主叫用户姓名、呼叫日期和时间等主叫识别信息,并进行存储,以供用户查阅的服务项目。
目前,我国已具备程控交换机开放多种新业务的条件,公众通信网络的扎实基础,成熟的传输和交换技术,加快了我国电信网络基础建设,电话普及率逐年上升。
我国在信息发送格式上一般有DTMF和FSK两种。
本设计主要利用80C52RC和HT9032C对FSK格式的电话信息进行解释,并在LCD1602液晶上显示以实现电话来电显示功能。
二、系统的功能及原理描述
来电显示作为现代电信交换网络可以提供的一项业务,以FSK信号进行传输,当交换机发出第一次振铃后,紧接着发送FSK信号,该信号包括了电话号码、日期、时间等信息。
本设计在每一次振铃信号的唤醒下开始接收FSK信号,解码芯片HT9032C及其外围电路构成解码电路,对传输过来的FSK信号进行解码,传送给MCU处理。
89C52RC作为主控单片机,用于控制解码后的FSK信号的接收,信息截取、数据存储、信息显示以及翻查等功能。
单片机扫描HT9032C的RDET和CDET两个引脚,当扫描到RDET为高电平,CDET为低电平后,检测“消息类型”,最后通过DOUTC串行接受完整的来电显示信息。
三、系统的结构框图及其结构原理
本设计电路分为五个部分,分别为:
⑴电话线接口部分;⑵FSK信号解调部分;⑶单片机控制部分;⑷来电信息显示部分;⑸翻查部分。
振铃信号和FSK信号通过四脚电话线插座接入电路,经由HT9032C芯片及其外围电路对FSK信号进行解释,信号传入单片机中进行进一步的处理,最后通过液晶显示出来。
其结构框图如图3.1所示:
FSK信号解调
MCU
电话线接口
来电显示
按键翻查
图3.1系统组成框图
四、电路的结构和分析
本设计具体硬件连接图如图4.1所示。
图4.1系统硬件连接图
下面对系统硬件各部分具体说明。
㈠电话线接口部分
电话线接线部分采用电话线专用接口623PCB与电话线相连,623PCB为四脚电话线插座,其中主要用到中间两只脚,其余两脚用作功能扩展使用,本设计中不对另外两脚做处理。
㈡FSK信号解调部分
本设计FSK信号的解调采用专用解码芯片HT9032C,相应引脚如图4.2所示。
图4.2HT9032C引脚图
HT9032C满足Bell202的CCITTV.231200b/sFSK数据传输标准,同时能检测振铃和载波。
电话线经过接口电路接到HT9032C的TIP、RING、RDET引脚。
当有振铃信号来时。
HT9032C的RDET脚触发下降沿。
在第一次和第二次振铃之间,HT9032C把逻辑“1”=(1200±12)Hz、“0”=(2200±22)Hz,传输速率为1200b/s的FSK信号解调成串行异步二进制数据。
当检测到有载波信号时,CDET触发下降沿。
在DOUTC脚趾输出主叫识别信号。
各引脚时序图如图4.3所示。
图4.3HT9032C时序图
具体硬件电路图如图4.4所示
图4.4HT9032C硬件连接图
其中,C1、C2、C3、C4起到隔离电话线直流作用。
C1、C4、R1、R3用于采集来电显示数据,输入到HT9032C的引脚TIP和RING。
整流桥、C2、C3、R2、R4、R5构成振铃检测电路,输入到HT9032C的RDET1、RDET2引脚。
在没有来电时R7给C5充电,把RTIME、PDWN拉至高电平,HT9032C进入节电休眠状态。
当振铃时,PDWN被拉低并保持一段时间,此时芯片振荡器起振,开始工作,接收到来电信息时会把解码后的串行数据通过DOUTC发送出去。
具体工作模式如图4.5所示、
图4.5HT9032C工作模式
㈢单片机控制部分
控制部分使用STC89C52RC单片机,通过软件对解调后的FSK信号的进一步分析和信息提取,对数据的存储和显示系统软件流程如图4.6所示。
图4.6单片机软件控制主程序
如图所示,单片机主要执行两个任务,分别是按键扫描和串口接收,其中按键扫描是实现电话号码翻查功能的,具体执行步骤在其它部分将做详细分析。
具体硬件电路由单片机最小系统构成,如图4.7所示。
图4.7单片机最小系统
终端交换机向被叫用户传送主叫识别信息数据,单片机通过串口接收处理这些数据。
主叫识别信息数据传送时序如图4.8所示。
E
D
C
B
A
第二次振铃
信道占用信号
标志信号
数据包
第一次振铃
图4.8主叫识别信息数据传送时序
符号时间值:
A--------0.5~1.5s第一次振铃结束与数据传送开始之间的时间间隔。
B+C----2.9s传送数据的时间包括信道占用信号和标志信号。
D--------200ms数据传送结束与第二次振铃开始之间的时间间隔。
E--------1s铃流。
B+C+D-3.6s各时段可根据具体情况定。
信道占用信号和标志信号的目的是提示电话终端准备接收数据。
校验字用作差错检验。
信道占用信号:
有一组300个连续的“0”和“1”交替的位组成,其中第一个比特位“0”,最后一个比特为“1”。
在通话状态下,信道占用信号不发送。
标志信号:
由180个(挂机)或80个(通话)标志位(逻辑“1”)组成。
每个数字之前先行一位“0”作为起始位,在最后加一位“1”作为结束位。
每个数据字的最低位先发送。
这样,实际每个字占10bit,即1PXXXXXXX0(P为奇偶校验位)。
数据传送时,信道占用信号发送后接收标志信号。
主叫识别数据格式有两种:
单数据消息格式(SDMF)和复合数据消息格式(MDMF)。
单数据消息格式(SDMF)如图4.9所示,由消息头和消息体组成,只传递呼叫建立日期、时间和主叫号码。
消息头由消息类型和消息长度组成,他们均为8bit。
消息类型的值用来识别消息的特征。
消息长度指明后面所跟的消息字的长度。
消息体包括交换机需传给终端用户的消息,消息体可容纳1255个8bit消息字。
每个字用8bit带校验位的7位编码字符集表示。
消息头
消息长度
标志位
消息类型
标志信号
信道占用信号
标志位
校验字
消息体
消息头
图4.9单数据消息格式
消息体
复合数据消息格式(MDMF)如图4.10所示,这种格式除单数据格式内容外还可以传主叫用户姓名等信息。
与单数据消息格式不同的是,复合数据消息格式的消息体由一个或多个小的消息(称为参数消息),参数消息同样具有参数头和参数体。
参数头包括参数类型和参数长度,它们均为8bit。
参数类型值用来识别后续参数字。
参数长度指明参数体中参数字的数目。
复合数据消息格式允许不同特征产生的不同消息在同一帧中传送。
校验字
更多的参数消息
参数字
参数长度
参数类型
消息长度
消息类型
标志信号
信道占用信号
参数体
参数头
消息头
参数消息
图4.10复合数据消息格式
来电识别软件控制流程图如图4.11所示
图4.11来电识别软件控制流程图
㈣来电信息显示部分
液晶显示模块采用LCD1602来显示主叫号码、日期、时间等信息。
判断到来电信息后可依次取出各个信息并相应进行显示。
硬件电路如图4.12所示。
图4.12LCD1602硬件连接图
㈤翻查部分
翻查部分硬件如图4.13所示,由三个按键分别表示向上翻查、向下翻查和删除。
图4.13按键翻查硬件连接图
按键扫描的流程图如图4.14所示。
图4.14按键扫描的流程图
通过按键使程序读取内存中相应位置的主叫信息通过LCD1602显示出来。
其中存储功能采用STC89C52内置的E2PROM实现。
使用单片机内置E2PROM能有效的简化电路设计和程序编写,但缺点是存储空间少。
STC89C52内部自带由2KB的E2PROM,E2PROM地址表分为八个扇区,每个扇区为512B,如图4.15所示。
第一扇区
第二扇区
第三扇区
第四扇区
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
2000H
21FFH
2200H
23FFH
2400H
25FFH
2600H
27FFH
第五扇区
第六扇区
第七扇区
第八扇区
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
起始地址
结束地址
2800H
29FFH
2A00H
2BFFH
2C00H
2DFFH
2E00H
2FFFH
图4.15STC89C52内部E2PROM地址表
由于一次最少擦除一个扇区的数据,当加入来电显示删除功能后每个扇区只能存储一个来电信息,故总共能存储8个来电显示信息。
五、实验主要的原件清单
单片机STC89C52RC一块
液晶LCD1602一块
CID芯片HT9032C一块
电话线接口623PCB一个
其他元件(电阻、电容等)若干
六、实验结果
用有来电显示功能的固定电话线接入作品,加工作电源。
正常显示来电具体时间和来电电话号码,翻查功能显示上有问题,推测为时序不当所致。
七、实验中遇到的问题
1、液晶没有显示,经检测发现LCD亮度调节没调好,调节亮度后液晶有显示。
2、没有来电显示,经检测为串口接收设置不当,接收波特率不匹配,串口未使能等。
3、数字显示不正常,出现乱码现象,后检查为程序数据类型与LCD中字符代码不对应所致,改正后数字显示正常。
4、号码显示位置错误,检测时序和信息提取位置不当所致,经修改后号码位置显示正常。
5、只能执行一次来电显示,经分析是由于串口接收标志关闭后未开启所致。
6、翻查功能不能正常工作,由按键对地址的寻找错误所致,程序开始进入死循环,添加判断是否再次到达相同扇区避免死循环。
7、翻查后再次接收电话,LCD0x80至0x83位置上出现其它数字,估测显示时序有问题。
参考文献
[1]郭天祥.51单片机C语言教程.北京:
电子工业出版社,2009.
[2]杨穗,杨恢先.智能来电显示器的设计.电子器件,2005,第28卷
[3]薛莹,黄麟舒.来电显示设计.舰船电子工程,2008.第9期
附:
源程序
#include
#include
#include
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitCDET=P3^2;
sbitRDET=P3^3;
sbitkey1_up=P2^2;
sbitkey2_down=P2^1;
sbitkey3_clear=P2^0;
ucharTime_show[]="Time:
";
ucharTel[]="Tel:
";
uchartab[20]="";
uchartime[8];
ucharnumber[12];
ucharbuffer[];
uintnum=0,tmp=0;
uinti,b,j,z=1,length=20;
uintshanqu=0;shanqu_check=0;
/**********串口接收数据写入EEPROM函数**********/
voideeprom_write()
{
shanqu++;
if(shanqu==9)
{
shanqu=1;
}
SectorErase(0x2000+(shanqu-1)*0x200);
for(i=0;i byte_write(0x2000+(shanqu-1)*0x200+i,tab[i]); } /**********读取EEPROM函数**********/ voideeprom_read() { for(i=0;i<8;i++) time[i]=byte_read(0x2000+(shanqu_check-1)*0x200+i); for(i=8;i number[i]=byte_read(0x2000+(shanqu_check-1)*0x200+i); } /*******显示初值函数*************/ voiddisplay() { write_order(0x80); for(i=0;i<5;i++) write_data(Time_show[i]); write_order(0xc0); for(i=0;i<4;i++) write_data(Tel[i]); } /*******来电显示函数*************/ voiddisplay_phone() { write_order(0x85); for(i=0;i<8;i++) { j++; write_data(tab[i]); if(((j%2)==0)&&(j! =8)) write_data(0x2d); } j=0; write_order(0xc4); for(i=8;i { write_data(tab[i]); } } /*******来电查询函数*************/ voiddisplay_check() { write_order(0x85); for(i=0;i<8;i++) { j++; write_data(time[i]); if(((j%2)==0)&&(j! =8)) write_data(0x2d); } j=0; write_order(0xc0); for(i=8;i { write_data(number[i]); } } /**********串口初始化************/ voidserial_init() { PCON=0x00; SCON=0x40; TL1=0xe6;TH1=0xe6; TR1=1; REN=1; } /**********串口接收程序**********/ voidserial_rec() { length=0; while((CDET==0)&&(RDET==1)) { while(RI==1) { RI=0; if(SBUF==0x04||SBUF==0x80) { RI=0; while(RI==0); length=(uint)SBUF; for(b=0;b { RI=0; while(RI==0); tab[b]=SBUF; } } } if(TR1==1) { eeprom_write(); display_phone(); shanqu_check=shanqu-1; } break; } } /**********键盘扫描************/ voidkeyscan() { if(key1_up==0) { delay(30); if(key1_up==0) { shanqu_check++; if(shanqu_check==9) shanqu_check=1; tmp=shanqu_check; while(z) { if(! byte_read(0x2000+(shanqu_check-1)*0x200)) { shanqu_check++; if(shanqu_check==9) shanqu_check=1; } else z=0; if(shanqu_check==tmp) z=0; } eeprom_read(); display_check(); } } if(key2_down==0) { delay(30); if(key2_down==0) { shanqu_check--; if(shanqu_check==0) shanqu_check=8; tmp=shanqu_check; while(z) { if(! byte_read(0x2000+(shanqu_check-1)*0x200)) { shanqu_check--; if(shanqu_check==0) shanqu_check=8; } else z=0; if(shanqu_check==tmp) z=0; } eeprom_read(); display_check(); } } if(key3_clear==0) { delay(30); if(key3_clear==0) { SectorErase(0x2000+(shanqu_check-1)*0x200); shanqu_check--; eeprom_read(); display_check(); } } } /***********主函数*********/ voidmain() { lcd_init(); serial_init(); length=0; TMOD=0X21; EA=1; ES=1; ET1=1; display(); while (1) { keyscan(); serial_rec(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 科技 制作 来电显示 教材