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

信号<b>分析仪</b>

  • 可编程外围接口82C55A

    82C55A是高性能,工业标准,并行I/O的LSI外围芯片;提供24条I/O脚线。     在三种主要的操作方式下分组进行程序设计82C88A的几个特点:(1)与所有Intel系列微处理器兼容;(2)有较高的操作速度;(3)24条可编程I/O脚线;(4)底功耗的CHMOS;(5)与TTL兼容;(6)拥有控制字读回功能;(7)拥有直接置位/复位功能;(8)在所有I/O输出端口有2.5mA  DC驱动能力;(9)适应性强。方式0操作称为简单I/O操作,是指端口的信号线可工作在电平敏感输入方式或锁存输出。所以,须将控制寄存器设计为:控制寄存器中:D7=1; D6 D5=00;  D2=0。D7位为1代表一个有效的方式。通过对D4 D3 D1和D0的置位/复位来实现端口A及端口B是输入或输出。P56表2-1列出了操作方式0端口管脚功能。

    标签: 82C55A 可编程 外围接口

    上传时间: 2013-10-26

    上传用户:brilliantchen

  • 微机灯光控制系统

    一、实验目的1.掌握定时/计数器、输入/输出接口电路设计方法。    2.掌握中断控制编程技术的方法和应用。3.掌握8086汇编语言程序设计方法。 二、实验内容与要求 微机灯光控制系统主要用于娱乐场所的彩灯控制。系统的彩灯共有12组,在实验时用12个发光二极管模拟。1. 基本要求:灯光控制共有8种模式,如12个灯依次点亮;12个灯同时闪烁等八种。系统可以通过键盘和显示屏的人机对话,将8种模式进行任意个数、任意次序的连接组合。系统不断重复执行输入的模式组合,直至键盘有任意一个键按下,退出灯光控制系统,返回DOS系统。2. 提高要求:音乐彩灯控制系统,根据音乐的变化控制彩灯的变化,主要有以下几种:第一种为音乐节奏控制彩灯,按音乐的节拍变换彩灯花样。第二种音律的强弱(信号幅度大小)控制彩灯。强音时,灯的亮度加大,且被点亮的数目增多。第三种按音调高低(信号频率高低)控制彩灯。低音时,某一部分灯点亮;高音时,另一部分点亮。 三、实验报告要求 1.设计目的和内容 2.总体设计 3.硬件设计:原理图(接线图)及简要说明 4.软件设计框图及程序清单5.设计结果和体会(包括遇到的问题及解决的方法) 四、设计原理我们以背景霓虹灯的一种显示效果为例,介绍控制霓虹灯显示的基本原理。设有一排 n 段水平排列的霓虹灯,某种显示方式为从左到右每0.2 秒逐个点亮。其控制过程如下: 若以“ 1 ”代表霓虹灯点亮,以“ 0 ”代表霓虹灯熄灭,则开始时刻, n 段霓虹灯的控制信号均为“ 0 ”,随后,控制器将一帧 n 个数据送至 n 段霓虹灯的控制端,其中,最左边的一段霓虹灯对应的控制数据为“ 1 ”,其余的数据均为零,即 1000 … 000 。当 n 个数据送完以后,控制器停止送数,保留这种状态(定时) 0.2 秒,此时,第 1 段霓虹灯被点亮,其余霓虹灯熄灭。随后,控制器又在极短的时间内将数据 1100 … 000 送至霓虹灯的控制端,并定时 0.2 秒,这段时间,前两段霓虹灯被点亮。由于送数据的过程很快,我们观测到的效果是第一段霓虹灯被点亮 0.2 秒后,第 2 段霓虹灯接着被点亮,即每隔 0.2 秒显示一帧图样。如此下去,最后控制器将数据 1111 … 111 送至 n 段霓虹灯的控制端,则 n 段霓虹灯被全部点亮。 只要改变送至每段霓虹灯的数据,即可改变霓虹灯的显示方式,显然,我们可以通过合理地组合数据(编程)来得到霓虹灯的不同显示方式。 五、总体方案论证分析系统设计思路如下:1) 采集8位开关输入信号,若输入数据为0时,将其修改为1。确定输入的硬件接口电路。采样输入开关量,并存入NUM的软件程序段。2) 以12个灯依次点亮为例(即灯光控制模式M1),考虑与其相应的灯光显示代码数据。确定显示代码数据输出的接口电路。输出一个同期显示代码的软件程序段(暂不考虑时隙的延时要求)。3) 应用定时中断服务和NUM数据,实现t=N×50ms的方法。4) 实现某一种模式灯光显示控制中12个时隙一个周期,共重复四次的控制方法。要求在初始化时采样开关输入数据NUM,并以此控制每一时隙的延时时间;在每一时隙结束时,检查有无键按下,若是退出键按下,则结束灯光控制,返回DOS系统,若是其他键就返回主菜单,重新输入控制模式数据。5) 通过人机对话,输入8种灯光显示控制模式的任意个数、任意次序连接组合的控制模式数据串(以ENTER键结尾)。对输入的数据进行检查,若数据都在1 - 8之间,则存入INBUF;若有错误,则通过屏幕显示输入错误,准备重新输入灯光显示控制模式数据。6) 依次读取INBUF中的控制模式数据进行不同模式的灯光显示控制,在没有任意键按下的情况下,系统从第一个控制模式数据开始,顺序工作到最后一个控制模式数据后,又返回到第一个控制模式数据,不断重复循环进行灯光显示控制。7) 本系统的软件在总体上有两部份,即主程序(MAIN)和实时中断服务程序(INTT)。讨论以功能明确、相互界面分割清晰的软件程序模块化设计方法。即确定有关功能模块,并画出以功能模块表示的主程序(MAIN)流程框图和定时中断服务程序的流程框图。    六、硬件电路设计   以微机实验平台和PC机资源为硬件设计的基础,不需要外加电路。主要利用了以下的资源:1.8255并行口电路8255并行口电路主要负责数据的输入与输出,可以输出数据控制发光二极管的亮灭和读取乒乓开关的数据。实验时可以将8255的A口、B口和一组发光二极管相连,C口和乒乓开关相连。2.8253定时/计数器8253定时/计数器和8259中断控制器一起实现时隙定时。本设计的定时就是采用的t=N×50ms的方法,50ms由8253定时/计数器的计数器0控制定时,N是在中断服务程序中软件计时。8253的OUT0接到IRQ2,产生中断请求信号。8253定时/计数器定时结束会发出中断信号,进入中断服务程序。3.PC机资源本设计除了利用PC机作为控制器之外,还利用了PC机的键盘和显示器。键盘主要是输入控制模式数据,显示器就是显示提示信息。   七、软件设计   软件主要分为主程序(MAIN)和中断服务程序(INTT),主程序包含系统初始化、读取乒乓开关、读取控制模式数据以及按键处理等模块。中断服务程序主要是定时时间到后根据控制模式数据点亮相应的发光二极管。1.主程序主程序的程序流程图如图1所示。

    标签: 微机 灯光控制

    上传时间: 2014-04-05

    上传用户:q986086481

  • 单片机音乐中音调和节拍的确定方法

    单片机音乐中音调和节拍的确定方法:调号-音乐上指用以确定乐曲主音高度的符号。很明显一个八度就有12个半音。A、B、C、D、E、F、G。经过声学家的研究,全世界都用这些字母来表示固定的音高。比如,A这个音,标准的音高为每秒钟振动440周。 升C调:1=#C,也就是降D调:1=BD;277(频率)升D调:1=#D,也就是降E调:1=BE;311升F调:1=#F,也就是降G调:1=BG;369升G调:1=#G,也就是降A调:1=BA;415升A调:1=#A,也就是降B调:1=BB。466,C 262   #C277   D 294   #D(bE)311  E 330   F 349   #F369   G 392  #G415A 440.    #A466    B 494 所谓1=A,就是说,这首歌曲的“导”要唱得同A一样高,人们也把这首歌曲叫做A调歌曲,或叫“唱A调”。1=C,就是说,这首歌曲的“导”要唱得同C一样高,或者说“这歌曲唱C调”。同样是“导”,不同的调唱起来的高低是不一样的。各调的对应的标准频率为: 单片机演奏音乐时音调和节拍的确定方法 经常看到一些刚学单片机的朋友对单片机演奏音乐比较有兴趣,本人也曾是这样。在此,本人将就这方面的知识做一些简介,但愿能对单片机演奏音乐比较有兴趣而又不知其解的朋友能有所启迪。 一般说来,单片机演奏音乐基本都是单音频率,它不包含相应幅度的谐波频率,也就是说不能象电子琴那样能奏出多种音色的声音。因此单片机奏乐只需弄清楚两个概念即可,也就是“音调”和“节拍”。音调表示一个音符唱多高的频率,节拍表示一个音符唱多长的时间。 在音乐中所谓“音调”,其实就是我们常说的“音高”。在音乐中常把中央C上方的A音定为标准音高,其频率f=440Hz。当两个声音信号的频率相差一倍时,也即f2=2f1时,则称f2比f1高一个倍频程, 在音乐中1(do)与 ,2(来)与 ……正好相差一个倍频程,在音乐学中称它相差一个八度音。在一个八度音内,有12个半音。以1—i八音区为例, 12个半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。这12个音阶的分度基本上是以对数关系来划分的。如果我们只要知道了这十二个音符的音高,也就是其基本音调的频率,我们就可根据倍频程的关系得到其他音符基本音调的频率。 知道了一个音符的频率后,怎样让单片机发出相应频率的声音呢?一般说来,常采用的方法就是通过单片机的定时器定时中断,将单片机上对应蜂鸣器的I/O口来回取反,或者说来回清零,置位,从而让蜂鸣器发出声音,为了让单片机发出不同频率的声音,我们只需将定时器予置不同的定时值就可实现。那么怎样确定一个频率所对应的定时器的定时值呢?以标准音高A为例:   A的频率f = 440 Hz,其对应的周期为:T = 1/ f = 1/440 =2272μs 由上图可知,单片机上对应蜂鸣器的I/O口来回取反的时间应为:t = T/2 = 2272/2 = 1136μs这个时间t也就是单片机上定时器应有的中断触发时间。一般情况下,单片机奏乐时,其定时器为工作方式1,它以振荡器的十二分频信号为计数脉冲。设振荡器频率为f0,则定时器的予置初值由下式来确定:    t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL为定时器待确定的计数初值。因此定时器的高低计数器的初值为:     TH = THL / 256 = ( TALL – t* f0/12) / 256    TL = THL % 256 = ( TALL – t* f0/12) %256  将t=1136μs代入上面两式(注意:计算时应将时间和频率的单位换算一致),即可求出标准音高A在单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值为 :    TH440Hz = (65536 – 1136 * 12/12) /256 = FBH    TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根据上面的求解方法,我们就可求出其他音调相应的计数器的予置初值。 音符的节拍我们可以举例来说明。在一张乐谱中,我们经常会看到这样的表达式,如1=C  、1=G …… 等等,这里1=C,1=G表示乐谱的曲调,和我们前面所谈的音调有很大的关联, 、 就是用来表示节拍的。以 为例加以说明,它表示乐谱中以四分音符为节拍,每一小结有三拍。比如:      其中1 、2 为一拍,3、4、5为一拍,6为一拍共三拍。1 、2的时长为四分音符的一半,即为八分音符长,3、4的时长为八分音符的一半,即为十六分音符长,5的时长为四分音符的一半,即为八分音符长,6的时长为四分音符长。那么一拍到底该唱多长呢?一般说来,如果乐曲没有特殊说明,一拍的时长大约为400—500ms 。我们以一拍的时长为400ms为例,则当以四分音符为节拍时,四分音符的时长就为400ms,八分音符的时长就为200ms,十六分音符的时长就为100ms。可见,在单片机上控制一个音符唱多长可采用循环延时的方法来实现。首先,我们确定一个基本时长的延时程序,比如说以十六分音符的时长为基本延时时间,那么,对于一个音符,如果它为十六分音符,则只需调用一次延时程序,如果它为八分音符,则只需调用二次延时程序,如果它为四分音符,则只需调用四次延时程序,依次类推。通过上面关于一个音符音调和节拍的确定方法,我们就可以在单片机上实现演奏音乐了。具体的实现方法为:将乐谱中的每个音符的音调及节拍变换成相应的音调参数和节拍参数,将他们做成数据表格,存放在存储器中,通过程序取出一个音符的相关参数,播放该音符,该音符唱完后,接着取出下一个音符的相关参数……,如此直到播放完毕最后一个音符,根据需要也可循环不停地播放整个乐曲。另外,对于乐曲中的休止符,一般将其音调参数设为FFH,FFH,其节拍参数与其他音符的节拍参数确定方法一致,乐曲结束用节拍参数为00H来表示。下面给出部分音符(三个八度音)的频率以及以单片机晶振频率f0=12Mhz,定时器在工作方式1下的定时器高低计数器的予置初值 : C调音符  频率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8F2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC调音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7频率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C调音符  频率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02

    标签: 单片机 音调

    上传时间: 2013-10-20

    上传用户:哈哈haha

  • 并行接口

    7.1 并行接口概述并行接口和串行接口的结构示意图并行接口传输速率高,一般不要求固定格式,但不适合长距离数据传输7.2 可编程并行接口芯片82C55     7.2.1  8255的基本功能 8255具有2个独立的8位I/O口(A口和B口)和2个独立的4位I/O(C口上半部和C口下半部),提供TTL兼容的并行接口。作为输入时提供三态缓冲器功能,作为输出时提供数据锁存功能。其中,A口具有双向传输功能。8255有3种工作方式,方式0、方式1和方式2,能使用无条件、查询和中断等多种数据传送方式完成CPU与I/O设备之间的数据交换。B口和C口的引脚具有达林顿复合晶体管驱动能力,在1.5V时输出1mA电流,适于作输出端口。C口除用做数据口外,当8255工作在方式1和方式2时,C口的部分引脚作为固定的联络信号线。

    标签: 并行接口

    上传时间: 2013-10-25

    上传用户:oooool

  • 实验指导书 (TPC-H实验台C语言版)

    《现代微机原理与接口技术》实验指导书 TPC-H实验台C语言版 1.实验台结构1)I / O 地址译码电路如上图1所示地址空间280H~2BFH共分8条译码输出线:Y0~Y7 其地址分别是280H~287H、288H~28FH、290H~297H、298H~29FH、2A0H~2A7H、2A8H~2AFH、2B0H~2B7H、2B8H~2BFH,8根译码输出线在实验台I/O地址处分别由自锁紧插孔引出供实验选用(见图2)。 2) 总线插孔采用“自锁紧”插座在标有“总线”区引出数据总线D7~D0;地址总线A9~A0,读、写信号IOR、IOW;中断请求信号IRQ ;DMA请求信号DRQ1;DMA响应信号DACK1 及AEN信号,供学生搭试各种接口实验电路使用。3) 时钟电路如图-3所示可以输出1MHZ 2MHZ两种信号供A/D转换器定时器/计数器串行接口实验使用。图34) 逻辑电平开关电路如图-4所示实验台右下方设有8个开关K7~K0,开关拨到“1”位置时开关断开,输出高电平。向下打到“0”位置时开关接通,输出低电平。电路中串接了保护电阻使接口电路不直接同+5V 、GND相连,可有效地防止因误操作误编程损坏集成电路现象。图 4 图 55) L E D 显示电路如图-5所示实验台上设有8个发光二极管及相关驱动电路(输入端L7~L0),当输入信号为“1” 时发光,为“0”时灭6) 七段数码管显示电路如图-6所示实验台上设有两个共阴极七段数码管及驱动电路,段码为同相驱动器,位码为反相驱动器。从段码与位码的驱动器输入端(段码输入端a、b、c、d、e、f、g、dp,位码输入端s1、 s2)输入不同的代码即可显示不同数字或符号。

    标签: TPC-H 实验指导书 C语言 实验台

    上传时间: 2013-11-22

    上传用户:sssnaxie

  • 微型计算机课程设计论文—通用微机发声程序的汇编设计

    微型计算机课程设计论文—通用微机发声程序的汇编设计 本文讲述了在微型计算机中利用可编程时间间隔定时器的通用发声程序设计,重点讲述了程序的发声原理,节拍的产生,按节拍改变的动画程序原理,并以设计一个简单的乐曲评分程序为引子,分析程序设计的细节。关键字:微机 8253 通用发声程序 动画技术 直接写屏 1. 可编程时间间隔定时器8253在通用个人计算机中,有一个可编程时间间隔定时器8253,它能够根据程序提供的计数值和工作方式,产生各种形状和各种频率的计数/定时脉冲,提供给系统各个部件使用。本设计是利用计算机控制发声的原理,编写演奏乐曲的程序。    在8253/54定时器内部有3个独立工作的计数器:计数器0,计数器1和计数器2,每个计数器都分配有一个断口地址,分别为40H,41H和42H.8253/54内部还有一个公用的控制寄存器,端地址为43H.端口地址输入到8253/54的CS,AL,A0端,分别对3个计数器和控制器寻址.     对8353/54编程时,先要设定控制字,以选择计数器,确定工作方式和计数值的格式.每计数器由三个引脚与外部联系,见教材第320页图9-1.CLK为时钟输入端,GATE为门控信号输入端,OUT为计数/定时信号输入端.每个计数器中包含一个16位计数寄存器,这个计数器时以倒计数的方式计数的,也就是说,从计数初值逐次减1,直到减为0为止.     8253/54的三个计数器是分别编程的,在对任一个计数器编程时,必须首先讲控制字节写入控制寄存器.控制字的作用是告诉8253/54选择哪个计数器工作,要求输出什么样的脉冲波形.另外,对8253/54的初始化工作还包括,向选定的计数器输入一个计数初值,因为这个计数值可以是8为的,也可以是16为的,而8253/5的数据总线是8位的,所以要用两条输出指令来写入初值.下面给出8253/54初始化程序段的一个例子,将计数器2设定为方式3,(关于计数器的工作方式参阅教材第325—330页)计数初值为65536.    MOV   AL,10110110B ;选择计数器2,按方式3工作,计数值是二进制格式    OUT   43H,AL      ; j将控制字送入控制寄存器    MOV   AL,0        ;计数初值为0    OUT   42H,AL      ;将计数初值的低字节送入计数器2    OUT   42H,AL      ;将计数初值的高字节送入计数器2    在IBM PC中8253/54的三个时钟端CLK0,CLK1和CLK2的输入频率都是1.1931817MHZ. PC机上的大多数I/O都是由主板上的8255(或8255A)可编程序外围接口芯片(PPI)管理的.关于8255A的结构和工作原理及应用举例参阅教材第340—373页.教材第364页的”PC/XT机中的扬声器接口电路”一节介绍了扬声器的驱动原理,并给出了通用发声程序.本设计正是基于这个原理,通过编程,控制加到扬声器上的信号的频率,奏出乐曲的.2.发声程序的设计下面是能产生频率为f的通用发声程序:MOV      AL, 10110110B   ;8253控制字:通道2,先写低字节,后写高字节        ;方式3,二进制计数OUT      43H, AL                  ;写入控制字MOV      DX, 0012H               ;被除数高位MOV      AX, 35DEH              ;被除数低位 DIV      ID      ;求计数初值n,结果在AX中OUT      42H, AL     ;送出低8位MOV      AL, AHOUT      42H,AL     ;送出高8位IN      AL, 61H     ;读入8255A端口B的内容MOV      AH, AL                  ;保护B口的原状态OR  AL, 03H     ;使B口后两位置1,其余位保留OUT 61H,AL     ;接通扬声器,使它发声

    标签: 微型计算机 发声程序 论文 微机

    上传时间: 2013-10-17

    上传用户:sunjet

  • 串行编程器源程序(Keil C语言)

    串行编程器源程序(Keil C语言)//FID=01:AT89C2051系列编程器//实现编程的读,写,擦等细节//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引脚排列相反#define C2051_P3_0  P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//编程前的准备工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//编程结束后的工作,设置合适的引脚电平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//从P0口获得数据{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//转换并设置P0口的数据{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//读特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//写器件{//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //写一个单元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效验:循环读,直到读出与写入的数相同 {  nTimeOut++;  if(nTimeOut>1000)//超时了  {   return 0;  } } C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//读器件{ BYTE Data;//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //读一个单元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return Data;} void Lock01()//写锁定位{ InitPro01();//先设置成编程状态//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 if(ComBuf[2]>=1)//ComBuf[2]为锁定位 {  C2051_P3_3=1;  C2051_P3_4=1;  C2051_P3_5=1;  C2051_P3_7=1;  Delay_us(20);  SetVpp12V();  Delay_us(20);  C2051_P3_2=0;  Delay_us(20);  C2051_P3_2=1;  Delay_us(20);  SetVpp5V(); } if(ComBuf[2]>=2) {  C2051_P3_3=1;  C2051_P3_4=1;  C2051_P3_5=0;  C2051_P3_7=0;  Delay_us(20);  SetVpp12V();  Delay_us(20);  C2051_P3_2=0;  Delay_us(20);  C2051_P3_2=1;  Delay_us(20);  SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//设置pw中的函数指针,让主程序可以调用上面的函数{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}

    标签: Keil 串行 C语言 编程器

    上传时间: 2013-11-12

    上传用户:gut1234567

  • 8255A可编程并行接口

    并行接口电路:微处理器与I/O设备进行数据传输时均需经过接口电路实现系统与设备互连的匹配。并行接口电路中每个信息位有自己的传输线,一个数据字节各位可并行传送,速度快,控制简单。由于电气特性的限制,传输距离不能太长。8255A是通用的可编程并行接口芯片,功能强,使用灵活。适合一些并行输入/输出设备的使用。8255A并行接口逻辑框图三个独立的8位I/O端口,口A、口B、口C。口A有输入、输出锁存器及输出缓冲器。口B与口C有输入、输出缓冲器及输出锁存器。在实现高级的传输协议时,口C的8条线分为两组,每组4条线,分别作为口A与口B在传输时的控制信号线。口C的8条线可独立进行置1/置0的操作。口A、口B、口C及控制字口共占4个设备号。8255A并行接口的控制字工作模式选择控制字:口A有三种工作模式,口B有二种工作模式。口C独立使用时只有一个工作模式,与口A、口B配合使用时,作为控制信号线。三种工作模式命名为:模式0、模式1及模式2。模式 0 为基本I/O端口,模式1为带选通的I/O端口,模式 2 为带选通的双向I/O端口。口A可工作在三种模式下,口B可工作在模式 0与模式 1下,口C可工作在模式0下或作为控制线配合口A、口B工作。

    标签: 8255A 可编程 并行接口

    上传时间: 2013-11-07

    上传用户:xitai

  • pic单片机实用教程(提高篇)

    pic单片机实用教程(提高篇)以介绍PIC16F87X型号单片机为主,并适当兼顾PIC全系列,共分9章,内容包括:存储器;I/O端口的复位功能;定时器/计数器TMR1;定时器TMR2;输入捕捉/输出比较/脉宽调制CCP;模/数转换器ADC;通用同步/异步收发器USART;主控同步串行端口MSSP:SPI模式和I2C模式。突出特点:通俗易懂、可读性强、系统全面、学练结合、学用并重、实例丰富、习题齐全。<br>本书作为Microchip公司大学计划选择用书,可广泛适用于初步具备电子技术基础和计算机知识基础的学生、教师、单片机爱好者、电子制作爱好者、电器维修人员、电子产品开发设计者、工程技术人员阅读。本教程全书共分2篇,即基础篇和提高篇,分2册出版,以适应不同课时和不同专业的需要,也为教师和读者增加了一种可选方案。 第1章 EEPROM数据存储器和FIASH程序存储器1.1 背景知识1.1.1 通用型半导体存储器的种类和特点1.1.2 PIC单片机内部的程序存储器1.1.3 PIC单片机内部的EEPROM数据存储器1.1.4 PIC16F87X内部EEPROM和FIASH操作方法1.2 与EEPROM相关的寄存器1.3 片内EEPROM数据存储器结构和操作原理1.3.1 从EEPROM中读取数据1.3.2 向EEPROM中烧写数据1.4 与FLASH相关的寄存器1.5 片内FLASH程序存储器结构和操作原理1.5.1 读取FLASH程序存储器1.5.2 烧写FLASH程序存储器1.6 写操作的安全保障措施1.6.1 写入校验方法1.6.2 预防意外写操作的保障措施1.7 EEPROM和FLASH应用举例1.7.1 EEPROM的应用1.7.2 FIASH的应用思考题与练习题第2章 输入/输出端口的复合功能2.1 RA端口2.1.1 与RA端口相关的寄存器2.1.2 电路结构和工作原理2.1.3 编程方法2.2 RB端口2.2.1 与RB端口相关的寄存器2.2.2 电路结构和工作原理2.2.3 编程方法2.3 RC端口2.3.1 与RC端口相关的寄存器2.3.2 电路结构和工作原理2.3.3 编程方法2.4 RD端口2.4.1 与RD端口相关的寄存器2.4.2 电路结构和工作原理2.4.3 编程方法2.5 RE端口2.5.1 与RE端口相关的寄存器2.5.2 电路结构和工作原理2.5.3 编程方法2.6 PSP并行从动端口2.6.1 与PSP端口相关的寄存器2.6.2 电路结构和工作原理2.7 应用举例思考题与练习题第3章 定时器/计数器TMR13.1 定时器/计数器TMR1模块的特性3.2 定时器/计数器TMR1模块相关的寄存器3.3 定时器/计数器TMR1模块的电路结构3.4 定时器/计数器TMR1模块的工作原理3.4.1 禁止TMR1工作3.4.2 定时器工作方式3.4.3 计数器工作方式3.4.4 TMR1寄存器的赋值与复位3.5 定时器/计数器TMR1模块的应用举例思考题与练习题第4章 定时器TMR24.1 定时器TMR2模块的特性4.2 定时器TMR2模块相关的寄存器4.3 定时器TMR2模块的电路结构4.4 定时器TMR2模块的工作原理4.4.1 禁止TMR2工作4.4.2 定时器工作方式4.4.3 寄存器TMR2和PR2以及分频器的复位4.4.4 TMR2模块的初始化编程4.5 定时器TMR2模块的应用举例思考题与练习题第5章 输入捕捉/输出比较/脉宽调制CCP5.1 输入捕捉工作模式5.1.1 输入捕捉摸式相关的寄存器5.1.2 输入捕捉模式的电路结构5.1.3 输入捕捉摸式的工作原理5.1.4 输入捕捉摸式的应用举例5.2 输出比较工作模式5.2.1 输出比较模式相关的寄存器5.2.2 输出比较模式的电路结构5.2.3 输出比较模式的工作原理5.2.4 输出比较模式的应用举例5.3 脉宽调制输出工作模式5.3.1 脉宽调制模式相关的寄存器5.3.2 脉宽调制模式的电路结构5.3.3 脉宽调制模式的工作原理5.3.4 脉定调制模式的应用举例5.4 两个CCP模块之间相互关系思考题与练习题第6章 模/数转换器ADC6.1 背景知识6.1.1 ADC种类与特点6.1.2 ADC器件的工作原理6.2 PIC16F87X片内ADC模块6.2.1 ADC模块相关的寄存器6.2.2 ADC模块结构和操作原理6.2.3 ADC模块操作时间要求6.2.4 特殊情况下的A/D转换6.2.5 ADC模块的转换精度和分辨率6.2.6 ADC模块的内部动作流程和传递函数6.2.7 ADC模块的操作编程6.3 PIC16F87X片内ADC模块的应用举例思考题与练习题第7章 通用同步/异步收发器USART7.1 串行通信的基本概念7.1.1 串行通信的两种基本方式7.1.2 串行通信中数据传送方向7.1.3 串行通信中的控制方式7.1.4 串行通信中的码型、编码方式和帧结构7.1.5 串行通信中的检错和纠错方式7.1.6 串行通信组网方式7.1.7 串行通信接口电路和参数7.1.8 串行通信的传输速率7.2 PIC16F87X片内通用同步/异步收发器USART模块7.2.1 与USART模块相关的寄存器7.2.2 USART波特率发生器BRG7.2.3 USART模块的异步工作方式7.2.4 USART模块的同步主控工作方式7.2.5 USART模块的同步从动工作方式7.3 通用同步/异步收发器USART的应用举例思考题与练习题第8章 主控同步串行端口MSSP——SPI模式8.1 SPI接口的背景知识8.1.1 SPI接口信号描述8.1.2 基于SPI的系统构成方式8.1.3 SPI接口工作原理8.1.4 兼容的MicroWire接口8.2 PIC16F87X的SPI接口8.2.1 SPI接口相关的寄存器8.2.2 SPI接口的结构和操作原理8.2.3 SPI接口的主控方式8.2.4 SPI接口的从动方式8.3 SPI接口的应用举例思考题与练习题第9章 主控同步串行端口MSSP——I(平方)C模式9.1 I(平方)C总线的背景知识9.1.1 名词术语9.1.2 I(平方)C总线的技术特点9.1.3 I(平方)C总线的基本工作原理9.1.4 I(平方)C总线信号时序分析9.1.5 信号传送格式9.1.6 寻址约定9.1.7 技术参数9.1.8 I(平方)C器件与I(平方)C总线的接线方式9.1.9 相兼容的SMBus总线9.2 与I(平方)C总线相关的寄存器9.3 典型信号时序的产生方法9.3.1 波特率发生器9.3.2 启动信号9.3.3 重启动信号9.3.4 应答信号9.3.5 停止信号9.4 被控器通信方式9.4.1 硬件结构9.4.2 被主控器寻址9.4.3 被控器接收——被控接收器9.4.4 被控器发送——被控发送器9.4.5 广播式寻址9.5 主控器通信方式9.5.1 硬件结构9.5.2 主控器发送——主控发送器9.5.3 主控器接收——主控接收器9.6 多主通信方式下的总线冲突和总线仲裁9.6.1 发送和应答过程中的总线冲突9.6.2 启动过程中的总线冲突9.6.3 重启动过程中的总线冲突9.6.4 停止过程中的总线冲突9.7 I(平方)C总线的应用举例思考题与练习题附录A 包含文件P16F877.INC附录B 新版宏汇编器MPASM伪指令总表参考文献

    标签: pic 单片机 实用教程

    上传时间: 2013-12-14

    上传用户:xiaoyuer

  • 基于USB接口的数据采集模块的设计与实现

    基于USB接口的数据采集模块的设计与实现Design and Implementation of USB-Based Data Acquisition Module路 永 伸(天津科技大学电子信息与自动化学院,天津300222)摘要文中给出基于USB接口的数据采集模块的设计与实现。硬件设计采用以Adpc831与PDIUSBDI2为主的器件进行硬件设计,采用Windriver开发USB驱动,并用Visual C十十6.0对主机软件中硬件接口操作部分进行动态链接库封装。关键词USB 数据采集Adpc831 PDNSBDI2 Windriver动态链接库Abstract T hed esigna ndim plementaitono fU SB-BasedD ataA cquisiitonM oduleis g iven.Th ec hips oluitonm ainlyw ithA dpc831a ndP DTUSBD12i sused for hardware design. The USB drive is developed场Wmdriver, and the operation on the hardware interface is packaged into Dynamic Link Libraries场Visual C++6.0.  Keywords USB DataA cquisition Adttc831 PDfUSBD12 Windriver0 引言US B总 线 是新一代接口总线,最初推出的目的是为了统一取代PC机的各类外设接口,迄今经历了1.0,1.1与2.0版本3个标准。在国内基于USB总线的相关设计与开发也得到了快速的发展,很多设计者从各自的应用领域,用不同方案设计出了相应的装置[1,2]。数据采集是工业控制中一个普遍而重要的环节,因此开发基于USB接口的数据采集模块具有很强的现实应用意义。虽然 US B总线标准已经发展到2.0版本,但由于工业控制现场干扰信号的情况比较复杂,高速数据传输的可靠性不容易被保证,并且很多场合对数据采集的实时性要求并不高,开发2.0标准产品的成本又较1.1标准产品高,所以笔者认为,在工业控制领域,目前开发基于USB总线1.1标准实现的数据采集模块的实用意义大于相应2.0标准模块。

    标签: USB 接口 数据采集模块

    上传时间: 2013-10-23

    上传用户:q3290766