基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx

上传人:b****5 文档编号:19894607 上传时间:2023-01-11 格式:DOCX 页数:32 大小:814.99KB
下载 相关 举报
基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx_第1页
第1页 / 共32页
基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx_第2页
第2页 / 共32页
基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx_第3页
第3页 / 共32页
基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx_第4页
第4页 / 共32页
基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx

《基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx(32页珍藏版)》请在冰豆网上搜索。

基于C8051F410的任意波形发生器毕业设计Word文档下载推荐.docx

本人授权    大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。

涉密论文按学校规定处理。

导师签名:

日期:

注意事项

1.设计(论文)的内容包括:

1)封面(按教务处制定的标准封面格式制作)

2)原创性声明

3)中文摘要(300字左右)、关键词

4)外文摘要、关键词

5)目次页(附件不统一编入)

6)论文主体部分:

引言(或绪论)、正文、结论

7)参考文献

8)致谢

9)附录(对论文支持必要时)

2.论文字数要求:

理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。

3.附件包括:

任务书、开题报告、外文译文、译文原文(复印件)。

4.文字、图表要求:

1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写

2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。

图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画

3)毕业论文须用A4单面打印,论文50页以上的双面打印

4)图表应绘制于无格子的页面上

5)软件工程类课题应有程序清单,并提供电子文档

5.装订顺序

1)设计(论文)

2)附件:

按照任务书、开题报告、外文译文、译文原文(复印件)次序装订

指导教师评阅书

指导教师评价:

一、撰写(设计)过程

1、学生在论文(设计)过程中的治学态度、工作精神

□优□良□中□及格□不及格

2、学生掌握专业知识、技能的扎实程度

3、学生综合运用所学知识和专业技能分析和解决问题的能力

4、研究方法的科学性;

技术线路的可行性;

设计方案的合理性

5、完成毕业论文(设计)期间的出勤情况

二、论文(设计)质量

1、论文(设计)的整体结构是否符合撰写规范?

2、是否完成指定的论文(设计)任务(包括装订及附件)?

三、论文(设计)水平

1、论文(设计)的理论意义或对解决实际问题的指导意义

2、论文的观念是否有新意?

设计是否有创意?

3、论文(设计说明书)所体现的整体水平

建议成绩:

(在所选等级前的□内画“√”)

指导教师:

(签名)单位:

(盖章)

年月日

 

评阅教师评阅书

评阅教师评价:

一、论文(设计)质量

二、论文(设计)水平

评阅教师:

教研室(或答辩小组)及教学系意见

教研室(或答辩小组)评价:

一、答辩过程

1、毕业论文(设计)的基本要点和见解的叙述情况

2、对答辩问题的反应、理解、表达情况

3、学生答辩过程中的精神状态

评定成绩:

教研室主任(或答辩小组组长):

(签名)

教学系意见:

系主任:

基于C8051F410的任意波形发生器

一.硬件电路

1.C8051F410单片机开发板一块

从上两图可以清楚的看到单片机置于板底层,而且是由品诺电子出品的。

2.波形调理电路

下图是波形调理电路,采用了两级同相比例放大电路,第一级在P0.0/IDAC0输入端对地接一330Ω电阻,目的是将电流信号转换成电压信号在对其进行放大,中间一级是电压跟随器,其目的是将两级放大电路相互隔离开,最后一级是压倍可变同相比例放大电路,其放大倍数在1~10之间可变,从而可实现模拟幅度调制。

问题:

为什么I/V转换电阻选330Ω而不直接选1KΩ呢?

解答:

在毕设起初调试阶段也采用过1KΩ电阻,其目的是直接想将2mA电压直接转换成2V电压,但调试许久仞未见到波形产生,最后才发现更换小电阻后就有波形了,于是才知道单片机的驱动能力有限,I/V转换电阻不宜过大,否则就实现不了想达到的效果。

几级电路间当时还采用了双插针隔离,图中P1,P3,P4均是双插针,这样设计的目的是为了调试方便,易查出问题所在。

当然也可以放上单插针建立测试点测试即可,使用双插针在对各级测试好后可采用短路帽短接级联,从而实现整体电路功能。

下面做个简单估算:

想必大家也都熟知同相比例放大电路放大倍数:

那么第一级放大倍数就为3倍,输入电压VP-P为:

330Ω*2mA=660mV,即输入的电压信号峰值为330mV,经过第一级放大转换出的信号幅值约为990mV(约1V)。

第二级放大倍数在1~10之间,也就是说输出电压幅值可在1V~10V之间变化。

当然LM741运放采用的是±

12V供的电,理论上输出波形幅值也可以达到12V,但是受开环增益影响,幅度在达到10V左右及以上的时候波形会有明显失真(当时我看到了正弦波有削顶失真)。

3.LCD12864显示电路

上图为显示电路,12864接法其实很简单,除了VSS,VDD,VO,BLA,BLK接电源外,还有两个空脚(Pin16和Pin18),8位并行数据口DB0~DB7(Pin7~Pin15),其他5位则是逻辑控制口,可通过单片机控制命令对其编程。

本次设计采用了串行数据传输模式,即用到了RS(CS),R/W(SID),E(SCLK),PSB,/RST,其中CS为串行传输片选端,SID为串行数据传输口,SCLK为串行数据传输时钟(通过置0写1完成),PSB为串行并行方式选择端(其中PSB=0为串行工作方式,PSB=1为并行工作方式)。

在设计的时候预留了并行数据口,其目的是为了拓展使用。

注意:

LCM12864M-3.3Ver20在焊接时需要将背面电阻R7上有一个三段焊盘全部断路,出厂时该显示屏这个三段焊盘靠外侧的两个焊盘是短接在一起的,所以一定要拿吸锡纸将焊锡拿掉。

二.软件程序

程序调试环境:

SiliconLaboratoriesIDE

程序:

//-----------------------------------------------------------------------------

//Includes

#include<

c8051f410.h>

//SFRdeclarations

//16-bitSFRDefinitionsfor'

F41x

sfr16TMR3RL=0x92;

//Timer3reloadvalue

sfr16TMR3=0x94;

//Timer3counter

sfr16IDA0=0x96;

//IDA0highandlowbytes

//-----------------------------------------------------------------------------

//GlobalConstants

#defineSYSCLK24500000//InternaloscillatorfrequencyinHz

#defineSAMPLE_RATE_DAC100000L//DACsamplingrateinHz

#definePHASE_PRECISION65536//rangeofphaseaccumulator

//<

PHASE_ADD>

isthechangeinphasebetweenDACsamples;

Itisusedin

//theset_DACsroutine.

//EDITbylineter

unsignedcharm;

unsignedcharn;

sbitChange_waveform=P1^7;

sbitChange_frequency=P1^6;

staticunsignedintFREQUENCY=1000;

//FrequencyoutputinHz

staticunsignedintFREQUENCY1=1;

staticunsignedintFREQUENCY2=1;

//FrequencyoutputinKHz

unsignedintDATA;

//staticunsignedintPHASE_ADD=FREQUENCY*PHASE_PRECISION/SAMPLE_RATE_DAC;

//EDITOVER

unsignedintcodeSINE_TABLE[128]=

{

0x0000,0x0324,0x0647,0x096a,0x0c8b,0x0fab,0x12c8,0x15e2,

0x18f8,0x1c0b,0x1f19,0x2223,0x2528,0x2826,0x2b1f,0x2e11,

0x30fb,0x33de,0x36ba,0x398c,0x3c56,0x3f17,0x41ce,0x447a,

0x471c,0x49b4,0x4c3f,0x4ebf,0x5133,0x539b,0x55f5,0x5842,

0x5a82,0x5cb4,0x5ed7,0x60ec,0x62f2,0x64e8,0x66cf,0x68a6,

0x6a6d,0x6c24,0x6dca,0x6f5f,0x70e2,0x7255,0x73b5,0x7504,

0x7641,0x776c,0x7884,0x798a,0x7a7d,0x7b5d,0x7c29,0x7ce3,

0x7d8a,0x7e1d,0x7e9d,0x7f09,0x7f62,0x7fa7,0x7fd8,0x7ff6,

};

//-----------------------------------------------------------------------------

//FunctionPrototypes

voiddelay_num_10us(unsignedint);

voidmain(void);

voidOSCILLATOR_Init(void);

voidPORT_Init(void);

voidDAC0_Init(void);

voidTIMER3_Init(intcounts);

voidFrequency_conversion(void);

voidSet_DACs(void);

//////////////////////////////////////////////////////////////////////////

/////////////////////////LCD12864显示/////////////////////////

//LCD12864DisplayGlobalConstants

sbitLCD12864_SCLK=P2^2;

//E

sbitLCD12864_SID=P2^1;

//RW

sbitLCD12864_RST=P2^4;

//lowactive可以不用,也就是说,只用两条线和LCD通信

sbitLCD12864_PSB=P2^3;

sbitLCD12864_CS=P2^0;

unsignedcharcodes1[]={"

波形发生器"

unsignedcharcodes2[]={"

波形:

"

unsignedcharcodes21[]={"

Sine"

unsignedcharcodes22[]={"

Square"

unsignedcharcodes23[]={"

Triangular"

unsignedcharcodes3[]={"

频率:

unsignedcharcodes31[]={"

500Hz"

unsignedcharcodes32[]={"

1kHz"

unsignedcharcodes33[]={"

2kHz"

unsignedcharcodes34[]={"

2.5kHz"

unsignedcharcodes4[]={"

幅度:

请调滑变!

"

unsignedcharcodese[]={"

警告:

错误"

unsignedcharcodeAC_TABLE[]={

0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,//第一行汉字位置

0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,//第二行汉字位置

0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,//第三行汉字位置

0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,//第四行汉字位置

/*****************************************************************

*名称:

LCD12864_Delay()

*功能:

延时

*输入:

z

*输出:

*****************************************************************/

voidLCD12864_Delay(unsignedintz)

{

unsignedinta,b;

for(a=0;

a<

z;

a++)

for(b=0;

b<

120;

b++);

}

LCD12864_sendbyte

按照液晶的串口通信协议,发送数据

zdata

voidLCD12864_SendByte(unsignedcharzdata)

unsignedchari;

for(i=0;

i<

8;

i++)

{

if((zdata<

<

i)&

0x80)

LCD12864_SID=1;

}

else

LCD12864_SID=0;

LCD12864_SCLK=0;

LCD12864_SCLK=1;

LCD12864_write_com()

写串口指令,分三字节写完

com

voidLCD12864_WriteCom(unsignedcharcom)

LCD12864_CS=1;

//打开片选,高电平有效

LCD12864_SendByte(0xf8);

//第一字节

LCD12864_SendByte(com&

0xf0);

//第二字节

LCD12864_SendByte((com<

4)&

//第三字节

}

LCD12864_write_date()

写串口指令

date

voidLCD12864_WriteDate(unsignedchardate)

//打开片选

LCD12864_SendByte(0xfa);

//第一字节

LCD12864_SendByte(date&

LCD12864_SendByte((date<

/**********

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1