基于单片机的信号发生器李炳阳.docx
- 文档编号:4355720
- 上传时间:2022-11-30
- 格式:DOCX
- 页数:48
- 大小:651.51KB
基于单片机的信号发生器李炳阳.docx
《基于单片机的信号发生器李炳阳.docx》由会员分享,可在线阅读,更多相关《基于单片机的信号发生器李炳阳.docx(48页珍藏版)》请在冰豆网上搜索。
基于单片机的信号发生器李炳阳
1绪论
1.1单片机概述
单片微型计算机(单片机)作为微型计算机的一个很重要的分支,自问世以来,以其极高的性价比,受到人们的重视和关注,因此应用广泛,发展迅速。
相对而言,单片机体积小、重量轻、抗干扰能力强,对环境要求不高,并且价格低廉、可靠性高、灵活性好,开发较为容易。
目前,在我国,单片机已经广泛地用于智能仪表、机电设备过程控制、自动检测、家用电器和数据处理等各个方面。
1.2AT89S52单片机
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,两个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作[17]。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
1.3信号发生器概述
目前,市场上的信号发生器多种多样,一般按频带分为以下几种:
超高频:
频率范围1MHz以上,可达几十兆赫兹。
高频:
几百KHZ到几MHZ。
低频:
频率范围为几十HZ到几百KHZ。
超低频:
频率范围为零点几赫兹到几百赫兹。
超高频信号发生器,产生波形一般用LC振荡电路。
高频、低频和超低频信号发生器,大多使用文氏桥振荡电路,即RC振荡电路,通过改变电容和电阻值,改变频率。
用以上原理设计的信号发生器,其输出波形一般只有两种,即正弦波和脉冲波,其零点不可调,而且价格也比较贵,一般在几百元左右。
在实际应用中,超低频波和高频波一般是不用的,一般用中频,即几十HZ到几十KHZ。
用单片机89S52,加上一片DAC0808,就可以做成一个简单的信号发生器,其频率受单片机运行的程序的控制。
我们可以把产生各种波形的程序,写在ROM中,装入本机,按用户的选择,运行不同的程序,产生不同的波形。
再在DAC0808输出端加上一些电压变换电路,就完成了一个频率、幅值、零点均可调的多功能信号发生器的设计。
这样的机器体积小,价格便宜,耗电少,频率适中,便于携带。
2系统设计方案
2.1系统可行性分析
(1)元器件的选择及其可行性讨论
根据技术指标及系统设计目的,经研究芯片的选择如下:
①主控芯片采用ATMEL公司的89S52;
②采用12MHz的晶振器为89S52提供时钟信号;
③稳压块选用7812与7805相串联,提供12V和5V电压,7912产生-12V电压;
④对于89S52的P0口的数据采用74LS373进行锁存后经过DAC0808进行D/A转换;
⑤数码显示器采用高亮8位共阴极数码管;
⑥8位D/A转换器采用DAC0808;
⑦运算放大器采用LM324。
大部分的芯片及器件都可以通过网络购买,所以器件的选择完全可行。
(2)设计中可能存在的问题及解决方案——排除问题的可行性讨论
设计原理图时应着重考虑设计最终的电路板的可行性。
在设计时要对每一个电路模块仔细检查,查阅其他书籍进行校对,还要进行实物实验,以确保设计的可实现性。
在最后的电路板的调试阶段,需要诊断模块程序和单片机仿真机合作进行,从而克服调试程序本身的不可靠性,可方便地进行调试及错误诊断。
以上对设计中可能遇到的较为重要的问题进行了分析并提出了解决方法,基本上可以解决。
(3)经济上的可行性讨论
本设计是一个实验系统,芯片的选择在前面已经讨论,从前面的讨论中可见芯片大部分可在网上找到。
因此,设计费用主要集中在购买元器件上,而大部分的元器件又不是很贵,所以经济上本设计完全可行。
2.2系统需求分析
2.2.1系统功能要求
系统具有D/A转换功能,信号幅度放大功能,8位七段数码显示功能,上电自动复位功能,2×4键盘输入接口。
2.2.2系统性能要求
(1)系统的D/A转换功能具有8位精度;
(2)动态扫描七段数码显示器;
(3)89S52单片机时钟信号为12MHZ;
(4)系统上电自动复位;
(5)系统具有8位行列扫描键盘。
2.3总体方案设计
一个单片机主系统的硬件电路设计包含两部分内容:
一是单片机系统扩展部分设计,它包括存储器扩展和接口扩展。
存储器扩展指EPROM、EEPROM和RAM的扩展。
接口扩展是指各接口芯片以及其他功能器件的扩展。
二是各功能模块的设计,如信号检测功能模块、信号控制功能模块、人机对话功能模块、通讯功能模块等,根据系统功能要求配置相应的D/A、键盘、显示器等外围设备。
本机硬件设计包括两部分,即电源部分设计和主系统设计。
电源设计和主系统框图分别如图2-1,2-2所示。
图2-1交流—直流电压转换
图2-2主系统结构框图
3硬件设计
3.1总体硬件设计
单片机应用系统的硬件电路设计包含两部分内容:
一是系统扩展,即单片机内部的功能单元(如ROM、I/O、定时/计数器等)容量不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计适当的电路。
二是系统配置,即按照功能要求配置外围设备如显示器、D/A转换等,要设计合适的电路。
系统的扩展和模块设计应遵循下列原则[12]:
(1)尽可能选择标准化、模块化的典型电路,提高设计的成功率和结构的灵活性。
(2)系统的扩展与外围设备配置的水平应充分满足应用系统的功能要求。
(3)硬件结构应结合应用软件方案一并考虑。
硬件结果与软件方案会产生相互影响,考虑的原则是:
软件能实现的功能尽可能由软件来实现,以简化硬件结构。
但必须注意,由软件实现的硬件功能,其响应时间要比直接用硬件响应来的长,而且占用CPU时间。
所以,选择软件方案时,要考虑到这些因素[12]。
(4)可靠性及抗干扰性设计是硬件系统设计不可缺少的部分,它包括芯片、器件选择,去耦滤波等。
(5)单片机外接电路较多时,必须考虑其驱动能力。
驱动能力不足时,系统工作不可靠,解决的办法是增加驱动能力,增设线驱动器或减少芯片功耗,降低总线负载。
(6)系统的扩展及各功能模块的设计在满足系统功能要求的基础上,应适当留有余地,以备将来修改、扩展之需。
(7)在考虑硬件总体结构的同时要注意通用性的问题。
根据以上原则,进行硬件设计。
系统采用较为普及的89S52单片机作为系统的核心。
它不但容易实现设计指标,而且还有较好的性价比。
(1)程序存贮器
89S52内部自带8K的ROM,512B的RAM,所以不需要对其扩展存储器。
(2)键盘接口
矩阵式键盘适用于按键数量较多的场合,系统采用了行列式键盘设计即矩阵键盘,用I/O线组成行、列结构,按键设置在行列的交点上,2×4的行列结构可构成8个键的键盘。
因此,在按键数量较多时,可以节省I/O线。
按键的识别方法有两种,一种为扫描法,另一种为线反转法。
此设计采用了行列式及与之相适应的行列扫描法。
(3)数码管驱动
本设计实现了89S52的I/O口对2×4键盘和8位数码管显示的控制。
为增加对数码管显示器的驱动能力及稳定性,在它与89S52之间设置了提高驱动能力的74LS373。
(4)D/A转换
本设计D/A转换部分采用DAC0808芯片,由于它不带锁存器,故在使用时必须加74LS373进行数据锁存。
(5)信号变换部分
对信号的变换部分采用四运放集成芯片LM324,它采用14脚双列直插塑料封装,它的内部包含四组形式完全相同的运算放大器。
(6)可靠性方面
在使用应用系统时,可能会受到多种干扰的侵袭,直接影响到系统的可靠性,因此,本系统适当加入去耦电容,以减少干扰,确保精度。
3.2系统模块设计
3.2.1电源设计
稳压电源是单片机控制系统的重要组成部分,它不仅为测控系统提供多路电源电压,还直接影响到系统的技术指标和抗干扰性能。
近年来,传统的线性稳压电源正逐步被高有效率的开关电源所取代,特别是单片开关电源的迅速推广应用,为设计新型、高效、节能电源创造了良好的条件[13]。
本机使用三种共地电源:
+12V,-12V,+5V,硬件设计中采用自带电源方式。
因为本机有89S52单片机,还有许多逻辑芯片,这些芯片的工作电源电压为+5V,所以电源中必须有+5V电源。
另外由于D/A转换器件Vee端需接-12V电压,LM324也需要提供±12V电源,所以需要设计一个能产生±12V,+5V的电源。
经过综合分析,变压器选用16W/32V变压器(带三抽头如图3.1所示),整流用一片RBV-406集成电桥(如图3.2所示)。
稳压部分选用三端集成7805,7812,
7912稳压器件(如图3.3所示)。
图3.1变压器
图3.2集成电桥图图3.3三端集成稳压器件
特别说明,在使用稳压器件时,一定要注意79XX系列是左边接地,右边输出,中间输入;而78XX系列是左边输入,右边输出,中间接地。
电源部分原理图如图3.4所示
图3.4电源原理图
对于图3.4有几点说明:
1.7805稳压块与7812稳压块相串联,是为了使7805上的功耗降低,以免功耗太大而使用散热片。
稳压块的功耗按下式计算:
W=I×ΔU=I×(UI-UO)(3—1)
其中:
I是稳压片的通过电流,UI是稳压片的输入电压,UO是稳压片的输出电压,ΔU是稳压片上的电压降。
由上式可以看出:
稳压块上的压降ΔU越大,其功耗越大。
如果7805直接接到整流桥输出端,则U1必会大于12V,功耗必然加大。
2.AT89S52的功耗<100mA显示器采用动态显示,每一瞬间只有一个数码管发亮,而数码管电流≤100mA。
其它芯片总电流<50~70mA。
所以+5V电流的总电流可≤300mA,查三端集成稳压器说明书,可以选用7805,其电流Im=0.5A,这样电流可以留有一定裕量。
3.大滤波电容的选择
由于变压器副线圈的额定电压选用12V,那么瞬时电压峰值为Um=12×1.414≈17V因为大电容耐压值越高,价格越高,所以选用1000μF/25V电容。
4.整流桥的选择
虽然要求的电源电流<1A,但变压器副线圈电压为脉动电压,电流为脉动电流,其电流瞬时值远远超过1A,尤其在电源刚接通时,为留有一定裕量,而且不损坏整流桥,选用2A的。
由于整流桥的每个二极管都是半相导通,半相不导通,所以其反向耐压值要求很高,为留有一定裕量,选用50V。
最后选定整流桥为2A/50V。
5.变压器的选择
要求电源电压为±12V,而稳压块压降≤2V,所以变压器副线圈电压≥±16V,因此选用32V的电源。
又因电源电压≤500mA,所以选用16W/32V变压器(带三
抽头)。
6.电路中0.1μF电容的作用
电路中在集成三端稳压器输入端、输出端与公共端之间,分别接有0.1μF电容,这是为了更好地改变集成三端稳压片的瞬态响应,防止稳压块自激振荡,保证正常工作。
3.2.2显示器接口设计
一、LED显示器的结构与原理
LED发光器件一般常用的有两类:
数码管和点阵。
常用的数码管一般为8字型数码管,分为A、B、C、D、E、F、G、DP八段,其中DP为小数点。
数码管常用的有10根管脚,每一段有一个管脚,另外两根管脚为一个数码管的公共端。
从尺寸上分,LED数码管的种类很多,常用的有0.3、0.5、0.8、1.0、1.2、1.5、1.8、2.3、3.0、4.0、5.0等。
一般小于1.0的为单管芯,1.2~1.5为双管芯,1.8以上的为3个以上管芯,因而它们的供电电压要求不同,一般每个管芯的压降为2.1V左右。
通常,0.8以下采用5V供电,1.0~2.3采用12V供电,3.0以上的选择更高电压供电。
从电路上分,数码管又可分为共阴极和共阳极两种。
结构分别如图3.5,3.6所示。
图3.5共阴极图3.6共阳极图3.7管脚图
其中:
图3.7为管脚图,从a—g管脚输入不同的字段码,可显示不同的数字或字符(其字形码见表3-1)。
可见共阴极和共阳极的字段码互为反码。
表3.1字段码表
二、LED数码管显示器的译码方式
1.硬件译码方式
图3.8硬件译码
硬件译码方式是指利用专门的硬件电路来实现显示字符到字段码的转换,这样的硬件电路有很多,比如MOTOTOLA公司生产的MC14495芯片就是其中的一种,MC14495是共阴极一位十六进制数—字段码转换芯片,能够输出用四位二进制表示形式的一位十六进制数的七位字段码(不带小数点)。
它的内部结构如图3-8所示。
2.软件译码方式
软件译码方式就是通过编写软件译码程序,通过译码程序来得到要显示的字符的字段码。
三、LED数码管的显示方式
1.LED静态显示
所谓静态显示方式,就是当显示器显示某一个字符时,相应的发光二极管恒定地导通或截止。
静态显示时,较小的电流能得到较高的亮度。
这是由于显示器的各位相互独立,而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止(如图3.9所示)。
当显示器位数很少(仅一、二位)时,采用静态显示方式是合适的。
当位数较多时,用静态显示所需的I/O口太多,占用太多的硬件资源。
故在位数较多时往往采用动态显示方式。
LED静态显示时,其公共端直接接地(共阴极)或接电源(共阳极),各段选线分别与I/O口线相连。
要显示字符,直接在I/O线上输出相应的字段码。
图3.9LED静态显示
2.LED动态显示方式
LED动态显示是将所有的数码管的段选线并接在一起,用一个I/O口控制,公共端不是直接接地(共阴极)或电源(共阳极),而是通过相应的I/O口线控制。
如图3.10所示。
图3.10LED动态扫描
设数码管为共阳极,它的工作过程为:
第一步使右边第一个数码管的公共端D0为1,其余的数码管的公共端为0。
同时在I/O
(1)上送右边第一个数码管的字段码,这时,只有右边第一个数码管显示,其余不显示;第二步使右边第二个数码管的公共端D1为1,其余的数码管的公共端为0,同时在I/O
(1)上送右边第二个数码管的字段码。
这时,只有右边第二个数码管显示,其余不显示,依此类推,直到最后一个,这样四个数码管轮流显示相应的信息,一个循环完后,下一循环又这样轮流显示,从计算机的角度看是一个一个的显示,但由于人的视觉滞留,只要循环的周期足够快,看起来所有的数码管都是一起显示的了。
这就是动态显示的原理。
而这个循环周期对于计算机来说很容易实现。
所以在单片机中经常用到动态显示。
四、系统显示电路:
本机显示采用软件译码动态显示,系统显示电路如图3.13所示。
采用软件译码动态显示的理由如下:
1)如果用静态显示,单片机的接口资源肯定不够用,那么还要进行接口的扩展,增加了系统的复杂度;2)如果要制成印刷线路板,得占相当大一块面积;3)另外,采用动态显示,可以明显的降低功耗,因为每一时刻只有一个LED发光,其功耗为静态显示的1/8。
一个LED最大电流为120mA,如用静态显示,8个LED就耗电流960mA,那么变压器就得选32V/32W,价格提高近一倍,稳压块得选7805C(Im=1A),这种管是椭圆壳,在印刷线路板上也得占相当大的面积。
综上分析,采用动态显示才是最经济的方案。
在显示的时候,只要把显示的字码输送到P2口,再经过74LS373进行数据锁存,P3口作为位选控制信号。
由于采用的是共阴极数码管,当需要显示哪一位的时候,只要在相应的位选控制信号输出低电平就行。
例如,要在第一个数码管显示P,那么在P2口就要输出73H字段码,同时P3口输出FEH位选码。
图3.13系统显示电路
3.2.3复位与时钟电路设计
1.复位电路设计
单片机的复位是靠外电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。
为了保证应用系统可靠地复位,通常是RST引脚保持10ms以上的高电平。
复位电路连接如图3.14所示。
此电路仅用一个电容及一个电阻。
系统上电时,在RC电路充电过程中,由于电容两端电压不能跳变,故使RESET端电平呈高电位,系统复位。
经过一段时间,电容充电,使RESET端呈低电位,复位结束[7]。
图3.14复位电路
2.时钟电路设计
8XX51系列单片机的时钟信号通常用两种电路形式得到:
内部振荡方式和外部振荡方式。
在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振),就构成了内部振荡方式。
由于单片机内部有一个高增益反向放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟脉冲。
晶振通常选用6MHZ、12MHZ或24MHZ。
内部振荡方式如图3.15所示。
图中电容C1、C2起稳定振荡频率、快速起振的作用。
电容值一般为5~30pF。
内部振荡方式所得时钟信号比较稳定,实用电路中使用较多。
外部振荡方式是把已有的时钟信号引入单片机内。
这种方式适宜用来使单片机的时钟与外部信号保持一致。
外部振荡方式电路如图3.16所示。
对HMOS的单片机(8031,8031AH等),外部时钟信号由XTAL2引入;对于CHMOS的单片机(8XCXX),外部时钟信号由XTAL1引入。
图3.15内部振荡图3.16外部振荡
3.2.4键盘接口设计
一、人机交互接口的设计
所谓人机交互接口,是指人与计算机之间建立联系、交互信息的输入/输出设备的接口[8]。
这些输入/输出设备主要有键盘、显示器和打印机等。
他们是计算机应用系统中必不可少的输入、输出设备,是控制系统与操作人员之间的交互窗口。
一个安全可靠的控制系统必须具有方便的交互功能。
操作人员可以通过系统显示的内容,及时掌握生产情况,并可通过键盘输入数据,传递命令,对计算机应用系统进行人工干扰,使其随时能按照操作人员的意图工作。
二、矩阵键盘的工作方式
1.查询工作方式
这种方式是直接在主程序中插入键盘检测子程序,主程序每执行一次,则键盘检测子程序就对键盘进行检测一次。
如果没有键按下,则跳过键识别,直接执行其他程序;如果有键按下,则通过键盘扫描子程序识别按键,得到按键的编码值。
然后根据编码值进行相应的处理,处理完后再回到主程序执行。
键盘扫描子程序流程如图3.17所示。
图3.17键盘扫描流程图
2.中断工作方式
如图3.18所示,就是中断工作方式,当有中断的时候,就去执行扫描程序,没有中断的时候,CPU可以去做其他的事情。
这样可以提高CPU的效率。
图3.18键盘中断工作方式
三、系统键盘的实现
依据上述工作原理,结合本设计实际,设计出本系统键盘结构如图3.19示。
图图3.19系统键盘实现
工作原理如下:
1.检测键盘上是否有键按下:
将行线送入低电平,列线送入高电平。
读入P1口的状态来判别。
其具体过程如下:
P1口输出0FH,即所有行线置成高电平,所有列线置成低电平,然后将P1口状态读入与0FH比较。
如果有键按下,总会有一根行线电平被拉至低电平,从而使行输入状态不全为1。
2.识别键盘中哪一个键按下:
确认有键按下后,保存行扫描时有键按下时的状态X。
P1口输出F0H,进行列扫描,保存列扫描状态Y,取出键值Z=X|Y.例如第一行第一列有键按下,那么行扫描读入的状态为00001110,列扫描读入的状态为11100000,最后键值Z=11101110=EEH,然后转去执行相应的服务程序。
3.2.5D/A转换设计
一、D/A转换器的原理
以倒T形电阻网络D/A转换器为例,介绍D/A转换器的原理。
倒T形电阻网络D/A转换器结构如图3.20所示。
图3.20倒T形电阻网络D/A转换器
图中S0~S3为模拟开关,由输入数码Di控制,当Di=1时,Si接运算放大器反相输入端(虚地),电流Ii流入求和电路;当Di=0时,Si将电阻2R接地。
所以,无论Si处于何种位置,与Si相连的2R电阻均接“地”(地或虚地)。
流过各开关支路(从右到左)的电流分别为I/2、I/4、I/8、I/16。
总电流:
(3—3)
输出电压:
(3—4)
将输入数字量扩展到n位,则有:
可简写为:
(3—5)
其中
,
=
二、DAC0808简介
DAC0808是八位电流输出型D/A转换器件,由4脚输出转换电流,其简化电路图及引脚结构如图3.21所示。
VREF为参考电源,VEE负电压供电;D0是高数据位(MSB),D7才是地数据位(LSB)。
DAC0808的电源极性:
VCC=+5V,VEE=-15V,VREF=+15V。
D0~D7是数据输入端,I0是电流输出端,COMP是接电容进行补偿。
在单片机应用系统中通常需要的是电压信号,电流信号与电压信号之间的转换可由运算放大器实现。
DAC0808不带锁存器,所以在使用时必须加一个74LS373进行数据锁存。
图3.21DAC0808简化电路框图和管脚排列
三、D/A转换系统的实现
根据DAC0808的特性设计出本系统的D/A转换电路如图3.22所示。
图3.22系统D/A实现
工作原理:
本系统由VREF提供参考电压,相应参考电流为I=VREF/R1。
电容C4提供补偿,OUT输出电流,经过LM324运算放大器转换成电压。
所以输出电压:
=5K
(3—6)
3.2.6电压变换
一、LM324简介
LM324是四运放集成电路,它采用14脚双列直插塑料封装。
它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。
每一组运算放大器可用图3.23所示的符号来表示,它有5个引出脚,其中“+”、“-”为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。
两个信号输入端中,Vi-(-)为反相输入端,表示运放输出端Vo的信号与该输入端的位相反;Vi+(+)为同相输入端,表示运放输出端Vo的信号与该输入端的相位相同[9]。
LM324的引脚排列如图3.24所示。
图3.23LM324运算放大器
图3.24LM324引脚结构图
由于LM324是四运放集成电路,具有电源电压范围宽,静态功耗小,可单电源使用,价格低廉等优点,因此被广泛应用在各种电路中。
二、原理图
电压变换原理图如图3.25所示
图3.25系统信号变换
4软件设计
4.1软件功能设计
4.1.1系统初始化程序设计
复位程序完成如下工作:
1.显示2秒的PPP.HELLO初始界面;
2.初始频率设置为983HZ;
3.将频率值转换成定时器的初值;
4.置定时器0工作于方式1,即16位定时器方式,送入
定时器0定时初值,启动定时器0工作;
5.显示初始频率和产生波形的类型;
6.转键盘扫描程序。
系统的初始化流程如图4.1所示。
图4.1初始化流程图
4.1.2键盘扫描及处理程序设计
这部分程序包括如下几部分:
1.键盘扫描程序judge;
2.先对P1置数,行扫描;
3.判断是否有键按下;
4.延时10ms,软件去干扰;
5.确认按键按下X=P1,保存行扫描时有键按下时状态;
6.列扫描;
7.保存列扫描时有键按下时状态;
8.取出键值;
9.执行相应键值程序。
下面分别介绍其功能及设计思想。
1.键盘扫描程序
单片机系统中,键盘扫描是CPU工作的一个主要内容之一。
CPU忙于各项工作任务时,如何兼顾键盘扫描。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 信号发生器 李炳阳