1、目 录摘要11绪论2 1.1单片机概述2 1.2信号发生器的分类2 1.3研究内容22方案的设计与选择2 2.1方案与比较2 2.2设计原理3 2.3设计思想3 2.4设计功能43硬件设计5 3.1硬件原理框图5 3.2主控电路5 3.3显示电路6 3.4数/模转换电路6 3.5放大、分频电路7 3.6模/数转换电路9 3.7按键、复位、时钟电路114软件设计12 4.1主程序流程图12 4.2中断程序流程图135成果展示与总结25 5.1成果展示25 5.2总结26参考文献27致 谢28基于单片机的函数信号发生器设计摘 要: 本文主要用AT89C51 单片机与DAC0832构成的函数信号发生
2、器,可产生方波、三角波、正弦波,具有线路简单、结构紧凑、性能优越等特点。本函数信号发生器可以由程序控制改波形的周期,以及不同波形的切换。用ADC0809实时对其波形电压测量。输出波形的幅值可以在05V可以调节。对于输出电压的控制,主要是用UA741放大器对其信号放大来实现的。输出波形幅值的大小,由ua741接负反馈电阻来调节,从而达到了输出波形幅值在0-5V可调。对于显示部分,本设计采用四位共阳数码管实时显示当前波形的频率,以及在按键的切换下可以显示测量的波形的电压幅值。文章给出了源代码,并通过proteus软件仿真测试,然后画出PROTEL原理图和PCB板图。对应着PCB板图焊接实物电路,并
3、下载程序做硬件调试。用示波器观察其波形。最终其性能指标达到了设计要求。关键词:单片机;DAC0832;ADC0809;放大器;信号发生器1绪论 1.1单片机概述 随着大规模集成电路技术的发展,中央处理器(CPU)、随机存取存储器 (RAM)、只读储器(ROM)、(I/O)接口、定时器/计数器和串行通信接口,以及其他一些计算机外围电路等均可集成在一块芯片上构成单片微型计算机,简称为单片机。单片机具有体积小、成本低,性能稳定、使用寿命长等特点。其最明显的优势就是可以嵌入到各种仪器、设备中,这是其他计算机和网络都无法做到的。1.2信号发生器的分类 信号发生器应用广泛,种类繁多,性能各异,分类也不尽一
4、致。按照频率范围分类可以分为:超低频信号发生器、低频信号发生器、视频信号发生器、高频波形发生器、甚高频波形发生器和超高频信号发生器。按照输出波形分类可以分为:正弦信号发生器和非正弦信号发生器,非正弦信号发生器又包括:脉冲信号发生器,函数信号发生器、扫频信号发生器、数字序列波形发生器、图形信号发生器、噪声信号发生器等。按照信号发生器性能指标可以分为一般信号发生器和标准信号发生器。前者指对输出信号的频率、幅度的准确度和稳定度以及波形失真等要求不高的一类信号发生器。后者是指其输出信号的频率、幅度、调制系数等在一定范围内连续可调,并且读数准确、稳定、屏蔽良好的中、高档信号发生器。 1.3研究内容 本文
5、是做基于单片机的信号发生器的设计,将采用编程的方法来实现三角波、方波、正弦波的发生。根据设计的要求,对各种波形的频率进行程序的编写,通过放大器来调幅,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。2方案的设计与选择 2.1方案与比较 方案一:采用单片函数发生器(如ICL8038),ICL8038可同时产生正弦波、方波等,而且方法简单易行,用运算放大器改变调制电压,也可以实现数控调整频率,但产生信号的频率稳定度不高。频率调节也不能直接由程序
6、控制。方案二:采用锁相式频率合成器,利用锁相环,将压控振荡器(VCO)的输出频率锁定在所需频率上,该方案性能良好,但难以达到输出频率覆盖系数的要求,且电路复杂。方案三:采用单片机编程的方法来实现。该方法可以通过编程的方法来控制信号波形的频率和幅度,而且在硬件电路不变的情况下,通过改变程序来实现频率的变换。此外,由于通过编程方法产生的是数字信号,所以信号的精度可以做的很高。2.2设计原理数字信号可以通过数/模转换器转换成模拟信号,因此可通过产生数字信号再转换成模拟信号的方法来获得所需要的波形。89C51单片机本身就是一个完整的微型计算机,具有组成微型计算机的各部分部件:中央处理器CPU、随机存取
7、存储器 RAM、只读存储器 ROM、接口电路、I/O 定时器/计数器以及串行通讯接口等,只要将 89C51 再配置键盘及其接口、显示器及其接口、数模转换及波形输出、指示灯及其接口等四部分,即可构成所需的波形发生器,其信号发生器构成原理框图如图 2.1 所示。89C51 是整个波形发生器的核心部分,通过程序的编写和执行,产生各种各样的信号,并从键盘接收数据,进行各种功能的转换和信号幅度的调节。当数字信号经过接口电路到达转换电路,将其转换成模拟信号也就是所需要的输出波形。图2.1信号放生器原理图 2.3设计思想(1)向DAC0832送对应的数字量就能得到相应的模拟信号。(2)将一个周期的信号分离成
8、 256 个点(按 X 轴等分),每两点之间的时间间隔为T,用单片机向ADC0832推送数组得到函数信号。T作为调频的延时,嵌入在256个数据之间。改变T就能调节波形的频率。(3)方波的模拟产生:数字量为0x00时推入DAC0832输出为低电平;数字量为0xff时推入DAC0832输出为高电平。方波便于对频率的测量,也取256个数据。这与三角波,正弦波数据表统一。所以三种波形的频率一样。(4)三角波模拟信号由D/A转换器的模拟量输出:向DAC0832送数据0255后,再送数据2550的连续数据就能够得上一个周期的完整三角波。因为只取256个数据点,所以波形前半只取0255中的奇数(128个数)
9、;波形后半周期只取2550的偶数部分(128个数)。由此较准确的取下了256个数据。(5)正弦波的模拟信号由 D/A 转换器的模拟量输出的计算公式为:Y=(A/2sint)+A/2 (其中 A=VREF) t=NT (N=1256) 正弦函数DA数据表,可以用“VsinTab正弦波表生成器”生成所需要的数据表。如图2.2所示。 图2.2 正弦函数DA数据表(6)一个周期被分离成 256 个点,对应的三种波形的256个数据存分别放在以fangboTAB256,sanjiaoboTAB256,zhengxianboTAB256为起始地址的存储器中。(7)ADC0832转换得到的模拟量为电流输出,I
10、out1+Iout2为常数。(8)实时函数信号的幅值测量。 2.4设计功能(1)本方案有4个独立式按键,4位 LED 共阳数码管显示器。(2)DAC0832产生需要的函数信号,ADC0809测量函数信号实时幅值。(3)74LS74把单片机ALE端口2MHZ信号4分频为500K,作为ADC0809的时钟信号。(4)用一个ua741把DAC0832的Iout1与Iout2电流输出端口的信号的放大,用另一个ua741作为反向器,把前一级放大了的信号反向,把幅值变成正值。(5)频率范围:30210Hz。(6)输出波形幅度为 05V。3硬件设计 3.1硬件原理框图图3.1硬件原理方框图 3.2主控电路
11、AT89C51 单处机内部设置两个16 位可编程的定时器/计数器 T0 和 T1,它们具有计数器方式和定时器方式两种工作方式及4种工作模式。模式1采用的是16位计数器,当T0或T1被允许计数后,从初值开始加计数,最高位产生溢出时向CPU请求中断。中断系统是使处理器具有对外界异步事件的处理能力而设置的。当中央处理器CPU正在处理某件事的时候外界发生了紧急事件,要求CPU暂停当前的工作,转而去处理这个紧急事件。在波形发生器中,只用到片内定时器计数器溢出时产生的中断请求,即是在AT89C51 点亮一样数码管,接着启动定时器,在定时器未产生中断之前,AT89C51等待,直到定时器计时结束,产生中断请求
12、,AT89C51响应中断,接着点关闭当前位数码管亮下一位数码管,如此循环达到动态扫描的显示功能。AT89C51从P2口接收来自键盘的信号。 3.3显示电路在本设计中,采用4位数码管来显示频率和电压。由PNP三极管驱动可以获得高亮度的显示。当产生一个周期的波形需要把256个数组推送到DAC0832中,数据量大,所以不能产生很高的频率。用4位的数码管就够用。显示接口如图 3.3所示。 图 3.3 显示电路3.4数/模转换电路由于单片机产生的是数字信号,要想得到所需要的波形,就要把数字信号转换成模拟信号,所以选用价格低廉、接口简单、转换控制容易并具有8位分辨率的数模转换器DAC0832。DAC083
13、2是8分辨率的D/A转换集成芯片。根据对DAC0832的数据锁存器和DAC寄存器的不同的控制方式,DAC0832有三种工作方式:直通方式、单缓冲方式和双缓冲方式。在本设计中,采用的是直通模式。当数据送入DAC0832立即转换。电路图如图3.4所示。图3.4 DA转换电路 3.5放大、分频电路 741放大器输出入脚位图 图3.5 741管脚图 在本设计中用到了两个ua741。第1级放大器,用于信号的放大。第2级放大器,用于信号的反向,从而得到正电压。图3.52 74LS74芯片由两个独立的上升沿触发的维持阻塞D触发器组成。引脚功能说明: 图3.53功能表: 图3.54在本设计需要一个4分频电路,
14、如图3.45所示。 图3.55 3.6模/数转换电路 3.6.1ADC0809概述 ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。3.6.2外部特性(引脚功能)ADC0809芯片有28条引脚,采用双列直插式封装,如图3.61所示。下面说明各引脚功能。 图3.61 3.6.3 ADC0809的工作过程首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转
15、换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 图3.62 3.7按键、复位、时钟电路 键盘电路,本设计中采用的是3个独立的功能按键。S2用来切换现在产生的波形。S3用来调节输出的函数信号的频率。S4用来启动对输出的函数信号的电压值的测量。 图3.71复位电路,单片机的复位是靠外部电路实现的,在时钟电器工作以后,只要在RESET端加上大于10MS的高电平,单片机便能实现复位。若RESET保持高电平,单片机循环复位。单片机一般要求在上电时,或者按复位键时复位。所以复位电路又分为上电复位和按键复位两种。在本设计中用到的就
16、是按键复位。如图3.72所示。 图3.72时钟电路,单片机内部有一个高增益反相放大器,当外接晶振后,就构成了自激振荡器,并产生振荡时钟。晶体在1.212MHZ选择。时钟电路如图3.73所示。其中C2,C3起稳定振荡的作用,电容选一般633PF。 图3.634软件设计 4.1主程序流程图4.2中断程序流程图程序代码#include reg51.h#define uchar unsigned char#define DA P1/DAC0832数据口#define AD P3/ADC0809数据口#define LED_DATA P0/LED显示数据口sbitbaiwei=P27;/定义数码管阳级控
17、制脚(百位)sbitshiwei=P26;/定义数码管阳级控制脚(十位)sbitgewei=P25;/定义数码管阳级控制脚(个位)sbittiaobo=P24;/波形切换sbittiaopin=P23;/调频sbitdianya=P22;/测电压sbit START=P21;/启动ADuchar a=0,b=0,c=0,i=0,l=0,n=0;Codeucharceliang1ma10= 0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10;/带小点段码codeucharceliang2ma10= 0xc0,0xf9,0xa4,0xb0,0x99,
18、0x92,0x82,0xf8,0x80,0x90;/不带小点段码 /共阳 0 1 2 3 45 6 7 8 9data uchardianyaTAB2=0x24,0x90; /电压值存数组code ucharpinlv18=0xa4,0xf9,0xb0, /213 不同频率下的显示数据0xf9,0xc0,0xf8, /1070xff,0xf8,0xf9, /710xff,0x92,0xb0, /530xff,0x99,0xb0, /430xff,0xb0,0x82;/36/*方波数据表*/code ucharfangboTAB256=0x00,0x00,0x00,0x00,0x00,0x00,
19、0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
20、x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0
21、x00,0x00,0x00,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
22、xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0
23、xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff;/*三角波数据表*/code ucharsanjiaoboTAB256=0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e,0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e,0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e,0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e,0x50,0x52,
24、0x54,0x56,0x58,0x5a,0x5c,0x5e,0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e,0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e,0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e,0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e,0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae,0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe,0xc0,0xc2,0xc4,0xc6,0xc8,0xca,
25、0xcc,0xce,0xd0,0xd2,0xd4,0xd6,0xd8,0xDA,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee,0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe,0xff,0xfd,0xfb,0xf9,0xf7,0xf5,0xf3,0xf1,0xef,0xed,0xeb,0xe9,0xe7,0xe5,0xe3,0xe1,0xdf,0xdd,0xdb,0xd9,0xd7,0xd5,0xd3,0xd1,0xcf,0xcd,0xcb,0xc9,0xc7,0xc5,0xc3,0xc1,0xbf,0xbd,
26、0xbb,0xb9,0xb7,0xb5,0xb3,0xb1,0xaf,0xad,0xab,0xa9,0xa7,0xa5,0xa3,0xa1,0x9f,0x9d,0x9b,0x99,0x97,0x95,0x93,0x91,0x8f,0x8d,0x8b,0x89,0x87,0x85,0x83,0x81,0x7f,0x7d,0x7b,0x79,0x77,0x75,0x73,0x71,0x6f,0x6d,0x6b,0x69,0x67,0x65,0x63,0x61,0x5f,0x5d,0x5b,0x59,0x57,0x55,0x53,0x51,0x4f,0x4d,0x4b,0x49,0x47,0x45,
27、0x43,0x41,0x3f,0x3d,0x3b,0x39,0x37,0x35,0x33,0x31,0x2f,0x2d,0x2b,0x29,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x13,0x11,0x0f,0x0d,0x0b,0x09,0x07,0x05,0x03,0x01;/*正弦波数据表*/CodeucharzhengxianboTAB256=0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,0xb0,0xb3,0xb
28、6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,0xDA,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf
29、8,0xf7,0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,0xDA,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x6
30、1,0x5e,0x5b,0x58,0x55,0x52,0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0x0f,0x0d,0x0c,0x0b,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x03,0x02,0x01,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0
31、1,0x01,0x02,0x03,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0c,0x0d,0x0e,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c;/*短延时函数*/void
32、delayms(uchar t) uchar i; while(t-) for (i=0;i2) a=0; if(tiaopin=0) delayms(10);/按键消抖 if(tiaopin=0) while(!tiaopin);/松手检测 b=b+3; if(b15) b=0; if(dianya=0) delayms(10);/按键消抖 if(dianya=0) while(!dianya);/松手检测 c=c+1; if(c1) c=0; /*测量电压函数*/voidcedianya() dianyaTAB0=celiang1ma(AD*50/255)/10;/测量转换电压数据的个位d
33、ianyaTAB1=celiang2ma(AD*50/255)%10;/测量转换电压数据的小数位 /*中断显示函数*/void timer0(void) interrupt 1 using 1 /中断程序入口n+; if(c=0) /未按下测电压按键switch(n) case 1: gewei=0; /关个位 LED_DATA=pinlvb;/送段码baiwei=1; /选通百位 break; case 2: baiwei=0; /关百位 LED_DATA=pinlvb+1; /送段码shiwei=1; /选通十位break; case 3: shiwei=0; /关十位 LED_DATA=
34、pinlvb+2; /送段码gewei=1; /选通个位 n=0;break; if(c=1) /按下测电压按键 baiwei=0; /关百位cedianya(); /调用测电压子函数switch(n) case 1: gewei=0; /关个位 LED_DATA=dianyaTAB0; /送段码shiwei=1; /选通十位break; case 2: shiwei=0; /关十位 LED_DATA=dianyaTAB1; /送段码gewei=1; /选通个位 n=0;break; TH0=(65536-5000)/256;/定时器重赋初值5ms TL0=(65536-5000)%256;/
35、*主函数*/void main(void) TMOD=0X01;/定时器1模式1TH0=(65536-5000)/256;/定时器初值5ms TL0=(65536-5000)%256;EA=1;/开启总中断ET0=1;/开启T0定时中断TR0=1;/启动定时while(1) anjian(); /调用按键扫描子程序switch(a) case 0: START=0;/给start低电平 for(i=0;i255;i+) /循环送255个方波数据 DA=fangboTABi; l=b;/延时-调频while(l-); DA=fangboTABi; l=b;/延时-调频while(l-); STA
36、RT=1; /给start高电平break; case 1: START=0;/给start低电平 for(i=0;i255;i+) /循环送255个方波数据 DA=sanjiaoboTABi; l=b; /延时-调频while(l-); DA=sanjiaoboTABi;/送第256个方波数据 l=b; while(l-); /延时-调频 START=1; /给start高电平break; case 2: START=0; /给start低电平 for(i=0;i255;i+) /循环送255个方波数据 DA=zhengxianboTABi; l=b; /延时-调频while(l-); DA
37、=zhengxianboTABi;/送第256个方波数据 l=b; while(l-); /延时-调频 START=1; /给start高电平break; default: break; 5成果展示与总结5.1成果展示 三角波波形 图5.11 方波波形 图5.12 正弦波波形 图5.13然后实际动手制作电路板,如下图所示。 5.2总结 在本次设计工作中,通过对单片机函数信号发生器的分析与研究,根据实际应用,采用较少的资源消耗,完成了实验要求。同时,让我学到了更多的软件编程、i/o口的使用,还有各管脚的功能,实现了真正的软硬件的有效结合,二者无论少了谁,都不可能实现。同时明白了实践的重要性,实践
38、是检验真理的唯一标准。 这次课程设计使我对单片机更加感兴趣,特别是试验成功以后,有一种特别的自豪感。这次课程设计也让我学会了撰写论文,对我将来学习以及工作都将更加有益。在撰写论文中,也使我在单片机的基本原理、信号发生器的应用有更多理解。而作为以为学生,在对单片机函数的设计中,因知识和经验的不足,只能通过模仿其它的编程思路,再加上一些自己的思想去完成这个设计,因此在各个方面都会有一些不足,敬请指正。但我会在以后的学习中逐渐去完善、巩固我的单片机知识。参考文献1袁孜.计算机控制技术实用教程北京:电子工业出版社,2007.12:14-542曾一江.单片机原理志与接口技术北京:科学出版社,2006::45-783黄维翼.单片机应用与项目实践北京:清华大学出版社,2010.4:67-894马忠梅.单片机的C语言应用程序设计北京:北京航空航天大学出版社,2007:6-455周雪.模拟电子技术西安:西安电子科技大学出版社,2005:34-776孙淑霞.C程序设计教程成都:四川科学技术出版社,2009.1:89-134致 谢 本设计在选题及研究过程是在老师的亲切关怀和悉心指导下完成的。老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路。老师细心指导我的学习与研究,从课题的选择到项目的最终完成,老师都始终给予我细心的指导和不懈的支持。在此,我要向老师深深地鞠上一躬,
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100