基于单片机的dds函数信号发生器毕业论文内容摘要:
平信号, 当这个电容上面的电量充满时高电平的信号将回落 ,即 RST 端的高电平信号保持的 时间 是由外部这个充电电容决定的。 另外,在复位期间,端口引脚处于随机状态,复位后,系统将端口置为全 “l” 态。 如果系统在上电时得不到有效的复位,则程序计数器 PC 将得不到一个合适的初值,因此, CPU 可能会从一个未被定义的位置开始 执行程序 ,此时会造成单片机在上电的瞬间出现不稳定的情况发生,所以为了能让单片机稳定的工作,必须提供必要的复位电路。 DDS输出设计 DDS 输出主要采用 DDS 控制芯片 AD9833。 AD9833 是一款低功耗、可编程波形发生器,可以产生正弦波、三角波、方波。 输出频率和相位可软件编程,很容易调整,而不需要外部组件。 频率寄存器是 28 位的,如果是 25M 的时钟源,经过编程可以得到 的时钟;同样如果是 1M 的时钟源,可以得到 的时钟。 AD9833 通过 3 线串口进行写操作。 串口 工作时钟频率高达 40M ,并与 DSP 和微处理器标准兼容。 其工作电压在 ~ 之间。 AD9833 还具有休眠功能,可使没被使用的部分休眠,减少该部分的电流损耗,例如,若利用 AD9833 输出作为时钟源,就可以让 DAC 休眠,以减小功耗,该电路采用 10 引脚 MSOP 型表面贴片封装,体积很小。 广西师范大学 2020 届本科生毕业论文(设计) 10 图 9 AD9833 引脚图 芯片简介 AD9833 是 ADI 公司生产的一款低功耗 ,可编程波形发生器 ,能够产生正弦波、三角波、方波输出。 波形发生器广泛应用于各种测量、激励和时域响应领域 ,AD9833无需外接元件 ,输出频率和相位都可通过软件编程 ,易于调节 ,频率寄存器是 28 位的 ,主频时钟为 25MHz时 ,精度为 ,主频时钟为 1MHz时 ,精度可以 [7]。 DDS 信号发生 器的组成 AD9833 是一块完全集成的 DDS( Direct Digital Frequency Synthesis)电路 ,仅需要 1 个外部参考时钟、 1 个低精度电阻器和一个解耦电容器就能产生高达 的正弦波。 除了产生射频信号外 ,该电路还广泛应外于各种调制解调方案。 这些方案全都用在数字领域 ,采用 DSP 技术能够把复杂的调制解调算法简化 ,而且很精确 [9]。 DDS 原理及应用 AD933 的核心是 28 位的相位累加器 ,它由加法器和相位寄存器组成 ,每来 1 个时钟 ,相位寄存器以步长增加 ,相位寄存器的输出与相位控制字相加后输入到正弦查询表地址中。 正弦查询表包含 1 个周期正弦波的数字幅度信息 ,每个地址对应正弦波中 0176。 - 360176。 范围内的 1 个相位点。 查询表把输入的地址相位信息映射成正弦波幅度的数字量信号 ,去 DAC 输出模拟量 ,相位寄存器每经过 228/M 个 MCLK广西师范大学 2020 届本科生毕业论文(设计) 11 时钟后回到初始状态 ,相应地正弦查询表经过一个循环回 到初始位置 ,这样就输出了一个正弦波。 输出正弦波频率为: fOUT= M( fMCLK/228) ( 1) 其中 ,M 为频率控制字 ,由外部编程给定 ,其范围为 0≤M≤228- 1。 VDD 引脚为 AD9833 的模拟部分和数字部分供电 ,供电电压为 -。 AD9833 内部数字电路工作电压为 ,其板上的电压调节器可以从 VDD 产生 稳定电压 ,注意:若 VDD 小于等于 ,引脚 CAP/ 应直接连接至VDD[10]。 数码管显示电路 图 14 数码管显示电路 数码管显示分析 显 示电路为四位数码管,用来显示实时波形的频率。 通过数码管上的显示,我们可以清楚的知道当前波形的频率,以及工作的状态。 并可以通过按键来调节广西师范大学 2020 届本科生毕业论文(设计) 12 实时的工作频率。 在实际的单片机系统中,往往需要多位显示。 动态显示应用非常广泛是一种最常见的多位显示方法。 用数码管显示测得的数据,数码管有 8 段而每段必需占用一个单片机的 IO口,所以一位数码管必须占个单片机 IO 口,本次设计采用 4 位数码管,则需要32 个 I/O 口,而 89C52 单片机的 I/O 口只有 32 个。 动态显示能够很好的解决数码管占用单片机 IO 口过多的问题。 所有数码管的段选 全部连接在一起,如何能显示不同的内容呢。 动态显示的原理是多位数码管,交替来进行显示,利用人的视觉暂留效果使人看到好像有多个数码管同时显示。 在编程时,要用单片机控制段选和位选,所谓的位选是选中其中一个数码管,然后利用单片机输出段码,需要显示的数字就能显示在这位数码管上了,延时一段时间后,再选中另一个数码管,再输出对应的段码,高速交替。 在动态显示程序中,各个位的延时时间长短是非常重要的,如果延时时间长,则会出现闪烁现象;如果延时时间太短,则会出现显示发暗且有重影。 静态驱动就是给单独每一个 LED 供电。 这样 每个 LED 都有足够的电流,亮度也相应的比较高。 动态扫描驱动就是把本来供给一个 LED 灯的电流,同时分给了 N 个灯,所以它的亮度会有所降低。 当然在同时供给两个 led 灯电流时不是平均的分配电流,而是 led 间扫描期间电流不断地交替,扫描的频率依据单片机的速度决定,也就是说各位的数码管上的电流在扫描频率内是供个其中一个led,在下一个扫描频率内是供给了另一个 led[12]。 若我们想让这个 4 位数码管的每段工作时的电流为 为正常工作时的电压取。 所以我们选取 100欧的限流电阻。 这样每个 LED 工作时的电流 约为 LED 能亮的同时不会被烧坏。 按键电路 图 214 为键盘接口电路的原理图,图中 按键在未按下时,通过一个电阻接到高电平,当按下时,按键导通。 连接单片机的 IO 口接地变成低电平。 当单片机检测到按键变为低电平时,进行频率的切换。 广西师范大学 2020 届本科生毕业论文(设计) 13 图 15 按键电路 3 软件设计 软件设计总流程图 开 始初 始 化加 载 数 据 到A D 9 8 3 3 寄 存 器是 否 到 1 0 S输 出 对 应 频率 和 波 形按 键 按 下下 一 频 率Y E SN OY E SN O 图 16 软件流程图 广西师范大学 2020 届本科生毕业论文(设计) 14 D9833 有一个标准串行接口,可以与一些微处理器直接连接,用外部串行时钟来往自身写数据和控制信息,串行时钟频率最高可达 40MHz,在写操作的过程中可能是连续的,也可能一直 保持高电平或低电平。 如果有数据 /控制信息写入 AD9833, FSYNC 在 16 位信息写进 AD9833 的过程中一直保持低电平。 FSYNC信号显示 16 位信息被写入 AD9833。 波形输出软件设计 当数据传输要到 AD9833 时, 置低电平。 80C51/80L51 8bit 字节形式传输数据,所以每次传输只需要 SCLK 下降沿。 为把数据写入 AD9833,第个 8bit数据传输完毕以后 依然要保持低电平,接着初始化下一个字节的的写操作。 结束后, 被置高电平。 在两次写操作的过程中, SCLK 必须一直保80C51/80L51 本来是以 LSB 在前的格式输出串行数据的。 但是 AD9833 首先接受的是 MSB(目标寄存器写时,首先 4 个 MSB 是控制信息,接下来 4 个是地址,8 个 LSB 才是数据)。 因此, 80C51/80L51 的传输例程必须考虑到这点,重新安排位序,让 MSB 先输出 方波产生软件设计 frequency_fun(500000,0x4000)。 //设定 reg0 为 500k frequency_fun(100000,0x8000)。 //设定 reg1 为 100k write_ad9833_d16(0x2020)。 //调用 reg0 频率数据,输出三角波 display_data[3]=10。 display_data[2]=5。 display_data[1]=0。 display_data[0]=0。 delay10s()。 write_ad9833_d16(0x2802)。 //reg1 display_data[3]=10。 display_data[2]=1。 display_data[1]=0。 display_data[0]=0。 delay10s()。 frequency_fun(50000,0x4000)。 //50k,reg0 frequency_fun(20200,0x8000)。 //20k,reg1 write_ad9833_d16(0x2020)。 //reg0 广西师范大学 2020 届本科生毕业论文(设计) 15 display_data[3]=10。 display_data[2]=10。 display_data[1]=5。 display_data[0]=0。 delay10s()。 write_ad9833_d16(0x2802)。 //reg1 display_data[3]=10。 display_data[2]=10。 display_data[1]=2。 display_data[0]=0。 delay10s()。 frequency_fun(10000,0x4000)。 //10k,reg0 frequency_fun(5000,0x8000)。 //5k,reg1 write_ad9833_d16(0x2020)。 //reg0 display_data[3]=10。 display_data[2]=10。 display_data[1]=1。 display_data[0]=0。 delay10s()。 write_ad9833_d16(0x2802)。 //reg1 display_data[3]=10。 display_data[2]=10。 display_data[1]=10。 display_data[0]=5。 delay10s()。 frequency_fun(2020,0x4000)。 //2k,reg0 frequency_fun(1000,0x8000)。 //1k,reg1 write_ad9833_d16(0x2020)。 //reg0 display_data[3]=10。 display_data[2]=10。 display_data[1]=10。 display_data[0]=2。 delay10s()。 write_ad9833_d16(0x2802)。 //reg1 display_data[3]=10。 display_data[2]=10。 display_data[1]=10。 display_data[0]=1。 delay10s()。 //输出方波波形 frequency_fun(1000000,0x4000)。 //500k,reg0 广西师范大学 2020 届本科生毕业论文(设计) 16 frequency_fun(202000,0x8000)。 //100k,reg1 write_ad9833_d16(0x2020)。 //reg0 display_data[3]=10。 display_data[2]=5。 display_data[1]=0。 display_data[0]=0。 delay10s()。 write_ad9833_d16(0x2820)。 //reg1 display_data[3]=10。 display_data[2]=1。 display_data[1]=0。 display_data[0]=0。 delay10s()。 frequency_fun(100000,0x4000)。 //50k,reg0 frequency_fun(40000,0x8000)。 //20k,reg1 write_ad9833_d16(0x2020)。 //reg0 display_data[3]=10。 display_data[2]=10。 display_data[1]=5。 display_data[0]=0。 delay10s()。 write_ad9833_d16(0x2820)。 //reg1 display_data[3]=10。 display_data[2]=10。 display_data[1]=2。 display_data[0]=0。 delay10s()。 frequency_fun(20200,0x4000)。 //10k,reg0 frequency_fun(10000,0x8000)。 //5k,reg1 write_ad9833_d16(0x2020)。 //reg0。基于单片机的dds函数信号发生器毕业论文
相关推荐
第 3 章 系统硬件电路图设计 8 图 STC89C52 引脚图 ( 3)引脚介绍: VCC :接电源 GND:接地 P0 口: P0 口是一个 8 位漏极开路的双向 I/O 口。 作为输出口,每位能驱动 8 个 TTL逻辑电平。 对 P0 端口写“ 1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时, P0 口也被作为低 8 位地址 /数据复用。 在这种模式下, P0 具有内部上拉电阻
如果 将 LED 点阵的行列端口全部直接接入 AT89C51单片机, 则需要使用 32条 I/O口,这样会造成 I/O资源的耗尽,系统也再无扩充的余地 ,因此,我在 设计 中 将 LED 点阵的 16条 行 线 与两片 74HC595 的并行输出端之间通过 的电阻连接 , 列 选扫描信号 由 416 线译码器 74HC154来选择控制,这样一来列选控制 和行选控制共 使用了单片机的 8个
;此 IC卡已读标志 .=00,说明此卡上数据已读走,否则未读 E2408 EQU 08H ;用户码存储单元(三字节) E240B EQU 0BH ; M1码存储单元(三字节) E240E EQU 0EH ;原读卡条件存储单元 E240F EQU 0FH ;年,月,日,时(各一字节) E2413 EQU 13H ; M2码存储单元(三字节) E2416 EQU 16H ;
成后, RST 脚输出 96 个晶振周期的高电平。 特殊寄存器AUXR(地址 8EH)上的 DISRTO 位可以使此功能无效。 DISRTO 默认状态下,复位高电平有效。 ALE/PROG:地址锁存控制信号( ALE)是访问外部程序存储器时,锁存低 8 位地址的输出脉冲。 在 flash 编程时,此引脚( PROG)也用作编程输入脉冲。 在一般情况下, ALE
eg_code: 09 数字的数码管 7 段码。 主程序和中断服务程序如图 315, 316 所示。 图 315 主程序的流程图 主程序开始初始化变量设置定时器 T 1 的参数扫描键盘按键弹起或按下。 按键是按下。 将当前的键值暂存( Key _ val _ ol d )频率数值增 1 、 算定时器溢出次数增 1 键 减 1 键频率数值增 1 、
两学一做 ” 学习教育打基础的工作,俗话说 “ 基础不牢、地动山摇 ” ,把党员组织关系排查清楚,把底数摸清楚就是最基础的事情,我们在座的各位不一定就对辖区的党员队伍情况就十分清楚。 大家要跳出思想误区,把这项工作紧紧抓在手上,集中人力精力,按照上级有关要求,把这项工作做实做细。 二是措施谋划不实。 部分单位抓党建工作的思路不明晰,着力点找得不够准,对新常态下党建 工作的重点措施不具体