c8051f330单片机最小系统设计

wwwmagic 贡献于2017-05-17

作者 生活在于奋斗!  创建于2007-07-03 05:17:00   修改者dpnet  修改于2008-06-24 06:13:00字数28402

文档摘要:本文以C8051F330为研究对象,设计一个具有串口通信,D/A转换,A/D转换等功能的最小系统。然后运用Keil C51软件,对每个功能进行验证。通过3.3V供电的低功耗增强型SOC单片机C8051F330和串口驱动芯片MAX3232相互配合,结合单片机的片上外设D/A,在载入验证程序后,能够在示波器上显示数/模转换的正弦和方波。并且实现了与计算机串口通信进行数据的接收和发送。经过软硬件结合调试证明本次设计的系统是合理可行的。
关键词:

西安工程大学本科毕业设计(论文) 摘 要 随着现代电子技术的发展,各种处理器在现代机械及电子测量领域中应用相当广泛。单片机系统以其功能面广,扩展方式多等优点应用在多个领域。单片机最小系统又是研究单片机相关设计的基础,因此对单片机最小系统的研究和设计具有广泛的现实意义。 本文以C8051F330为研究对象,设计一个具有串口通信,D/A转换,A/D转换等功能的最小系统。然后运用Keil C51软件,对每个功能进行验证。通过3.3V供电的低功耗增强型SOC单片机C8051F330和串口驱动芯片MAX3232相互配合,结合单片机的片上外设D/A,在载入验证程序后,能够在示波器上显示数/模转换的正弦和方波。并且实现了与计算机串口通信进行数据的接收和发送。经过软硬件结合调试证明本次设计的系统是合理可行的。 本文主要分以下几章进行论述。第一章是原理及相关设计工具介绍;第二章是系统的硬件设计;第三章是系统的软件设计部分;第四章是系统调试与分析部分;第五章是结论与展望。 关键词:最小系统,C8051F330, MAX3232 ABSTRACT With the development of modern electronic technology, all kinds of processors application is quite widespread in the modern machinery and in the electronic surveying domain. The monolithic integrated circuit (SCM)system is also used in many domains, so the research and design of SCM system is very important. The SCM system's function surface is broad, and the expansion mode are many, and the SCM minimum system is the basis of the relevant design about SCM, so the study 西安工程大学本科毕业设计(论文) of this issue has the practical significance In this paper,It takes C8051F330 as the object of study, designs a minimum system including the hardware such as a C8051F330, serial, D / A, A / D,and so on. At the same time,it verifies the confirmation to each function using the Keil C51 software. 3.3V power supply of low-power enhanced SOC SCM C8051F330 and the serial microcontroller drive chip MAX3232 coordinate with each other, and then combine the on-chip D/A of the microcontroller peripherals, after writing down the proving program, it can show the sine and square by the oscilloscope after D/A conversion. System also achieve the communications functions of receiving and sending data with a computer serial port. After the final combination of hardware and software debugging it proved that the design is reasonable and feasible. This paper is divided into the following chapters to discussed. Chapter 1 is the first principle and related design tools introduced; Chapter 2 is the hardware design; Chapter 3 is the system software design; Chapter 4 is the system debugging and analysis; Chapter 5 is the conclusions and prospects. KEY WORDS:minimum system ,C8051F330,MAX3232 西安工程大学本科毕业设计(论文) 目 录 前 言 1 第1章 原理 3 1.1 最小系统概述 3 1.2 最小系统的方案设计 3 1.3 相关器件介绍 4 1.3.1 C8051F330介绍 4 1.3.2 MAX3232介绍 7 1.3.3 LM1117介绍 8 1.4 相关软件介绍 9 1.4.1 电路设计软件PROTEL DXP介绍 9 1.4.2 单片机开发软件Keil C51简介 10 1.4.3 下载软件Silicon Laboratories IDE简介 10 第2章 硬件设计 12 2.1 系统硬件功能 12 2.2 硬件总体设计 12 2.3 硬件详细设计 14 2.3.1 电源电路设计 14 2.3.2 单片机控制电路设计 14 2.3.3 下载口电路设计 17 2.3.4 串口通信电路设计 18 2.3.5 LED电路设计 18 2.3.6 扩展IO口电路设计 19 2.3.7硬件电路抗干扰性设计 19 2.4 系统硬件原理图设计 21 2.5 系统硬件PCB图设计 21 第3章 软件设计 23 西安工程大学本科毕业设计(论文) 3.1 系统软件功能 23 3.2 软件总体设计 23 3.3 软件详细设计 24 3.3.1 A/D验证程序设计 24 3.3.2 LED验证程序设计 26 3.3.3 D/A验证程序设计 27 3.3.4 串口接收发送验证程序设计 30 3.4 系统软件代码 31 第4章 系统调试及分析 32 4.1 调试内容与目的 32 4.1.1 调试目的及内容 32 4.1.2 调试环境与使用仪器 33 4.1.3 调试注意事项 33 4.2 调试步骤设计 33 4.2.1 检查测试 33 4.2.2 硬件检测与调试 34 4.2.3 软件检测与调试 34 4.3 调试过程与结果分析 34 4.3.1 调试过程 34 4.3.2 调试结果分析 35 4.4 产生的问题与分析 35 4.5 设计结果分析 36 4.5.1 验证结果 36 4.5.2 系统结果分析 38 第5章 结论与展望 39 5.1 结论 39 5.2 展望 39 参考文献 41 西安工程大学本科毕业设计(论文) 致 谢 43 附录Ⅰ 硬件原理图 44 附录Ⅱ 硬件PCB图 45 附录Ⅲ 程序代码 46 附录Ⅳ 实物图 59 西安工程大学本科毕业设计(论文) 西安工程大学本科毕业设计(论文) 前 言 单片机系统的发展很快,在电子行业运用的十分广泛。并且随着功能越来越强大,体积却越来越小,逐渐成为我们现在电子领域的主要研究发展对象。研究单片机最小系统是研究单片机设计的基础,有重要的现实意义。 本次设计中利用了3.3V供电的增强型(SOC)单片机C8051F330作为控制单元,也运用到了MAX3232等芯片。设计实现了能够进行D/A转换生成正弦波和方波,且可以与计算机进行串口通信完成数据的接收和发送。并且整个系统具有很强的扩展性,可根据实际需要通过软件扩充系统的性能。 增强型(SOC)单片机C8051F330片上集成了控制及信号处理等所需要的几乎所有的模拟及数字外设,以其低功耗,端口可灵活配置,支持JTAG端口可在线调试等特点将广泛应用在工业控制、通信及可便携电子产品中。 在系统的设计过程中主要做了两个方面的工作,一个方面是理论及原理的研究,另一个方面是硬件电路的制作、软件程序的编写及调试。 在理论及原理研究方面,首先,对单片机的基本工作原理进行了研究。使自己对所用的单片机有了更加直观和深刻的认识,并对下一步的设计有了明确的目标。其次,在了解了主芯片的基本工作原理之后,对设计方案进行了仔细的研究分析。 在硬件电路的制作及调试方面,首先,对印刷电路板的设计软件Protel DXP进行了研究学习,并根据设计要求设计了系统硬件原理图和PCB图,制作了PCB板,并进行了器件焊接。其次,编写了系统软件,在设计软件的过程中对用到的Keil C51、IDE软件的使用进行了学习,对系统软件进行了在线编程调试。最后,在整体的调试过程中找出了自制PCB板和程序存在的一些问题,并进行了改进和优化。调试完成后,对各项数据进行了统计,并进行了相应数据分析。通过这次研究可以加深对单片机的原理的认识和提高硬件设计、调试的能力。 由于时间有限,再加上我自身在电子设计方面经验不足,在系统的设计过程中难免存在不足的地方。还需要在今后的工作中不断学习,不断积累经验。 本论文共分为五章。第一章是设计中的一些基本原理和相关硬件、相关软件的介绍。第 西安工程大学本科毕业设计(论文) 二章是系统硬件设计的介绍,包括了硬件的功能描述和硬件的总体设计和详细设计。第三章是系统软件的设计,在这章里将会对系统软件的功能、总体设计和各个功能的具体设计实现作详细的介绍。第四章是系统的调试与分析,这章主要对调试的过程作了详尽的描述,并对调试过程中产生的问题进行了分析。第五章是系统设计的结论与展望,在这一章中,结论是对系统的设计结果作了简单的总结,展望则根据系统中存在的不足提出了一些相应的改进的方法。 第1章 原理 本章主要是对基于单片机最小系统具体实现方案及其所要实现功能进行了分析,对设计中采用的解决方案和所涉及到的相关器件和软件进行了简单的介绍。 1.1 最小系统概述 单片机最小系统或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。 单片机又叫做嵌入式微控制器,现在常规的微控制器普遍都是将中央处理器(CPU)、随机存取数据存储(RAM)、只读程序存储器(ROM)、并行和串行通信接口,中断系统、定时电路、时钟电路集成在一块单一的芯片上,增强型的单片机将如A/D转换器、PMW(脉宽调制电路)、WDT(看门狗)都集成在单一的芯片上。微控制器的片上外设资源一般比较丰富,适合于控制,因此称为微控制器。通常,嵌入式微控制器可分为通用和半通用两类,比较有代表性的通用系列包括8051、P51XA等。而比较有代表性的半通用系列,如支持USB接口的C540、C541;支持I2C、CAN总线、LCD等的众多专用MCU和兼容系列。 由于单片机种类较多,设计时的思路也不尽相同。考虑到若要设计的最小系统是通用的,采用通用型的微控制器8051系列。若有什么特殊的系统设计要求就要选择合适的单片机进行设计,以减少系统电路的复杂程度和硬件功能实现的难度。使得通过最简单的电路和最少的元件形成所要求的系统。 西安工程大学本科毕业设计(论文) 1.2 最小系统的方案设计 一般最小系统都具有载入程序,在线调试,复位,数据传输和数字、模拟信号之间的相互转换等功能。最小系统硬件一般包括下载口,扩展端口,串口和相关功能的芯片组成。 根据单片机自身所具有的特点,将结合其他的芯片对单片机进行最小系统的设计。所用单片机为C8051F330,配合串行通信驱动芯片MAX3232等器件的使用,设计单片机最小系统,以实现单片机片上硬件功能,包括A/D,D/A转换,对LED的控制和与计算机串口进行通信等功能,并且方便今后对该单片机系统的直接使用和扩展。 硬件设计中,选用的单片机片上带有A/D,D/A转换功能,因此不需要在最小系统上另加这两个模块,以简化所设计系统的电路。为了体现系统工作的状态,设置有复位键和LED指示。通过一个5V的电源适配器对系统供电,通过电压转换芯片产生3.3V电压供给单片机使其工作。利用串行通信驱动芯片MAX3232连接串行通信口以实现通信的功能。连接一个将程序载入主芯片的JTAG下载端口。将单片机上的引脚用插针引出,便于日后的扩展和使用。 软件调试时,设计了实现功能的验证程序,验证程序通过Silicon Laboratories IDE软件下载到主芯片上,使其工作,用来验证硬件所具有的所有功能。 设计完成后通过对硬件和软件的检查和调试得出所要设计的最小系统。这样安排设计方案的目的是为了得出功能更稳定,电路更简单可行的最小系统,达到一个最好的设计效果。 1.3 相关器件介绍 1.3.1 C8051F330介绍 1、C8051F330简单介绍 C8051F330是Silicon Laboratories公司生产的完全集成的混合信号片上系统型单片机。采用与8051兼容的高速、流水线结构的CIP-51内核,速度可达25MIPS;全速、非侵入式的片内在线系统调试接口;带模拟多路器的真正10位200 ksps的16通道单端/差分ADC;10位电流输出DAC;高精度可编程的25MHz内部振荡器; 西安工程大学本科毕业设计(论文) 8KB可在系统编程的FLASH存储器;768字节片内RAM;硬件实现的SMBus/ I2C、增强型UART和增强型SPI串行接口;4个通用的16位定时器;具有3个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列(PCA);片内上电复位、VDD监视器和温度传感器;片内电压比较器;17个可容许5V输入的I/O端口。是真正能独立工作的片上系统。FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有外设以节省功耗。片内Silicon Labs二线(C2)开发接口允许使用安装在最终应用系统上的产品MCU进行非侵入式(不占用片内资源)、全速、在系统调试。调试逻辑支持观察和修改存储器和寄存器,支持断点、单步、运行和停机命令。在使用C2进行调试时,所有的模拟和数字外设都可全功能运行。两个C2接口引脚可以与用户功能共享,使在系统调试功能不占用封装引脚。可在工业温度范围(-45℃到+85℃)内用2.7V-3.6V的电压工作。端口I/O和/RST引脚都容许5V的输入信号电压,采用20脚MLP封装。 2、C8051F330的引脚功能: C8051F330是20脚MLP封装,体积小,易用于便携仪器。其引脚排列如图1-1所示: 西安工程大学本科毕业设计(论文) 图1-1 C8051F330管脚图 管脚功能如下: VDD: 电源; GND: 地; /RST/C2CK: 器件复位/C2调试接口时钟信号; P2.0/C2D: 数字I/0端口/C2调试接口双向数据信号; P0.0/VREF: 数字I/0端口或模拟输入/外部VREF输入 ; P0.1/IDA0: 数字I/0端口或模拟输入/模拟IDA0输出; P0.2/XTAL1: 数字I/0端口或模拟输入/模拟输入,外部时钟输入; P0.3/XTAL2: 数字I/0端口/模拟I/0或数字输入,外部时钟输出; P0.4: 数字I/O或模拟输入; P0.5: 数字I/O或模拟输入; P0.6/CNVSTR: 数字I/O或转换启模拟输入/数字输入,ADC0外部动输入或 西安工程大学本科毕业设计(论文) IDA0更新源输入; P0.7: 数字I/O或模拟输入; P1.0: 数字I/O或模拟输入; P1.1: 数字I/O或模拟输入; P1.2: 数字I/O或模拟输入; P1.3: 数字I/O或模拟输入; P1.4: 数字I/O或模拟输入; P1.5: 数字I/O或模拟输入; P1.6: 数字I/O或模拟输入; P1.7: 数字I/O或模拟输入。 3、C8051F330内部组成原理图 C8051F330内部集成了几乎所有的数字和模拟外设,其内部组成原理图如下图1-2所示: 图1-2 C8051F330内部组成原理图 1.3.2 MAX3232介绍 简单地说MAX3232就是一个电平转换器 ,它把接受到的 TTL/CMOS信号转化为RS323通信协议中所要求的电平信号,并且将接收到的 RS323信号转换为TTL/CMOS信号,从而实现当电平不匹配时的逻辑电平转换。 西安工程大学本科毕业设计(论文) MAX3232有16个引脚,是双列直插式封装,功能上与工业标准MAX232兼容,准确的说他是一个收发器。MAX3232利用两个电荷泵可以产生3.0V到5.5V的电压,从而使RS232工作,而电泵这一块只需要4块可充电电容即可。MAX3232可以在把 TTL/CMOS信号转化为RS323通信协议中所要求的电平信号时,保持120k的转换速率。它有两个接收器和两个驱动,在关机模式下仅需要1uA的电流,这不仅节省了电能,还延长了电池寿命,特别适合与便携式设备配合使用。 管脚功能如下: EN非: 接收信号使能端; C1+: 双电泵电容的正极; C1-: 双电泵电容的负极; V-,V+: 电荷泵产生的-5.5V,+5.5V电压; C2+,C2-: 同以上解释C1+, C1-; T_OUT: RS232转换器输出端; T_IN: TTL/CMOS转换器输入端; R_IN: TTL/CMOS转换器(接收器)输入端; R_OUT: TTL/CMOS转换器(接收器)输入端; GND: 地; VCC: 3~5.5V供电电压。 其引脚排列图如图1-3所示: 西安工程大学本科毕业设计(论文) 图1-3 MAX3232管脚图 1.3.3 LM1117介绍 LM1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117有可调电压的版本,通过2个外部电阻可实现1.25~13.8V输出电压范围。另外还有5个固定电压输出(1.8V、2.5V、2.85V、3.3V和5V)的型号。 LM1117提供电流限制和热保护。电路包含1个齐纳调节的带隙参考电压以确保输出电压的精度在±1%以内。LM1117系列具有LLP、TO-263、SOT-223、TO-220和TO-252 D-PAK封装。输出端需要一个至少10uF的钽电容来改善瞬态响应和稳定性。其封装图如1-4所示: 西安工程大学本科毕业设计(论文) 图1-4 LM1117封装图 1.4 相关软件介绍 1.4.1 电路设计软件PROTEL DXP介绍 Protel DXP是Altium公司于2002年8月推出的一套基于Windows2000/XP环境下的桌面EDA开发工具。Protel DXP不但兼容了以前所有版本的Protel软件,而且集成了更多的工具,从而在电路原理图设计、PCB布局布线、电路仿真测试和FPGA/CPLD设计等方面较以前的版本有了极大的加强。 Protel DXP作为一款功能强大的电路设计软件,它具有以下基本特点: 1、Protel DXP包含电路原理设计、电路原理图仿真测试、印刷电路板设计、自动布线器和FPGA/CPLD设计,覆盖了以PCB为核心的整个物理设计。因此,Protel DXP是真正意义上的EDA软件,它的智能化、自动化较以前的版本有了极大的提高。 2、Protel DXP提供了进行层次原理图设计的环境,支持“自上而下”和“自下而上”的层次设计思想,从而使得多名电路设计人员进行并行开发成为可能。 3、Protel DXP提供丰富的元件原理图库和PCB封装库,并且库的管理和编辑功能更加完善,操作更加简便。电路设计人员通过Protel DXP提供的编辑工具,可方便地实现库中没有包含的元件原理图以及PCB封装地设计制作。 4、Protel DXP提供了元件集成库的概念。在Protel DXP的元件集成库中集成了元件的原理图符号、PCB封装形式、SPICE仿真模型和信号完整性分析,这使得设计人员调用元件时能够同时调用元件的原理图符号和PCB封装符号。 5、Protel DXP提供了电路原理图的混合仿真功能,可以方便地检查电路原理中各个设计模块地正确性。同时,Protel DXP也提供了丰富地仿真元件库,从而使得电路原理图的混合仿真成为可能。 西安工程大学本科毕业设计(论文) 6、Protel DXP提供了丰富的设计检查功能。它的设计检查功能主要包括电路原理图设计中的ERC和PCB设计中的DRC,它们能够使电路设计人员快速地查证错误,最大限度地减少设计差错。 7、Protel DXP全面兼容TANGO以及Protel的以前版本,同时,Protel DXP提供了与OrCAD格式文件的转换功能。 8、Protel DXP中同一设计的电路原理图和PCB之间具有动态连接功能。和以前的版本相比,Protel DXP的同步化程度更高,支持自然的非线性设计流程—双向同步设计,可以更加有效地完成电路设计工作。 9、Protel DXP同样也提供了丰富的快捷键支持以及连续操作功能,使得电路设计人员能够快速有效地完成电路设计工作。 10、Protel DXP提供了全新的FPGA/CPLD设计功能,并且支持VHDL设计和混合设计模式。 1.4.2 单片机开发软件Keil C51简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上都有明显的优势,易学易用。用过汇编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点是 Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。基于Keil C51的所有这些优点,在本设计中选用其作为软件设计环境。 1.4.3 下载软件Silicon Laboratories IDE简介 Silicon Laboratories IDE软件是Silicon Laboratories公司为C8051F系列单片机开发的集成开发环境,可实现程序代码的编译、下载、在线调试、单步执行等功能。且具有界面简单、操作方便、下载稳定等优点。图1-5是Silicon Laboratories IDE软件的操作界面。它是由全功能的开发平台所构成,独立式的缓存器映像图与内存窗口可让你检查你的系统的目前状态,单一周期的硬件断点可让你暂停MCU,检查机器运行状态。客制化的观察窗口可让你检查任何变量的值,甚至是更详尽的数据架构内容(指针器与数组)。 西安工程大学本科毕业设计(论文) 简洁的使用界面包括一个专业文字编辑器与可靠的管理界面,项目可以用档案与工作空间两种方式来进行管理,IDE可以与业界公认的8051 C语言编译器如KeilC51、Tasking、SDCC、Hi-Tech和IAR等完全兼容。 图1-5 Silicon Laboratories IDE软件的操作界面 第2章 硬件设计 在这一章里,主要介绍系统的硬件部分,包括总体设计方案及各电路详细设计方案和实现的功能等。 2.1 系统硬件功能 根据系统设计方案,系统硬件的主要功能为:(1)上电后直接可以下载和运行程序;(2)能直接接+5V直流电源适配器,并带有电源通断开关和通电LED指示;(3)具有手动复位功能,具有可选的1个按键和1个LED;(4)具有调试和程序下载接口;( 西安工程大学本科毕业设计(论文) 5)有A/D,D/A功能;(6)可采集环境温度。 2.2 硬件总体设计 根据系统功能的要求,系统的总体设计方案如图2-1所示。其中,正弦波和方波信号由主控制模块C8051F330单片机软件及其片上的电流模式输出的数/模转换器(IDAC)实现,并将各信号通过引出的引脚接到示波器上显示,数据的接受和发送靠C8051F330和串行通信驱动芯片MAX3232的连接得以实现。 主芯片C8051F330 A/D D/A LED与按键 电源 复位 下载接口 MAX32322 PC机 扩展IO口 图2-1 系统硬件功能总体框图 C8051F330为主芯片,此设计的主要目的是使主芯片上的功能方便实现并且通过外围电路的设计令系统容易扩展,设计出的系统满足最小系统的要求。主控制模块C8051F330芯片具有在线可编程功能,能够满足信号生成、LED显示模块控制的要求,满足系统控制功能的要求。串行通信驱动芯片MAX3232协助主芯片完成数据在单片机与计算机的串行通信。通过电源电路的供电令主控制模块工作,设计按键去实现对LED的控制,引出主芯片上的所有引脚,便于日后的扩展,并通过引出引脚的连接和将验证程序下载到主芯片的寄存器里运行去验证主芯片上的功能。可以外接示波器对D/A转换的结果进行验证。 由图2-1可见硬件系统主要包括六部分:电源电路模块、C8051F330单片机复位电路模块、下载口电路模块、串口通信电路模块、LED电路和扩展IO口模块。下面就对硬件各模块加以介绍。 1、电源电路模块 主芯片C8051F330的工作电压是3.3V,设计中采用的是5V的电源适配器供电,所以用电压转换芯片产生3.3V电压使主芯片工作。设计电源开关和指示灯以便说明硬件系统的工作情况。 西安工程大学本科毕业设计(论文) 2、单片机复位电路模块 单片机复位模块的主要工作是通过对复位键的控制来使主芯片重新运行载入验证程序,通过这种方式能更好的了解验证程序的运行情况以及更好的观察硬件功能实现的结果。 3、下载接口电路模块 对所设计的硬件要进行功能验证,JTAG下载端口和主芯片的对应引脚相连接,将验证硬件功能的程序载入主芯片C8051F330的寄存器中让系统能下载和运行验证程序,来说明硬件的功能。 4、串口通信电路模块 系统具有发送传输数据的功能,利用串口通信电路达到和计算机通信的效果。以便利用串口调试器验证硬件的功能能否实现。 5、LED电路模块 LED电路模块由简单的按键电路来实现。通过主芯片中载入的程序和硬件上的按键一起控制。 6、扩展IO口模块 由于主芯片的高集成化,体积小,很多引脚在使用时不方便,将这些端口扩展出来方便以后对硬件系统的扩展和进一步开发。 2.3 硬件详细设计 这部分里面将对硬件电路的各部分设计进行详细的介绍包括:电源电路的设计,单片机控制电路的设计,下载口电路的设计,串口通信电路的设计,LED电路的设计,扩展IO口设计以及一些细节性的设计。 2.3.1 电源电路设计 由于C8051F330单片机为3.3V供电,在电路的设计当中,通过正5V电源适配器对系统提供5V直流电压,通过电压转换芯片产生3.3V电压供给单片机工作。22uF的电容为滤除电路中的高频噪声。系统供电电路如图2-2所示。图中的电阻R0的作用是保护LED2,在电流过大时,防止将LED2烧坏。其中各部分参数是以官方推荐为准。 西安工程大学本科毕业设计(论文) 图2-2 系统供电电路图 2.3.2 单片机控制电路设计 在单片机控制电路的设计中,主要设计的部分是复位电路和时钟电路。 1、复位电路 C8051F330提供了上电复位、掉电复位、时钟丢失检测器复位、比较器0复位、看门狗定时器复位等内部复位方式以及外部复位。 在单片机的复位电路设计中,复位电路采用了上电复位和按键复位相结合来实现的。当单片机上电时,自动实现内部寄存器等初始化复位。因为在实际应用中单片机还需要设置成可以随时复位,以便在异常情况下根据用户的指令程序可以重新运行。因此,多加了一个按键复位电路,这个电路平时的状态为断开,当按键按下时就会使RESET置低,使得单片机复位。按键复位电路图如图2-3所示: 图2-3 单片机复位电路 2、单片机的时钟电路 C8051F330单片机有一个可编程的内部高频振荡器、一个可编程的内部低频振荡器和一个外部振荡器驱动电路。可以通过对 西安工程大学本科毕业设计(论文) OSCICN 和 OSCICL 寄存器编程来使能/禁止内部高频振荡器和调节其输出频率(如图2-4所示);也可以通过对 OSCLCN 寄存器编程来使能/禁止内部低频振荡器和调节其输出频率。系统时钟可以由外部振荡器电路或任何一个内部振荡器提供。其内部时钟为24.5MHz。 图2-4振荡器框图 (1)内部高频振荡器 C8051F330的内部高频振荡器在系统复位后默认为系统时钟。内部振荡器的周期可以通过OSCICL寄存器编程。其震荡周期可根据方程(2-1)计算,其中fBASE为复位后内部振荡器的频率,ΔT为内部振荡器周期的变化值,ΔOSCICL为寄存器OSCICL中的数值的变化量。 (2-1) C8051F330其基频(fBASE)为24.5MHz,精度为±2%。系统时钟也可以从内部振荡器分频得到,分频数由寄存器OSCICN中的IFCN位设定,可为1、2、4或8。复位后的缺省分频数为8。 西安工程大学本科毕业设计(论文) (2)外部振荡器 C8051F330单片机外部振荡器电路可以驱动外部晶体、陶瓷谐振器、电容或 RC 网络。也可以使用一个外部 CMOS 时钟提供系统时钟。对于晶体和陶瓷谐振器配置,晶体/陶瓷谐振器必须并接到 XTAL1 和 XTAL2 引脚,还必须在 XTAL1 和 XTAL2 引脚之间并接一个 10MΩ 的电阻。对于 RC、电容或 CMOS 时钟配置,时钟源应接到 XTAL2 引脚。必须在 OSCXCN 寄存器中选择外部振荡器类型,还必须正确选择频率控制位 XFCN 。当使用外部振荡器电路时,必须对所用端口引脚进行配置。当外部振荡器电路被配置为晶体/谐振器方式时,端口引脚P0.2和P0.3分别被用作XTAL1和XTAL2。当外部振荡器电路被配置为RC、电容或CMOS时钟方式时,端口引脚P0.3被用作XTAL2。端口I/O交叉开关应被配置为跳过被振荡器占用的引脚。当在晶体/陶瓷谐振器、电容或RC方式使用外部振荡器电路时,应将所用的端口引脚配置为模拟输入。在CMOS时钟方式,应将所用的端口引脚配置为数字输入。 在时钟电路的设计中,采用了内部时钟和外接石英晶体的外部时钟的设计方法,可根据用户及系统的的不同需要,选择内部时钟或外部时钟。其参数由官方推荐使用。电容一般起到起振的作用,取值一般为20到30pF之间,串联电阻常用来预防止晶振被过分驱动。晶振过分驱动的后果是将逐渐损耗减少晶振的接触电镀。外部时钟电路如图2-5所示: 图2-5单片机外部时钟电路 由于考虑到主芯片C8051F330片上有内部时钟,此内部时钟完全满足设计的要求。并且若使用外部时钟,会出现最小系统板的体积增大,PCB板布线时太过杂乱等问题。因此仅做了系统外部时钟电路的设计并未在实际应用中使用。 西安工程大学本科毕业设计(论文) 2.3.3 下载口电路设计 C8051F330有一个Silicon Labs 2线(C2)调试接口,支持FLASH编程、边界扫描和使用安装在最终应用系统中的器件进行在系统调试。C2接口使用一个时钟信号(C2CK)和一个双向的C2数据信号(C2D)在器件和宿主机之间传送信息。C2协议允许C2引脚与用户功能共享。C2通信通常发生在器件的停止运行状态。在这种状态下片内外设和用户软件停止工作,C2接口可以安全地“借用”C2CK(正常方式为/RST)和C2D(正常方式为P2.0)引脚。C2接口电路如图2-6所示: 图2-6 C2接口电路 2.3.4 串口通信电路设计 串口通信电路主要是利用了串口通信驱动芯片MAX3232。其主要特点是: 地供电电流;保证数据传输率;关机模式下的1uA小电流检测;与EIA/TIA232一脚规格兼容。MAX3232的工作电压为3.3V,MAX232的工作电压是5V,根据主芯片的工作电压选择MAX3232。串口通信电路如图2-7所示: 西安工程大学本科毕业设计(论文) 图2-7 串口通信电路 2.3.5 LED电路设计 LED电路是通过按键接通电路,使要验证的LED亮。电路简单,见图2-8所示。设计时注意保护LED以免被过大的电流烧坏,所以接了一个电阻,起到保护LED的作用。 图2-8 LED电路 2.3.6 扩展IO口电路设计 为了设计的最小系统在以后方便进行扩展,把主芯片上的引脚都用插针引出。在扩展的时候,引出了双倍的引脚,为了更好的实现系统的扩展。见2-9图所示: 西安工程大学本科毕业设计(论文) 图2-9 扩展IO口电路 2.3.7硬件电路抗干扰性设计 研制带处理器的电子产品时,提高抗干扰能力和电磁兼容性很重要。因此,在设绘印制板图时,除了要为电路中的元器件提供正确无误的电气连接外,还应充分考虑印制板的抗干扰性。印制板的噪声抑制应从设计阶段开始,贯穿于电路原理图设计、印制板图设绘、元器件选用、印制板安装引线等一系列环节中。虽然各环节侧重不一,但又彼此呼应,都应认真对待。本节主要介绍了本设计中在设计印制板时的一些抗干扰设计。 1、 减小信号传输中的畸变  微控制器主要采用高速CMOS技术制造。信号输入端静态输入电流在1mA左右,输入电容10PF左右,输入阻抗相当高,高速CMOS电路的输出端都有相当的带载能力,即相当大的输出值,将一个门的输出端通过一段很长线引到输入阻抗相当高的输入端,反射问题就很严重,它会引起信号畸变,增加系统噪声。当Tpd>Tr时,就成了一个传输线问题,必须考虑信号反射,阻抗匹配等问题。 信号在印制板上的延迟时间与引线的特性阻抗有关,即与印制线路板材料的介电常数有关。可以粗略地认为,信号在印制板引线的传输速度,约为光速的1/3到1/2之间。微控制器构成的系统中常用逻辑电话元件的Tr(标准延迟时间)为3到18ns之间。在印制线路板上,信号通过一个7W的电阻和一段25cm长的引线,线上延迟时间大致在4~20ns之间。也就是说,信号在印刷线路上的引线越短越好,最长不宜超过 西安工程大学本科毕业设计(论文) 25cm。 用以下结论归纳印刷线路板设计的一个规则:信号在印刷板上传输,其延迟时间不应大于所用器件的标称延迟时间。    2、减小来自电源的噪声  电源在向系统提供能源的同时,也将其噪声加到所供电的电源上。电路中微控制器的复位线,中断线,以及其它一些控制线最容易受外界噪声的干扰。电网上的强干扰通过电源进入电路,即使电池供电的系统,电池本身也有高频噪声。模拟电路中的模拟信号更经受不住来自电源的干扰。 3、注意印刷线板与元器件的高频特性  在高频情况下,印刷线路板上的引线,过孔,电阻、电容、接插件的分布电感与电容等不可忽略。电容的分布电感不可忽略,电感的分布电容不可忽略。电阻产生对高频信号的反射,引线的分布电容会起作用,当长度大于噪声频率相应波长的1/20时,就产生天线效应,噪声通过引线向外发射。印刷线路板的过孔大约引起0.6pf的电容。 一个线路板上的接插件,有520nH的分布电感。一个双列的24引脚集成电路扦座,引入4~18nH的分布电感。这些小的分布参数对于这行较低频率下的微控制器系统中是可以忽略不计的;而对于高速系统必须予以特别注意。  4、元件布置要合理分区  元件在印刷线路板上排列的位置要充分考虑抗电磁干扰问题,原则之一是各部件之间的引线要尽量短。在布局上,要把模拟信号部分,高速数字电路部分,噪声源部分(如继电器,大电流开关等)这三部分合理地分开,使相互间的信号耦合为最小。 5、处理好接地线  印刷电路板上,电源线和地线最重要。克服电磁干扰,最主要的手段就是接地。对于双面板,地线布置特别讲究,通过采用单点接地法,电源和地是从电源的两端接到印刷线路板上来的,电源一个接点,地一个接点。印刷线路板上,要有多个返回地线,这些都会聚到回电源的那个接点上,就是所谓单点接地。所谓模拟地、数字地、大功率器件地开分,是指布线分开,而最后都汇集到这个接地点上来。与印刷线路板以外的信号相连时,通常采用屏蔽电缆。对于高频和数字信号,屏蔽电缆两端都接地。低频模拟信号用的屏蔽电缆,一端接地为好。对噪声和干扰非常敏感的电路或高频噪声特别严重的电路应该用金属罩屏蔽起来。 西安工程大学本科毕业设计(论文)  降低噪声与电磁干扰的一些经验:使用满足系统要求的最低频率时钟;I/O驱动电路尽量靠近印刷板边,让其尽快离开印刷板;闲置不用的门电路输入端不要悬空,闲置不用的运放正输入端接地,负输入端接输出端;单面板和双面板用单点接电源和单点接地、电源线、地线尽量粗;元件引脚尽量短,去耦电容引脚尽量短;弱信号电路,低频电路周围不要形成电流环路;任何信号都不要形成环路,如不可避免,让环路区尽量小; 印制板按频率和电流开关特性分区,噪声元件与非噪声元件要距离再远一些。 2.4 系统硬件原理图设计 硬件原理图设计是电路设计的第一步,直接关系到电路设计的效率及设计的可靠性,所以在原理图的设计中: 1、首先在设计前,必须对所用到的元件有深刻的了解,包括它的使用方法、管脚封装形式和使用的注意事项,比如主芯片的工作电压是3.3V等。对各个元器件之间的连接关系、电气特性等也要弄清楚。 2、在设计时,考虑好在什么位置加电容,电阻,分别起了什么作用,并计算好这些元件的参数为多少才是最合适的。 3、设计时,要考虑周全 ,处理好各个元器件的布局并按照画图的规则进行画图,合理的布局会使布线工作变得简单,同时也可以保证信号的可靠性,降低电路干扰。 4、画完原理图后,反复检查原理图,尽可能的找出与设计不符的地方,及时地对原理图进行修改和优化。 系统硬件原理图见附录Ⅰ。 2.5 系统硬件PCB图设计 完成以上的各部分设计后,需要通过设计硬件PCB图来制作印刷电路板。在PCB图的设计中,布局是十分关键的,合理的布局不仅能使画图得心应手,而且能降低元件之间的干扰等因素,保持信号的完整性,以及整体电路的可靠性。因此在画图时应尽量使得布局合理化。在布线过程中,尽量使单片机I/O口不重复利用,从而减少程序设计时出错的几率。压控振荡器采用外扩电路,目的是尽量减少硬件设计上的错误。最后注意的是认真检查是否存在一些线在同一层内交叉的现象,这种错误是非常严重的错误,将直接导致电路板无法使用甚至在调试过程中损坏元器件。 西安工程大学本科毕业设计(论文) 系统硬件PCB图见附录Ⅱ。 第3章 软件设计 3.1 系统软件功能 本设计通过采用单片机控制D/A的方法设计利用C8051F330单片机和验证程序实现正弦波和方波信号输出。在控制上,只需上电,系统就能自动运行,并可在示波器上显示输出波形,没有明显的失真。并且配合串口通信驱动芯片MAX3232使系统实现数据在计算机上接收和发送。整个系统需要具有可在线编程,操作方便、控制灵活的功能。 综上所述系统参数的基本要求是: 1、通过A/D转换,将信号源输入的波形转化为数字在计算机上显示; 2、LED通过按键控制亮灭; 3、通过D/A转换,可在示波器上输出正弦波或方波信号; 4、具有串口通信功能,数据可接受发送。 3.2 软件总体设计 在系统的软件程序设计中采用了模块化编程理念。明确每个验证程序的任务,用于对相应的硬件模块进行功能实现验证。编程时采用模块化的编程方法,每个模块是一个结构完整、相对独立的程序段。用于分别验证硬件的功能。这些程序可以任意调用、修改。 上述的设计思想可以运用到整个单片机最小系统的工作中。但由于在我的设计中只涉及到了对硬件系统的各个功能的验证,所以没有做整体程序的编写和软件的整体设计,只是根据不同的硬件功能建立相应的软件验证工程进行验证。 西安工程大学本科毕业设计(论文) 用四个工程分别验证系统的A/D转换功能,LED控制功能,D/A转换功能和与计算机串口通信的功能。 在功能验证程序流程设计中,程序需要调用以下几个主要模块:A/D模块、LED模块,D/A模块和串行通信模块。 3.3 软件详细设计 在这一节里主要对软件设计过程进行了详细阐述。包括A/D转换验证,LED验证, D/A转换输出方波和正弦波的验证,和计算机串口通信验证。 3.3.1 A/D验证程序设计 在本设计中设计实现片上A/D转换的功能。具体是通过信号源给定一定的模拟信号波形接入输入端口,通过验证程序的运行,使得得到转换过后的数值。验证程序采用了如下图3-1所示: 关闭看门狗 初始化(时钟,端口,定时器T3) ADC初始化 开总中断(EA=1) ADC验证主程序开始 等待ADC中断 图3-1 A/D验证程序设计流程图 1、 时钟、端口初始化 设计验证程序设定时钟为24MHZ。 西安工程大学本科毕业设计(论文) 由于C8051F330单片机引脚可通过交叉开关配置实现通用I/O口和特殊功能端口,引脚配置初始化主要的操作是对DAC输出引脚、外部中断输入引脚进行配置。初始化流程图如下图3-2所示: 配置内部系统时钟无分频输出 使能时钟丢失检测 配置P1.1为模拟输入 P1.1被交叉开关跳过 交叉使能开关使能 时钟初始化开始 时钟初始化结束 端口初始化开始 端口初始化结束 图3-2 时钟、端口初始化程序流程图 2、 ADC、定时器初始化 通过程序设定ADC的启动方式为定时器T3溢出启动。 在定时器初始化时,预置的重载值为0xFE0B;计数初值为0xFFFF。初始化流程图如下图3-3所示: ADC初始化: 定时器初始化: 西安工程大学本科毕业设计(论文) 以定时器T3溢出为启动信号 启用内部基准源 配置单端输入模式(P1.1为正输入) 使能ADC 启用ADC中断 ADC初始化开始 ADC初始化结束 配置定时器时钟为系统时钟12分频 预置重载值 赋计数初值 禁止定时器T3中断 启动T3 定时器T3初始化开始 定时器T3初始化结束 图3-3 ADC、定时器初始化程序流程图 3.3.2 LED验证程序设计 在本设计中设计实现控制LED的功能,简单的实现通过按键的按下与否来通过程序控制LED亮灭。验证程序采用了如下的流程图,如图3-4所示: LED验证程序流程图: 端口初始化: 西安工程大学本科毕业设计(论文) 端口初始化 判断按键是否按下? LED灯亮 LED灯灭 Y N 交叉开关使能 配置P1.3(灯) 为推挽 端口初始化开始 端口初始化结束 LED主程序开始 图3-4 LED验证程序设计流程图 3.3.3 D/A验证程序设计 在本设计中设计实现了正弦波、方波的D/A转换输出。为了保持系统软件设计的一致性,波形生成程序采用了如下的设计流程,如图3-3所示: 图3-5 波形产生程序设计框图 1、正弦波程序设计 正弦波的实现相对复杂,程序设计中采用通过查找256点正弦查找表并通过DA实现波形输出,对于DA的输出触发更新触发模式选择外部触发更新模式,通过参量xx实现。由于查找表中只能实现正半周期而不能实现负半周期,同时考虑到DA输出电平的问题。在设计中通过给各点的值通过用常数0x80进行调整,从而实现了完整的正弦波输出,且与系统的硬件特性保持了一致。通过改变各个输出点的延时来实现频率可调,同样通过输出点的值的衰减来实现幅度可调。设计流程图如下图3-6所示: 2、 方波程序设计 西安工程大学本科毕业设计(论文) 为了保持系统软件设计的一致性,方波信号通过在一定时间内使引脚置高和置低来实现。同样采用了 256点输出,DA输出更新触发模式选用外部触发模式,通过参量xx实现。其中前128点置低,实现低电平,后128点置高,实现高电平。通过输出点的延时来实现频率可调,且幅度可通过衰减值实现可调。设计流程图如下图3-6所示。流程图中延迟时间的算法是因为系统时钟为24MHz,T3初值为0xF82F。T3时钟为系统时钟12分频,所以T3时钟为2MHz,因此定时器计数一次所用的时间为0.5us,要计数1ms就得计数2000次。延时1ms的流程图见下图3-7所示: 西安工程大学本科毕业设计(论文) 关闭看门狗 初始化(端口, 时钟,DAC) 数组元素+0x80赋值 IDA0H(从0开始) i++ i >128? 0x80-数组元素赋值IDA0H(从128开始) i-- i < 0 ? 延时1ms 延时1ms N Y N Y DAC主程序开始 关闭看门狗定时器 初始化(端口,时钟,DAC) IDA0H = 0xFF 延时1ms IDA0L = 0x00 延时1ms DAC主程序开始 正弦波输出程序流程图: 方波输出程序流程图: 图3-6 D/A验证程序流程图 西安工程大学本科毕业设计(论文) 将T3时钟设为系统时钟12分频 T3初值赋值 启动T3 等待TF3H = 1 延时开始 TF3H = 0 图3-7程序中延时1ms流程图 3.3.4 串口接收发送验证程序设计 单片机配合串口通信驱动芯片MAX3232实现与计算机通信。用串口调试器达到数据的发送和接收。数据的接收发送运用到了A/D模块和串口通信模块两个部分,程序是涉及到这两个模块的软件验证。通过判断发送标志位是否为1来决定是否发送数据。程序流程图如图3-8所示。流程图中的Readflag是指发送数组标志位。 西安工程大学本科毕业设计(论文) 关闭看门狗定时器 初始化(时钟,端口,T3,UART0,ADC) 开总中断(EA = 1) 发送数据 置零readflag readflag=1? Y N 主程序开始 图3-8 串口接收发送程序流程图 3.4 系统软件代码 根据系统软件的流程图,设计了实现各模块功能的相关代码。系统软件总体设计代码见附录Ⅲ。 第4章 系统调试及分析 电子电路调试包括测试和调整两个方面。调试的意义是:(1)通过调试使电子电路达到规定的指标;(2)通过调试发现设计中存在的缺陷予以纠正。 西安工程大学本科毕业设计(论文) 通过对系统的调试过程,使我深刻的意识到调试工作才是整个设计工作中最困难的部分,往往在认为不可能出现问题的电路模块部分出现问题,且出现的问题具有不确定性,有的时而发生时而消失这也给调试工作增加了很大的难度。而造成这些问题的原因是多方面的,主要是在以下几个方面: 第一,自身缺乏硬件调试的经验,对出现的问题不知道应该具体从那入手解决,而进行大范围的查找。 第二,设计本身存在的不完善因素。在电路的设计当中没有全面考虑到系统的要求,导致系统问题百出。 第三,缺乏对电路调试的正确认识和理解,调试是实际工作中必不可少的一个过程,应该在调试前,设计好严密的调试计划。 总之,硬件的调试是不可能一蹴而就的,它不但需要有百折不挠的精神更加需要调试者有很好的耐心和面对实际问题积极独立思考的能力。虽然调试工作比较艰巨,但是通过调试工作可以对系统有更加深入的了解,同时也可以在调试工作中积累大量的电路实际设计经验。 4.1 调试内容与目的 4.1.1 调试目的及内容 调试的目的是为了通过调试使系统达到规定的指标,并在这一基础上对系统进行更进一步的优化。针对本设计,调试的目的主要是为了验证系统各个部分的功能。根据调试目的,具体的调试内容为: 首先,验证LED模块能否正常工作,通过按键的控制,观察LED的亮灭。其次,观察单片机片系统上D/A转换输出波形在示波器上显示的情况,验证D/A转换的功能。再次,利用系统和计算机的配合验证系统数据接收发送的功能。最后,调试系统的稳定性,对系统的总体性能进行完善。 4.1.2 调试环境与使用仪器 调试环境为实验室环境,调试过程中用到的设备与仪器有:焊枪、万用表、直流稳压电源、示波器、信号源和导线若干。 4.1.3 调试注意事项 调试要注意以下事项: 西安工程大学本科毕业设计(论文) 1、正确使用测量仪器的接地端,仪器的接地端与电路的接地端要可靠连 接; 2、在信号较弱的输入端,尽可能使用屏蔽线连线,屏蔽线的外屏蔽层要接到公共地线上,在频率较高时要设法隔离连接线分布电容的影响,例如用示波器测量时应该使用示波器探头连接,以减少分布电容的影响; 3、测量电压所用仪器的输入阻抗必须远大于被测处的等效阻抗; 4、测量仪器的带宽必须大于被测量电路的带宽; 5、正确选择测量点和测量; 6、认真观察记录实验过程,包括条件、现象、数据、波形等; 7、出现故障时要认真查找原因。 4.2 调试步骤设计 在调试步骤设计中把调试过程分为以下几个步骤:检查测试、静态检测与调试、动态检测与调试。 4.2.1 检查测试 检查测试主要是对系统进行不加电源的检查。检查测试的内容是: 1、在焊接元器件前先对印刷电路板进行测试,对照电路图和实际线路检查印刷电路板的电路与设计原理是否一致;检查连线是否正确,包括错接、少接、多接等现象存在;是否存在没有布线等错误。 2、对所要焊接的元器件进行单独测试,检查其能否正常工作,如:晶体振荡器是否正常;单片机、MAX3232能否工作等。 3、完成上述工作后对元器件进行焊接,在焊接过程中要特别注意连锡情况的发生,在元器件焊接完成之后,用万用表蜂鸣档检查焊接和接插是否良好;元器件引脚之间有无短路,连接处有无接触不良,二极管、三极管、集成电路和电解电容的极性是否正确;电源供电包括极性、信号源连线是否正确;电源端对地是否存在短路或虚焊的情况。 西安工程大学本科毕业设计(论文) 4.2.2 硬件检测与调试 完成检查测试工作之后,就要开始静态检测与调试。把经过准确测量的电源接入电路,用万用表电压档监测电源电压,观察有无异常现象:如冒烟、异常气味、手摸元器件发烫,电源短路等,如发现异常情况,立即切断电源,排除故障;如无异常情况,分别测量各关键点直流电压,如静态工作点、数字电路各输入端和输出端的高、低电平值及逻辑关系如不符,则调整电路元器件参数、更换元器件等,使电路最终工作在合适的工作状态。具体的调试步骤设计如下: 给单片机上电,检查它是否能正常工作。在这一调试过程中,采用了给单片机烧写简单测试程序进行调试的方法。让单片机的P1.2脚输出方波信号,通过示波器观察输出情况。这样既可以检查单片机能否烧写程序,烧写接口是否可用等;同时也检查了单片机工作是否正常。 4.2.3 软件检测与调试 动态调试是在静态调试的基础上进行的,设计一些可以验证最小系统各个功能能否正常使用的程序,下到片上验证。发现问题,要设法找出原因,排除故障。结合软件和硬件对系统进行全面的调试、调整硬件。使系统功能更完善。 4.3 调试过程与调试结果分析 4.3.1 调试过程 1、测试过程 通过万用表的蜂鸣器检查电路的接通与否来验证电路是否存在错误,测试结果为电路连接正确;对各元件单独上电,使用万用表和示波器观察元件是否正常工作,结果也全都正常工作,说明单片机能正常工作。 2、调试过程 调试过程中,根据设计的步骤一步一步往下走,每走一步都有问题需要解决,如:单片机烧写程序后无波形输出,串口通信不能实现数据接收等。调试过程中通过仔细检查电路,反复阅读参考资料,修改错误程序和进行理论分析。最终使得可以正常输出D/A转换波形和正常接收数据。 3、综合调试 在系统整体正常工作之后,为了使得系统的输出更加的完美,根据系统的具体问题进行了改进,包括了程序流程的优化,硬件系统的完善。最终使得系统的 西安工程大学本科毕业设计(论文) 功能达到了最佳效果。 4.3.2 调试结果分析 经过对系统的仔细检查、调试后,终于完成了本次设计的基本要求。在系统总体完成了之后对信号的相关参数进行了记录。 数据测量条件如下: 1、单片机工作在3.3V电压; 2、单片机使用内部高频时钟,时钟频率24.5MHz; 3、DA采用内部参考电压,参考电压值为3.3V; 4、测量环境及测量环境温度为实验室环境温度。 4.4 产生的问题与分析 在系统的调试过程中,产生的问题可谓是多种多样。下面就对这些问题进行分析,对相应的解决方法作简单的叙述。 1.单片机最小系统载入相应验证程序后,无波形输出。 分析:这种问题,说明可能是载入主芯片的验证程序有问题。所以,首先对验证程序再次编译确保没有逻辑错误,再修改其对输出波形有影响的指令参数。 结果:产生这种问题的原因是验证程序中的频率设置太低,输出的转换波形在示波器上显示不出来。将其修改后,在示波器上显示正常。 2.串口通信是数据无法接收。 分析:可能是串口通信的驱动芯片MAX3232烧了,也可能是串口线的通断问题。 结果:在检查过程中发现是两头母口的串口线有问题,通过外加的导线和一般的串口线,系统数据的接收和发送功能正常,问题得到解决。 3. 烧写器在给单片机烧写程序时不稳定,有时下载不进去。 分析:可能是接触不良。 结果:下载线接触不良。通过修改复位电路和加固并口连接,问题得到解决。 西安工程大学本科毕业设计(论文) 4.5 设计结果分析 4.5.1 验证结果 1、A/D验证结果 A/D转换由一个直流源提供模拟输入,输出的结果由串口通信发送到计算机上,得到的结果如下图4-1所示: 图4-1 A/D转换验证结果 2、LED验证结果 LED的亮灭由按键的状态来控制。当按键按下时,外围电路上的LED发光;按键松开时,LED状态反之。 3、D/A验证结果 D/A转换出的波形在示波器上能很好的显示出来。观察到的正弦波形幅值为2V,周期为1.5ms。方波波形的幅值为2V,周期为1.6ms。观察到的结果如下图4-2,4-3所示: 西安工程大学本科毕业设计(论文) 图4-2 D/A转换验证结果(正弦) 图4-3 D/A转换验证结果(方波) 4、数据接收发送验证结果 数据的接收和发送在串口调试器的协助下验证,根据验证程序中波特率的设定选择一致的波特率,得到的结果如下图4-2所示: 西安工程大学本科毕业设计(论文) 图4-2 数据接收发送验证结果 4.5.2 系统结果分析 设计实现的系统的功能满足设计要求,能够根据载入的程序验证相应的硬件功能。生成正弦波和方波的D/A转换输出以及数据的接收和发送。 1、在D/A的正弦验证程序中设定计数初值为0xFFF8,从0xFFF8到0xFFFF一个计数了7次 ,由于系统时钟为12MHz,但是T2定时器所采用的是系统时钟12分频,所以它每计数一次所需要的时间为1us,每输出一个数 它就延时7us,一个周期内总共有128+128个延时,总的时间就是它的周期,计算得出是1.6ms。实际测得的为1.5ms,相差0.1ms, 造成这一问题的主要原因可能是观察示波器产生的误差。 关于输出波形的幅值为2V,而参考电压是3.3V。估计是因为IDAC数据寄存器(IDA0H和IDA0L)中的数据是左对齐的,这意味着IDAC输出数据字的高8位被映射到IDA0H的位7-0,而IDAC输出数据字的低2位被映射到IDA0L的位7和位6。从而影响了输出波形的幅值。 2、数据发送和接收验证中,接收到的数据有一个和发送的不同,可能是串口的波特率有问题,导致不同步。 西安工程大学本科毕业设计(论文) 第5章 结论与展望 5.1 结论 本设计制作基本完成了设计的要求,硬件上完成了各个功能模块的设计,软件上利用验证程序对各个功能进行了验证,达到了设计的要求。 在这次毕业设计实践中,使我对产品的开发流程有了更加深入的了解,在实际的电路设计调试当中使我学到了很多以前书本上接触不到的知识,这样,不仅增加了我的实践经验,而且也加强了我的实践动手的能力和独立思考解决问题的方法。可以说这次的设计使我得到了珍贵的锻炼机会,开阔了自身的视野,使我对书本上的理论知识有付诸实践的机会。 总之,我在这次毕业设计实践中受益非浅,同时也看到了自己在电路设计方面缺乏经验的的不足之处。所以在毕业后的工作当中要继续学习,充实自己,并且注意在实际工作中积累经验。 5.2 展望 整个系统基本完成了它的功能,但由于它还存在上述的不足之处,所以,这里列举了一些改进的方法,使系统的输出更加的满意。 1、由于输出的方波波形周期略有不同,可以对验证程序进行修改来改善波形的显示。 2、该最小系统的实物板上焊接的串口是公口,电脑上的串口也是公口,因此接串口线的时候很不方便,用串口的延长线不能达到串口通信的效果。可以用几根导线解决这个问题,但设计和焊接电路板的时候可以避免这种麻烦。 3、该系统有多个功能,软件验证的时候是一个一个的进行的,要依次将相应的验证程序载入主芯片,很不方便。可以设计一个键盘,将几个功能的验证程序放在一起,由键盘上的按键控制主芯片运行那个验证程序,来实现相应的硬件功能。例如:按键1是验证LED功能的,按键2是验证D/A转换功能的等。 西安工程大学本科毕业设计(论文) 参考文献 [1]林伟,等.Protel 2004原理图于PCB设计实例.北京:机械工业出版社,2005: 142-197 [2]潘琢金,等.C8051F高速SoC单片机原理及应用.北京:北京航空航天大学出版社,2002: 109-133 [3]万光毅,等. SoC单片机实验、实践与应用设计.北京:北京航空航天大学出版社,2006: 85-123 [4]潭浩强. C程序设计(第二版)北京:清华大学出版社,1999: 106-141 [5]何立民.单片机高级教程.北京:北京航空航天大学出版社,2000: 72-104 [6]张迎新,等.C8051F系列SOC单片机原理及应用.北京:北京航空航天大学出版社,2005: 45-91 [7]童长飞.C8051F系列单片机开发于C语言编程.北京:北京航空航天大学出版社,2005: 68-109 [8] 潘琢金等译. [美]Cygnol Iintegrated Products.Inc. C8051系列单片机应用解析.北京:北京航空航天大学出版社,2002: 54-68 [9]C8051F330 DataSheet. Silicon Laboratories. [10]SN74LS629 DataSheet.Texas Instruments.1988 [11]AN123:Using the DACas a Function Generator. Silicon Laboratories. [12]AN127:Flash Programming via the C2 Interface. Silicon Laboratories. [13]AN124:Pin Sharing Techniques for the C2 Interface. Silicon Laboratories. [14]AN105:Programming Flash through the JTAG Interface. Silicon Laboratories. [15]AN119:Calculating Setting Time For Swittched Capacitor. Silicon Laboratories. [16]AN223:Port Configuration and GPIO. Silicon Laboratories. [17]AN136:Production Programming Options for Silicons Labs Devices. Silicon Laboratories. 西安工程大学本科毕业设计(论文) [18]AN134:Multiple-Device JTAG Configuration in the Silicon Labs IDE. Silicon Laboratories. [19]孙九安,等.C8051F系列SOC单片机原理及应用. 北京:国防工业出版社,2006: 56-98 [20]鲍可进,等. C8051F单片机原理及应用. 北京:中国电力出版社,2006:69-80 [21]先锋工作室.单片机程序设计实例. 北京:清华大学出版社,2003: 31-54 致 谢 在本论文收笔之际我首先要衷心的感谢我的指导老师魏忠义教师。魏老师以严谨的科学工作作风,渊博的知识、丰厚的学术功底、敏锐的学术洞察力和锐意进取、创新的精神使我永远难忘。在今后的学习工作中都将时刻激励着我。在大学四年的学习当中魏老师对我孜孜不倦的教诲,精心的培养,全心全意的指导,这不仅使我在理论知识方面受益匪浅,而且提高了我独立分析和解决问题的能力。在此,向老师表示最诚挚的敬意。同时感谢在本次设计中给我很大帮助的朱磊老师。 感谢四年来我们朝夕相处的同学们,在共同度过的岁月里我们互相帮助、互相学习、共同探讨问题。 感谢多年来对我辛勤培养和教育的所有老师,感谢曾经给我无私帮助的所有朋友。 最后非常感谢在百忙之中评审我论文并提出宝贵意见的老师们。 西安工程大学本科毕业设计(论文) 附录Ⅰ 硬件原理图 西安工程大学本科毕业设计(论文) 单片机最小系统原理图 西安工程大学本科毕业设计(论文) 附录Ⅱ 硬件PCB图 单片机最小系统PCB图 西安工程大学本科毕业设计(论文) 附录Ⅲ 程序代码 1、ADC验证程序: #include #define SYSCLK 24000000 // SYSCLK frequency in Hz #define SAMPLE_RATE 50000 sfr16 TMR3RL = 0x92; // Timer3 reload value sfr16 TMR3 = 0x94; // Timer3 counter sfr16 ADC0 = 0xbd; // ADC0 data sbit led = P1^3; #define uchar unsigned char #define uint unsigned int int j; void SYSCLK_Init (void); void PORT_Init (void); void Timer3_Init (void); void ADC0_Init(void); xdata int result[40]; void main (void) { PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer enable) SYSCLK_Init (); // Initialize Oscillator PORT_Init(); // Initialize Port I/O Timer3_Init (); ADC0_Init(); 西安工程大学本科毕业设计(论文) EA = 1; AD0EN = 1; while(1); } void PORT_Init (void) { P1MDIN = 0xFD; P1SKIP = 0x02; P0MDOUT |= 0x10; // enable UTX as push-pull output P1MDOUT |= 0x0C; // enable LED as push-pull output XBR0 = 0x01; // Enable UART on P0.4(TX) and P0.5(RX) XBR1 = 0x40; // Enable crossbar and weak pull-ups } void SYSCLK_Init (void) { OSCICN |= 0x03; // Configure internal oscillator for // its maximum frequency RSTSRC = 0x04; // Enable missing clock detector } void adc0_init(void) { ADC0CN = 0x85; // ADC0 T3定时采样 REF0CN = 0x0A; // 启用内部基准源 AMX0P=0X09; AMX0N=0X11; 西安工程大学本科毕业设计(论文) ADC0CF = 0x38; EIE1 |= 0x08; // 启用 ADC 中断 } void Timer3_Init (void) { // CKCON=0x80; TMR3CN = 0x00; TMR3RL = -500; TMR3 = 0xffff; EIE1 &= ~0x80;//禁止定时器3中断 TMR3CN |= 0x04;//定时器3允许 } void ADC0_ISR (void) interrupt 10 { AD0INT= 0; if(j<40) { result[j++] = ADC0H; result[j++] = ADC0L; } else j = 0; } 2、LED验证程序: #include "c8051f330.h" void PORT_Init (void); sbit SW= P0^7; sbit Led1 = P1^3; void main(void) 西安工程大学本科毕业设计(论文) { PORT_Init (); while(1) { if(SW==0) Led1=1; else Led1=0; } } void PORT_Init (void) { XBR1 = 0x40; P1MDOUT |= 0x0C; } 3、DAC验证程序: (1)正弦波 #include "c8051f330.h" #include < intrins.h > void dac_init(void); void port_init(void); void delay(void); void SYSCLK_Init(void); sfr16 TMR2RL = 0xca; sfr16 TMR2 = 0xcc; sbit TF3H = 0x98; 西安工程大学本科毕业设计(论文) char code SINE_TABLE[256] = { 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x12, 0x15, 0x18, 0x1c, 0x1f, 0x22, 0x25, 0x28, 0x2b, 0x2e, 0x30, 0x33, 0x36, 0x39, 0x3c, 0x3f, 0x41, 0x44, 0x47, 0x49, 0x4c, 0x4e, 0x51, 0x53, 0x55, 0x58, 0x5a, 0x5c, 0x5e, 0x60, 0x62, 0x64, 0x66, 0x68, 0x6a, 0x6c, 0x6d, 0x6f, 0x70, 0x72, 0x73, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7c, 0x7d, 0x7e, 0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7e, 0x7e, 0x7d, 0x7c, 0x7c, 0x7b, 0x7a, 0x79, 0x78, 0x77, 0x76, 0x75, 0x73, 0x72, 0x70, 0x6f, 0x6d, 0x6c, 0x6a, 0x68, 0x66, 0x64, 0x62, 0x60, 0x5e, 0x5c, 0x5a, 0x58, 0x55, 0x53, 0x51, 0x4e, 0x4c, 0x49, 0x47, 0x44, 0x41, 0x3f, 0x3c, 0x39, 0x36, 0x33, 0x30, 0x2e, 0x2b, 0x28, 0x25, 0x22, 0x1f, 0x1c, 0x18, 0x15, 0x12, 0x0f, 0x0c, 0x09, 0x06, 0x03, 0x00, 0xfd, 0xfa, 0xf7, 0xf4, 0xf1, 0xee, 0xeb, 0xe8, 0xe4, 0xe1, 0xde, 0xdb, 0xd8, 0xd5, 0xd2, 0xd0, 0xcd, 0xca, 0xc7, 0xc4, 0xc1, 0xbf, 0xbc, 0xb9, 0xb7, 0xb4, 0xb2, 0xaf, 0xad, 0xab, 0xa8, 0xa6, 0xa4, 0xa2, 0xa0, 0x9e, 0x9c, 0x9a, 0x98, 0x96, 0x94, 0x93, 0x91, 0x90, 0x8e, 0x8d, 0x8b, 0x8a, 0x89, 0x88, 0x87, 0x86, 0x85, 0x84, 0x84, 0x83, 0x82, 0x82, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83, 0x84, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8d, 0x8e, 0x90, 0x91, 0x93, 0x94, 0x96, 0x98, 0x9a, 0x9c, 0x9e, 0xa0, 0xa2, 0xa4, 西安工程大学本科毕业设计(论文) 0xa6, 0xa8, 0xab, 0xad, 0xaf, 0xb2, 0xb4, 0xb7, 0xb9, 0xbc, 0xbf, 0xc1, 0xc4, 0xc7, 0xca, 0xcd, 0xd0, 0xd2, 0xd5, 0xd8, 0xdb, 0xde, 0xe1, 0xe4, 0xe8, 0xeb, 0xee, 0xf1, 0xf4, 0xf7, 0xfa, 0xfd }; void main () { int i,j; PCA0MD &= ~0x40; SYSCLK_Init(); port_init(); dac_init(); while(1) { for(i=0;i<128;i++) { IDA0H = SINE_TABLE[i]+0x80; delay(); } for(i=128;i>0;i--) { IDA0H = 0x80-SINE_TABLE[i]; delay(); } } } void SYSCLK_Init (void) { OSCICN |= 0x03; 西安工程大学本科毕业设计(论文) RSTSRC = 0x04; } void dac_init(void) { REF0CN = 0x08; // 选择基准源 IDA0CN = 0xF2; //输出更新方式 } void port_init(void) { // P0SKIP = 0x01; P0MDIN = 0xFD; P0SKIP = 0x02; XBR1 = 0x40; } void delay(void) { TMR2CN = 0x00; TMR2 = 0xFFF8; //定时2,000次计数合计1ms // ET3 = 1; TMR2CN |= 0x04;//定时器3允许 while(TF2H == 0); TF2H = 0; } (2)方波 #include "c8051f330.h" void dac_init(void); void port_init(void); void delay(void); void main () 西安工程大学本科毕业设计(论文) { int i; PCA0MD &= ~0x40; port_init(); dac_init(); while(1) { IDA0L=0xFF; IDA0H=0xFF; // for(i=0;i<2;i++) delay(); IDA0L=0x00; IDA0H=0x00; // for(i=0;i<2;i++) delay(); } } void dac_init(void) { REF0CN =0x08; IDA0CN = 0xF2; } void port_init(void) { // P0SKIP = 0x01; P0MDIN = 0xFD; P0SKIP = 0x02; XBR1 = 0x40; } 西安工程大学本科毕业设计(论文) void delay(void) { int a=10; while(a--); } 4、串口接收发送验证程序: #include #define SYSCLK 24000000 // SYSCLK frequency in Hz #define BAUDRATE 9600 // Baud rate of UART in bps #define SAMPLE_RATE 50000 sfr16 TMR3RL = 0x92; // Timer3 reload value sfr16 TMR3 = 0x94; // Timer3 counter sfr16 ADC0 = 0xbd; // ADC0 data sbit led = P1^3; #define uchar unsigned char #define uint unsigned int void SYSCLK_Init (void); void UART0_Init (void); void PORT_Init (void); void Send_Char(int ch); void Send_String(int * str,uint len); void Timer3_Init (void); void ADC0_Init(void); xdata int result[40]; xdata int send[20]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; 西安工程大学本科毕业设计(论文) int j,i,readflag = 0; void main (void) { PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer enable) SYSCLK_Init (); // Initialize Oscillator PORT_Init(); // Initialize Port I/O Timer3_Init (); UART0_Init(); ADC0_Init(); EA = 1; AD0EN = 1; while(1) { if(1 == readflag) { Send_String(result,40); led = 0; readflag = 0; } } } void PORT_Init (void) { P1MDIN = 0xFD; P1SKIP = 0x02; P0MDOUT |= 0x10; // enable UTX as push-pull output P1MDOUT |= 0x0C; // enable LED as push-pull output 西安工程大学本科毕业设计(论文) XBR0 = 0x01; XBR1 = 0x40; } void SYSCLK_Init (void) { OSCICN |= 0x03; // Configure internal oscillator for RSTSRC = 0x04; // Enable missing clock detector } void UART0_Init (void) { SCON0 = 0x10; /* if (SYSCLK/BAUDRATE/2/256 < 1) { TH1 = -(SYSCLK/BAUDRATE/2); CKCON &= ~0x0B; // T1M = 1; SCA1:0 = xx CKCON |= 0x08; } else if (SYSCLK/BAUDRATE/2/256 < 4) { TH1 = -(SYSCLK/BAUDRATE/2/4); CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 01 CKCON |= 0x09; } else if (SYSCLK/BAUDRATE/2/256 < 12) { */ TH1 = -(SYSCLK/BAUDRATE/2/12); CKCON &= ~0x0B; /* // T1M = 0; SCA1:0 = 00 } else { TH1 = -(SYSCLK/BAUDRATE/2/48); CKCON &= ~0x0B; // T1M = 0; SCA1:0 = 10 西安工程大学本科毕业设计(论文) CKCON |= 0x02; } */ TL1 = TH1; // init Timer1 TMOD &= ~0xf0; // TMOD: timer 1 in 8-bit autoreload TMOD |= 0x20; TR1 = 1; // START Timer1 TI0 = 1; // Indicate TX0 ready } void Send_Char(int ch) { SBUF0 = ch; //送入缓冲区1 while(TI0 == 0); //等待发送完毕 TI0 = 0; //软件清零 } void Send_String(int * str,uint len) { uint k = 0; do { Send_Char(*(str + k)); k++; } while(k < len); } void adc0_init(void) { ADC0CN = 0x85; // ADC0 T3定时采样 西安工程大学本科毕业设计(论文) REF0CN = 0x0A; // 启用内部基准源 AMX0P=0X09; AMX0N=0X11; ADC0CF = 0x38; EIE1 |= 0x08; // 启用 ADC 中断 } void Timer3_Init (void) { // CKCON=0x80; TMR3CN = 0x00; TMR3RL = -500; TMR3 = 0xffff; EIE1 &= ~0x80;//禁止定时器3中断 TMR3CN |= 0x04;//定时器3允许 } void ADC0_ISR (void) interrupt 10 { AD0INT= 0; if(j<40) { result[j++] = ADC0H; result[j++] = ADC0L; } else { j = 0; readflag = 1; } } 西安工程大学本科毕业设计(论文) 附录Ⅳ 实物图 单片机最小系统实物图 系统输出方波示波器显示图 西安工程大学本科毕业设计(论文) 系统输出正弦波示波器显示图

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档