登录
首页 » Others » AD9833驱动程序

AD9833驱动程序

于 2020-12-07 发布
0 390
下载积分: 1 下载次数: 1

代码说明:

AD9833的51单片机驱动程序,注释详尽,书写规范整洁。

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • 用yalmip工具包调用cplex求解电力系统机组组合
    基于matlab,用yalmip工具包调用cplex求解电力系统机组组合问题,程序可运行
    2020-11-28下载
    积分:1
  • 天入门STM32
    一天入门STM32 pdfC秉火《零死角玩转STM32》一F1系列时钟源To T钟电路FR和RAMROM定时/计数5系统总线又CPU并行Io口串行Io口中断系统P0p1P2 P3 TXD RXD I。I:图151系统结构框图我们说的51一般是指51系列的单片机,型号有很多,常见的有STC89C51、AT89S51,其中国内用的最多的是STC89C51/2,下面我们就以STC89C51来讲解,并以51简称。内核51由一个IP核和片上外设组成,IP核就是上图中的CPU,片上外设就是上图中的:时钟电路、SFR和RAM、ROM、定时/计数器、并行IO口、串行IO口、中断系统。IP核跟外设之间由系统总线连接,且是8bit的,速度有限51内核是上个世纪70年代 intel公司设计的,速度只有12M,外设是IC丿商(STC)在内核的基础上添加的,不同的IC厂商会在内核上添加不同的外设,从而设计出各具特色的单片机。这里 intel属于PP核厂商,STC属于IC厂商。我们后面要讲的STM32世样,ARM属于P核厂商,ARM给ST授权,ST公司在 Cortex-M3内核的基础上设计出STM32单片机。外设我们在学习51的时候,关于内核部分接触的比较少,使用的最多的是片上外设,我们在编程的时候操作的也就是这些外设。第3页共53页C秉火《零死角玩转STM32》一F1系列编程的时候操作的寄存器位于SFR和RAM这个部分,其中SFR(特殊功能寄存器)占有128字节(实际上只用了26个字节,只有26个寄存器,其他都属于保留区),RAM占有128字节,我们在程序中定义的变量就是放在RAM中。其中SFR和RAM在地址上是重合的,都是在80-FF这个地址区间,但在物理区间上是分开的,所以51的RAM是有256个字节编写好的程序是烧写到ROM区。剩下的外设都是我们非常熟悉的IO口,串∏、定时器、中断这几个外设STM32系统结构STM32系统结构框图接PashDCodeCortexM3SystemSFAMDMATDMAFSMCSDIO通道1套通道2AHB系线线桥接2桥接1APB 1APB2复位和时钟通道7控制DC2PIOD PWR SP1129DMA请求ADCsGFIOE BKPUSART1 GPioF bxCAN WDGSPlGPOG USETIM1RICExTIt2C2TIM2DMA212C1TIEUARTS TIM5GPc日UART& TIM4AHTa通道1USaRT TIM2通通通5AA请求图2STM32系统结构框图内核在系统结构上,STM32和51都属于单片机,都是由内核和片上外设组成。只是STM32使用的 Cortex-M3内核比51复杂得多,优秀得多,支持的外设也比51多得多,同时总线宽度也上升到32bit,无论速度、功耗、外设都强与51。第4页共53页C秉火《零死角玩转STM32》一F1系列从结构框图上看,对比5内核只有一种总线,取指和取数共用。 Cortex-M3内部有若干个总线接∏,以使CM3能同时取址和访内(访问内存),它们是:指令存储区总线(两条)、系统总线、私有外设总线。有两条代码存储区总线负责对代码存储区(即 FLASH外设)的访问,分别是 I-Code总线和 D-Code总线。I-Code用于取指, D-Code用于查表等操作,它们按最佳执行速度进行优化。系统总线( System)用J访问内存和外设,覆盖的区域包括SRAM,片上外设,片外RAM,片夕扩展设备,以及系统级存储区的部分空间。私有外设总线负责一部分私有外设的访问,主要就是访问调试组件。它们也在系统级存储区。还有一个MDA总线,从字面上看,DMA是 data memory access的意思,是一种连接内核和外设的桥梁,它可以访问外设、内存,传输不受CPU的控制,并且是双向通信。简而言之,这个家伙就是一个速度很快的且不受老大控制的数据般运工,这个在51里面是没有的外设从结构框图上看,STM32比51的外设多得多,51有的串口、定时器、O口等外设STM32都有。STM32还多了很多特色外设:如FSMC、SDIO、SPI、2C等,这些外设按照速度的不同,分别挂载到AHB、APB2、APB1这三条总线上。小结从内核和外设这两大方面米比较,SIM32之于51就是一个升级版的单片机。它适应市场,引流淛流,在中低端的微控制器中流光溢彩。12学习方法的区别学习51用寄存器,学习STM32用库。以前我们在学习51的时候,用的是寄存器编程的方法,想要实现什么效果,直接往寄存器里面赋值,优点是直观,简单粗暴,知道自己具体干了啥,心里踏实直接操作寄存器之所以在51上可行,究其原因,我想有两点:1、51主频不高,资源有限,必须注重程序执行的效率,只能直接操作寄存器。关键的地方还得用汇编,不适合用同件库。第5页共53页C秉火《零死角玩转STM32》一F1系列要知道当初我们学习51单片机的时候用的还是汇编,连现在的C编程都不是,就更别说什么斥函数编程2、51功能简单,寄存器不多。以国内普及最广的STC89C52为例,寄存器仝部加起来不到30个。按照功能区分来记的话,可以把每个寄存器背的滚瓜烂熟,并且寄存器每一位的功能都可以记得住,在编程的时候做到了然于胸。现在从51过度到STM32的学习,很多人还是喜欢沿用51的学习方法。接受不了库,在学习库的时候陷入迷糊之中,来回几个月下来,都不知道到底有没学会STM32,因为在这一路的学习中都是在调用库函数,压根就没有操作过寄存器,心里面很不踏实。其实大家在调用库函数的时候心中难道就没有疑问,库的底层是怎么实现的?难道就没有勇气对庥的底层探究竟。可最后当我们丌始跟踪斥函数底层的时候,看到·堆的宏定义、结构体、指针、各种的文件包含,而且注释全部都是荚文的,是不是乂心生忌惮。鉴于此,我想用两个原因来总结下很多初学者畏惧库不愿意用库的原因。1、C语言知识点的欠缺库在实现寄存器映像时使用的宏定义,强制类型转换,在定义寄存器时使用的结构体,在外设初始化函数时使用的指针,在组织头文件时使用的条件编译等C语言知识,在大学课程中很少涉及,大多数老师也基本是不讲。在一些简单的51单片机编程中又很少会用到这些知识。学单片机,做嵌入式开发其实80%的工作都跟C语言编程相关,剩下的20%的匚作就是阅读各种数据手册,熟悉各和硬件外设。所以掌握这些基本的C语言知识,是嵌入式学习中一道迈不过去的坎,STM32的库则给」我们一次提升C的机会凡是可以从书本中找到的,相信我们基本都可以学会,很多初学者并不是不够聪明或者勤奋,只是缺少方向性的指导罢了。对于这欠缺的知识点我们稍微花点时间就可以掌握,剩下的就是不断地实践词试。这里我为大家推荐·本C语言的书籍《C和指针》。2、程序架构设计思想的欠缺这个比较难搞,很多C语言学习得挺好好的人,也比较难掌握。还好我们遇到了SIM32的库,这给了我们一个学习和提升C语言绝佳的机会。库的整个架构是如何搭建起来的,代码上是如何如何一步一步写出来的:从寄存器映像开始,到寄存器的封装,然后到函数的编写,到每个外设函数对应的驱动文件,这里面涉及到了大量的条件编译,文件包含的思想,对应刚写过几行51单片机的初学者来说简直就是噩梦。但是,如果你把这系列的关系弄明自了,那么对库的整个架构也了解的差不多了,以后你就不用嚷嚷着说要操作奇存器了。如果你一开始不喜欢用库,对库开发很忌惮,那么请自问:是不是我的C语学得不够好。库是一种全新的学习方法,是一种河流,我更把它看做是与C语言的又一次历练和提升。是否用库,只差你一个闪亮的回眸第6页共53页C秉火《零死角玩转STM32》一F1系列1.3用寄存器点亮LED为了顺利过渡到库开发,在STM32编程的开始,我们对照51点亮一个LED的方法,给大家演示一下STM32如何用操作寄存器的方法点亮一个IFD,然后再慢慢讲解到底什么是库,让大家知道库跟寄存器的关系1.3.1用51点亮一个LED在用STM32点亮一个LED之前,我们先来复习下用5如何点亮一个LED。硬件上我们假设51单片札的P0口的第0位接了一个LED,负逻辑亮。如果我们要点亮这个LED,代码上我们会这么写1P0=0XFF;//总线操作点亮FD这时侯我们就把LED点亮了,如果要关掉LED,则是:1P0=0xFF;//总线操作关闭二ED这里面我们用的是总线操作的方法,即是对P0口的8个1O同时操作,但起作用的只是P0^0除了这种总线操作的方法,我们还学习过位操作,利用51编译器的关键字sbit,我们可以定义个位变量1sbit工E0^0那么LED=0;就点亮了LED,LED=1;就关闭了LED。为了让程序看起来见名知义,我们定义两个宏:1 #define on 02 define OfF 1点亮和关闭LED的代码就变成了:1 LED//位操作点亮IED2 LED= OFF//位操作关闭LD稍微整理下代码,整体的效果就是:1//假设51单片机的P0~0口接TFD,负逻辑点亮3 #define ON 04 definc Ofe 16 sbit lEd poo8 void main(void)第7页共53页C秉火《零死角玩转STM32》一F1系列9{10PO OXFE;/总线操作点亮0=0XE彐//总线操作关闭LED13工ED=ON;//位操作点亮LED14LED=OF彐;/位操作关闭LED15」上血总线和位操作的的方法,学过51的朋友是非常熟悉的,也很容易理解。那么我们再说一下大家容易忽略的几个知识点。什么是寄存器在点亮LED的时候,我们都是用操作寄存器的方法来实现的,那大家是否想过,这个寄存器到底是什么?为什么我们可以直接操作P0口?解答上面的问题之前,我们先简单介绍下51单片机的主要组成部分,这对我们学习其他单片机也有好处。我们以国内的STC89C51为例,该单片机主要由51内核、外设IP、和总线这三人部分组成。内核是由 Intel公司生产的,外设P就是STC公司在内核的基础上添加的诸如定时器、串口、IO凵等这些东西,总线就是用米连接內核和外设的接凵单元。 Intel在这里属于IP核设计公司,STC属」I设计公司。世界上能设计IP核的公司屈指可数。我们非常熟悉的ARM公司就属于IP核设计公司,ARM给其他公司授权,其他IC公司就在ARM内核上设计出各具特色的MCU,我们后面要学习的STM32就是属于一中基于ARM内核的MCU。寄存器则是内置于各个IP外设中,是一种用于配置外设功能的存储器,就是一种内存,并且有想对应的地址。学过C语言我们就知道,要操作这些内存就可以使用C语言中的指针,通过寻址的方式来操作这些具有特殊功能的内存一寄存器。比如P0口对应的地址是0X80,那么我们要修改0X80这个地址对应的内存的内容的话,按照常理可以这样操作1*(+0X80)=0XEE;点亮LED可当我们编译的吋候,编译器会报错,在51里面只能通过SFR和SBIT这两个关键字来实现寄存器映像,不能直接操作寄存器对应的地址,这是51相较于STM32不同的地万51单片机的这些寄存器位于地址80H~HFH中,对应着128个地址,但不是每个地址都是有效的,51系列的单片机有21个,52系列的则有26个,其他的都是保留区第8页共53页C秉火《零死角玩转STM32》一F1系列表2AT89c52SFR映象及复位状态OFBDEFHDFOHo00000DFTHOE8H0D000000DETH00000003DOTHOC8H0000000)XXXXXXODDCFHx00000037HEDAFH0粪0H11111111DATHSCON98H00000002SBUF9FHP1111111197HTCON88H0000000)TMODTLOTL100000000000000000000000000000000000BFHSPDPHPCON80H1DPLco111OXXX0000图351寄存器映射2.寄存器映射实际上我们在编程的吋侯并不是通过指针来操作奇存器的,而是直接给PO、Pl这些端口寄存器赋值。那么这些外设资源是如何与地址建立一一对应的关系(寄存器映射定义),这得益与51特有的两个关键字:SFR和sbit,其但单片机没有,只能用其他的方式来实现寄存器映射。这两个关健字帮我们实现了所有寄存器的定义,所以我们才可以像操作普通变量一个米操作寄存器。其实我们一开始提到的点亮LED的代码,全貌应该是这样的:1 sfr pocx80;//寄存器定义2P0=0ⅩFE;/总线操作点亮LED为了方便起见,我们可以扣奇存器映射全部写好封装在个头文件里面,不用每用个寄存器就定义一次。其实这方面的工作不用我们做,我们在编程的时候都会在开始的地方添加一个头文件1 include 第9页共53页C秉火《零死角玩转STM32》一F1系列这个头文件已经实现了全部寄存器的定义,该文件是kei自带,在安装目录:KeiC5IINC可以找到。这个文件实现了字节寄存器和位寄存器的定义2 REG514 Header file for generic 80C51 and 80C31 microcontroller5 Copyright (c)-988-2002 Keil ELektronik GIbH and Kei- Software, Inc6 All rights reserved.9 +ifdef REG5- H10#define RFG5. H1112/* BYTF, Reci ster *13sfr0=x80;1456PEE2×90sfrCaO;13BO17 sfr PSWRDO18 sfr AccCeO:901strBsExFO;12222x8-;3 sIr PCoN24 sr icon Cx8825 sfr TMOD Cx89:sfr TloxiA2222367890sfr TCx8Bfr TCx8Cifr Ti18D831 sfr t2×B832 sfr sLHHEPCB9833 sfr sbuf993436/* BIT Register37/+PSW*/38 sbit CYOxD39 sbit ACOxD640 sbit Fo41 sbit rs0xD4;43 sbit ov44 sbit P=0×D0;4546/*TCON*/47 sbit TF0x8F;48 sbit TR0x8E;49 sbit TFo0x8D:50 sbit mro0x8C51 sbit IE-= 0x8B;53 sbit Ieo0x894 shit tto08856/+IE57 sbit eA0×AF58 sbit fs0×AC59 sbit er0×AB;60 sbit EX0×AA61 sbit ero0x90×A8第10页共53页
    2020-12-08下载
    积分:1
  • Winform中使用CefSharp和js互相调用方法
    Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法,Winform中使用CefSharp和js互相调用方法vs2019.debug目录下有cef所需要的文件,在其他项目里可以直接拷贝过去
    2020-11-29下载
    积分:1
  • 山推压路机AMSEM仿真
    【实例简介】SR12压路机液压系统 建模与仿真研究报告 目录 1 SR12压路机液压系统概述 4 1.1 SR12压路机液压系统的分类 4 1.2 SR12压路机振动液压系统 6 1.2.1压路机振动对液压系统的要求 6 1.2.2 阀控开式液压系统 6 1.3  SR12压路机转向液压系统 8 1.4  SR12压路机行走液压系统 8 2 AMEsim软件介绍 10 2.1 AMEsim是什么 10 2.2 AMEsim的特点 12 2.3 AMEsim的应用 14 3 SR12压路机振动液压系统动力元件模型的建立 15 3.1发动机 15 3.2液压泵 15 4 SR12压路机液压系统执行元件模型的建立 16 4.1液压马达 16 4.2液压缸 16 5 SR12压路机液压系统控制元件模型的建立 17 5.1方向控制阀 17 5.1.1换向主阀 17 5.1.2换向先导阀 18 5.1.3 电液换向阀 19 5.1.4 热交换阀 20 5.1.5单向阀 20 5.2压力控制阀 21 5.2.1溢流阀 21 5.2.2缓冲补油阀 21 5.3流量控制阀 21 5.3.1节流阀 21 6 辅助元件 23 6.1 液压油箱 23 6.2 冷却器 23 6.3 过滤器 23 6.4管道 24 6.5 蓄能器 24 7工作介质 25 8信号源 28 9 振动液压系统元件模型的参数设置 29 10对振动液压系统的外载荷分析 34 11振动液压系统模型与运行结果分析 36 11.1振动液压系统模型 36 11.2模型的运行 36 11.3 对运行结果进行分析 37 11.4对系统的改进 44 11.4.1改进方案 44 11.4.2改进后系统的原理图及模型 44 11.4.3对改进后的模型进行分析 46 12对行走工况的分析 54 12.1行走液压系统模型 54 12.2行走液压系统模型的参数设定 54 12.3模型的运行 56 12.4结果分析 57 13行走振动工况分析 61 13.1系统模型 61 13.2模型参数设置 63 13.3对模型的分析 64 14分析结论 66
    2021-11-19 00:39:50下载
    积分:1
  • 在线抽奖系统网页源码JS
    在线抽奖系统网页源码JS可以修改次数,设置中奖物品
    2020-12-02下载
    积分:1
  • 24脉波整流matlab仿真
    使用matlab中的simulink模块搭建24脉波整流的仿真程序
    2020-06-29下载
    积分:1
  • spss插件 process
    spss插件 process 下载后解压到一个大度的文件夹里 照着安装步骤安装即可
    2020-12-11下载
    积分:1
  • 时隙 Aloha 及伪贝叶斯算法性能仿真
    设一个时隙 Aloha 系统的时隙长度为 1,所有节点的数据包均等长且等于时隙长度。网络中的节点数为 m,各节点数据包以泊松过程到达。 1 假定每个节点的数据包到达强度均为 λ /m,在不同的 λ 下,仿真时隙Aloha 数据包传送的成功概率,绘制呼入强度和成功概率的曲线,和理论结果进行对照。 仿真思路: 1) 生成一个二项分布列来模拟数据包的到达过程 2) 因为数据包以泊松过程到达,所以二项分布的 P 定为(1- m eλ− ) 3) 对生成的数列求和,只有当其和恰等于 1 即有且仅有一个数据包到达时,才可以成功发送,这时成功个数计数+1 4) 2.选取合理的引,,qa,m,采用延时的下界,仿真时隙Aoha系统数据传输过程,统计在不冋同η下,到达率及离开率,绘制它们随n的分布情况,和理论值进行对照qn:等待重传的节点在每一时隙内重传数据包的概率qa:每个发送节点有新数据包到达的概率m:系统内总的节点数n:每个时隙开始时等待重传的节点数仿真思路:1)用二项分布模拟数据包的到达及发送过程2)生成两个数列:一个表示等待重传的节点以q,重传的情况;一个表示新到达的数据包情况因为题日说明采用延时的下界,即不缓冲,每个节点最多容纳一个数据包,有包则扔。所以第一个数列前n项令为1,后一个前n项令为0,之后两个数列可以进行简单加和3)发送成功率:对两个数列相加之后求和,如果sum等于1,说明此时隙内到达和发送的总数为1,只有在这种情况下发送才有可能成功,计数加1到达率:在每N次实验中,对“表示到达的数列”求和,统计4)对n做循环以表示到达率和离开率随n的变化情况;每个n下进行N次实验,数理统计3/8仿真结果0.40.35*0.30.250.20.150.10.0550607080901001/曲线为理论曲线:Ps=G exp(-G)and G=(m-n)a+n gr2/仿真值基木与理论曲线吻合在仿真的过程中,合理选取个参数值对能否得到埋想的曲线起了重要的作用下图分别为qr=0.02,0.05,0.08s时的曲线。可以看到,随着qr的增加,曲线向左移,导致第二个交叉点也左移,这个时候重传的延时将会减小。反之,曲线右移。当q,增加到一定程度的时候,系统只有一个稳定点了。4/840.350.30.20.1501020304050607080901c03仿真时隙Aoha系统下的伪贝叶斯算法,通过仿真结果眼正在n的估计误差较大的情况下的收敛特性及到达率小于1/e下的稳定性。仿真思路:1、伪贝叶斯算法的主要思路是对新数据包和积压节点等同对待:当有新数据包到达的时候,暂不发送,下一时刻与以前的积压节点一起以4r发送。所以修改2中的仿真模型:1)依旧是一列表到达,一列表上一时隙的积压节点2)对两列加和,统计其中为1的个数,设为d3)以qr为概率,d为长度,生成又一个二项分布数列 depart,表示发送的情况4)对depa求和,如果 depart的和为一,说明恰发送成功,n(k+1)=d-1,否则n(k+1)=n(k)5)循环,进行数理统计2、仿真收敛特性和稳定特性哩论值:根据给岀的伪贝叶斯算法的具体步骤,由给出的n(k),不断模拟生成n(k+1)5/8仿真值:由仿真模型及给出的n(k),生成n(k+1)观察两种方式得到曲线的走向3、给出不同的值,观察n(k+1)随时间变化的情况判断标准如果要保持系统的稳定,至少n(k+1)应该保持在一个恒定的状态,或者逐渐趋于零。如果n(k+1)不断增加,则系统最终将趋于饱和,无法再接纳新的数据包,此时系统不稳定。仿真结果:1、验证在n的佔计误差较大的情况下的收敛特性:1)n=170;估计nt=20;m=100:20.2:N=100016030040050060070080g001CC08002)n=50;估计nt=180;m=1000=-1-02:N=80结果说明可以看出,当估计值与系统本身的积压数据包数有很大差别的时候,无论是大还是小,最终都可以趋于实际值,从而收敛特性得到验证。1)同时可以看到,改变的值:当λ增大的时候,收敛地更快;2)当n不变的时候,改变m的值,如果n/m变大,那么发生碰撞的几率就变大,也会导致估计的n值更快地趋向理论n值这些都是于课堂分析的理论情况相吻合的6/82、验证系统的稳定性下图分别为A=02:=10.1:=1:4=1+02:=0.3时候的情况。可以看到,当λ
    2020-12-09下载
    积分:1
  • C#URController V1.7外国六自由度机器人上位机
    C#URController V1.7外国六自由度机器人上位机,一个完整的C#控制机械手,工控项目,很值得下载,绝对值
    2020-06-23下载
    积分:1
  • 图形交互系统设计
    此系统设计是用vc编写 实现了点、直线、折线、圆、椭圆、矩形的绘制、保存等相应的功能
    2020-11-05下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载