为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

单片机实现智能信号发生器毕业设计

2017-10-06 33页 doc 204KB 13阅读

用户头像

is_833902

暂无简介

举报
单片机实现智能信号发生器毕业设计单片机实现智能信号发生器毕业设计 摘 要 波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。本次课程设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在L...
单片机实现智能信号发生器毕业设计
单片机实现智能信号发生器毕业设计 摘 要 波形发生器是一种常用的信号源,广泛地应用于电子电路、自动控制系统和教学实验等领域。随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。本次课程设计使用的AT89S51 单片机构成的发生器可产生锯齿波、三角波、正弦波等多种波形,波形的周期可以用程序改变,并可根据需要选择单极性输出或双极性输出,具有线路简单、结构紧凑等优点。在本设计的基础上,加上按钮控制和LED显示器,则可通过按钮设定所需要的波形频率,并在LED上显示频率、幅值电压,波形可用示波器显示。该信号发生器以单片机为核心控制单元,通过对外围芯片的控制来实现对输出波形的频率、电压幅值、占空比的连续调节,并能对运行信号参数进行实时显示。在电力系统发电机组的调试试验工作及其它工程实践中,特别是旋转机械的调试工作中,广泛使用低频信号发生源。在以往的实践中,大量使用的为由晶体管组成的低频信号发生器或由电子管组成的工频信号源;这些仪器体大笨重,携带困难;同时模拟器件随时间和温度的漂移使输出信号不稳定,给调试工作带来了极大的不便。此外,在旋转机械的起动、停止和试运转过程中,还需要测量其转速(频率)及记录其变化过程。本文介绍一种由单片机组成的同时兼具信号发生和频率测量的智能信号装置,它充分发挥单片机智能控制的特长,具有体积小、重量轻、能发生超低频信号、可编程模拟旋转机械的动态过程等一系列优点。 关键词: 单片机 智能波形发生器 AT89S51 MAX0308 目 录 一 前言??????????????????????????????????????????????????????3 二 概述??????????????????????????????????????????????????????4 三 系统设计????????????????????????????????????????????????6 四 硬件设计???????????????????????????????????????????????10 4.1 芯片介绍???????????????????????????????????????????10 4.2 显示及键盘与单片机接口电路设计???????????????17 4.3 ,,,显示器??????????????????????????????????????20 五 软件设计???????????????????????????????????????????????23 5.1 程序图??????????????????????????????????????????23 5.2 源程序代码??????????????????????????????????????????24 总结???????????????????????????????????????????????????????????31 致谢???????????????????????????????????????????????????????????32 参考文献?????????????????????????????????????????????????????33 - 2 - 一 前 言 在现代电子学的各个领域,常常需要高精度且频率方便可调的信号发生器,信号发生器的使用普及程度也许仅次于万用。频率越高、产生波形种类越多的发生器性能越好,但器件成本和技术也大大提高。 常见的信号源有各种频率的正弦波、矩形波、三角波等,产生这些信号的方法有以下几种。 (1)采用分立元件实现非稳态的多谐震荡器,然后根据具体需要加入积分电路等构成正弦、矩形、三角等波形发生器。这种信号发生器输出频率范围窄,而且电路参数设定较繁琐,其频率大小的测量往往需要通过硬件电路的切换来实现,操作不方便。 (2)用集成芯片实现函数信号发生器。这种信号发生器能产生多种波形信号,达到较高频率,但电路较为复杂且不易调试。 (3)利用单片集成芯片实现函数信号发生器。这种信号发生器能产生多种信号,达到较高频率,且易于调试。 (4)利用专用直接数字合成,,,芯片实现函数信号发生器。这种信号发生器能产生任意波形并达到很高的频率,但成本较高。 综合成本和性能等多方面考虑,本#设计#采用第三种方法,即采用单片集成芯片配合51单片机实现函数信号发生器。基于这种方法的设计需要考虑如下3个方面的内容: 1) 如何通过单片机和信号发生芯片的组合完成函数信号发生功能。 2) 如何设计单片机的外围接口电路。 3) 如何编写控制信号发生的单片机程序。 由此可以将本设计方案按以下功能模块划分 1) 系统:控制外围的信号发生芯片,完成多种函数信号输出。 2) 外围电路:实现外围的信号发生芯片和单片机之间的接口电路。 3) C51程序:编写单片机控制外围信号发生芯片的接口程序,实现单片机的函数信 号输出功能。 - 3 - 二 概 述 2., 单片机基础知识 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。 单片机具有集成度高,运算速度快,体积小、运行可靠,价值低廉,因此在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到广泛应用。 实践证明,用于工业生产中的交通灯控制的微机控制系统具有高精度、功能强、经济性好的特点,无论在提高产品质量还是产品数量,节约能源,还是改善劳动条件等方面都显示出无比的优越性。 2.2 单片机的产生与发展 单片机的历史 : 第一代:七十年代后期, 4 位逻辑控制器件发展到 8 位。使用 NMOS 工艺(速度低,功耗大、集成度低)。代表产品: MC6800 、 Intel 8048 。 第二代:八十年代初,采用 CMOS 工艺,并逐渐被高速低功耗的 HMOS 工艺代替。代表产品: MC146805 、 Intel 8051 。 第三代:近十年来, MCU 的发展出现了许多新特点: ( 1 )在技术上,由可扩展总线型向纯单片型发展,即只能工作在单片方式。 ( 2 ) MCU 的扩展方式从并行总线型发展出各种串行总线。 ( 3 )将多个 CPU 集成到一个 MCU 中。 ( 4 )在降低功耗,提高可靠性方面, MCU 工作电压已降至 3.3V 。 第四代: FLASH 的使用使 MCU 技术进入了第四代。 2.3 单片机的应用 单片机应用领域汇总 : 1.用图象传感器测量线才系统 2.卫星电视的串口模拟SPI、I2C的应用,如雷达录取的数据传送。 - 4 - 3.直接与AD芯片配合进行各种数据传感器配合。 4.利用单片机与PC机的232通讯进行控制,单片机为控制对象。 5.通过IC卡、单片机、PC机构成的各种收费系统。 6.通过单片机控制各种步进电机完成工控任务系统 7.通过单片机控制各种电慈设备完成 8.可应用在电机的变频技术上的控制 9.各种测量工具如水位尺,它在水文上的应用很普及。 10.大型指针钟控制器,主要根据时间控制电机带动指针。 11.电子配料控制仪,基于小型生产的自动或半自动控制,如控制上料、搅拌等 12.用定时器和捕获功能进行某一系统的。可提供报警、控制等。如水位控 温度控制,全自动洗衣机等。 13.电子称重计 14.教学用仪器、医疗仪器。 15.由单片机构成的霓虹灯控制器。 16.在刚的热处理中采用热磁仪测量。 17.各种金属探伤仪器。 18.矿山生产智能监测仪。 19.煤矿的产煤计数器 20.汽车安全系统 21.智能玩具 22.用超声波测量江河水位 23.交流电监测仪 24.消防系统报警监测仪 25.各类水表、电表 总之,单片机技术使用范围广,在各种仪器仪表生产单位、石油、化工,纺织、机械 的加工等各个行业中都有广泛的应用. - 5 - 三 系统设计 波形的产生是通过AT89S51 执行某一波形发生程序,向D/A转换器的输入端按一定的规律发生数据,从而在D/A转换电路的输出端得到相应的电压波形。在AT89S51的P2口接5个按扭,通过软件编程来选择各种波形、幅值电压和频率,另有3个P2口管脚接TEC6122芯片,以驱动数码管显示电压幅值和频率,每种波形对应一个按钮。此方案的有点是电路原理比较简单,实现起来比较容易。缺点是,采样频率由单片机内部产生故使整个系统的频率降低。 本系统由单片机、显示接口电路,波形转换(D/A)电路和电源等四部分构成。 1、单片机电路 功能:形成扫描码,键值识别、键处理、参数设置;形成显示段码;产生定时中断;形成波形的数字编码,并输出到D/A接口电路和显示驱动电路。 AT89S51外接12M晶振作为时钟频率。并采用电源复位设计。复位电路采用上电复位,它的工作原理是,通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过对电容充电。RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始工作。 AT89S51的P2口作为功能按钮和TEC6122的接口。P1口做为D/A转换芯片0832的接口。用定时/计数器作为中断源。不同的频率值对应不同的定时初值,允许定时器溢出中断。定时器中断的特殊功能寄存器设置如下: 定时控制寄存器TCON,20H; 工作方式选择寄存器TMOD=01H; 中断允许控制寄存器IE=82H。 - 6 - 图3-1 实现智能信号发生器电路单片机部分原理图 - 7 - 图3-2 实现智能信号发生器电路MAX038部分原理图 2、显示电路 功能:驱动6位数码管显示,扫描按钮。 由集成驱动芯片TEC6122、6位共阴极数码管和5个按钮组成。当某一按钮按下时,扫描程序扫描到之后,通过P2口将数字信号发送到 TEC6122芯片。TEC6122是一款数字集成芯片。它的外接电压也是+5V,并且由于数码管的载压较小,为了保护数码管,必须在两者间接电阻,大约是560欧。 扫描利用软件程序实现,当某一按键按下时,扫描程序立即检测到,随后调用子程序,执行相应的功能。 3、D/A电路 功能:将波形样值的编码转换成模拟值,完成双极性的波形输出。 由一片0832和两块LM358运放组成。DAC0832是一个具有两个输入数据寄存器的8位DAC。目前生产的DAC芯片分为两类,一类芯片内部设置有数据寄存器,不需要外加 - 8 - 电路就可以直接与微型计算机接口。另一类芯片内部没有数据寄存器,输出信号随数据输入线的状态变化而变化,因此不能直接与微型计算机接口,必须通过并行接口与微型计算机接口。DAC0832是具有20条引线的双列直插式CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换,故不需要外加电路。0832是电流输出型,示波器上显示波形,通常需要电压信号,电流信号到电压信号的转换可以由运算放大器LM358实现,用两片LM358可以实现双极性输出。 单片机向0832发送数字编码,产生不同的输出。先利用采样定理对各波形进行抽样,然后把各采样值进行编码,的到的数字量存入各个波形表,执行程序时通过查表方法依次取出,经过D/A转换后输出就可以得到波形。假如N个点构成波形的一个周期,则0832输出N个样值点后,样值点形成运动轨迹,即一个周期。重复输出N个点,成为第二个周期。利用单片机的晶振控制输出周期的速度,也就是控制了输出的波形的频率。这样就控制了输出的波形及其幅值和频率。 1(波形发生器技术指标 1)波形:方波、正弦波、锯齿波; 2)幅值电压:1V、2V、3V、4V、5V; 3)频率:10HZ、20HZ、50HZ、100HZ、200HZ、500HZ、1KHZ; 2(操作设计 1)上电后,系统初始化,数码显示6个‘,’,等待输入设置命令。 2)按钮分别控制“幅值”、“频率”、“方波”、“正弦波”、“锯齿波”。 3)“幅值“键初始值是1V,随后再次按下依次增长1V,到达5V后在按就回到1V。 4)“频率“键初始值是10HZ,随后在按下依次为20HZ、50HZ、100HZ、200HZ、500HZ、1000HZ循环。 - 9 - 四 硬件电路设计 经过上一节,硬件电路的设计变的简单明了,主要电路结构如图4-1所示。 4?4键盘 51单片机 波形选择 输出波形 放大电路 MAX0308 占空比调节 频率调节 图4-1 单片机实现智能信号发生器的硬件电路结构框图 4.1 芯片介绍 4.1.1 信号发生芯片MAX038 MAX038是美国Maxim公司的一款高频率、高精度、低输出电阻、驱动能力强的函数信号发生器,也可以应用于压控震荡器、脉宽调制器、锁相环、频率调制器、频率合成器及FSK(正弦波和方波)发生器,是目前较为理想的信号产生集成芯片。 MAX038的关键特性如下: 工作频率范围:0.1Hz~20MHz 频率扫描范围:350倍 频率和占空比独立可调 输出电阻:0.1Ω 非线性失真:小于0.75% - 10 - 温度系数:200ppm/? 输出波形:正弦波、三角波、锯齿波、矩形波、脉冲波 输出波形:Vp-p = 2V MAX038的核心部分是一个电流控制的震荡器,通过恒定电流对外部电容CF充电和放电,获得三角波和方波信号输出。充、放电电流流进MAX038的IIN脚的电流控制,由加在引脚FADJ、DADJ上的电压调整。 电路的震荡频率为: f = f0(1-0.2915VFADJ) = IIN(1-0.2915VFADJ)/CF 波形的占空比: τ/T = 0.5-0.174VDADJ 当VFADJ =0V时,IIN 可设为2~750μA,对应中心频率为350:1的变化范围;当VFADJ =?2.3时,调制频偏为?70%。 VDADJ 控制外部电容CF 充、放电电流的比值,当VDADJ =0V时,波形的占空比为50%;当VDADJ =2.3V时,占空比为10%~90%。在FADJ和DADJ端口的内部,设置了250μA的下拉电流源,可简化外部电路设计,仅用电阻RF(连接引脚FADJ和2.5V基准电压的可变电阻)和RD(连接引脚DAJA 和2.5V基准电压的可变电阻)就可以对频偏和占空比进行调整。IIN端口由内部的运放强制为虚地,故仅用电阻RIN就能调整输入电流IIN,实现中心频率的调节。2.5V的基准电压源主要用于提供IIN电流和VFADJ、VDADJ电压,其温度系数典型值为20ppm/?,负载电流小于4mA。 MAX038内部有一个2.5V的基准电压源,由REF引脚输出。基准电压源电路由两个LF353及电阻电容组成,分别组成放大倍数为+1和-1的缓冲器,因而得到?2.5V的基准电源。这个电压源对整机性能很重要,因为各控制电路均需要该参考输入。 在一般的应用中,MAX038可以单独承担函数信号输出的功能,通过外部的电阻和电容的调节,完成特定频率和幅值的信号输出。 MAX038内部还有正弦整流电路、比较器、复用器和鉴相器电路,他们共同实现了正弦波、三角波、锯齿波、矩形波、脉冲波的生成。 鉴相器是作为锁相环的备用单元,为异或门电路结构,输入信号一路来自内部查动矩形波OSCA和OSCB,另一路来自外部引脚PDI。鉴相器输出信号为电流,由PDO引脚输出,平均值变化范围为0~550μA。当两路输入信号的相位差为90?时,输出电流的占空 - 11 - 比为50%,平均值为250μA。如果构成锁相环路,则PDO和FADJ相连,并且对地连接一个电阻RPD,同时并联一个电容CPD。RPD决定鉴相器的灵敏度,CPD则滤除电流中的高频成分。 4.1.2 如何在单片机系统中使用MAX038 以MAX038配合单片机实现的信号发生器结构简单,不需调整,具有很高的性价比,具有显著的优势,这足以弥补它在频率漂移和正弦波失真方面的一些不足。 MAX038是单片集成芯片,需要通过单片机的控制实现函数信号的波形选择。 波形选择由两个输入引脚A0和A1的逻辑电平设定,详下表4-1。 表4-1 A0、A1引脚选择波形 选择波形 A0 A1 X 1 正弦波 0 0 矩形波 1 0 三角波 本设计中,是通过4?4键盘输入要产生的波形对应的按键,单片机判断键码并通过两个IO口控制MAX038的A0、A1引脚,从而控制MAX038输出相应的波形。 关于占空比调节和频率调整,为简单起见,本设计采用外部电位器调整控制。调节频率调整电路的电位器,改变MAX038输入端Iin的电流大小,从而改变频率值;调节占空比调整电路的电位器,改变MAX038输入端DA DJ的电压大小,从而改变占空比。 由于MAX038的输入信号为恒定的2V(p-p),且输出电流不高,所以必须在输出级至少有一级的放大电路来提供足够的输出电压和电流,以满足一般使用要求。以下是放大电路设计的几点考虑。 首先,要求放大电路具有很高的频宽。因为输出信号最大基频为20MHz,其三角波和矩形波的高次谐波成分很高,只有高频宽才能得到不失真的输出波形。 其次,高频大信号放大要求放大电路有足够的输出电压转换速率。 另外,要带动低阻负载,放大电路电流输出能力也是个重要参数。要在100Ω负载上输出6V信号,则放大器至少要有60mA的连续电流输出能力。 - 12 - 4.1.3 MAX038芯片引脚介绍 图4-2 MAX038引脚分布示意图 其引脚功能如下: REF(1脚):2.5V带隙基准电压输出脚。 GND(2、6、9、11、18脚):分离的地线,需外部连接到接地表面。 A0(3脚)、A1(4脚):TTL/CMOS兼容的波形选择输入脚。 COSC(5脚):外部震荡电容连接脚。 DADJ(7脚):占空比调整输入脚。 FADJ(8脚):频率调整输入脚。 I(10脚):频率控制电流输入脚。 IN PDO(12脚):内部鉴相器输出脚。如果不使用鉴相器,则此引脚接地。 PDI(13脚):内部鉴相器参考时钟输入脚。如果不使用鉴相器,则此引脚接地。 SYNC(14脚):TTL/CMOS兼容的同步输出脚,允许内部振荡器与外部信号保持同步。不使用时悬空。 DGND(15脚):数字地。 DV+(16脚):+5V数字供电输入脚。如果SYNC不使用此引脚,可以悬空。 V+(17脚):+5V电源输入脚。 OUT(19脚):波形(正弦波、矩形波或者三角波)输出脚。 V-(20脚):-5V电源输入脚。 注:5个GND脚在MAX038内部不是连接的,在电路板设计时,需要设计一个地平面,然后将所有5个GND脚连到靠近MAX038器件的地平面上。 - 13 - 4.1.4 AT89S51单片机简介 AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储器技术生产,兼容标准8051指令系统及引脚。它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,ATMEL公司的功能强大,低价位AT89S51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。 图4-3 AT89S51引脚分布图 功能特性概述 AT89S51提供以下标准功能:4k字节闪速存储器,128字节内部RAM,32个I/O口线,看们狗(WDT),两个数据指针,两个16位定时/计数器,一个5向量两极中断结构,一个全双工串行通信口,片内震荡器及时钟电路。同时,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但震荡器停 - 14 - 止工作并禁止其它所有部件工作直到下一个硬件复位。 引脚功能说明 Vcc:电源电压 GND:地 P0口:P0口是一组8位漏极开路型双向I/O口。也即地址/数据总线复用口。作为输出口用时,每位能驱动8个TTL 逻辑门电路,对端口写“I”可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。 在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,在校验时,要求外接上拉电阻。 P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“I”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 Flash编程和程序校验期间,P1接收低8位地址。 端口引脚 第二功能 P1.5 MOSI(用于ISP编程) P1.6 MISO(用于ISP编程) P1.7 SCK(用于ISP编程) P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑电路。对端口写“I”,通过内部的上拉电阻把断口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低会输出一个电流(IIL)。 在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容,在整个访问期间不改变。 Flash编程或校验时,P2亦接收高位地址和其它控制信号。 P3口:P3口是一组带内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动4个TTL - 15 - 逻辑门电路。对P3口写入“I”时,它们被内部上拉电阻拉高并可作输入端口。作输入端时,被外部低的P3口将用上拉电阻输出电流(IIL)。 P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示: 端口引脚 第二功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 INT0(外中端) P3.3 INT1(外中端1) P3.4 T0(定时/计数器0外部输入) P3.5 T1(定数/计数器1外部输入) P3.6 WR(外部数据存储器写选) P3.7 RD(外部数据存储器读选) P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0位(地址8EH)可打开回关闭该功能。DISRT0位缺RESET输出高电平打开状态。 PROG ALE/ :当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它对外输出时钟回用于定时目的。要注意的是;每当访问外部数据存储器时将跳过一个ALE脉冲。 对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。 :程序存储允许( )输出是外部程序存储器的读选通信号,当AT89S51由PSEN PSEN 外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN信号。 EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址0000H~FFFFH),EA - 16 - 端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。 如EA端为高电平接(VCC端),CPU则执行内部程序存储器中的指令。 Flash存储器编程时,该引脚加上+12V的编程电压VPP XTAL1:振荡器反相放大器及内部时钟发生器的输入端。。 XTAL2:振荡器反相放大器的输出端。 4.2 显示及键盘与单片机接口电路设计 4.2.1 LED与单片机接口电路设计 为实验过程中观察和调节方便,我们设置了对输出波形最高电压、占空比、频率的七段管LED显示以及对波形、波形最高电压、占空比、频率的键盘选择。其中,LED显示安排如下:电压由一只七段管进行显示,占空比由两只七段管,频率有三只七段管进行显示;键盘安排如下:波形选择键2 个,电压调节键2个,频率调节键2个,占空比调节键2个。六只七段管显示与单片机接口电路如图2示,图中利用六只74LS164为LED管串入并出移位积存器,P3.3用于控制显示器的输入,2?4键盘与单片机接口电路如图4-4示。同理可得出4?4键盘连接电路。 图4-4 LE D显示与单片机接口电路 - 17 - 图4-5 2?4键盘与单片机接口电路 4.2.2 单片机控制D/A芯片的接口电路设计 D/A芯片选用由National Semiconductor公司生产的DAC0832,它是20引脚双列直插式低功耗CMOS器件,它内部具有两级数据寄存器,完成8位电流D/A转换。要得到满足实验要求的波形,还必须通过DAC0832的输出端接运算放大器来实现。为了与DAC0832较高的转率换速相匹配,这里选用National Semiconductor公司生产LF357运算放大器与之配合使用。LF357不仅具有高转换速率,而且具有:低输入偏置电流,低输入偏移电流(仅为30pA), 低输入噪声电流(仅为 ),高共模抑制比,宽频带增益。单片机控制D/A芯片连接电路如图4-6所示。 - 18 - 图4-6 D/A芯片的接口电路 4.2.3 波形整形及放大电路设计 由于经DAC0832及外接的运算放大器输出的波形仍然不够平滑,还有DAC0832进行D/A转换时的上升沿,因此必须对输出波形进行整形以满足我们的实验要求。波形整形芯片选用MAX4624,它是MAXIM公司生产的低开路电阻,低电压先合后开单刀双掷模拟开关。它具有过电流保护;能够快速开闭,闭合及断开最大时间均为50ns;电路开路电阻很低,供电电源为5伏时,Ron为1欧姆,供电电源为3伏时,Ron为2欧姆,也就是说,电路内部开关噪声低。为得到较大功率的脉冲信号,必须对第二级放大后的输出信号进行电流放大,这里选用两只JFET管组成一对达林顿管进行电流放大。同时为满足实验时对不同功率脉冲信号的要求,将第二级放大增益设计为可调的。其连接电路如图4-7所示。 图4-7 波形整形及放大电路设计 - 19 - 4.3 ,,,显示器 ,,,显示器结构和工作原理 (一) 结构和显示原理 LED显示器是由发光二极管作为显示字段的数码型显示器,图4a为一位LED显示器的外行和引脚图。其中其只发光二极管(a—g七段)构成字型.另外还有一只二极管dp作为小数点。因此这种LED显示器称为七段数码管显示器或八段数码管显示器显示为,;使a,b,e,f,g这五段发光二极管通电,则显示字符“P”。 aa bb ccfaddgbeceed10eg1dngdngdfff2938 cagg47hb56 hh a.外形和引脚 b.共阴极结构 c.共阳极结构 ,,,显示器有共阴极和共阳极两种结构,如图b和c所示。在共阴极结构中,各段发光二极管的阴极连在一起。当将此公共点接地,某一段发光二极管的阳极为高电平时,该段发光。在共阴极结构中,各段发光二极管的阳极为高电平时,该段发光。在共阴极结构中,各段发光二极管的阳极连在一起,当将此公共点接,,,,某一段发光二极管的阴极为低电平时,该段发光。图a的,,,显示器为共阴极结构. (二) 字码段 当LED显示器与单片机连接时,一般是将LED各发光二极管的引脚a,b,„,g,dp顺序接 - 20 - 到单片机的一个并行I/O口D0,D1,„D6,D7.当从这个I/O口输出某个特定的数据时,就能使LED显示器显示出某个字符.例如要使共阴极LED显示字符”0”,则要求a,b,c,d,e,f各引脚为高电平,g和dp为低电平,I/O口线输出的八位数据如下: D7 D6 D5 D4 D3 D2 D1 D0 dp g f e d c b a 0 0 1 1 1 1 1 1 ,,, ,,称为共阴极,,,显示字符:,:的字码(不计小数点的字段码称为七段码,包括小数点的字码称为八段码( (三) ,位,,,显示器 实际使用的,,显示器通常有多位,多位,,,的控制包括字段控制(显示什么字符)和字位控制(哪一位或哪几位亮)(,位,,,显示器包括,,,根字段控制线和,根字位控制线。 由,,,显示原理可知,要使,位,,,显示器的某一位显示出某个字符,必须要将此字符转换为相应的字段码,同时进行字位的控制,这要通过一定的接口来实现(,位,,,显示器的接口形式与字段,字位控制的译码方式以及,,,显示方式有关。字段、字位控制线的译码方式有软件译码和硬件译码两种,,,,显示有静态和动态之分。 表4-2所示为共阴极LED和共阳极LED显示不同字符的字段码,此表为七段码.它们互为反码。 - 21 - 表4-2 LED显示器的字段码(七段码) 显示 共阴极 共阳极 显示 共阴极 共阳极 字符 字段码 字码段 字符 字段码 字码段 0 3FH C0H A 77H 88H 1 06H F9H B 7CH 83H 2 5BH A4H C 39H C6H 3 4FH B0H D 5EH A1H 4 66H 99H E 79H 86H 5 6DH 92H F 71H 8EH 6 7DH 82H P 73H 8CH 7 07H F8H 熄灭 00H FFH 8 7FH 80H 9 6FH 90H - 22 - 五 软件设计 主程序和子程序都存放在AT89S51单片机中。 5.1 程序流程图 主程序的功能是:开机以后负责查键,即做键盘扫描及显示工作,然后根据用户所按的键转到相应的子程序进行处理,主程序框图如图5-1所示。 开始 初始化 键盘扫描 Yes 输出正弦波 键码为11 No Yes 输出矩形波 键码为21 No Yes 输出三角波 键码为41 No 图5-1 程序结构框图 子程序的功能有:幅值输入处理、频率输入处理、正弦波输出、锯齿波输出、方波输出、显示等。 - 23 - 5.2 源程序代码 下面是程序: include #define uchar unsigned char #define uint unsigned int sbit LCP=P2^2; sbit SCP=P2^1; sbit SI=P2^0; sbit S1=P2^3; sbit S2=P2^4; sbit S3=P2^5; sbit S4=P2^6; sbit S5=P2^7; sbit DA0832=P3^3; sbit DA0832_ON=P3^2; uchar fun=0,b=0,c=0,d=0,tl,th; uchar code tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code tosin[256]={0x80,0x83,0x86,0x89,0x8d,0x90,0x93,0x96,0x99,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0 xae,0xb1,0xb4,0xb7,0xba,0xbc,0xbf,0xc2,0xc5 ,0xc7,0xca,0xcc,0xcf,0xd1,0xd4,0xd6,0xd8,0xda,0xdd,0xdf,0xe1,0xe3,0xe5,0xe7,0xe9,0xea,0xe c,0xee,0xef,0xf1,0xf2,0xf4,0xf5 ,0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfd,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0 xff,0xff,0xff,0xfe,0xfd ,0xfd,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,0xf6,0xf5,0xf4,0xf2,0xf1,0xef,0xee,0xec,0xea,0xe9,0xe7,0x e5,0xe3,0xe1,0xde,0xdd,0xda - 24 - ,0xd8,0xd6,0xd4,0xd1,0xcf,0xcc,0xca,0xc7,0xc5,0xc2,0xbf,0xbc,0xba,0xb7,0xb4,0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99 ,0x96,0x93,0x90,0x8d,0x89,0x86,0x83,0x80,0x80,0x7c,0x79,0x76,0x72,0x6f,0x6c,0x69,0x66,0x63,0x60,0x5d,0x5a,0x57,0x55,0x51 ,0x4e,0x4c,0x48,0x45,0x43,0x40,0x3d,0x3a,0x38,0x35,0x33,0x30,0x2e,0x2b,0x29,0x27,0x25,0x22,0x20,0x1e,0x1c,0x1a,0x18,0x16 ,0x15,0x13,0x11,0x10,0x0e,0x0d,0x0b,0x0a,0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x02,0x01,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x02 ,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0d,0x0e,0x10,0x11,0x13,0x15 ,0x16,0x18,0x1a,0x1c,0x1e,0x20,0x22,0x25,0x27,0x29,0x2b,0x2e,0x30,0x33,0x35,0x38,0x3a,0x3d,0x40,0x43,0x45,0x48,0x4c,0x4e ,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80 }; void display(unsigned char command) { unsigned char i; LCP=0; for(i=8;i>0;i--) { SCP=0; if((command & 0x80)==0) { SI=0; } else { - 25 - SI=1; } command<<=1; SCP=1; } LCP=1; } void key1(void) { fun++; if(fun==4) fun=0x00; } void key2(void) { tl++; if(tl==0x1f) th++; } void key3(void) { tl--; if(tl==0x00) - 26 - th--; } void key4(void) { double t; int f; TR0=0; t=(65535-th*256-tl)*0.4; f=(int)(1000/t); S3=tab[f%10]; f=f/10; S2=tab[f%10]; f=f/10; if(f==0) S1=0; else S1=tab[f]; TR0=1; } void key5(void) { tl--; if(tl==0x00) - 27 - th++; } void judge(void) { uchar line,row,de1,de2,keym; P1=0x0f; keym=P1; if(keym==0x0f)return; for(de1=0;de1<200;de1++) for(de2=0;de2<125;de2++){;} P1=0x0f; keym=P1; if(keym==0x0f)return; P1=0x0f; line=P1; P1=0xf0; row=P1; line=line+row; /*存放特征键值*/ if(line==0xde)key1(); if(line==0x7e)key2(); if(line==0xbd)key3(); if(line==0x7d)key4(); } - 28 - void time0_int(void) interrupt 1 //中断服务程序 { TR0=0; if(fun==1) { DA0832=tosin[b]; //正弦波 b++; } else if(fun==2) //锯齿波 { if(c<128) DA0832=c; else DA0832=255-c; c++; } else if(fun==3) // 方波 { d++; if(d<=128) DA0832=0x00; else DA0832=0xff; - 29 - } TH0=th; TL0=tl; TR0=1; } void main(void) { TMOD=0X01; TR0=1; th=0xff; tl=0xd0; TH0=th; TL0=tl; ET0=1; EA=1; while(1) { display(); judge(); } } - 30 - 总 结 开始的时候由于没有经验,不知如何下手,所以就去图书管找了一些书看,尽管有许多的设计方案,可是总感觉自己还是有许多的东西弄不太清楚,于是就请教同学。他常做一些设计,有一些经验。经过他的解释分析各方案之后,决定用查表的方法来做。这样可以降低一些硬件设计的难度,初次设计应切合自己的水平。用8031需要扩展ROM,这样还要进行存储器扩展。而且现在8031实际中已经基本上不再使用,实际用的AT89S51芯片有ROM,这样把经过采样得到的数值制成表,利用查表来做就简单了。我认为程序应该不大,片内ROM应该够用的。用LED显示频率和幅值,现有集成的接口驱动芯片,波形可通过示波器进行显示,单片机接上D/A转换芯片即可,这样硬件很快就搭好了。 我以为这些做好了,构思也有了,写程序应该是相对容易的。谁知道,写起程序来,才想到功能键要有扫描程序才行呀,我真的感到很难。那时真的有点想放弃,于是就去请教了老师,老师帮忙分析了一下,自己又查阅了一些资料,终于明白了扫描程序怎么写。 于是在自己的努力下,程序慢慢就写好了。这次是我的第一个设计器件,尽管经历了不少的艰辛,但给我积累了一点设计的经验,最后也有点小小的成就感。后面的路还很长,我还的努力~ - 31 - 致 谢 本文是在王皑指导老师的亲切关怀和悉心指导下完成。在向王老师请教的日子里王老师渊博的知识、严谨细致的作风、孜孜不倦进取的精神、高度的责任心、热情宽厚的待人品质和他那献身教育事业的精神,一心为学生的高尚风格深深的感动着我。他那严谨的学习态度、实事求是的工作作风、积极进取的精神、渊博的科学知识将永远是我学习的榜样,使我受益终身,并将永远激励我奋发向上。 在这我要特别的感谢指导老师在工程实训期间对我耐心的指导,教育及栽培我,让我学到了许许多多的东西及对知识的掌握,引导我让自己在学校的理论知识与社会实践有效的结合,并灵活的运用,圆满的完成工程实训。谢谢老师~ 感谢评阅和阅读本文的老师为此付出的辛勤劳动~ 最后,衷心地感谢在百忙之中阅读论文和参加答辩的各位老师、教授~衷心的祝愿老师们万事如意~工作一帆风顺~ - 32 - 参考文献 [1] 童诗白,华成英.模拟电子技术基础〔M〕.北京:高等教育出版社,2003 [2] 潘永雄,沙河,刘向阳.电子线路CAD实用教程〔M〕.西安:西安电子科技大学出版社,2001 [3] 张毅刚,彭喜源,谭晓昀,曲春波.MCS-51单片机应用设计[M].哈尔滨:哈 尔滨工业大学出版社,1997 [4] 朱定华,戴汝平等,单片微机原理与应用[M].北京交通大学出版社,清华大学出版社,2003 [5] MAXIUM公司: MAX4624技术资料 [6] 张毅刚, 单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990 [7] 谭浩强,单片机课程工程实训. 北京:清华大学出版社,1989 - 33 -
/
本文档为【单片机实现智能信号发生器毕业设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索