单片机课程设计信号发生器_第1页
单片机课程设计信号发生器_第2页
单片机课程设计信号发生器_第3页
单片机课程设计信号发生器_第4页
单片机课程设计信号发生器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机课程设计实验报告单片机课程设计实验报告电子信息工程学院 指导教师:*08年6月30日单片机课程设计实验报告一系统总体介绍1)题目意义: 这次课程设计的题目我选择的是信号发生器,我之所以选择这个题目的原因有三个它是一个DA转换的实验,在前不久的北京市电子大赛中,我们做的是AD的转换,所以想将模数/数模都熟悉一遍,为今后可能遇到的接口实验打下坚实的基础;另外一个原因是用到的芯片是MAX518,该芯片是串行数模转换,运用I2C总线,通过这个实验可以更好的运用串行通信,同时能够学习I2C总线的协议,掌握了一门新的总线,我觉得比其他实验收获更大;MAX518的时序比较复杂,通过练习针对时序的编程可

2、以更好的提高自己读PDF资料的能力和编程的能力。2)本人所做的工作 这个实验从始至终都是自己完成的。程序的编写,程序的编写是我结合MAX518的时序图编写出来的,编程的重点在于对与MAX518的编程,在编程的过程中对于应答信号的理解和处理是整个程序的核心,在单步调试中能够很明显的观测到SDA和SCL信号线上电平的变化;四种波形的表格数据的建立。表格的建立是通过MATLAB函数产生的。其函数分别为:正弦波 y=round(127*sin(0:2*pi/256:2*pi)+127 锯齿波 y=round(0:1:255) 三角波 y=round(0:2:255) Y=round(255:2:0)

3、方波直接是0和255 由于MATLAB产生的数据之间含有回车和空格,不符合汇编语言的语法规则,所以要用WORD对所得的数据进行处理,利用WORD的查找替换同能讲回车和空格替换为英文的逗号,其中回车的表示方法为 p学习KEIL和SSTFlashFlex51.exe的使用元器件的购买和焊接实验报告的完成 3)系统的主要功能 该系统能够产生正弦波,锯齿波,三角波和方波四种波形,同时能够产生16HZ,12HZ,10HZ,8HZ四种频率,也就是可以产生4*4=16种信号,通过8个按键开关来选择,同时有八个发光二极管来指示产生信号的频率和波形,形象直观。 经过改进后增加了双路输出的功能,按下双波形选择键,

4、可以同时发出两路波形,波形的种类由按下的两个波形选择开关决定。定义位于左边的按键优先级高,右边的优先级低,优先级高的波形将由通道0输出,优先级低的将由通道1输出。单路输出时功能同前所述。二硬件电路设计及描述 本电路由SST89E58单片机,开关(10个),放光二极管(8个),11.0592M晶振,电容电阻组成。 为保证单片机能正常工作,首先将电源和地接好,将EA/VPP接到+5V; P1.4P1.7,P3.0P3.3口作为开光控制端口,用10K电阻上拉到+5V,通过开关控制是否接地; P1.1和P1.2作为SCL和SDA线,与MAX518通信; MAX518的AD0和AD1接地,地址为00,模

5、拟信号由OUT0输出,由于MAX518的参考电压由电源电压提供,不用外接参考电压;三软件设计流程及描述; 检测频率端口 检测波形端口 发送MAX518地址数据发送MAX518控制字查表发送转换的数据是否发送完256个数据是否首先是检测频率按键和波形按键,如果没有键按下就循环等待,选择好波形和频率后就进入主程序循环发送数据。先发送MAX 518地址58H,然后发送控制信号00H,再发送数据,重复上述过程256次发送完一个周期的波形,再发送下一个周期,循环往复四程序代码及源注释SDA EQU P1.2SCL EQU P1.1ORG 0000HAJMP FQ0 ;跳转到频率查询程序ORG 0100H

6、FQ0: JB P1.7,FQ1 ;查询1.7口是否为低电平,高电平的话继续查询1.6口 MOV R5,#02H ;延迟2us SETB P0.0 ;灭0.0口指示灯 SETB P0.1 ;灭0.1口指示灯 SETB P0.2 ;灭0.2口指示灯 CLR P0.3 ;亮0.3口指示灯 AJMP SS ;跳转到波形查询程序FQ1: JB P1.6,FQ2 ;查询1.6口是否为低电平,高电平的话继续查询1.5口 MOV R5,#22H ;延迟34us SETB P0.0 SETB P0.1 SETB P0.3 CLR P0.2 ;亮0.2口指示灯 AJMP SS ;跳转到波形查询程序FQ2: JB

7、 P1.5,FQ3 ;查询1.5口是否为低电平,高电平的话继续查询1.4口 MOV R5,#42H ;延迟66us SETB P0.0 SETB P0.2 SETB P0.3 CLR P0.1 ;亮0.1口指示灯 AJMP SS ;跳转到波形查询程序FQ3: JB P1.4,FQ0 ;查询1.7口是否为低电平,高电平的话继续查询1.6口 MOV R5,#62H ;延迟98us SETB P0.1 SETB P0.2 SETB P0.3 CLR P0.0 ;亮0.0口指示灯 AJMP SS ;跳转到波形查询程序 SS: MOV R0,#00H ;R0保存是单数循环还是双数循环 JB P1.0,S

8、IN ;没有按下开关时是单路输出,跳到SIN AJMP LOP SIN: JB P3.0,JUCHI ;查询3.0口是否为低电平,高电平则查询3.1口 MOV DPTR,#TABSIN ;DPTR指针指向正弦波数 CLR P0.4 ;亮0.4口指示灯 SETB P0.5 ;灭0.5口指示灯 SETB P0.6 ;灭0.6口指示灯 SETB P0.7 ;灭0.7口指示灯 AJMP ST ;跳转到主程序JUCHI: JB P3.1,SANJIAO ;查询3.0口是否为低电平,高电平则查询3.1口 MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据 CLR P0.5 ;亮0.5口指示

9、灯SETB P0.4 SETB P0.6 SETB P0.7 AJMP ST ;跳转到主程序SANJIAO:JB P3.2,FANGBO ;查询3.0口是否为低电平,高电平则查询3.1口 MOV DPTR,#TABSANJIAO;DPTR指针指向三角波数据 CLR P0.6 ;亮0.6口指示灯SETB P0.4SETB P0.5SETB P0.7 AJMP ST ;跳转到主程序FANGBO:JB P3.3,SIN ;查询3.0口是否为低电平,高电平则查询3.1口 MOV DPTR,#TABFANGBO ;DPTR指针指向方波数据 CLR P0.7 ;亮0.7口指示灯 SETB P0.4 SET

10、B P0.5 SETB P0.6 AJMP ST ;跳转到主程序LOP: MOV R7,#255 ;R7存放每个波形的取样点数 MOV R0,#00H ;R0保存是单数循环还是双数循环 SETB P0.7 SETB P0.6 SETB P0.5 SETB P0.4SENDA: JB P1.0,ST ;单输出的时候跳到ST正常输出 MOV A,R7 ; ANL A,#01H ;判断是单数还是双数循环 JNZ SINGLE ;单数的话跳到SINGLE MOV R0,#01H ;双数的话将R0赋1 WAVE0: JB P3.3,WAVE1 ;倒序判断,从2通道输出 MOV DPTR,#TABFANG

11、BO ;DPTR指针指向方波数据 CLR P0.7 ;亮0.7口指示灯 AJMP STWAVE1: JB P3.2,WAVE2 MOV DPTR,#TABSANJIAO ;DPTR指针指向三角波数据 CLR P0.6 ;亮0.6口指示灯 SETB P0.7 ;灭0.7口指示灯 AJMP STWAVE2: JB P3.1,WAVE3 MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据CLR P0.5 ;亮0.5口指示灯SETB P0.7 ;灭0.7口指示灯SETB P0.6 ;灭0.6口指示灯 AJMP STWAVE3: JB P3.0,WAVE0 MOV DPTR,#TABSI

12、N ;DPTR指针指向正弦波数 CLR P0.4 ;亮0.4口指示灯 SETB P0.5 ;灭0.5口指示灯 SETB P0.6 ;灭0.6口指示灯 SETB P0.7 ;灭0.7口指示灯 AJMP ST SINGLE:MOV R0,#00HWAVE4: JB P3.0,WAVE5 MOV DPTR,#TABSIN ;DPTR指针指向正弦波数 CLR P0.4 ;亮0.4口指示灯 AJMP STWAVE5: JB P3.1,WAVE6 MOV DPTR,#TABJUCHI ;DPTR指针指向锯齿波数据CLR P0.5 ;亮0.5口指示灯SETB P0.4 ;灭0.7口指示灯 AJMP STWA

13、VE6: JB P3.2,WAVE7 MOV DPTR,#TABSANJIAO ;DPTR指针指向三角波数据 CLR P0.6 ;亮0.6口指示灯 SETB P0.4 ;灭0.4口指示灯 SETB P0.5 ;灭0.5口指示灯 AJMP STWAVE7: JB P3.3,WAVE4 MOV DPTR,#TABFANGBO ;DPTR指针指向方波数据 CLR P0.7 ;亮0.7口指示灯 SETB P0.4 ;灭0.4口指示灯 SETB P0.5 ;灭0.5口指示灯 SETB P0.6 ;灭0.6口指示灯 AJMP STST: SETB SDA ;起始信号 SETB SCL CLR SDA MO

14、V A,#58H ;发送地址 MOV R6,#08H ;每个字节有8位LOP0: CLR SCL RLC A ;左移一位,将最高位移至C寄存器 MOV SDA,C ; 写入地址线 SETB SCL DJNZ R6,LOP0 ;没发送完8为则继续发送 CLR SCL JB SDA,$ ;应答信号,SDA为高点平则等待 SETB SCL JB SDA,$ ;SCL置成高电平后继续查询SDA是否为低电平 CLR SCL MOV A,R0 ;发送控制命令,过程同上 MOV R6,#08H LOP1: CLR SCL RLC A ;左移一位 MOV SDA,C ; 写一位 SETB SCL DJNZ R

15、6,LOP1 CLR SCL JB SDA,$ ;应答信号,同上 SETB SCL JB SDA,$ CLR SCL LOP2: JB P1.0,SINGL ;发送数据 MOV A,#0FFH SUBB A,R7 MOVC A,A+DPTR ;将DPTR指向单元中的内送入A中 AJMP BSENDSINGL: MOV A,#00H MOVC A,A+DPTR ;将DPTR指向单元中的内送入A中BSEND: MOV R6,#08H ;1字节8位 LOP3: CLR SCL RLC A ;左移一位 MOV SDA,C ;写一位 SETB SCL DJNZ R6,LOP3 INC DPTR CLR

16、SCL JB SDA,$ ;应答信号 SETB SCL JB SDA,$ CLR SCL CLR SDA ;结束信号 SETB SCL SETB SDA MOV A,R5 ;延时,用来控制波形的频率 MOV R4,ADLY_MS:DJNZ R4,DLY_MS DJNZ R7,ZJT ;设置一个中间跳转,因为超出了DJNZ的跳转范围 AJMP FQ0 ZJT: LJMP SENDA ;是否发送完256个数,发送完则进入下一个周期 TABSIN: DB 127,130,133,136,139,143,146,149,152,155, 158,161,164,167,170,173,176,178,

17、181,184 DB 187,190,192,195,198,200,203,205,208,210,212,215,217,219,221,223,225,227,229,231 DB 233,234,236,238,239,240,242,243,244,245,247,248,249,249,250,251,252,252,253,253 DB 253,254,254,254,254,254,254,254,253,253,253,252,252,251,250,249,249,248,247,245 DB 244,243,242,240,239,238,236,234,233,231,

18、229,227,225,223,221,219,217,215,212,210 DB 208,205,203,200,198,195,192,190,187,184,181,178,176,173,170,167,164,161,158,155 DB 152,149,146,143,139,136,133,130,127,124,121,118,115,111,108,105,102,99,96,93,90 DB 87,84,81,78,76,73,70,67,64,62,59,56,54,51,49,46,44,42,39,37,35,33,31,29,27,25 DB 23,21,20,1

19、8,16,15,14,12,11,10,9,7,6,5,5,4,3,2,2,1,1,1,0,0,0,0,0,0,0,1,1,2,2,3 DB 4,5,5,6,7,9,10,11,12,14,15,16,18,20,21,23,25,27,29,31,33,35,37,39,42,44,46,49,51,54 DB 56,59,62,64,67,70,73,76,78,81,84,87,90,93,96,99,102,105,108,111,115,118,121,124,127TABJUCHI: DB 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18

20、,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33DB 34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63DB 64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93DB 94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,11

21、2,113,114,115,116DB 117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137DB 138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158DB 159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179DB 180,181,182,183,184,18

22、5,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200DB 201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221DB 222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242DB 243,244,245,246,247,248,249,250,251,252,253,254,255TABSANJIAO:DB

23、 0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62DB 64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114DB 116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156DB 158,160,162,164,166,168,170,172,

24、174,176,178,180,182,184,186,188,190,192,194,196,198DB 200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240DB 242,244,246,248,250,252,254,255,253,251,249,247,245,243,241,239,237,235,233,231,229DB 227,225,223,221,219,217,215,213,211,209,207,205,203,201,199,197,195,193,19

25、1,189,187DB 185,183,181,179,177,175,173,171,169,167,165,163,161,159,157,155,153,151,149,147,145DB 143,141,139,137,135,133,131,129,127,125,123,121,119,117,115,113,111,109,107,105,103DB 101,99,97,95,93,91,89,87,85,83,81,79,77,75,73,71,69,67,65,63,61,59,57,55,53,51,49,47DB 45,43,41,39,37,35,33,31,29,27

26、,25,23,21,19,17,15,13,11,9,7,5,3,1TABFANGBO:DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

27、,0,0,0,0,0,0,255,255,255,255,255,255,255,255 DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255DB 255,25

28、5,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255DB 255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255 END五课程设计体会这是实验从电路的设计到程序的编写和调试是我自己独立完成的,这本身就是一个极大的锻炼,经过了无数次的失败最

29、终产生了完美的波形。总结起来,主要的收获有一下几点: 懂得了如何调试和下载程序。以前的编程只是纸上谈兵,并没有真正运行出来,而这次不仅需要将程序编译通过,还要产生结果。在程序的调试过程中,主要使用的单步调试功能,通过每一步执行后相应寄存器和端口的值来判断程序执行是否正确,是否产生应答信号等待,最后调试成功后再下载。这次实验让我真正明白了什么是仿真模式什么是下载模式,以及两种模式如何转换; 学会了如何使用串行DA芯片和I2C总线协议。这个实验的关键就在如何给MAX518送数,使得芯片能够转换。在调试的过程中使用的是分步调试的功能,通过观察每一步执行之后SDA和SCL电平的变化,对比时序图,观察是否执行正确,进而修改程序;在修改的过程中对MAX518的时序图有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论