生,对CPLD器件编程的实现。555定时器是一种模拟和数字功能相结合的中规模集成器件,构成的振荡器可以产生不同断续比的信号音,易实现用仿真软件对其输入输出波形的跟踪判断;CPLD(complex programmable logic device)复杂课编程逻辑器件,是从PAL和GAL器件发展出来的器件,相对而言规模大,结构复杂,属于大规模集成电路范围。而本文介绍的是利用单片机来进行电话网信号音发生器的设计。
1.4 信号音设计硬件平台介绍
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。其内部基本机构如图1。
图1
到如今,单片机已经渗透到我们生活当中的各个方面,随着技术的发展,单片机的种类也是琳琅满目,从不同角度,单片机大致可以分为通用型/专用型、总线型/非总线型及工控型/家电型。本设计用到的是属于通用型里面的80C51单片机。
51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。80C51单片机是基础入门的一个单片机,还是应用最广泛的一种,相比于用CPLD和555定时器产生信号音,80C51单片机有如下特点:
(1)体积小,价格低,性能强大,速度快,用途广,灵活性强,可靠性高。 (2)存储器ROM和RAM是严格分工的。ROM作用程序存储器,只存放程序,常数和数据表格,而RAM用作数据存储器,存放临时数据和变量,这样的设计方案更适用于实时控制系统。配置较大的程序存储空间ROM,将已调试好的程序固化(既对ROM编程,又称烧录或烧写),这样不仅掉电时程序不丢失,还避免了程序被破坏,从而确保了程序的安全性。实时控制仅需容量交较小的RAM,用于存放少量随机数据,这样有利于提高单片机的操作速度。
(3)采用面向控制的指令系统。在实时控制方面,尤其是在位操作方面,单片机有着不俗的表现。
(4)输入/输出(I/O)端口引脚通常设计多种功能,在设计时,究竟使用多功能引脚的哪一种功能,则可以用用户编程确定。
(5)单片机的硬件功能具有广泛的通用性。同一种单片机可以在不同的控制系统中,只是其中配置的软件不同而已。换言之,给单片机固化上不同的软件,便可形成不同的专用智能芯片,有时将这种芯片称为固件(Fireware)。
1.5 KeiluVision集成开发环境介绍
由于80C51单片机不具备自行编程的能力,所以就必须要有与之相对应的开发平台。本设计的开发语言是KeilC51系统下的C语言,开发软件是KeiluVision4.0版本中的KeilC51,下面是开发软件的介绍。
目前市场上KeiluVision4.0的产品有Keil MDK-ARM,Keil C51,Keil C166和Keil C251,KeilC51便是其中的一部分。Keil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易
用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。
该软件适合每个阶段的开发人员,不管是专业的还是应用工程师,还是刚学习嵌入式开发的学生,都能很快的上手。Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解,在开发大型软件时更能体现高级语言的优势,这上面同时集成了CPU、ROM、RAM、及TIMER/COUNTER等部件,具有64KB的寻址能力,使用者只需外接少量的借口电路就可以组成单片机应用系统,新一代的80C51单片机集成度更高,在片内集成了更多的功能部件,因此80C51单片机已成为事实上的工业标准,其内部结构如图2。
图2
2 信号音发生器硬件的搭建
2.1 信号音产生原理
信号音的发生既能直接通过硬件电路来生成,也可以通过软件编写来生成,
本设计用的是硬软结合,8种信号音的的频率和波形由keil这款软件来实现,具体程序下面会介绍,利用控制单片机内部的定时器来产生不同频率的方波,驱动一个功率放大器来使喇叭发出不同音节的声音,再利用延迟来控制发音时间的长短,即控制音调中的节拍。大致流程图如下列框图。
单片机 D/A转换器 运算放大器 喇叭 2.2 硬件原理及功能介绍
2.2.1 STC89C51单片机引脚及电路原理图介绍
该单片机采用的是40只引脚双列直插封装(DIP)。40只引脚按功能可分为3类: (1)电源及时钟引脚: Vcc、Vss;XTAL1、XTAL2。 (2)控制引脚: PSEN*、EA* 、ALE、RESET (即RST)。
(3)I/O口引脚:P0、P1、P2、P3,为4个8位I/O口的外部引脚。 1.电源引脚
(1)Vcc(40脚):+5V电源; (2)Vss(20脚):接地。 2.时钟引脚
(1)XTAL1(19脚):如果采用外接晶体振荡器时,此引脚应接地。 (2)XTAL2(18脚):接外部晶体的另一端,提供控制信号,有的引脚还具有复用功能。 3.控制引脚
(1) RST/VPD(9脚):复位与备用电源。
(2) ALE/PROG*(30脚):第一功能ALE为地址锁存允许,可驱动8个LS型TTL负载。PROG*为本引脚的第二功能。为编程脉冲输入端。
(3) PSEN* (29脚):读外部程序存储器的选通信号。可以驱动8个LS型TTL负载。
(4) EA*/VPP (Enable Address/Voltage Pulse of Programing,31脚) EA*为内外程序存储器选择控制端。 EA*=1,访问片内程序存储器,但在PC(程序计数器)值超过0FFFH(对于8051、8751)时,即超出片内程序存储器的4K字节地址范围时,将自动转向执行外部程序存储器内的程序。EA*=0,单片机则只访问外部程序存储器。VPP为本引脚的第二功能。用于施加编程电压(例如+21V或+12V)。对89C51,加在VPP脚的编程电压为+12V或+5V。 4.I/O口引脚
(1) P0口:双向8位三态I/O口,此口为地址总线(低8位)及数据总线分时复用口,可驱动8个LS型TTL负载。
(2) P1口:8位准双向I/O口,可驱动4个LS型TTL负载。
(3) P2口:8位准双向I/O口,与地址总线(高8位)复用,可驱动4个LS型TTL负载。
(4) P3口:8位准双向I/O口,双功能复用口,可驱动4个LS型TTL负载。
设计首先,利用单片机和其他器件材料焊接了一个最小系统,该图为最小系统的原理图,图中10uf的电解电容和10KΩ的电阻加上一个按键,构成一个复位电路,一个12MHz的晶振加上2个30pf的陶瓷电容,构成了一个时钟电路。 当管脚9既RST引脚处收到2us以上的电平信号时,复位电路开始工作,单片机系统就会自动复位,这样保证了在单片机运行出现错误的时候,可以让程序再重头跑一变。复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的 S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用