课题设计基于51单片机来电显示

上传人:仙*** 文档编号:30046800 上传时间:2021-10-09 格式:DOC 页数:32 大小:762KB
收藏 版权申诉 举报 下载
课题设计基于51单片机来电显示_第1页
第1页 / 共32页
课题设计基于51单片机来电显示_第2页
第2页 / 共32页
课题设计基于51单片机来电显示_第3页
第3页 / 共32页
资源描述:

《课题设计基于51单片机来电显示》由会员分享,可在线阅读,更多相关《课题设计基于51单片机来电显示(32页珍藏版)》请在装配图网上搜索。

1、 桂林电子科技大学毕业设计(论文)报告用纸 第 32 页 共 32 页引言随着现代生活水平的不断提高,来电显示功能的需求也日益高涨起来。主叫号码信息识别及传送是由交换机将主叫号码及呼叫的日期、时间等信息传送给被叫用户,由被叫用户具有来电显示功能的固定电话显示并存储。以便用户摘机前就知道是谁打电话来,或外出回来后查阅谁来过电话。他是由具有主叫号码信息识别服务功能的交换机与具有主叫号码显示服务功能的终端相配合来实现,在终端上可以显示主叫电话机的号码、呼叫时间等信息。美国贝尔通信研究室(Bellcore)在1990年提出了相关技术建议(TRTS 000031,ISUE3),该建议经过多次修改后被称为

2、Bell202协议。数据传送采用了移频键控(Frequency Shift Key,FSK)方式,通常称为频移键控方式。欧洲以瑞典为代表的研究机构为能 在自己生产的交换机上方便地实现主叫号码传送(calling number delivery)业务,电话 终端与交换机之间采用双音多频号码传送方式作为解决方案,通常称双音多频(Double Tone Multifrequency,DTMF)方式。现在的交换机一般都有FSK和DTMF两种制式;FSK传送速度大约1 200 b/s,规定时间内的信息量最大为600 b;DTMF传送速度大约是12.5字符/s,规定时间内的信息量为38 b。目前,我国已具

3、备程控交换机开放多种新业务的条件:首先有发达的公众通信网络基础;其次有先进的传输技术和交换技术;再次有社会需求的增长和提高。这几年我国电信网络基础建设发展很快,电话普及率逐年提高。调查显示,用户迫切需要利用电话来传递更多的信息,其中包括主叫信息的显示等。在信息发送格式上一般有DTMF和FSK两种.本设计简单,实用,利用 AT89S51和双音多频解码集成电路MT8870,通过电话机输入模拟电话网络,在液晶上显示所拨打的电话号码,同时将主叫号码写入到EEPROM,通过RS232传输到PC机中。1 系统概述本设计由单片机构成主控部分,进行主要的信息处理,接收电话机输入的双音频信号,进行相应的译码处理

4、与记录;接口电路提供单片机与电话外线的接口即双音频(DTMF)识别电路,液晶显示电路,EEPROM存储器电路,以及与PC机通信的串口电路等。本系统设计的关键部分是双音频(DTMF)的解码. DTMF作为实现电话号码快速可靠传输的一种技术,具有很强的抗干扰能力和较高的传输速度,因此,可广泛用于电话通信系统中。但绝大部分是用做电话的音频拨号,也可以在数据通信系统中用来实现各种数据流和语音等信息的远程传输。DTMF(双音多频)信号是电话网中常用的信令,无论是家用电话、移动电话还是程控交换机上,多采用DTMF信号发送接收号码。DTMF技术还可以用于电力线载波通信等场合。可见,DTMF拨号和解码在通信系

5、统及其它方面有着广泛的应用。通常DTMF信号的检测采用专用芯片或DSP来实现,双音多频是指DTMF(Dual Tone MultiFrequency),DTMF用2个特定的单音频组合信号代表数字信号,以实现其功能的一种编码技术。2个单音频的频率不同,代表的数字或实现的功能也不同。D T M F 信号由8 个频率两两组合而成。这8 个频率又分为低频群和高频群两组。低频群的4 个频率依次为697Hz、770Hz、852Hz、941Hz;高频群的4 个频率依次为1209Hz、1336Hz、1477Hz、1336Hz。在通信领域应用中,D T M F 主要用于电话机拨号信号和C I D ( C a l

6、 l e rIdentification,来电显示)信号的传送。在应用于电话机的拨号信号中, 按照国家电信标准, 其信号持续 时间和间隔时间都不小于4 0 m s,而频率偏差不大于 1 . 5 %。这种电话机中通常有16个按键,其中有10个数字键09和6个功能键*,#,A,B,C,D。按照组合原理,一般应有8种不同的单音频信号。因此可采用的频率也有8种,故称之为多频,又因他从8种频率中任意抽出2种进行组合编码,所以又称之为“8中取2”的编码技术。根据CCITT的建议,国际采用的多种频率为687 Hz,770 Hz,852 Hz,941 Hz,1 209 Hz,1 336 Hz,1 477 Hz

7、和1 633 Hz等8种。用这8种频率可形成16种不同的组合,从而代表16种不同的数字或功能键,具体组合见表1.1。表1.12 系统硬件方案设计2.1 系统框图根据系统的要求,所设计的系统原理框图如图2.1 所示 图2.1本系统是一个双工通讯装置,在同一块电路板既有发送部分又有接收部分。液晶用于单片机的数据的显示,,按键和液晶LCD构成一个简单的人机交换装置,便于对电路的调试,EEPROM用来存储数据,重新上电后,仍旧可以显示掉电前的数据。整个电路通过MAX232芯片与PC机串行口相连接,交换数据。2.2 系统硬件电路原理图2.2.1 直流5V稳压电源 5V直流稳压电源的电路图如图2.2图2.

8、2由于本系统使用小容量直流电源,所以选用线性电源LM7805比选用开关电源更合适。当然应注意LM7805的保护:1)LM7805输入端与地应跨接2201000F电解电容;2)LM7805输入端与输出端反接1N4007二极管;3)LM7805输出端与地应跨接4701000F电解电容和104pF独石电容并反接1N4007二极管;4)输入电压以810V为佳,最大允许范围为6.524V。可选用TI的PT5100替代LM7805,以实现938V的超宽电压输入。2.2.2 单片机系统电路单片机系统的基本电路如图2.3图2.3其中注意的事项:晶震采用11.0592MHZ,这是为了便于和计算机通信的时候,串口

9、的波特率可以达到比较好的标准,这样产生误码的几率就会很少.其中SW3是系统复位键SW1,SW2为人机接口按键.因为51系列单片机的P0口内部没有上拉电阻,所以系统设计过程中在P0口端接了一个10k的排阻.本设计过程中,用到了51单片机的串口和中断,以及一些IO口,下面简要介绍下:(1)单片机的基本构成中央处理器(CPU):内部数据存储器(RAM): 8051芯片共有256个RAM单元,其中后128单元被专用寄存器占用,能作为寄存供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存器就是指前128单元,简称内部RAM。地址范围为00HFFH(256B)。是一个多用多功数据

10、存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。内部程序存储器(ROM): 8051内部有4KB的ROM,用于存放程序、原始数据或表格。因此称之为程序存储器简称内部RAM。地址范围为0000HFFFFH(64KB)。定时器/计数器 8051共有2个16位的定时器/计数器,以实现定时或计数功能,其定时或计结对计算机进行控制。定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。并行I/O口 MCS-51有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。具体能后面章节中将会详细论述。串行口 MCS-51有一个全双工的串行口

11、,以实现单片机和其它设备之间的串行数据传该串口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。中断控制系统 MCS-51单片机中断功能较强,以满足不同控制应用的需要。共有5个中断源,即中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级别。时钟电路 MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片产生时钟脉冲序列。系统允许的晶振频率为12MHZ。(2)内部控制器在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用

12、来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。对并行I/O口的读写只要将数据送入到相应I/O口的锁存器就可以了,对于定时/计数器,串行I/O口等,在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。表2.1 单片机内部控制寄存器符号 地址 功能介绍B F0HB寄存器 ACCE0H 累加器 PSW D0H 程序状态字 IP B8H 中断优先级控制寄存器 P3 B0H P3口锁存器 IE A8H 中断允许控制寄存器P2 A0H P2口锁存器SBUF 99H串行口锁存器 SCON 98H串行口控制寄存器

13、 P1 90HP1口锁存器 TH1 8DH定时器/计数器1(高8位)TH0 8CH 定时器/计数器1(低8位)TL1 8BH 定时器/计数器0(高8位)TL0 8AH 定时器/计数器0(低8位)TMOD 89H定时器/计数器方式控制寄存器 TCON 88H 定时器/计数器控制寄存器 DPL 82H 数据地址指针(低8位)SP 81H 堆栈指针 P0 80H P0口锁存器PCON 87H电源控制寄存器(3)输入/输出引脚P0.0P0.7,P1.0P1.7,P2.0P2.7和P3.0P3.7:P0端口(P0.0P0.7):P0是一个8位漏级开路型双向I/O端口。作为输出口用时每位能以吸收电流的方式

14、驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。在访问外部程序和数据存储器时,它是分时多路转换的地址(低8位)/数据总线,在访问期间激活了内部的上拉电阻。P1端口(P1.0P1.7):P1是一个带有内部上拉电阻的8位双向I/O端口。P1的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P1作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在对Flash编程和程序校验时,P1接收低8位地址。P2端口(P2.0P2.7):P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出

15、缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在访问外部程序存储器和16位地址的外部数据存储器(如执行MOVXDPTR指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行MOVXRI指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中P2寄存器的内容),在整个访问期间不会改变。P3端口(P3.0P3.7):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3作为

16、有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在AT89C51中,P3端口还用于一些复用功能。复用功能如表所列,在对Flash编程或程序校验时,P3还接收一些控制信号。表 2.2 P3各端口引脚与复用功能表端口引脚复用功能P3.0RXD(串行输入口)P3.1TXD(串行输入口)P3.2INT0(外部中断0)P3.3INT1(外部中断1)P3.4T0(定时器0的外部输入)P3.5T1(定时器1的外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)(4)定时器和计数器定时器计数器简称定时器,其作用主要包括产生各种时标间隔、记录外部事件的数量等,是

17、微机中最常用、最基本的部件之一。803l单片机有2个16位的定时器计数器:定时器0(T0)和定时器1(T1)。T0由2个定时寄存器TH0和TL0构成,T1则由TH1和TL1构成,它们都分别映射在特殊功能寄存器中,从而可以通过对特殊功能寄存器中这些寄存器的读写来实现对这两个定时器的操作。作定时器时,每一个机器周期定时寄存器自动加l,所以定时器也可看作是计量机器周期的计数器。由于每个机器周期为12个时钟振荡周期,所以定时的分辨率是时钟振荡频率的112。作计数器时,只要在单片机外部引脚T0(或T1)有从1到0电平的负跳变,计数器就自动加1。计数的最高频率一般为振荡频率的l24。(5)串行传输接口串行

18、口的内部包含:串行数据缓冲寄存器SBUF有接收缓冲器SBUF和发送缓冲器SBUF,以便80C51能以全双工方式进行通信。它们在物理上是隔离的,但是占用同一个地址(99H) 。串行发送时,从片内总线向发送缓冲器SBUF写入数据;串行接收时,从接收缓冲器SBUF中读出数据。串行口控制寄存器:SCON。串行数据输入输出引脚接收方式下,串行数据从RXD(P30)引脚输入,串行口内部在接收缓冲器之前还有移位寄存器,从而构成了串行接收的双缓冲结构,可以避免在数据接收过程中出现帧重叠错误,即在下一帧数据来时,前一帧数据还没有读走。在发送方式下,串行数据通过TXD(P31)引脚输出。 串行口控制逻辑:接受来自

19、波特率发生器的时钟信号TXCLOCK(发送时钟)和RXCLOCK(接收时钟);控制内部的输入移位寄存器将外部的串行数据转换为并行数据;控制内部的输出移位寄存器将内部的并行数据转换为串行数据输出;控制串行中断(RI和TI)。串行传输模式串行传输模式0此模式基本上是做串行传送I/O控制,而非真正的串行通信应用,工作于此模式时,由TXD引脚送出移位同步脉冲,由RXD引脚送出或接收串行数据。而串行数据的形式如何呢?它不具有起始及结束位,纯粹为8位数据,至于同步脉冲的宽度是固定的,为系统工作振荡周期的112,等于是8051一个机器周期的时间。当做串行输出时,可将TXD、RXD引脚接到串行输入并行输出(S

20、IPO)转换IC,如74LSl64,做额外的硬件输出扩充用,当I/0的输出控制位不够用时,便可应用此技巧做额外输出端口的应用。做串行输入时,则将TXD、RXD引脚接到并行输入串行输出(PISO)转换IC,如74LS165,做额外的硬件功能扩充。串行传输模式1此为经常使用的串行传输工作模式,串行数据位由TxD引脚传送出去,由EL)tD引脚将对方送来的串行数据接收进来。而数据格式共有10个位,包括前方的起始位,8位串行数据位及最后的停止位。至于传输率(波特率)快慢则由计时器1来规划,只要将不同的计数初值载入计时器中,可以做不同的波特率值设定。串行传输模式2此传输模式与模式1十分类似,不过数据一共送

21、出了11个位,包括1个起始位,8个数据位及1个可编程设定的第9个数据位和停止位。此第9个可编程设定的数据位是位于特殊功能寄存器SCON今的位3中(TB8),8051可以利用此一特殊位来做多处理机的系统连接控制。此外在通信协议中的校验位检查也可以此位来做处理。至于传送速度只有2种,分别为系统工作时钟频率的1/32或l/64。串行传输模式3模式3的传输方式与模式2几乎完全一样,同样是传送11个位串行数据,差别在于其传输速度是可变酌,如同模式1一样是由80511内部计时/计数器1所控制。串行口状态控制寄存器 SCON串行口状态控制寄存器SCON用来控制串行通信的方式选择、接收,指示串行口的中断状态。

22、寄存器SCON既可字节寻址也可位寻址,字节地址为98H,位地址为98H9FH。其格式如表2.3表2.3 SCON 结构位地址9FH9EH9DH9CH9BH9AH99H98H位功能SM0SM1SM2RENTB8RB8TIRISM0(SCON.7),SM1(SCON.6)串行口工作方式选择位 。各位的意义如表2.4:表2.4 串口工作方式SM2(SCON.5)允许方式2、3中的多处理机通信位。方式0时,SM20。方式1时,若SM2l,只有接收到有效的停止位,接收中断RI才置1。而当SM20时,则不论接收到的笫九位数据是”0” 或”1” ,都将前八位数据装入SBUF中,并申请中断。方式2和方式3时,

23、若SM21,则只有当接收到的第9位数据(RB8)为1时,才将接收到的前八位数据送入缓冲器SBUF中,并把RI置1、同时向CPU申请中断;如果接收到的第9位数据(RB8)为0,RI置0,将接收到的前八位数据丢弃。这种功能可用于多处理机通信中。REN(SCON.4)允许串行接收位。REN1时,允许串行接收;REN0时,禁止串行接收。用软件置位清除。TB8(SCON.3)方式2和方式3中要发送的第9位数据。在通信协议中,常规定TB8作为奇偶校验位。在80C51多机通信中,TB8用来表示数据帧是地址帧还是数据帧。用软件置位清除。RB8(SCON.2)方式2和方式3中接收到的第9位数据。方式1中接收到的

24、是停止位。方式0中不使用这一位。TI(SCON1)发送中断标志位。方式 0中,在发送第 8位末尾置位;在其它方式时,在发送停止位开始时设置。由硬件置位,用软件清除。RI(SCON0)接收中断标志位。方式 0中,在接收第 8位末尾置位;在其它方式时,在接收停止位中间设置。由硬件置位,用软件清除。系统复位后,SCON中所有位都被清除。(6)电源控制寄存器 PCON电源控制寄存器PCON仅有几位有定义,其中最高位SMOD与串行口控制有关,其它位与掉电方式有关。寄存器PCON的地址为87H,只能字节寻址。其格式如下:表2.5 PCON 结构 SMOD(PCON.7)串行通信波特率系数控制位。当SMOD

25、1时,使波特率加倍。复位后,SMOD0。 (7)串行数据寄存器SBUF串行数据寄存器SBUF包含在物理上是隔离的两个8位寄存器:发送数据寄存器和接收数据寄存器,但是它们共用一个地址99H。其格式如下:表2.6 SBUF结构读SBUF(MOV A,SBUF),访问接收数据寄存器;写SBUF(MOV SBUF,A),访问发送数据寄存器。2.2.3 液晶显示电路液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。 本设计中用到的液晶为LCM1302, 这个字符型液晶模块是一种常用的2行16个字的1602液晶模块。1602采用标准的16脚

26、接口,其中:第1脚:VSS为地电源第2脚:VDD接5V正电源第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。 第

27、1516脚:空脚液晶显示电路图如图2.4图2.4 液晶显示电路1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表2.6,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”1602液晶模块内部的控制器共有11条控制指令,如表2.7所示它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置指

28、令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显

29、示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据表2.7 1602内置字符表2.8 1602的控制指令液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表2.9是1602的内部显示地址.表2.9 1602的内部显示地址比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位

30、在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)2.2.4 EEPROM接口电路EEPROM接口电路如下图2.5 EEPROM接口电路存储器AT24C02采用I2C总线技术. I2C总线是一种用于IC器件之间连接的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD驱动器还是键盘接口。I2C总线接口器件目前在视频处理、移动通信等领域采用I2C总线接口器

31、件已经比较普遍。另外,通用的I2C总线接口器件,如带I2C总线的单片机、RAM、ROM、A/D、D/A、LCD驱动器等器件,也越来越多地应用于计算机及自动控制系统中。I2C总线的数据传送格式是:在I2C总线开始信号后,送出的第一个字节数据是用来选择从器件地址的,其中前7位为地址码,第8位为方向位(R/W)读写控制。方向位为“0”表示发送,即主器件把信息写到所选择的从器件;方向位为“1”表示主器件将从从器件读信息。开始信号后,系统中的各个器件将自己的地址和主器件送到总线上的地址进行比较,如果与主器件发送到总线上的地址一致,则该器件即为被主器件寻址的器件,其接收信息还是发送信息则由第8位(R/W)

32、确定。在I2C总线上每次传送的数据字节数不限,但每一个字节必须为8位,而且每个传送的字节后面必须跟一个应答位(ACK),ACK信号在第9个时钟周期时出现。数据的传送过程如图3所示。每次都是先传最高位,通常从器件在接收到每个字节后都会作出响应,即释放SCL线返回高电平,准备接收下一个数据字节,主器件可继续传送。如果从器件正在处理一个实时事件而不能接收数据时,(例如正在处理一个内部中断,在这个中断处理完之前就不能接收I2C总线上的数据字节)可以使时钟SCL线保持低电平,从器件必须使SDA保持高电平,此时主器件产生1个结束信号,使传送异常结束,迫使主器件处于等待状态。当从器件处理完毕时将释放SCL线

33、,主器件继续传送。当主器件发送完一个字节的数据后,接着发出对应于SCL线上的一个时钟(ACK)认可位,在此时钟内主器件释放SDA线,一个字节传送结束,而从器件的响应信号将SDA线拉成低电平,使SDA在该时钟的高电平期间为稳定的低电平。从器件的响应信号结束后,SDA线返回高电平,进入下一个传送周期。I2C总线还具有广播呼叫地址用于寻址总线上所有器件的功能。若一个器件不需要广播呼叫寻址中所提供的任何数据,则可以忽略该地址不作响应。如果该器件需要广播呼叫寻址中提供的数据,则应对地址作出响应,其表现为一个接收器。AT24C02是美国ATMEL公司的低功耗CMOS串行EEPROM,它是内含2568位存储

34、空间,具有工作电压宽(2.55.5V)、擦写次数多(大于10000次)、写入速度快(小于10ms)等特点。AT24C02的封装引脚如图所示,图中的1、2、3脚是三条地址线,用于确定芯片的硬件地址。第8脚和第4脚分别为正、负电源。第5脚SDA为串行数据输入/输出,数据通过这条双向I2C总线串行传送。第6脚SCL为串行时钟输入线。SDA和SCL都需要和正电源间各接一个5.1K的电阻上拉。第7脚WP为写保护(Write Protect),高电平有效。24C02中带有片内地址寄存器。每写入或读出一个数据字节后,该地址寄存器自动加1,以实现对下一个存储单元的读写。所有字节均以单一操作方式读取。为降低总的

35、写入时间,一次操作可写入多达8个字节的数据2.2.5 RS232接口电路RS-232-C串口标准(1)RS-232-C概述串行通信接口标准经过使用和发展,目前已经有多种。但都是RS-232-C标准的基础上经过改进而形成的。RS-232C标准是有美国EIA(电子工业联合会)与BELL等公司一起开发并于1969年公布的通信协议。它适合于数据库传输速率在020000bit/s范围内的通信。远程工业协会(TIA)1997年公布了最新的一个版本,命名为TIA/EIA-232-F。ITU(国际电信联盟)和CCITT(国际电话与电报顾问委员会)发布了一个类似的标准V.28。这个标准对串行通信接口的有关问题,

36、如信号线功能、电器特性都做了明确规定。由于通信设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用,它不仅已被内置于每一台计算机,同时也已被内置于从微控制器到主机的多中类型的计算机及其相连接的设备。(2)RS-232有几个优点: RS-232应用广泛。每一台PC都有一个或多个RS-232端口。更新的计算机现在支持其他诸如USB这样的串行口,但是RS-232可以做很多USB无法进行的工作。在微控制器中,接口芯片使得一个5V串口转换成RS-232变的非常容易。连接远距离可以达到1015英尺,或者利用IEEE-1284B型驱动器可以达到30英尺。如果

37、RS-232端口与Modem相连,则可以在世界范围内接受和传送数据。对于双向连接,只需要3条导线。而并行连接一般需要8条数据线、两条或者更多的控制线信号线和几条接地线。(3) RS-232协议标准电气特性RS-232C对电器特性、逻辑电平和各种信号线功能都做了规定。在TXD和RXD上: 逻辑1(MARK) = -3V -15V。 逻辑0(SPACE) = +3V +15V。在RTS、CTS、DSR、DTR和DCD等控制线上: 信号有效(接通,ON状态,正电压) = +3V +15V。 信号无效(断开,OFF状态,负电压) =-3V -15V。RS-232C与TTL转换: EIA-RS-232C

38、用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。实现这种变化的方法可用分立元件,也可用集成电路转换器件,如MC1488、SN75150芯片可完成TTL电平到EIA电平的转换,而MC1489、SN75154可实现EIA电平到TTL电平的转换。MAX232芯片可完成TTLEIA双向电平转换。为了让来自不同制造厂家的设备相互兼容,各种各样的标准相继出台。最广泛使用的是RS232C,它是在1969年由电子工业协会(E1ectric Industry Associat

39、ion)公布的。Rs232c标准是最初的终端设备和调制解调之间的连接规定。它规定了两设备之间的电气特性并给出了所需连线的名称以及编号。RS232c命名的电路名称(AAP AB等等)是很难记住的,在实际中它们常常被功能暗语所取代。例如线2在正式场合被称作DA,通常称之为发送数据(TxD)。根据RS232标准,线2将数据从终端设备发往调制解调器。为了正确实现数据传送,终端设备必须在线2上发送数据,而调制解调器须在线2接收数据。这样对某些设备线2是传送线而对另一些设备线2是接收线。当仅仅一个通信设备使用线2传送,另一个通信设备使用线2接收时,这两个通信设备就可以直接相连接。否则两个通信设备都想沿着一

40、条线路传送数据时,则数据成功传输是不可能的。为了防止通信设备试图沿着同一条线路相互交谈,人们把通信设备分成两种类型。像终端这样使线2输出数据的通信设备,称为D12 (Data Terminal Equipment);像调制解调器这样的将线2做输入的通信设备,称为DCE (Data Communication Equipment)。单片机与PC机串口连接电路图:图2.6 PC机与单片机串口连线2.2.6 双音频检测电路本系统采用MITEL公司生产的MT8870 DTMF接受器作为DTMF信号的解码核心器件。MT8870主要用于程控交换机、遥控、无线通信及通播系统,实现DTMF信号的分离滤波和译码

41、功能,输出相应16种频率组合的四位并行二进制码。MT8870具有拨号音抑制和模拟信号输入可调功能,所以在设计MT8870 DTMF解码电路时,只需外加一些阻容元件即可。DTMF解码电路如图2.7所示。 电话发送的DTMF信号,经搞合电容的隔直流作用后,由MT8870接收并进行译码,输出的四位并行二进制数据直接与AT89C51单片机的P1.3P1.0连接,MT8870在DTMF信号码变换完成后,发送中断信号INT0,通知AT89C51数据准备好。音多频DTMF信号解码电路由MT8870主要承担。MT8870的连线如图2.7所示,它的2、3脚接收来自电话机的双音多频脉冲信号该双音多频信号先经其内部

42、的拨号音滤波器,滤除拨号音信号,然后经前置放大后送入双音频滤波器,将双音频信号按高,低音频信号分开,再经高,低群滤波器,幅度检测器送入输出译码电路,经过数字运算后,在其数据输出端(1114脚)输出相对应的8421码。MT8870的数据输出端Q4 Q1连到AT89C51的P1口的P1.4 P1.7,CPU经P1口识别4位代码。电话按键与相应译码(Q4Q1)输出见附录。其中,A,B,C,D 4个按键常被当作R/P,REDIAL,HOLD,HANDSFREE等功能使用。注意,需要特别指出的是,对于“0”号码,MT8870输出的8421码并非是“0000”,而是“1010”;另外,“*”,“#”字号码

43、,MT8870输出的8421码分别为“1011”和“1100”。有些技术资料会出现错误,包括比较权威的手册,所以我是在实验中,记录下测量的每一组数据后,才把这些数据应用于程序当中。为了使单片机AT89C51获取有效数据,MT8870的STD有效端经反相后接CPU的/INT0引脚。当MT8870获取有效双音多频信号后,STD电平由低变高,再反相为低,CPU检测后,指示P1口接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的STD端变化的。DTMF接收器的外围电路如图2.2 所示。其中,接在电源处的电容对抗干扰有一定的作用。在实际应用中,存在这样一个问

44、题:MT8870的使能控制端不允许中断时,将使MT8870的STD端中断关闭。可以将TOE端接电源来避免。图2.7 双音频译码电路电话机拨码方式有两种,即脉冲拨码和双音频拨码,双音频拨码方式具有拨号速度快,误码率低等优点,这是脉冲拨码方式所不能比拟的。国际电报电话咨询委员会CCITT和我国的标准规定双音频信号由8个频率组合,分为高低频两组,采用8中取2原则,它可根据不同的按键产生一组双音频信号此部分是整个系统的关键,它的工作情况直接决定了系统的可靠性。使用电话专用的双音频编解码芯片进行输入双音频信号的解码,是比较常用的一种方法。使用集成电路不但外围电路简单,而且可靠性强。经过专用集成电路的解码

45、,信号转换成为不同的码制信号,可以直接被单片机读取 。一般常用的电话双音频编解码集成电路有8870、8880、8888等, 本设计使用双音频解码集成片MT8870来完成此功能模块。 MT8870是CMOS大规模集成电路芯片,它主要由滤波器译码器和控制电路三部分组成。如图所示。图2.7 MT8870结构图滤波电路由信号增益和滤波器两部分构成。外部输入的DTMF信号,经运算放大器放大后,进入双音滤波器。双音滤波器是二个六级开关电容构成的高低通滤波器,它能有效地将DTMF信号中的高、低音频区分开来。被区分开的高、低音频信号再经高、低频群滤波器,然后送入芯片的译码电路。表2.10 DTMF信号输入与译

46、码输出关系译码电路由数字检测,编码转换各三态输出几部分组成。数字检测电路采用对输入音频信号进行数字计数方式,以确定DTMF信号的频率并核查是否与标准的DTMF信号一致。在此过程中,采用了一套复杂的平均算法,对DTMF信号的频率偏差提供一定的容差范围,以提高对干扰频率和噪声的抗干扰能力。输入的DTMF信号被检测到后。经编码转换电路进行8421编码送入锁存器锁存。当输出控制(TOE)为高电平时,DTMF信号对应关系如表2.8所示。DTMF(Dual Tone Multi Frequency)双音多频信号解码电路是目前在按键电话(固定电话、移动电话)、程控交换机及无线通信设备中广泛应用的集成电路。它

47、包括DTMF发送器与DTMF接受器,前者主要应用于按键电话作双音频信号发送器,发送一组双音多频信号,从而实现音频拨号。双音多频信号是一组由高频信号与低频信号叠加而成的组合信号,CCITT和我国国家标准都规定了电话键盘按键与双音多频信号的对应关系如表2.11所示。 表2.11 话拨号数字对应的高低频率组合数字键盘高频组/Hz1209133614771633低频组/Hz697123A770456B852789C941D3 系统软件方案设计3.1 软件的主程序流程图图3.1 系统流程图软件的整体流程图如图3.1所示,下面简要概述一下系统的流程:系统复位后,将初始化部分数据。由于双音频的译码示利用单片

48、机的INT0中断,中断优先级别最高,所以一旦有电话拨入,就可以实时的检测和处理数据。然后根据具体的电话数据格式要求判断输入的是否符合要求的电话号码。如果输入的示合格的电话号码,那么单片机,将依次执行,显示电话号码,存储电话号码,传输电话号码,三个过程。如果当前没有电话拨入,但是用户通过人机界面(按键液晶显示)来查看以往的记录,那么系统将根据用户是向上查,还是向下查,处理相应的程序,并显示相应的号码。如果用户的操作不正确,将不做任何执行。3.2 软件中断服务程序流程图在CPU与外设交换信息时,若用查询的方式,则CPU会浪费较多的时间去等待外设,这就是快速的CPU和慢速的外设之间的矛盾,为了解决这

49、个问题,引入了中断的概念,引入中断后有以下优点:(1)同步工作计算机有了中断功能后,就可以使CPU和外设同步工作,CPU启动外设工作后,就继续执行主程序,而外设把数据准备好后,发出中断请求,请求CPU中断原程序的执行,转去执行输入输出(中断处理),中断程序执行完后,CPU恢复执行主程序,外设也继续工作,这样,CPU就可指挥多个外设同时工作,大大提高了CPU的利用率,也提高了输入输出速度。(2)实时处理在实时控制中,现场采集到的各种数据可在任一时刻发出中断请求,要求CPU处理,若中断是开放的,则CPU就可以马上对数据进行处理。(3)故障处理若计算机在运行过程中出现了事先预料不到的情况或故障时(如

50、掉电、存储出错、溢出等),可以利用中断系统自行处理,而不必停机。51单片机有5个中断请求源(8052有6个),4个用于中断控制的特殊功能寄存器IE、IP、TCON(用6位)和SCON(用2位),可提供两个优先级,实现二级中断嵌套。5个中断源对应5个固定的中断入口地址(矢量地址)。本系统设计过程中用到了定时器中断T1和外部中断INT0,其中外部中断INT0,设置成下降沿触发,用来检测是否有双音频信号输入,如果有双音频信号输入,那么将会产生一次中断,此时MCU就会响应,同时对输入的双音频信号解码,处理。而定时器中断T1,是用来设置串口的传输波特率。本系统所设计的串口通信为10位异步收发(一位起始位

51、,8位数据,一位结束),允许接收,波特率为9600。下面介绍下INT0中断的处理流程图。如图3.2所示:图3.2 INT0中断的处理流程3.3 各模块电路的驱动程序设计 3.2.2 液晶驱动程序设计(1)根据1602液晶芯片的时序资料,设计液晶的驱动程序。基本函数设计如下:sbit LCM_RW= P21; /定义引脚sbit LCM_RS= P20;sbit LCM_E= P22;#define LCM_Data P0#define Busy 0x80 /用于检测LCM状态字中的Busy标识/LCD部分程序声明void WriteDataLCM(unsigned char WDLCM); /

52、写数据void WriteCommandLCM(unsigned char WCLCM,BuysC); /写指令unsigned char ReadDataLCM(void); /读数据unsigned char ReadStatusLCM(void); /读状态void LCMInit(void); /LCM初始化void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData); /按指定位置显示一个字符void DisplayListChar(unsigned char X, unsigned char Y

53、, unsigned char *DData); /按指定位置显示一串字符(2)1602液晶的读时序图3.3 1602读时序读状态设计的时候管脚信号如下: 读数据设计的时候管脚信号如下:LCM_Data = 0xFF; LCM_RS = 1;LCM_RS = 0; LCM_RW = 1;LCM_RW = 1; LCM_E = 0;LCM_E = 0; LCM_E = 0;LCM_E = 0; LCM_E = 1;LCM_E = 1;在读状态的时候应注意,设置好信号后,在等待数据的时候,要检测LCM1602是否处于忙的状态。(3)1602液晶的写时序图3.4 1602读时序写命令设计的时候管脚信

54、号如下: 写数据设计的时候管脚信号如下:LCM_Data = WCLCM; LCM_Data = WCLCM;LCM_RS = 0; LCM_RS = 1;LCM_RW = 0; LCM_RW = 0;LCM_E = 0; LCM_E = 0;LCM_E = 0;LCM_E = 0;LCM_E = 1; LCM_E = 1;值得注意的是在写数据前一定要加上忙信号检测,而在写命令的时候可以选择的加上忙信号检测。3.3.3 EEPROM接口程序(1)根据AT24C02芯片的时序资料,设计AT24C02的驱动程序。基本函数设计如下:void _CS_IIC_Initial( void ); /I2C

55、初始化void _CS_Set_sda_high( void ); /设置数据线高信号void _CS_Set_sda_low ( void ); /设置数据线低信号void _CS_Set_sck_high( void ); /设置时钟线高信号void _CS_Set_sck_low ( void ); /设置时钟线低信号BIT _CS_IIC_GetACK(void); /获得应答信号void _CS_IIC_SetACk(void); /设置应答信号void _CS_IIC_SetNAk(void); /设置非应答信号void _CS_IIC_START(void); /设置开始信号vo

56、id _CS_IIC_STOP(void); /设置停止信号void _CS_IIC_TxByte(BYTE); /发送一个字节的数据BYTE _CS_IIC_RxByte(void); /接受一个字节的数据BIT _CS_I2C_Read ( BYTE,BYTE,BYTE,BYTE *);/从一个地址开始读取n个字节BIT _CS_I2C_Write( BYTE,BYTE,BYTE,BYTE *); /从一个地址开始读入n个字节 BIT HAL_EEPROM_Write (BYTE,BYTE); /向地址内写入一个字节数据BIT HAL_EEPROM_Read ( BYTE ,BYTE *)

57、;/从地址内读出一个字节数据(2)在I2C总线上传送信息时的时钟同步信号是由挂接在SCL时钟线上的所有器件的逻辑“与”完成的。SCL线上由高电平到低电平的跳变将影响到这些器件,一旦某个器件的时钟信号下跳为低电平,将使SCL线一直保持低电平,使SCL线上的所有器件开始低电平期。此时,低电平周期短的器件的时钟由低至高的跳变并不能影响SCL线的状态,于是这些器件将进入高电平等待的状态。当所有器件的时钟信号都上跳为高电平时,低电平期结束,SCL线被释放返回高电平,即所有的器件都同时开始它们的高电平期。其后,第一个结束高电平期的器件又将SCL线拉成低电平。这样就在SCL线上产生一个同步时钟。可见,时钟低

58、电平时间由时钟低电平期最长的器件确定,而时钟高电平时间由时钟高电平期最短的器件确定。在数据传送过程中,必须确认数据传送的开始和结束。在I2C总线技术规范中,开始和结束信号(也称启动和停止信号)的定义如图3.5所示。当时钟线SCL为高电平时,数据线SDA由高电平跳变为低电平定义为“开始”信号,起始状态应处于任何其他命令之前;当SCL线处于高电平时,SDA线发生低电平到高电平的跳变为“结束”信号。器件将处于备用方式(Standby MODE).开始和结束信号都是由主器件产生。在开始信号以后,总线即被认为处于忙状态;在结束信号以后的一段时间内,总线被认为是空闲的。图3.5 I2C开始和结束信号详细时

59、序控制程序见附录。3.3.4 串口数据传输程序由于本系统设计的时候只是用来向PC机发送数据,所以设计过程中设计了,两个函数,一个是用来发送单字节的函数,一个是用来发送多字节的函数。利用查询方式发送数据。程序设计和分析如下:(1)初始化函数:void Initial_Uart(void); void Initial_Uart(void)TMOD|=0x20;/定时器1,方式2,自动装入8位定时器SCON=0x50; /方式1,10位异步收发,允许接收,REN=1 TH1=0xfd; /波特率 9600 TL1=0xfd; /2(smod)*(定时器益出率)/32 TR1=1; /启动定时器1(2

60、)单字节发送函数:void Uart_sent_data(unsigned char dat);void Uart_sent_data(unsigned char dat)/发送1字节数据SBUF=dat;while(TI=0);/发送完备,硬件置1,由软件置0TI=0;/软件置0 (3)多字节发送函数:void Uart_sent_str(unsigned char*str);void Uart_sent_str(unsigned char *str) /发送字符串while(*str!=0)Uart_sent_data(*str);str+;3.3.5 双音频检测程序双音频检测程序的设计主要根据前面中断流程图完成。详细程序如下:void DTMF() interrupt 0 using 1/ 外部中断0 双音频解码 unsigned char tmp,dat;unsigned char buf13; tmp=P1

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!