虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

等长设置

  • 基于单片机和FPGA的扫频仪设计

    以89S52单片机和FPGA为控制核心,设计了一个测试四端网络幅频特性和相频特性的扫频仪。系统功能分为扫频信号产生、幅频特性测试、相频特性测试等模块;而操作部分包括矩阵键盘、点阵式液晶显示器、波形显示电路。系统可以测量未知网络特定频率点的频率特性,此外,用户还可以通过键盘设置扫频信号的上下限,并利用示波器精确的显示幅频、相频曲线。

    标签: FPGA 单片机 扫频仪

    上传时间: 2013-11-15

    上传用户:lingfei

  • C语言的标识符和关键字

    标识符是用来标识源程序中某个对象的名字的.这些对象可以是语句、数据类型、函数、变量、常量、数组等。一个标识符由字符串、数字和下划线等组成.第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的.因此在编写c语言源程序时一般不要使用以下划线开头的标识符.而将下划线用作分段符。C51编译器规定标识符最长可达255个字符.但只有前面32个字符在编译时有效.因此在编写源程序时标识符的长度不要超过32个字符.这对于一般应用程序来说已经足够了c语言是大小字敏感的一种高级语言,如果我们要定义一个时间。秒”标识符.可以写做“sec”.如果程序中有“SEC”.那么这两个是完全不同定义的标识符。

    标签: C语言 标识符

    上传时间: 2013-11-01

    上传用户:1595690

  • 基于PIC24F处理器的虚拟仪器

    将汽车控制器线束接入该测试仪器,做好汽车控制信号与仪器端口的一一对应。然后通过上位机的参数设置(试验次数和间隔周期等参数),到这里我们就可以点击开始测试按钮,进行测试试验。 系统功能描述它具有32路TTL数字信号测量,8路模拟信号测量,40个5V双刀双掷继电器的自诊断控制,通过USB总线与计算机进行数据传输和受控制指令的传输,将和测试数据上传,由上位计算机对数据进行分析、统计和存储,内部实时时钟指示,还可通过RS485进行远程数据上传。工作原理是,系统上电后,固件开始运行,通过初始化和自检程序后进入菜单选择界面,按照使用目的进入对应菜单进行操作。

    标签: PIC 24F 24 处理器

    上传时间: 2013-11-07

    上传用户:RQB123

  • 基于单片机的AFM纳米机械性能测试系统

    摘要:为解决采用原子力显微镜(AFM)系统进行纳米机械性能测试中存在的不能够直接获得载荷?压深曲线以及不能够随意改变加载、保载、卸载时间等问题,对AFM系统进行了改造,开发了一套基于单片机的信号输入输出模块。将该模块与AFM控制系统相联,形成新的纳米机械性能测试系统。该系统信号输出精度为0.15mV,信号采集精度为0.3mV,工作台的移动灵敏度为1.53nm,可以动态改变垂直载荷,并实时获得载荷?压深曲线。通过单片机设置模拟信号的输出速率可以实现加载、保载和卸载速率的改变;结合二维微动精密工作台,可以实现较大范围内高精度的点阵压痕测试。通过在聚碳酸酯、聚二甲基硅氧烷等材料表面进行实验测试表明:该系统可以高速高精度地测量样品的纳米机械性能参数,包括对样品进行纳米压痕测试和对样品的纯弹性变形过程进行检测,如聚二甲基硅氧烷或者各种微梁等微小构件。关 键 词:原子力显微镜(AFM);单片机;纳米机械性能;载荷-压深曲线

    标签: AFM 单片机 纳米机械 性能测试

    上传时间: 2013-10-18

    上传用户:a296386173

  • AVR JTAG AVR仿真器

    AVR JTAG是与Atmel公司的AVR Studio相配合的一套完整的基于JTAG接口的片上调试工具,支持所有AVR的8位RISC指令的带JTAG口的微处理器。JTAG接口是一个4线的符合IEEE 1149.1标准的测试接入端口(TAP)控制器。IEEE的标准提供一种行之有效的电路板连接性测试的标准方法(边界扫描)。 Atmel的AVR器件已经扩展了支持完全编程和片上调试的功能。  AVR JTAG仿真器用来进行芯片硬件仿真,如程序单步执行、设置断点等,通过硬件仿真可以了解芯片里面程序的详细运行情况。AVR JTAG仿真器主要用来对芯片进行仿真操作,同时也可以通过JTAG接口对芯片编程(将程序写入芯片)。

    标签: AVR JTAG 仿真器

    上传时间: 2013-12-26

    上传用户:wweqas

  • AVR 单片机和C语言的集成开发环境

    AVR 单片机和C语言的集成开发环境 ICCAVR编译器简介 ICCAVR是一个综合了编辑器和工程管理器的集成开发环境(IDE),是一个纯32位的程序,可在Windows 95/98/ME/NT/2000/XP下运行。Ø 源文件全部被组织在工程之中,文件的编辑和工程的构筑也在IDE的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到编辑窗口中引起错误的那一行。同时这个工程管理器还能直接产生INTEL HEX格式的烧录文件和用于AVR Studio调试的COFF格式的文件。Ø ICCAVR是一个32位的程序,支持长文件名。Ø ICCAVR提供了全部的库源代码及一些简单的应用实例供初学者参考,特别是提供库源代码,对于用户理解库函数的参数及返回值等是非常有益的,并且用户能够根据库源代码对ICCAVR提供的库函数进行剪裁和扩充

    标签: AVR 单片机 C语言 集成开发环境

    上传时间: 2013-10-30

    上传用户:pkkkkp

  • 常用三星单片机烧写电压设置参考表

    常用三星单片机烧写电压设置参考表 烧写电压说明:Vdd 电压指烧写时加载到芯片Vdd 端子的逻辑电压,Vpp 电压指烧写时加载到芯片Vpp(Test)端子的编程电压, Vpp=12V 是编程器的默认烧写电压,无须特别设置. 由于编程器的默认输出Vpp 电压均为12V,因此在烧写Vpp=3.3V/5.0V 的芯片时,需要对烧写转换适配器作以下改动:将烧写器烧写座引出的Vpp 端子完全空置不用, 并在适配器上将Vdd端子直接连接Vpp 端即可.当用户采用在PCB板上烧写方式时,建议最好能在PCB芯片端的Vpp脚并接一个104 的电容入地,可有效保护在烧写电压加载时板子电路共同作用产生的瞬间过压脉冲不会输入到Vpp 脚而造成Vpp 击穿.S3F84K4 烧写特别说明,由于三星半导体DATA SHEET 要求在对该芯片进行烧写时,须在Vpp 脚加接一个101 的电容到地,因此在使用我站各款烧写器烧写84K4 时,须将烧写器主板上的Vpp 端原来并接的10uf/50V-电解电容和104 电容去掉,另行并接一个101 电容入地即可.不过,据本人特别测试结果,其实不做以上处理对烧写过程没有任何影响, 估计可能是三星半导体对芯片有做过改版,老版本的84K4 才会有以上特别要求,新版本是没有这个要求的.

    标签: 三星 单片机 烧写 电压设置

    上传时间: 2013-10-10

    上传用户:wcl168881111111

  • PIC16F877 单片机的键盘和LED 数码显示接口

    PIC16F877 单片机的键盘和LED 数码显示接口 1 PIC16F877单片机与键盘和LED数码显示的硬件接口电路单片机的许多应用都需要进行人机对话,最简单的人机对话需要LED 数码管显示数字和少量字符;键盘是解决计算机输入的简单手段;借此可以向计算机输入程序、置数、送操作命令、控制程序的执行等等,所以使用非常广泛。图1 键盘、LED数码显示与PIC16F877 单片机的接口电路本例中采用8 个按键组成的小键盘,4 只共阴极的LED 数码管,采用4 片74LS373 驱动数码管,采用的驱动方法是静态方式。使用1 片74LS245 作为键盘的接口;这些外围器件与PIC16F877 单片机的接口电路如图1 所示,这种连接方法与51 系列的单片机连接方法一样,其他的连接方法还有好几种,PIC16F877 单片机的键盘输入接法还有其他特殊而十分方便好用的方式。8 键键盘通过74LS245 与单片机相连,键盘按键状态的数据输入由RC3 输出脚控制;当RC3=“0”时,键盘状态从74LS245 的A 端输出到单片机的PORTB口,此时读PORTB口的数据即为键盘状态。为了及时地响应键盘操作,需要经常对键盘进行扫描;扫描的方式有许多种,我们将键盘的扫描程序安排在主程序的循环执行过程中的方式,并采用20ms延迟来消除按键的抖动问题,此外,为了实现每按键一次只响应一次的功能,在执行相应的按键程序之前,必须确保按键已经松开;在本例中这一措施有效的防止了数据抖动过快的问题。LED 数码显示有动态扫描和静态显示两种方式(图1 采取的方式为静态方式),在动态扫描方式中,各数码显示是轮流点亮的,即控制数码显示的位选信号和相应的要显示的数码的字形代码同时逐一送出,反复不已,由于视觉的暂留现象,却好象全都点亮着,这种电路的接法以后再介绍。在静态方式中,只要将数据送出锁存以后,各数码显示的数据不需要刷新,只要数据不需改变,就可以不去管他,所以称为静态显示。在图1 电路中,输出显示的操作简化为对74LS373 的并口操作而已。由于静态方式的工作原理比较简单,编程也比较直观简单,程序间的相互关联很少。因此编程容易,但要增加硬件,成本较高;与之相比,动态扫描的编程虽然要复杂一些,但因其所用硬件少,成本低。由数码转化为字形代码可采用软件译码、硬件译码等两种方式。软件译码是将各数码的字形代码构成一个表格存储于内存之中,在显示数码时,通过执行查表程序而得到相应的字形代码,再将之送入数码显示输出电路进行显示,本例即采用这种方式,这种方式的编程与单片机有关,在程序中给出了PIC16F877 的编程例程,对需要熟悉PIC16F877 单片机的人员有一定的参考价值。硬件译码则采用CD4511、74LS46、74LS47、74LS48、74LS49等BCD 码—7段锁存、译码、驱动芯片直接译出字形代码,点亮LED。74LS373 由LE 端对要显示的数据进行锁存控制,实现LED 的静态显示。采用了PIC16F877 的端口输出操作,模拟74LS373 的数据锁存时序,即由软件实现数据锁存,这种方法可以十分容易的改变时序和延迟长短,使高速设备可以与低速设备联系配合好,设计简单方便,不好的地方是编程较长和稍微复杂一点。这种编程方法在下面的程序中有很好的体现。

    标签: F877 PIC 16F 877

    上传时间: 2013-10-29

    上传用户:cuiyashuo

  • 单片机串行通信发射机

    单片机串行通信发射机 我所做的单片机串行通信发射机主要在实验室完成,参考有关的书籍和资料,个人完成电路的设计、焊接、检查、调试,再根据自己的硬件和通信协议用汇编语言编写发射和显示程序,然后加电调试,最终达到准确无误的发射和显示。在这过程中需要选择适当的元件,合理的电路图扎实的焊接技术,基本的故障排除和纠正能力,会使用基本的仪器对硬件进行调试,会熟练的运用汇编语言编写程序,会用相关的软件对自己的程序进行翻译,并烧进芯片中,要与对方接收机统一通信协议,要耐心的反复检查、修改和调试,直到达到预期目的。单片机串行通信发射机采用串行工作方式,发射并显示两位数字信息,既显示00-99,使数据能够在不同地方传递。硬件部分主要分两大块,由AT89C51和多个按键组成的控制模块,包括时钟电路、控制信号电路,时钟采用6MHZ晶振和30pF的电容来组成内部时钟方式,控制信号用手动开关来控制,P1口来控制,P2、P3口产生信号并通过共阳极数码管来显示,软件采用汇编语言来编写,发射程序在通信协议一致的情况下完成数据的发射,同时显示程序对发射的数据加以显示。毕业设计的目的是了解基本电路设计的流程,丰富自己的知识和理论,巩固所学的知识,提高自己的动手能力和实验能力,从而具备一定的设计能力。我做得的毕业设计注重于对单片机串行发射的理论的理解,明白发射机的工作原理,以便以后单片机领域的开发和研制打下基础,提高自己的设计能力,培养创新能力,丰富自己的知识理论,做到理论和实际结合。本课题的重要意义还在于能在进一步层次了解单片机的工作原理,内部结构和工作状态。理解单片机的接口技术,中断技术,存储方式,时钟方式和控制方式,这样才能更好的利用单片机来做有效的设计。我的毕业设计分为两个部分,硬件部分和软件部分。硬件部分介绍:单片机串行通信发射机电路的设计,单片机AT89C51的功能和其在电路的作用。介绍了AT89C51的管脚结构和每个管脚的作用及各自的连接方法。AT89C51 与MCS-51 兼容,4K字节可编程闪烁存储器,寿命:1000次可擦,数据保存10年,全静态工作:0HZ-24HZ,三级程序存储器锁定,128*8 位内部RAM,32 跟可编程I/O 线,两个16 位定时/计数器,5 个中断源,5 个可编程串行通道,低功耗的闲置和掉电模式,片内震荡和时钟电路,P0和P1 可作为串行输入口,P3口因为其管脚有特殊功能,可连接其他电路。例如P3.0RXD 作为串行输出口,其中时钟电路采用内时钟工作方式,控制信号采用手动控制。数据的传输方式分为单工、半双工、全双工和多工工作方式;串行通信有两种形式,异步和同步通信。介绍了串行串行口控制寄存器,电源管理寄存器PCON,中断允许寄存器IE,还介绍了数码显示管的工作方式、组成,共阳极和共阴极数码显示管的电路组成,有动态和静态显示两种方式,说明了不同显示方法与单片机的连接。再后来还介绍了硬件的焊接过程,及在焊接时遇到的问题和应该注意的方面。硬件焊接好后的检查电路、不装芯片上电检查及上电装芯片检查。软件部分:在了解电路设计原理后,根据原理和目的画出电路流程图,列出数码显示的断码表,计算波特率,设置串行口,在与接受机设置相同的通信协议的基础上编写显示和发射程序。编写完程序还要进行编译,这就必须会使用编译软件。介绍了编译软件的使用和使用过程中遇到的问题,及在编译后烧入芯片使用的软件PLDA,后来的加电调试,及遇到的问题,在没问题后与接受机连接,发射数据,直到对方准确接收到。在软件调试过程中将详细介绍调试遇到的问题,例如:通信协议是否相同,数码管是否与芯片连接对应,计数器是否开始计数等。

    标签: 单片机 串行通信 发射机

    上传时间: 2013-10-19

    上传用户:uuuuuuu

  • at91rm9200启动过程教程

    at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤: 1、PLL SETUP,设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率; 2、相应模式下的堆栈设置; 3、检测主时钟源(Main oscillator); 4、中断控制器(AIC)的设置; 5、C 变量的初始化; 6、跳到主函数。 完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,AT91RM9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则AT91RM9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前AT91RM9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。总的说来,笔者以为AT91RM9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。 uboot结构与使用uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以 http://sourceforge.net/projects/u-boot下载 在9200上,为了启动uboot,还有两个boot软件包,分别是loader和boot。分别完成从sram和flash中的一级boot。其源码可以从atmel的官方网站下载。 我们知道,当9200系统上电后,如果bms为高电平,则系统从片内rom启动,这时rom中固化的boot程序初始化了debug口并向其发送'c',这时我们打开超级终端会看到ccccc...。这说明系统已经启动,同时xmodem协议已经启动,用户可以通过超级终端下载用户的bootloader。作为第一步,我们下载loader.bin.loader.bin将被下载到片内的sram中。这个loder完成的功能主要是初始化时钟,sdram和xmodem协议,为下载和启动uboot做准备。当下载了loader.bin后,超级终端会继续打印:ccccc....。这时我们就可以下在uboot了。uboot将被下载到sdram中的一个地址后并把pc指针调到此处开始执行uboot。接着我们就可以在终端上看到uboot的shell启动了,提示符uboot>,用户可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了对内存、flash、网络、系统启动等一些命令。 如果系统上电时bms为低电平,则系统从片外的flash启动。为了从片外的flash启动uboot,我们必须把boot.bin放到0x0地址出,使得从flash启动后首先执行boot.bin,而要少些boot.bin,就要先完成上面我们讲的那些步骤,首先开始从片内rom启动uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz烧写到flash中的目的,假如我们已经启动了uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动boot,然后解压缩uboot.gz,然后启动uboot。注意,这里uboot必须压缩成.gz文件,否则会出错。 怎么编译这三个源码包呢,首先要建立一个arm的交叉编译环境,关于如何建立,此处不予说明。建立好了以后,分别解压源码包,然后修改Makefile中的编译器项目,正确填写你的编译器的所在路径。 对loader和boot,直接make。对uboot,第一步:make_at91rm9200dk,第二步:make。这样就会在当前目录下分别生成*.bin文件,对于uboot.bin,我们还要压缩成.gz文件。 也许有的人对loader和boot搞不清楚为什么要两个,有什么区别吗?首先有区别,boot主要完成从flash中启动uboot的功能,他要对uboot的压缩文件进行解压,除此之外,他和loader并无大的区别,你可以把boot理解为在loader的基础上加入了解压缩.gz的功能而已。所以这两个并无多大的本质不同,只是他们的使命不同而已。 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减,打造属于自己系统的bootloder。

    标签: 9200 at 91 rm

    上传时间: 2013-10-27

    上传用户:wsf950131