下面说说三极管的饱和情况。像上面那样的图,因为受到电阻 Rc的限制(Rc是固定值,那么最大电流为U/Rc,其中U为电源电压),集电极电流是不能无限增加下去的。当基极电流的增大,不能使集电极电流继续增大 时,三极管就进入了饱和状态。一般判断三极管是否饱和的准则是:Ib*β〉Ic。进入饱和状态之后,三极管的集电极跟发射极之间的电压将很小,可以理解为 一个开关闭合了。这样我们就可以拿三极管来当作开关使用:当基极电流为0时,三极管集电极电流为0(这叫做三极管截止),相当于开关断开;当基极电流很 大,以至于三极管饱和时,相当于开关闭合。如果三极管主要工作在截止和饱和状态,那么这样的三极管我们一般把它叫做开关管。
图13 三极管引脚介绍
第四章 系统软件设计
4.1单片机发声概述
一般来说,单片机不像其他专业乐器那样能奏出多种音色的声音,即不包含相应幅度的谐振频率。单片机演奏的音乐基本都是单音频率。因此单片机演奏音乐比较简单,只需能清楚“音调”和“节拍”两个概念即可。 音调表示一个音符唱多高的频率。 节拍表示一个音符唱多长的时间。
知道了一个音符的频率后,便可以让单片机发出相应频率的振荡信号,从而产生相应的音符声音。通过单片机的定时器进行定时中断,在中断服务程序中将单片机上完结单片机I/O口来回置高电平或者是低电平的,从而让扬声器发出声音。通过节拍计算出每个音符所需要的时间,采用循环延时的方法来实现控制一个音符唱多长的时间,从而构成一首完整的音乐。 4.1.1 音调
音调主要由声音的频率决定。对一定强度的纯音,音调随频率的升降而升降;对一
- 13 -
定频率的纯音、低频纯音的音调随响度增加而下降,高频纯音的音调却随响度增加而上升。
音调的高低还与发声体的结构有关,因为发声体的结构影响了声音的频率。大体上,2000 赫兹以下的低频纯音的音调随响度的增加而下降,3000 赫兹以上高频纯音的音调随响度的增加而上升。
例如,在音乐中常常把中音C上方的A音定位标准高音,其频率F=440HZ,其余音均与其进行比较。F1和F2为两个音符,如果这两个音符的频率相差一倍时,也即F2=2*F1时,则称F2比F1高一个频程。
在音乐中音符1与音符2,音符2与音符3??等等之间正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度内,有12个半音。由于人耳的听觉效果,这12个音阶的分度基本上是以对数的关系来划分的。只要知道12个音符的音高,也就是其基本频率,就可以根据音符之间的倍频关系得到其他音符的基本音调频率[3]。
以标准高音A的频率F=440HZ,其对应的周期为: T=1/F=1/440=2272us 因此需要在单片机I/O端口输出周期为T=2272us的方波脉冲,也就是t=T/2=2272/2=1136us
也就是说,单片机上定时器的中断出发时间为1136us。如果单片机采用定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设外接晶振的振荡器频率为f,则定时器的预置初始值有以下公式来确定:
Temp = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC) TH = Temp /256 TL = Temp %6 4.1.2 节拍
在音乐中,时间被分成均等的基本单位,每个单位叫做一个“拍子”或 称一拍。拍子的时值是以音符的时值来表示的,一拍的时值可以是四分音符(即以四分音符为一拍),也可以是二分音符(以二分音符为一拍)或八分音符(以八分音符为一拍)。
拍子的时值是一个相对的时间概念,比如当乐 曲的规定速度为每分钟 60 拍时,每拍占用的时间是一秒,半拍是二分之一 秒;当规定速度为每分钟 120 拍时,每拍的时间是半秒,半拍就是四分之一 秒,依此类推。拍子的基本时值确定之后,各种时值的音符就与拍子联系在一起。例如,当以四分音符为一拍时,一个全音符相当于四拍,一个二分音符相当于两拍, 八分音符相当于半拍,十六分音符相当于四分之一
- 14 -
拍;如果以八分音符做为 一拍,则全音符相当于八拍,二分音符是四拍,四分音符是两拍,十六分音符是半拍。
对于一拍的发音时间,如果乐曲没有特殊说明,一般来说,一拍大约为400~450ms。 我们利用单片机的内部定时器TO,使其工作在计数器模式MODEl下.韧始化适当的计数值THO及TLO以计时这个半周期时间.每当计时时间到后就将输出脉冲的IO口反相.然后重复计时此半周期时间。
再对IO口反相.就可在单片机IO引脚上得到此频率的脉冲。IO引脚脉冲接三极管作音频功放,然后辅出到扬声器.从而发出美妙的乐音。
通过音频功放电路,把信号输出到扬声器,播出美妙的音乐。只要一按下按钮,就会有音乐播出,等一首歌播放完毕后,当再次按下按钮,就会播放下一首音乐,如此循环。本系统可以奏出五首不同旋律的歌曲。
4.2 编程软件Keil C51
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 Keil_c软件界面如图14:
- 15 -
图14 Keil_c软件界面
该软件是一款集编程和仿真于一体的软件,它支持汇编、C语言及二者的混合编程。
4.3 画图软件Protel99SE
Protel99SE是PORTEL公司在80年代末推出的EDA软件。Protel99SE是应用于Windows9X/2000/NT操作系统下的EDA设计软件,采用设计库管理模式,可以网设计,具有很
强的数据交换能力和开放性及3D模拟功能,是一个32位的设计软件,可以完成电路原理图设计,印制电路板设计和可编程逻辑器件设计等工作,可以设计32个信号层,16个电源--地层和16个机加工层。 Protel99SE软件的特点:
(1) 可生成30多种格式的电气连接网络表; (2) 强大的全局编辑功能;
(3) 在原理图中选择一级器件,PCB中同样的器件也将被选中;
(4) 同时运行原理图和PCB,在打开的原理图和PCB图间允许双向交叉查找元器件、引脚、网络
(5) 既可以进行正向注释元器件标号(由原理图到PCB),也可以进行反向注释(由PCB到原理图),以保持电气原理图和PCB在设计上的一致性;
(6) 满足国际化设计要求(包括国标标题栏输出,GB4728国标库); * 方便易用的数模混合仿真(兼容SPICE 3f5);
(7) 支持用CUPL语言和原理图设计PLD,生成标准的JED下载文件; * PCB可设计32个信号层,16个电源-地层和16个机加工层;
(8) 强大的“规则驱动”设计环境,符合在线的和批处理的设计规则检查; (9) 智能覆铜功能,覆铀可以自动重铺; (10) (11) (12) 换; (13) (14) (15)
智能封装导航(对于建立复杂的PGA、BGA封装很有用);
方便的打印预览功能,不用修改PCB文件就可以直接控制打印结果; 独特的3D显示可以在制板之前看到装配事物的效果; 提供大量的工业化标准电路板做为设计模版; 放置汉字功能;
可以输入和输出DXF、DWG格式文件,实现和AutoCAD等软件的数据交
- 16 -
(16) 强大的CAM处理使您轻松实现输出光绘文件、材料清单、钻孔文件、贴
片机文件、测试点报告等; (17)
经过充分验证的传输线特性和仿真精确计算的算法,信号完整性分析直接
从PCB启动; (18)
反射和串扰仿真的波形显示结果与便利的测量工具相结合;
Protel99SE的工作界面是一种标准的Windows界面,如图所示,包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。Protel99SE软件界面如图15。
图15 Prtel99SE软件界面
4.4 Protel使用常见问题
1.原理图常见错误:
(1)ERC报告管脚没有接入信号: a.创建封装时给管脚定义了I/O属性;
- 17 -