1、2.2 各模块作用介绍 32.2.1独立键盘 32.2 .2 LCD模块 32.2.3 模数转换及集成运放模块 42.2.4 本章小结 4第3章 系统硬件电路设计 53.1 STC89C52单片机最小系统设计 53.1.1 STC89C52单片机介绍 53.1.2 STC89C52单片机时钟电路介绍 63.1.3 STC89C52单片机复位电路介绍 73.2 数模转换电路介绍 73.2.1 主要芯片功能介绍 73.2.2 DAC0832芯片内部结构介绍 83.2.3 DAC0832芯片引脚功能介绍 83.2.4 DAC0832芯片应用电路介绍 93.3 本章小结 10第4章 系统软件调试环境介
2、绍 114.1 编程软件介绍 114.1.1 软件功能 114.1.2 软件应用流程 124.2 程序下载软件介绍 144.2.1 软件功能 144.2.2 软件应用流程 144.3 本章小结 16第5章 系统程序设计 175.1 系统程序设计流程图 175.2 程序流程图对应程序代码 175.3 本章小结 22结论 23参考文献 24在目录上点右键“更新域”,然后“更新整个目录” 绪论 本设计的意义信号发生器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如方波、锯齿波、三角波、正弦波的电路被称为函数信号发生器。在通信、广播、电视系统,在工
3、业、农业、生物医学领域内,函数信号发生器在实验室和设备检测中具有十分广泛的用途。同时在实验室和检测设备中有着很重要的地位 信号发生器分类信号发生器是指产生所需参数的电测试信号的仪器。因其应用广泛,种类繁多,特性各异,分类也不尽一致。按信号波形可分为正弦信号、函数信号、脉冲信号和随机信号发生器等四大类;按频率覆盖范围分为低频信号发生器、高频信号发生器和微波信号发生器;按输出电平可调节范围和稳定度分为简易信号发生器、标准信号发生器和功率信号发生器;按频率改变的方式分为调谐式信号发生器、扫频式信号发生器、程控式信号发生器和频率合成式信号发生器等。信号发生器又称信号源或振荡器,在生产实践和科技领域中有
4、着广泛的应用。 研究题目及其意义信号发生器是一种经常使用的设备,由纯粹物理器件构成的传统的设计方法存在许多弊端,如:体积较大、重量较沉、移动不方便、信号失真较大、波形形状调节过于死板,无法满足用户对精度、便携性、稳定性等要求,研究设计出一种具有频率稳定、准确、波形质量好、输出频率范围宽、便携性好等特点的波形发生器具有较好的市场前景。以满足工业领域对信号源的要求。本次试验实现利用单片机AT89C52 和8 位D/A 转换芯片DAC0832 共同实现三角波、正弦波这两种种常用波形的发生。根据设计的要求,对各种波形的频率和幅度进行程序的编写,并将所写程序装入单片机的程序存储器中。在程序运行中,当接收
5、到来自外界的命令,需要输出某种波形时再调用相应的中断服务子程序和波形发生程序,经电路的数/模转换器和运算放大器处理后,从信号发生器的输出端口输出。并且可以通过数码管和键盘显示模块,键盘可以实现对几种波形的切换。 本设计的要求介绍选题的背景意思,单片机的概述,信号发生器的分类等方案设计:介绍系统功能要求和整体结构,包括液晶的显示信号频率,按键波形选择及信号频率调整等。系统的硬件设计:介绍各单元电路设计,主要介绍单片机主控制器,信号产生电路、显示电路、键盘电路等。系统的软件设计:介绍各子程序的算法和流程,包括主程序、三角波、正弦波的信号产生、液晶显示、键盘扫描、按键处理等。 本设计系统结构介绍 系
6、统结构框图基于单片机的低频信号发生器的结构框图如下: 图2.1 低频信号发生器的结构框图各模块作用介绍2.2.1独立键盘本设计采用5路独立键盘,分别设计为UP DOWN LEFT RIGHT 及OK 功能按键。分别用于设定系统的各工作状态,包括波形选择 占空比选择及频率选择等。独立键盘触发方式采用低电平触发方式。在CPU中由触发中断处理方式读取按键信息,并将信息交由核心处理程序处理。1.1 .2 LCD模块LCD模块采用1602液晶显示屏,该型号液晶显示屏由16*2个显示单元组成,每个显示单元由8*6个像素点构成。全屏单屏共可显示32个数字(字符)。在本设计中LCD功能模块主要负责实时显示系统
7、的工作状态,包括输出波形 输出频率 波形占空比等信息。模块显示信息由CPU控制程序实时刷新。2.2.3 模数转换及集成运放模块在本设计中由模数转换器及运算放大电路组成的模拟信号输出电路是本设计的核心模块。模数转换器采用DAC0832芯片,该芯片可读取TTL电平并行数字信号,该特点将使本设计信号转换电路大大简化。DAC0832芯片采用8路数字输入信号,分辨单位为256个单位,并可通过CS、Xfer等控制端实时控制芯片的工作状态。该芯片的输出信号为经过转换的模拟信号,信号分度值为5V/256,由于该信号输出端口输出的信号较为微弱,不便于负载的读取与测量,故在该芯片的模拟信号输出端接入一个集成运算放
8、大器用来放大微弱的输出信号。2.2.4 本章小结本章简要介绍了本设计系统的主要结构,通过对整个系统的宏观分析,使本设计在结构及主要功能上更加条理清晰,便于本设计的模块化设计。同时本章还简要分析了各模块的具体功能。注意:除第一章绪论外,其他每一章都应该有一个本章小结 系统硬件电路设计 STC89C52单片机最小系统设计 图3-1 单片机最小系统 STC89C52单片机介绍单片机STC89C52是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超
9、有效的解决方案。 具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。特性:1) STC89C52RC单片机:2) 8K字节程序存储空间;3)
10、 512字节数据存储空间;4) 内带4K字节EEPROM存储空间;5) 可直接使用串口下载;6) AT89S52单片机:7) 8K字节程序存储空间;8) 256字节数据存储空间; STC89C52单片机时钟电路介绍单片机的时钟信号通常用两种电路形式得到:内部振荡和外部振荡方式。在引脚XTAL1 和XTAL2 外接晶体振荡器,构成了内部振荡方式。由于单片机内部有一个高增益的反相放大器,当外接晶振后,就构成了自激振荡,并产生振动时钟脉冲。晶振通常选用6MHZ、12MHZ、24MHZ。本设计中时钟电路图如图,我们选择了12MHZ和晶振分别接引脚XTAL1 XTAL2,电容C1,C2 均选择为30pF
11、,对振荡器的频率有稳定作用,当频率较大时,正弦波、方波、三角波及锯齿波中每一点的延时时间为几微妙,故延时时间还要加上指令时间才能获得较大的频率波形。 图3-2 单片机时钟电路 STC89C52单片机复位电路介绍复位引脚RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。复位电路通常采用上电自动复位和按钮复位两种式。本设计选择了按键复位如图3.3, 在系统运行时,按一下开关,就在RST 断出现一段高电平,使图3.2 时钟电路图器件复位。此时ALE、PSEN、P0、P1、P2
12、、P4 输出高电平,RST 上输入返回低电平以后,变退出复位状态开始工作。 图33单片机复位电路 数模转换电路介绍 主要芯片功能介绍ADC0832的介绍:DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。D/A转换器由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 图34 DAC0832 DAC0832芯片内部结构介绍DAC0832内部结构图: 图35DAC0832芯片内部结构当ILE为1时,只有当/CS、/WR1都为0时输入寄存器才允许输入;当/WR2、/XFE
13、R也都为0时,输入寄存器里的信息才能写入DAC寄存器 DAC0832芯片引脚功能介绍D0D7:8位数据输入线,TTL电平,有效时间应大于90ns(否则锁存器的数据会出错);ILE:数据锁存允许控制信号输入线,高电平有效;CS:片选信号输入线(选通数据锁存器),低电平有效;WR1:数据锁存器写选通输入线,负脉冲(脉宽应大于500ns)有效。由ILE、CS、WR1的逻辑组合产生LE1,当LE1为高电平时,数据锁存器状态随输入数据线变换,LE1的负跳变时将输入数据锁存;XFER:数据传输控制信号输入线,低电平有效,负脉冲(脉宽应大于500ns)有效;WR2:DAC寄存器选通输入线,负脉冲(脉宽应大于
14、500ns)有效。由WR1、XFER的逻辑组合产生LE2,当LE2为高电平时,DAC寄存器的输出随寄存器的输入而变化,LE2的负跳变时将数据锁存器的内容打入DAC寄存器并开始D/A转换。IOUT1:电流输出端1,其值随DAC寄存器的内容线性变化;IOUT2:电流输出端2,其值与IOUT1值之和为一常数;Rfb:反馈信号输入线,改变Rfb端外接电阻值可调整转换满量程精度;Vcc:电源输入端,Vcc的范围为+5V+15V;VREF:基准电压输入线,VREF的范围为-10V+10V;AGND:模拟信号地DGND:数字信号地 DAC0832芯片应用电路介绍图36 DAC0832芯片应用电路 P0口是数
15、据端口,接上拉电阻(其他端口则不用)。电源质量要好,质量越好的电源,芯片工作就越稳定。从LM358运放输出的电压最大峰峰值就是12V所以在二级运放的放大倍数要注意跟基准电压想匹配,否则输出信号会很容易失真。正弦波的生成:DAC0832产生信号的原理可以说是ADC0809AD转换的逆过程,但DAC0832生成的信号是离散的。假设要生成一个Y=Asin(2*pi*f*t)的正弦波。adc0832数据端口给的数据的范围是0255一共256个。前0127表示是X轴上方的电压值(也可能是下方)。那么128255是X轴下方的电压值。那么我们可以得到数据端口的数值的具体量,即value=127sin(2*p
16、i*f*t)+127;假设我在X轴上抽样100个点(099),那么value=127sin(pi/50*t)+127; t:099.(这个100位的数组可以用MATALB生成)。也可以抽样更多的点,抽样的点越多,得到的信号越保真,但信号的频率会有所下降。抽样的点越少,失真越大,但频率能成大幅度递增。怎么选择,具体情况具体分析。其他的波形也跟正弦波一样。 本章小结本章详细介绍了该课题在硬件电路设计方面的各个组成模块及其具体设计电路。在具体器件的原理上逐个分析,层层综合。将基本电路封装成功能模块,并明确其输入及输出信号电气特性及通信编码原理,为后续的系统综合组建与测试提供硬件基础。 系统软件调试环
17、境介绍 编程软件介绍单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过
18、一个集成开发环境(Vision)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 软件功能Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,
19、与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。C51工具包的整体结构,其中Vision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或t
20、Scope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。Keil51的编译环境如图5-1所示。图中:标题栏:显示当前编译的文件菜单条:有十项菜单可供选择,相应的所有操作命令均可在此菜单中查找;工具栏:常用命令的快捷图标按钮;管理窗口:显示工程文件的项目、各个寄存器值的变化、参考资料等;信息窗口:显示当前文件编译、运行等相关信息;工作窗口:各种文件的显示窗口。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非
21、常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍Keil C51开发系统各部分功能和使用。 软件应用流程第1步: 打开Keil51软件,首先弹出一个开机启动画面。第2步: 然后进入Keil51的开发界面。下面简要介绍一下Keil51开发环境中各个区域的功能。Keil51开发环境可以分为四个区域,分别为:菜单条、项目文件管理窗口、代码编译窗口和代码编译信息窗口四个部分。菜单条分为十项,所有的命令都可以在这里找到。下面的命令是一些常用的菜单命令,如文件的打开、关闭及保存。其中编译命令最为常用。中间靠左是项目文件管理窗口,这里可以看到当前项目中所包
22、含的所有带编译的文件。项目文件管理窗口的右侧是代码编译窗口,这事我们最主要的工作区域。最底层显示了代码编译的信息。当代码有语法错误时,可以在这里轻松的找到问题的所在。第3步:下面以建立一个简单的项目为例,来说明Keil51开发项目的一般方法。单击Project菜单项,选择New Project项。第4步:此时弹出Create New Project对话框,选择合适的路径口,在文件名一栏中填入新工程的名字。单击保存。第5步: 根据所用的器件,选择CPU的型号,单击确定。第6步:Keil51询问是否生成默认的配置文件,这个可选可不选,这里选定。单击Yes,观察项目文件管理窗口的变化。第7步:在Fi
23、le菜单下单击New选项,新建文件。此时在代码窗口出现一“Text1”空白文档。第8步: 在“Text1”中编辑完代码后,单击File菜单中的保存项,弹出保存对话框。保存名写为text.c。注意在对文件命名时必须加扩展名。第9步: 在项目导航栏中Source Group 上单击右键,选Add File to Group Source Group 1。第10步: 此时弹出Add File 对话框。选中刚才保存的text.c文件。单击Add。此时在项目文件管理窗口中就会出现刚才所添加的文件text.c。 第11步: 单击快捷菜单栏中的编译按钮,可以编译程序。第12步: 单击Project菜单项,选
24、择Option for Target Target 1选项。在弹出的对话框中可以对Project进行总体配置。第13步: 选择Output 选项卡,单击Create HEX File ,代码输出格式应为HEX-80 。第14步: 单击确定后,并重新编译。可以看到编译成功之后,Build 选项卡里又多了一项。这是生成的HEX 文件。第15步: 单击Debug 菜单项中的Start/Stop Debug Session 命令或工具栏中的进入调试界面。第16步: 单击调试界面Debug 菜单项中的Go命令或工具栏中的运行程序,单击Stop Running 命令或来结束程序。观察运行结果,若结果正确,
25、便可通过下载软件将它烧写到目标板上去。 程序下载软件介绍STC89C52单片机采用STC_ISP_V4.80向内部烧写程序。STC_ISP_V4.80是由STC公司研发,可以向STC89C51、STC89C52等系列单片机内烧写程序。可以设置波特率,串口等参数。同时STC_ISP_V4.80还可以作为串口调试工具,用于串口收发数据的调试软件。第一:打开STC_ISP_V4.80软件,分别设置最高,最低波特率,并选择相应的串口等参数。如图:第二:打开所要下载的.hex文件,如图所示:第三:点击DownLoad,程序就开始烧写第四:看到如下图就说明下载成功了本章首先介绍了程序开发软件的主要功能,开
26、发特点,并提出一定的C语言代码要求。在此基础之上进一步明确C程序的整个开发及调试流程。其次,介绍了计算机与本设计硬件电路的通信接口程序,详细阐述了系统软件下载及调试具体流程。 系统程序设计 系统程序设计流程图 图51系统程序设计流程图 程序流程图对应程序代码#includeabsacc.hmath.h#define uchar unsigned char#define uint unsigned int#define L_W_D XBYTE0X9fff#define L_W_C XBYTE0X1fff#define L_R_C XBYTE0X5fffsbit enlcd=P25;sbit en
27、11=P37;sbit en=P36;sbit dacs=P24;sbit Xfer=P23;sbit key1=P17;sbit key5=P35;char word=S,ignal Prouce;char word1=MdbyYL,091324char boxing=swvtvoid wait();/*1602写命令程序*/void send_command(uint command) wait(); L_W_C=command;/*1602*/void delay() uint i,j; for(i=0;i50;i+) for(j=0;jj+) ;/*读忙程序*/ void wait() uchar x; do
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1