基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc

上传人:laozhun 文档编号:4190158 上传时间:2023-04-09 格式:DOC 页数:24 大小:1,013.50KB
返回 下载 相关 举报
基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc_第1页
第1页 / 共24页
基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc_第2页
第2页 / 共24页
基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc_第3页
第3页 / 共24页
基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc_第4页
第4页 / 共24页
基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc》由会员分享,可在线阅读,更多相关《基于MAX038的单片机控制的信号发生器的设计课程设计任务书1.doc(24页珍藏版)》请在三一办公上搜索。

1、中北大学信息商务学院课 程 设 计 说 明 书学 院: 中北大学信息商务学院 专 业: 电子信息工程 题 目: 专业综合实践之单片机部分: 基于MAX038的单片机控制的信号发生器的设计 中北大学信息商务学院课程设计任务书 2013/2014 学年第 1 学期学 院: 中北大学信息商务学院 专 业: 电子信息工程 学 生 姓 名: 学 号: 10050644X08 学 生 姓 名: 学 号: 10050644X16 课程设计题目: 基于MAX038的单片机控制的信号发 生器的设计起 迄 日 期: 2013年12 月30 日2014年1月 10 日 课程设计地点: 5院楼 201,510 实验室

2、 指 导 教 师: 下达任务书日期: 2013 年 12 月30日 课 程 设 计 任 务 书1设计目的:巩固掌握单片机工作原理及应用,提高编程能力。本课程设计主要针对电子信息工程专业课程体系设置的要求,安排的一种综合性的课程设计。一方面为了培养学生在查阅资料、复习、学习知识的基础上,进行包括机、电系统的设计、计算、仿真、编程、调试等多个环节的综合能力培养;另一方面,也是对学生进行毕业设计前的一次大型练兵,进一步培养学生独立地分析、解决实际问题的实际能力。另外还培养学生用专业的、简洁的文字,清晰的图表来表达自己设计思想的能力。2设计内容和要求(包括原始数据、技术参数、条件、设计要求等):掌握单

3、片机89C51的工作原理掌握用汇编、C或其他语言实现编程掌握MAX038信号发生器芯片3设计工作任务及工作量的要求包括课程设计计算说明书(论文)、图纸、实物样品等:(1)提供核心器件的工作原理与应用介绍;(2)提供用Pro tel设计的电路原理图,印刷板电路图;(3)提供用Multisim、MaxPlus、Proteus、Medwin、KeilC等软件对电路的仿真、编程与分析;(4)提供符合规定要求的课程设计说明书;(5)提供参考文献不少于15篇,且必须是相关的参考文献; 课 程 设 计 任 务 书4主要参考文献:l 要求按国标GB 771487文后参考文献著录规则书写,例:1 傅承义,陈运泰

4、,祁贵中.地球物理学基础.北京:科学出版社,1985 (15篇以上)5设计成果形式及要求:(1)电路原理图、程序、仿真结果、PCB图;(2)课程设计说明书;6工作计划及进度:2013年12月 30 日 2014年1 月 1 日:查阅资料;2014年:1 月 2 日 1 月 7 日:方案设计、实验验证;1 月 8 日 1 月 9 日:完成课程设计说明书; 1 月 10 日:答辩。系主任审查意见: 签字: 年 月 日目 录1 绪论12 设计目的13 设计内容和要求24 设计工作任务及工作量要求25 方案选择及论证2 5.1 设计分析2 5.2 单片机选择2 5.3 系统电路设计方案36 设计条件及

5、主要参数计算4 6.1 频段调节控制4 6.2 频率、占空比调节57 系统设计68 程序设计99 系统软件仿真结果1710 设计评述1811 参考文献1812 附录191 绪论 随着电子测量及其他部门对各类信号发生器的广泛需求及电子技术的迅速发展,促使信号发生器种类增多,性能提高。尤其随着70年代微处理器的出现,更促使信号发生器向着自动化、智能化方向发展。现在,许多信号发生器带有微处理器,因而具备了自校、自检、自动故障诊断和自动波形形成和修正等功能,可以和控制计算机及其他测量仪器一起方便的构成自动测试系统。当前信号发生器总的趋势是向着宽频率覆盖、低功耗、高频率精度、多功能、自动化和智能化方向发

6、展在科学研究、工程教育及生产实践中,如工业过程控制、教学实验、机械振动试验、动态分析、材料试验、生物医学等领域,常常需要用到低频信号发生器。而在我们日常生活中,以及一些科学研究中,锯齿波和正弦波信号是常用的基本测试信号。信号发生器作为一种通用的电子仪器,在生产、科研、测控、通讯等领域都得到了广泛的应用。但市面上能看到的仪器在频率精度、带宽、波形种类及程控方面都已不能满足许多方面实际应用的需求。加之各类功能的半导体集成芯片的快速生产,都使我们研制一种低功耗、宽频带,能产生多种波形并具有程控等低频的信号发生器成为可能。 本系统所设计多功能信号发生器是一种能够产生正弦波、三角波的低频信号发生器,在单

7、片机的控制下由MAX038信号发生芯片产生频率占空比可调的正弦波、三角波,对于所产生的两种波形信号,通过功率放大电路可对其幅度、稳定性进行调节,对功率放大电路输出信号进行整形后可以利用单片机的中断口及定时计数器分别测出低频信号测量周期、高频信号的频率以及他们的高电平周期,从而转换为系统输出的频率和占空比,后经过显示电路显示出频率和占空比。2 设计目的 巩固掌握单片机工作原理及应用,提高编程能力。本课程设计主要针对电子信息工程专业课程体系设置的要求,安排的一种综合性的课程设计。一方面为了培养学生在查阅资料、复习、学习知识的基础上,进行包括机、电系统的设计、计算、仿真、编程、调试等多个环节的综合能

8、力培养;另一方面,也是对学生进行毕业设计前的一次大型练兵,进一步培养学生独立地分析、解决实际问题的实际能力。另外还培养学生用专业的、简洁的文字,清晰的图表来表达自己设计思想的能力。3 设计内容和要求掌握单片机89C51的工作原理掌握用汇编、C或其他语言实现编程掌握MAX038信号发生器芯片4 设计工作任务及工作量的要求(1)提供核心器件的工作原理与应用介绍;(2)提供用Protel设计的电路原理图,印刷板电路图;(3)提供用Multisim、MaxPlus、Proteus、Medwin、KeilC等软件对电路的仿真、编程与分析;(4)提供符合规定要求的课程设计说明书;(5)提供参考文献不少于1

9、5篇,且必须是相关的参考文献;5 方案选择与论证5.1 设计分析课程设计需要各个波形的基本输出,如三角波、正弦波。5.2 单片机选择AT89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。此单片机的体积小、低功耗、控制能力强、扩展灵活、微型化使用方便。本设计结合由马克西姆公司MAX038而设计的一种简易信号发生器,

10、通过MAX038来产生一系列有规律的幅度和频率可调的方波、三角波和正弦波。基于MAX038的多波形函数信号发生器具有信号输出频率高、波形稳定、失真小、可控性强等特点。本号发生器包含稳压电源模块、单片机(AT89C52)控制模块、键盘模块、LED显示模块、信号发生模块(MAX038)、功率放大(AD811)及缓冲器(BUF634)模块、分频模块,该设计结构简单,虽然性能指标赶不上标准信号发生器,但能满足一般的实验要求。其成本低、体积小、便于携带等特点,亦可作为电子产品维修人员的随身设备之一。5.3 系统电路设计方案 函数信号发生器的实现方法通常有以下几种:方案一:用分立元件组成的函数发生器:通常

11、是单困数发生器且频率不高,其工 作不很稳定,不易调试。方案二:可以由晶体管、运放1C等通用器件制作,更多的则是用专门的函数信 号发生器1C产生。早期的函数信号发生器1C,如8038等,它们的功 能较少,精度不高,频率上限只有300KHZ,无法产生更高频率的信号,调节方式也不够灵活,频率和占空比不能独立调节,二者互相影响。 方案三:利用单片集成芯片的函数发生器:能产生多种波形,达到较高的频率, 且易于调试。鉴于此,美国马克西姆公司开发了新一代函数信号度生器 ICMAX038,它克服了方案二中芯片的缺点,可以达到更高的技术指标, 是上述芯片望尘莫及的。MAX038频率高、精度好,因此它被称为高频

12、精密函数信号度生器1C。在锁相环、压控振德器、频率合成器、脉宽 调制器等电路的设计上,MX038都是优选的器件。方案四:利用专用直接数字合成DDSS片的函数发生器:能产生任意波形并达到 很高的频率。但成本较高。 通过对以上四种方案的比较,我们可以看出几种方案的优缺点:方案一:结构很简单,制作容易,但是输出信号有频率线性度差、频率稳定度低、 频率分辨率低、频率转换时间比较长,相位噪声大以及人机界面不友好 等缺点。方案二:电路结椅简单,但在频率分辨率、频率变换时间、相位噪声等方面都不 如方案三。方案三:结抱相对复杂,但具有输出频率稳定性高,频率输出线形度好、频率分 辨度高、波形正确,频率变换时间小

13、,相位噪声小、人机界面好、易于 控制等优点、性能优良。方案四:能产生任意波形且达到很高的频率,但是成本较高。基于我们的选择标准在满足工作要求的前提下,性价比高的发生器是我们的首选。从上面的比较可以看出,方案一和方案二都有各自较大的缺点,难以达到理想的设计要求。而方案四虽然能达到很好的要求,但是从价格方面考虑我们选择方案三比较好。6 设计条件及主要参数计算6.1 频段调节控制固定一个CF值,当IIN端的电流从2uA到750uA的变化时,对应产生一个频段的频率范围经实验调整,我们选择了一系列的CF如图1所示,并确定了各CF所对应的频段和频率范围f1-f2由于系统通过DAC控制IIN端电流和FADJ

14、端电压,将各频段的频率范围划分为65536级间隔,因此各频段的输出误差为。 图1 输出频率与IIN电流及振荡电容CF的关系此外,由于相邻频段之间存在着频率重叠现象,并且考虑到各个频段对应的误差大小有所差异,因此设定各频段的实际起止频率围:f3f4,以便获得最小的误差。在5脚COCS和6脚GND接上电容CF以后,10脚IIN是频率控制的电流输入端,利用恒定电流IIN向电容CF充电和放电,便可形成振。荡IIN是受8脚FADJ和7脚DADJ端电压的控制,振荡频率由下式确定。,因为我们要求的频率范围在02Hz10MHz,分四个频段来满足要求,在每个频段上连续可调,由芯片内部参数可知道,当IIN=2A5

15、A时,CF的容量范围可以在10pF10F时,芯片有较好的性能。因此可知:当IIN=2A时,;当IIN=750A时,。为了使数字控制能够使IIN=2A750A实现,我们在D/A转换模块使用图25所示的电阻连接方法。当数字量为00H时,VOUTb输出为0V时MAX038的10脚IIN有2A的电流输入。当数字量为FFH时,VOUTb输出为基准电压250V。MAX038的10脚IIN有750A的电流输入。6.2 频率、占空比调节 MAX038的占空比的调整有两种方式,一种时利用内部基准电压源调整,另一种是利用外加电源调整,为使电路简单,采用第一种调整方式。在MAX038的DADJ端应用一个23V23V

16、的电压控制信号,MAX038的DADJ引脚上的电压可控制波形的占空比DC(定义为输出波形为正时所占时间的百分数),并且能够改善正弦波的波形,可进行脉冲宽度调制和产生锯齿波。当VDADJ接地(即VDADJ=0)时,其占空比为50%,占空比的调整可采用MAX505的一片DAC,输出23V范围内的电压,占空比可在10%90%范围内改变,约每伏改变15%,当电压超过23V将使频率偏移或引起不稳定为产生一定占空比而加在DADJ上的电压为:,对双极性输出的D/A转换器,基准电源为23V时,MAX505接受数据与占空比的关系式为:。其中:VDADJ为DADJ引脚上的电压,DC为占空比。这样可完成激励信号的占

17、空比设置。调整CF的充放电时间,在10%90%的范围内调整振荡器输出的三角波,最终产生失真的正弦波,锯齿波和脉冲波这三种波形同时送入混合器,由A0,A1选择输出。所以为简单起见,关于占空比调节和频率调整,可采用外部电位器调整控制。调节频率调整电路的电位器,改变MAX038输入端IIN的电流大小,从而改变频率值;调节占空比调节电路中的电位器,改变MAX038输入端DADJ的电压大小,从而改变占空比。信号发生芯片MAX038,其波形选择引脚A0和A1与单片机的P2. 0和P2. 1 引脚相连,在单片机的控制K输出正弦波、和三角波2种不同的波形,波 形的频率和幅值可以通过外部的可变电阻进行调节。OU

18、T为MX038的信号波形 输出,送至放大电路。MAX038在正弦波输出时,输出的信号频率为。7 系统设计 采用单片机AT89C52对主信号发生芯片进行智能控制,对 MAX038产生的波形信号进行频率高低,占空比大小,幅度范围的控制,以及产生波形的选择控制。 MX 038主振荡器为三角波振荡器,振荡频率由调频輸入Vfod.参考电流Ii及外接振採电容器COSC的容量共同决定。基本振荡器是一个交变的恒流源向电容器充电和放电的弛张振荡器.通过改变COSC引脚的外接电容和流入IN引脚的充放电电流的大小来控制输出信号频率.频率范11为0. r20MHz,流入IN的电流加到FADJ和DADJ引脚的电压来调制

19、.通过此两引脚可用外接电压信号调整频率。MAX038 部有一个正弦波形成电路把振荡器的三角波转变成一个等幅的低失真正弦波。MAX038的性能特点:能精密地产生三角波、正弦波信号。频率范围从0.1Hz20MHz,最高可达40MHz,各种波形的输出幅度均为 2V (P-P)。空比调节范围宽,占空比和频率均可单独调节,互不影响,占空比最 大调节范围10%90%。波形失真小,正张波失真度小于0.75%,占空比调节时非线性度低于2%。采用土5V双电源供电,允许有5%变化范围,电源电流为80mA,典型功 耗400MW,工作温度范围为070C。设2.5V电压基准,利用控制端FADJ、DADJ实现频率微调和占

20、空比调。工作原理:MAX038内部还有正弦整形电路、比较器、复用器以及鉴相器电路,它们共同实现了正弦波、三角坡的生成。鉴相器是作为锁相环的备用单元,力异或门电路结拘,输入信号一路来flu 内部差动矩形波OSCA和OSCB,另外一路来自外部引脚PDI。鉴相器的輸出信号电流,由PDO引脚输出平均值变化范围为0 550/。当两跳输入信号的相位差为90时,输出电流的空比为50%,平均值为250/yj。如果构成锁相环跡,则PDO和FADJ相连,并且对地连接一个电阻同时并联一个电密Od。Upd 决定鉴相器的灵敏度,用于滤除电流中的高频成分。采用单片机AT89C52对主信号发生芯片进行智能控制,对MX038

21、产生的 波形信号进行频率高低,占空比大小,幅度范围的控制,以及产生波形的选择控 制。MAX038的输出频率主要受振蔬电蓉CF , IIN端电流和FADJ端电压的 控制。选择一个CF值,对应IIN端电流的变化,将产生一定范围的輸出频率。 另外,改变FADJ端的电压,可以在IIN控制的基础上,对輸出频率实现微调 控制。为实现输出频率的数控调整,在IIN端和FADJ端分别连接一个电压输 出的DAC。首先,通过DACB产生0V(OOH)到2.5V(0FFH)的輸出电压,经电压 /电流转换网络,产生0|J A到748m a的电流,叠加上网络本身产生的2m A电 流,最终对IIN端形成2m a到750p

22、A的工作电流,使之产生相应的输出频率 恭围。DACB将此工作电流范围分为256级步进间隔,輸出频率范围也被分为 256談步进间隔。所以,IIN端的电流对输出频率实现粗调。第二步,通过DACA 在FADJ端产生一个从-2.3V(00H)到+ 2.3V(0FFH)的电压范围,该范围同祥包含 256級步进间隔,IIN端的步进间隔再次细分为256级步进间隔,从而在粗调的 基础上实现微调。图2 AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52 是一个低电压,高性能CMOS型8位单片机,片内含8k bytes的可反复擦写的 Flh只读程序存储器和256 bytes的随机存

23、取数据存储器(RAM),器件采用 ATMEL公司的高密度、非易失性存储技术生产,兼想标准MCS-51指令系统,片 内置通用8位中央处理器和Flash存储单元。AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2 个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash 存储器可有效地降低开发成本。AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装式,以适应不同产品的需求。 主要功能特性:兼容MCS51指令统8k可反复擦写(1000次)Flash ROM ,32个

24、双向I/0口,256x8bit 内部RAM,3个16位可编程定时/计数器中断,时钟频率0-24MHZ,2个串行中断 ,可编程UART串行通道,2个外部中断源,共6个中断源,2个读写中断口线,3级加密位,低功耗空闲和掉电模式,软件设置睡眠和唤醒功能。 AT89C52中有一个用于拘成内部振錫器的高增益反相放大器,引脚XTAL1和 XTAL2分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石 英晶体或陶瓷谐振器一起构成自激振荡器。外接石英晶体及电Cl, C2接在放大器的反馈回路中拘成并联振德电路。对外接电容C1, C2虽然没有十分严格的耍求,但电容容量的大小会轻微影响振荡频率的高低、振

25、荡器工作的稳定性、起振的难易程序及温度稳定性,这里选择使用石英晶体。也可以采用外部时钟。采用外部时钟的电路的情况时,外部时钟脉沖接到XTAL1端,即内部时钟度生器的输入端,XTAL2则悬空。图28 程序设计主耍程序代码及其说明:#include #define uchar unsigned char#define uint unsigned int#define F P1 /P1口作为第一个DAC0832的数据输入,输出100HZ的三角波、正弦波(一个周期32个点)sbit F_la=P31; /高电平时锁存,低电平时直通P1口sbit A_la=P30; /高电平时锁存,低电平时直通P1口s

26、bit k1=P32; /选择波形sbit k2=P33; sbit k3=P34;sbit lcd_en=P24;/LCD1602使能信号E位定义sbit lcd_rs=P23;/LCD1602读/写(H/L)控制信号RS位定义char sanjiao=S;/输出波形char zhengxian=Z;char A1=A;/模式选择char M1=M;char h1= Mode: void delay00(uint k); /函数申明void write_com(uchar com);void write_data(uchar data0);void init00();uchar ii,ll;

27、/ii表示字符串第i位,ll表示字符串长度uchar code sin256= 0x80,0x83,0x86,0x89,0x8D,0x90,0x93,0x96, /正弦信号码表0x99,0x9C,0x9F,0xA2,0xA5,0xA8,0xAB,0xAE, 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,0xEC,0xEE,0xEF,0xF1,0xF2,0xF4,0xF5, 0xF6,0xF7

28、,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD, 0xFD,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD, 0xFD,0xFC,0xFB,0xFA,0xF9,0xF8,0xF7,0xF6, 0xF5,0xF4,0xF2,0xF1,0xEF,0xEE,0xEC,0xEA,0xE9,0xE7,0xE5,0xE3,0xE1,0xDE,0xDD,0xDA,0xD8,0xD6,0xD4,0xD1,0xCF,0xCC,0xCA,0xC7,0xC5,0xC2,0xBF,0xBC,0xBA,0

29、xB7,0xB4,0xB1, 0xAE,0xAB,0xA8,0xA5,0xA2,0x9F,0x9C,0x99, 0x96,0x93,0x90,0x8D,0x89,0x86,0x83,0x80, 0x80,0x7C,0x79,0x78,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,0x

30、15,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,0

31、x30,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 ;uchar mode,M,N,N3,A,k=5,gong,fen,Ax; uint d;/每次调用都会清屏,显示字符串void LCD_1602_str(uchar hang1,char *ttt1,uchar hang2,char *ttt2)init00();/初始化函数for(ll=0,ii=0;ttt1i

32、i;ii+,ll+);/求第一行字符串长度,当ttt1ii为最后一位0时其ascII码为0,所以此时跳出循环,从而求出字符串长度llwrite_com(0x80+hang1);for(ii=0;iill;ii+)/显示第一行字符串write_data(ttt1ii);write_com(0x80+0x40+hang2);/地址指针指向下一行首列for(ll=0,ii=0;ttt2ii;ii+,ll+);/求第二行字符串长度,当ttt2ii为最后一位0时其ascII码为0,所以此时跳出循环,从而求出字符串长度llfor(ii=0;iill;ii+)/显示第二行字符串write_data(ttt2

33、ii);/在上次显示内容的基础上替换特定位置的字符串,void LCD_1602_t(uchar hang1,char *ttt1,uchar hang2,char *ttt2)for(ll=0,ii=0;ttt1ii;ii+,ll+);/求第一行字符串长度,当ttt1ii为最后一位0时其ascII码为0,所以此时跳出循环,从而求出字符串长度llwrite_com(0x80+hang1);for(ii=0;iill;ii+)/显示第一行字符串write_data(ttt1ii);write_com(0x80+0x40+hang2);/地址指针指向下一行首列for(ll=0,ii=0;ttt2i

34、i;ii+,ll+);/求第二行字符串长度,当ttt1i为最后一位0时其ascII码为0,所以此时跳出循环,从而求出字符串长度llfor(ii=0;ii0;x-)for(y=10;y0;y-);/写指令子程序void write_com(uchar com) lcd_rs=0; /RS为L,RW为L时为写指令,开发板硬件已将RW接地了,所以不用控制RW了P0=com; /送指令代码到P0口delay00(1); /延时1ms,时序要求lcd_en=1; /使能信号给高脉冲,使得1602读取P0口上的指令,高脉冲的脉宽有要求,不同厂家的1602要求也不一样delay00(1);lcd_en=0;

35、delay00(1);lcd_rs=1;/写数据子程序void write_data(uchar data0) lcd_rs=1; /RS为H,RW为L时为写数据,开发板硬件已将RW接地了,所以不用控制RW了P0=data0; /送数据到P0口delay00(1);lcd_en=1; /使能信号给高脉冲,使得1602读取P0口上的数据,高脉冲的脉宽有要求,不同厂家的1602要求也不一样delay00(1);lcd_en=0;delay00(1);lcd_rs=1;/初始化子程序void init00() write_com(0x38); /设置1602为16X2显示,5X7点阵,8为数据口wr

36、ite_com(0x0c); /设置显示开/关及光标设置,0x0c为开显示,不显示光标但不闪烁。00001DCB:D=1,开显示,D=0关显示;C=1显示光标,C=0不显示光标;B=1光标闪烁,B=0光标不闪烁 write_com(0x06); /0x06为当写一个字符后地址指针加一,且光标加一,整屏不移动。000001NS:N=1写一个字符后地址指针加一,光标加一,N=0写入一个字符后地址指针减一,光标减一;S=1写入一个字符后,整屏左移(N=1)或者右移(N=0),以得到光标不移动而屏幕移动的效果,S=0写入一个字符后整屏显示但不移动。write_com(0x80); /数据指针设置,0x

37、80+地址码(027H,4067H),00H0fH和40H4fH为可显示区间,其余区间为寄存器write_com(0x01); /显示清屏/用DAC0832输出三角波(1)、正弦波(2)void fout(void)switch(mode) /根据模式来输出 case 1: /三角波 if(M=0)N3=N3+16;F_la=0; F=N3; F_la=1; if(N3=240) M=1; if(M=2) N3=N3-16;F_la=0; /直通F=N3; F_la=1; /锁存 if(N3=0) M=0; if(M=1)/ /避免刚到240就被减16,保证每个点之间都间隔定时时间TM+; b

38、reak; case 2: /正弦波 F_la=0; /直通F=sinN; F_la=1; /锁存 N=N+8; break; default:break;/用另一个DAC0832控制基准电压void aout(void)A_la=0; /锁存器直通F=A; /送数据到P1口,准备转换数据 AA_la=1; /锁存数据/初始化函数void init(void) /初始化函数 F=0; / 数模初始值为0EA=1; /中断允许TMOD=0x11; /定时器0,1的方式都是1TH0=(-293)8; /定时器0初值装入,12MHz定时312us,中断频率32*100=3200Hz (一个周期32点

39、)TL0=(-293);ET0=1; /中断0允许TR0=1; /定时器0开 EX0=1; /开外部中断0IT0=0;/低电平触发EX1=1; /开外部中断1IT1=0;/低电平触发/延时程序void delay(uint m)uint x,y;for(x=m;x0;x-)for(y=110;y0;y-);/按键设置void key(void)k3=1;if(k3=0)delay(10);if(k3=0)gong+;while(!k3);if(gong=3)gong=0; /显示系统调节状态if(gong=0)LCD_1602_t(19,fangbo,0,M1);if(gong=1)LCD_1

40、602_t(19,fangbo,0,F1);if(gong=2)LCD_1602_t(19,fangbo,0,A1);/测试主函数void main(void)init();LCD_1602_str(0,h1,19,h1);LCD_1602_str(19,h1,0,h2);A=255;LCD_1602_t(19,fangbo,0,M1);while(1)key();/显示输出波型if(mode=1)LCD_1602_t(5,sanjiao,19,sanjiao);if(mode=2)LCD_1602_t(5,zhengxian,19,zhengxian);/显示输出信号幅值Aif(A=130)Ax=A-5;else Ax=A;if(A=0)Ax=0;LCD_1602_num(12,Ax*0.1/5,19,0); LCD_1602_num(14,(Ax/5)%10,19,0);/显示定时器初值(如果显示的是实际输出频率就好了,后续工作)LCD_1602_num(19,A,7,d/10000);LCD_1602_num(19,A,8,d/1000%10);LCD_1602_num(19,A,9

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号