欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    简易信号发生器docx.docx

    • 资源ID:6884906       资源大小:134.50KB        全文页数:18页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    简易信号发生器docx.docx

    1、简易信号发生器docx中北大学硬件大型实验说明书学生姓名:某某学 号:*学 院:电子与计算机科学技术学院专 业:计算机科学与技术题 目:简易信号发生器指导教师: 某某 职称: 2011年 12 月 15 日硬件大型实验说明书一 需求分析(1)、能产生方波、正弦波、三角波和脉冲信号。(2)、产生的各种信号,要能改变其频率、和幅值。(3)、可以产生以上三种信号波形的叠加(仅限于其频率相同)。(4)、频率、幅值可以通过键盘设定。(5)、在输出信号波形时,应显示其频率。二 总体设计2.1 设计思路利用AT89C52单片机外接数模转换器和运算放大电路,由用户通过按键选择输出实验室经常使用到的几种波形:正

    2、弦波、方波、三角波以及脉冲。通过键盘触发外部中断来选择波形,通过定时器中断进行取点输出,与微处理器兼容的8位数模转换器DAC0832将数字量转换为模拟量电压信号,通过运放电路后,用示波器显示平滑、稳定的波形。并通过键盘来控制波形的频率、幅值以及选择两个波形进行叠加,通过键盘可控制波形的频率及幅值。实现不同频率,不同幅值的叠加。lcd显示芯片能显示当前波形以及波形频率、幅值。2.2 系统模块划分1)、基础波形的产生:要求能生成四种基础波形,正弦波、方波、三角波、脉冲,且频率、幅值课通过参数来控制。2)、基础波形的叠加:要求可实现各种基础波形的叠加,叠加波形的频率、幅值均可根据需求改变。3)、调节

    3、波形的频率、幅值:根据需要对当前波形的频率及幅值进行调节,可改变定时器定时时间。4)、LCD显示:要求能在16x4LCD上同步显示当前输出波形及波形的频率和幅值。 5)、对各模块进行整合。2.3 硬件设计2.3.1 元器件选择(1)、AT89C52:是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业有着广泛的应用。 图 2-1 (2)、

    4、LM041L:LCD选用16x4行用于显示波形、波形频率、波形幅值。 图2-2(3)、DAC0832:DAC0832是8分辨率的D/A转换集成芯片。与微处理器完全兼容。这个DA芯片以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到广泛的应用。由8位输入锁存器、8位DAC寄存器、8位D/A转换电路及转换控制电路构成。 图 2-32.3.2方框原理图: 图2-4 方框原理图电路仿真原理图如下:图 2-52.4 .软件设计 针对每个模块编写相应代码,实现相应功能。最后将各部分代码整合到一起形成一个整体。 Y N Y 图2-6 流程图 源码:(省略了部分表格数据)#include #d

    5、efine uchar unsigned char#define uint unsigned int/*定义波形及频率变量*/#define DACdata P1 / D/A转换器接口char waveform = 0; /选择波形char waveform1 = 0;uchar wavecount = 0; /计算输出点个数uchar wavecount1 = 0;uchar is_single = 1;uchar wave_freq = 1,1,1,1; /控制波形频率uchar wave_freq1 = 1,1,1,1;uchar wave1_freq; /波形一总频率uchar wav

    6、e2_freq; /与波形一叠加的波形的总频率uchar wave_A = 1,1,1,2; /控制波形幅值uchar wave_A1 = 1,1,1,1;char key_count = 0; /调节频率变量char pulse_width = 1;/脉冲宽度变量uchar code waveTH5=0xf0,0xfc,0xfe,0xff,0xff; /定时器初值uchar code waveTL5=0xbe,0xf4,0x7a,0x3d,0x9e;uchar (*p3)(uchar, uchar, uchar);/*LCD显示变量*/#define lcd_port P0sbit rs =

    7、 P35;sbit rw = P36;sbit lcd_e = P37;uchar code lcd_line1=Sine Wave Square Wave Triangle Wave Pulse Wave Select Wave: press No.1 key! ;uchar lcd_line2=F= Hz A= . V;uchar lcd_line4=F= Hz A= . V;uchar code timer_freq=1,5,10,20,40; /每个周期取256个点时频率/*定时器及外部中断变量*/sbit key = P32; /外部中断0uchar THdata,TLdata;/*

    8、波形显示子程序*/uchar code sine_tab= 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,0xf8,0xf9,0xfa,0xfb,

    9、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,0xb7,0xb4,0xb1,0xae,0xab,

    10、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

    11、,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,0x

    12、3d,0x40,0x43,0x45,0x48,0x4c,0x4e,0x51,0x55,0x57,0x5a,0x5d,0x60,0x63,0x66 ,0x69,0x6c,0x6f,0x72,0x76,0x79,0x7c,0x80; uchar code triangle_tab=/三角波相关数据;uchar code square_tab=/方波相关数据;uchar code pulse_tab=/脉冲相关数据;uchar sine_out(uchar freq, uchar wave_A,uchar count) /正弦波输出 return (sine_tabfreq*count/5)*wav

    13、e_A; uchar triangle_out(char freq, uchar wave_A,uchar count) /三角波输出 return (triangle_tabfreq*count/5)*wave_A;uchar square_out(uchar freq, uchar wave_A,uchar count) /方波输出 return (square_tabfreq*count/5)*wave_A;uchar pulse_out(uchar freq, uchar wave_A,uchar width) /脉冲输出 if(freq*wavecount 255) wavecoun

    14、t = 0; if(freq*wavecount 0; i-) for(j=110; j0; j-);void write_com(uchar com) /指令传输函数 rs = 0; /写指令 lcd_e = 0; lcd_port = com; lcd_e = 1; lcd_e = 0; delay(5);void write_date(uchar date) /数据传输函数 rs=1; /写数据 lcd_e=0; lcd_port=date; lcd_e=1; lcd_e=0; delay(5); void disp_lcd(uchar addr,uchar *temp1) /字符显示函

    15、数 uchar num; write_com(addr); delay(1); for(num=0;num 255) wavecount = 0; wavecount1+; if(wave_freq1waveform1*wavecount1 255) wavecount1 = 0; if(is_single = 1&waveform != 3) DACdata = (*pwaveform)(wave_freqwaveform,wave_Awaveform,wavecount); else if(is_single = 0)&waveform != 3) DACdata = (*pwavefor

    16、m)(wave_freqwaveform,wave_Awaveform,wavecount) + (*pwaveform1)(wave_freq1waveform1,wave_A1waveform1,wavecount1); else if(waveform = 3) DACdata = pulse_out(wave_freqwaveform,wave_Awaveform,pulse_width); /*键盘扫描*/uchar kb_scan(void) uchar sccode,recode; P2=0xf8; /发全”0“行扫描码,列线输入 if(P2&0xf8)!=0xf8) /若有键按

    17、下 delay(5); /延时去抖动 if(P2&0xf8)!=0xf8) sccode=0xfe; /逐行扫描初值 while(sccode&0x08)!=0) P2=sccode; /输出行扫描码 if(P2&0xf8)!=0xf8) /本行有键按下 recode=(P2&0xf8)|0x07; /取列码 return(sccode)+(recode);/返回特征键码 else sccode=(sccode3) waveform = 0; break; case 0x12: /选择叠加波形 is_single = 0; waveform1+; if(waveform12) waveform

    18、1 = 0; wavecount1 = wavecount; break; case 0x21: /增加频率 if(is_single = 1) wave_freqwaveform+; if(wave_freqwaveform4) wave_freqwaveform = 4; else wave_freq1waveform1+; if(wave_freq1waveform14) wave_freq1waveform1 = 4; wavecount1 = wavecount; break; case 0x22: /减小频率 if(is_single = 1) wave_freqwaveform-

    19、; if(wave_freqwaveform 1) wave_freqwaveform = 1; else wave_freq1waveform1-; if(wave_freq1waveform1 4) key_count = 0; THdata = waveTHkey_count; TLdata = waveTLkey_count; break; case 0x41: /增加幅值 if(is_single = 1) wave_Awaveform+; if(wave_Awaveform 5) wave_Awaveform = 5; else wave_A1waveform1+; if(wave

    20、_A1waveform1 5) wave_A1waveform1 = 5; break; case 0x42: /减小幅值 if(is_single = 1) wave_Awaveform-; if(wave_Awaveform 1) wave_Awaveform = 1; else wave_A1waveform1-; if(wave_A1waveform1 128) pulse_width = 128; break; case 0x24: pulse_width -= 10; if(pulse_width5) pulse_width = 1; break; wave1_freq = timer_freqkey_count*wave_freqwaveform; lcd_line22 = wave1_freq/100 + 0x30; lcd_line23 = (wave1_freq%100)/10 + 0x30; lcd_line24 = wave1_freq%10 + 0x30; lcd_line211 = (50*wave_Awaveform)/100 + 0x30; lcd_line213 = (50*wave_Awaveform)%100)/10 + 0x30; lcd_line214 = (50*wave_Awaveform)%10 + 0x30; if(wa


    注意事项

    本文(简易信号发生器docx.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开