74HC595与数码管.doc_第1页
74HC595与数码管.doc_第2页
74HC595与数码管.doc_第3页
74HC595与数码管.doc_第4页
74HC595与数码管.doc_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十九篇 74HC595与数码管2011-03-08 15:07 第十九篇 74HC595与数码管先引用一句官方语:“74HC595是硅结构的CMOS器件, 兼容低电压TTL电路,遵守JEDEC标准。”长话短说,它的功能是8位串行输入并行输出移位寄存器,也就是串行转并行。下图是封装图:74HC595内部有两个寄存器:8位移位寄存器和8为存储寄存器,下面要PROTEUS做下各个引脚的测试:调试一下可以看出:DS为串行数据输入口;SH_CP为串行时钟输入口,SH_CP每个上升沿到来时,芯片内部的移位寄存器会左移一位,最低位由DS决定,最高位移出丢失,次高位成为最高位,并在Q7体现出来(根据Q7可以看出,74HC595也有串行输出功能);ST_CP每个上升沿会将移位寄存器的值输出到存储寄存器,存储寄存器直接和引脚Q0Q7相连,所以存储寄存器的值会直接反映在引脚Q0Q7上,从而实现串行转并行功能;OE是输出使能,高电平时Q0Q7为高阻态,低电平时Q0Q7为存储寄存器的值;MR为低电平时,移位寄存器会被清0,高电平时无效;VCC接电源;GND接地。好了,所有引脚介绍完了。有的封装图引脚名字不太一样,功能是一致的。下面用两片74HC595(U1和U2)分别控制四位数码管(U1)的显示和选位(U2),为了减少连线,两片74HC595串联(U2的Q7输出到U1的DS),这样连续向U2的DS写两个字节(第一个是要显示的数字,第二个是位选),就可以显示了。这样LPC2103用三个口(P0.4连SH_CP,P0.6连DS,P0.7连P0.7ST_CP)就可以操作此四连共阴数码管(注意是共阴,不是上篇的共阳,两者之间转换容易,把“要显示的数字”和“位选”取反即可)。如下图:这个实验测试下:/*/功能:LPC2103利用两片74HC595操作四位共阴数码管/说明:/用两片74HC595(U1和U2)分别控制四位数码管(U1)的显示和选位(U2),/为了减少连线,两片74HC595串联(U2的Q7输出到U1的DS),这样连续向U2的DS写/两个字节(第一个是要显示的数字,第二个是位选),就可以显示了。这样LPC2103/用三个口(P0.4连SH_CP,P0.6连DS,P0.7连ST_CP)就可以操作此四连共阴数码管。#include#define SH_CP 14/移位时钟#define DS 16/数据#define ST_CP 17/字节输出时钟#define u8 unsigned charvoid display(u8 data,u8 n);void send(u8 byte);void delay(unsigned int i);/注意:这是共阳数码管的码表,但用在共阴数码管上,两者之间转换容易,把数据取反即可u8 table16 = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;int main() PINSEL0=0; /GPIO IODIR=SH_CP|DS|ST_CP; /三位设定为输出 while(1) display(0x5,1); /在1位显示数字5 delay(1000000); display(0xA,2); delay(1000000); display(0xF,3); delay(1000000); display(7,4); delay(1000000); /在“n”位处显示数字“data”,用于共阴数码管void display(u8 data,u8 n) send(tabledata); /发送数字,若要用于共阳,去掉“” send( (1(n-1) ); /发送 位,若要用于共阳,去掉“”/向74HC595发一个字节void send(u8 byte) u8 i; IOCLR=ST_CP; /先拉低,为后面的上升沿做准备 for(i=0;i8;i+) IOCLR=SH_CP; /先拉低,为后面的上升沿做准备 if(byte&0x80) IOSET=DS; /将字节最高位 输出 在DS线上 else IOCLR=DS; byte=byte然后数据会送到内部的输出寄存器-输出当MR(10引脚)为高电平,OE(13引脚)为低电平时,数据在SHCP 上升沿进入移位寄存器,在STCP上升沿输出到并行端口。 请看一个简单的程序:/*-*/sbit SDA1 = P00; /串行数据输入,对应595的14脚SERsbit SCL1 = P01;/移位寄存器时钟输入,对应595的11脚SCKsbit SCL2 = P02;/存储寄存器时钟输入,对应595的12脚RCK/*-*/unsigned char code duan=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /0 1 2 3 4 5 6 7 8 9 unsigned char code wei=0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80; void delay2ms(void) unsigned char i,j; for(i=133;i0;i-) for(j=6;j0;j-);/*-串行数据输入-*/void 595_in(unsigned char Data)unsigned char i;for(i = 0; i 8; i+) /循环8次,刚好移完8位SCL1 = 0; /先将移位寄存器控制引脚置为低SDA1 = Data & 0x80; /取数据的最高位Data = 1; /将数据的次高位移到最高位SCL1 = 1; /再置为高,产生移位时钟上升沿,上升沿时数据寄存器的数据移位/*-并行数据输出-*/void 595_out(void)SCL2 = 0; /先将存储寄存器引脚置为低 _nop_();SCL2 = 1; /再置为高,产生移位时钟上升沿,上升沿时移位寄存器的数据进入数据存储寄存器,更新显示数据。/*-*/void main(void)unsigned char i;for(i=0;i8;i+) /有八位数码管,八位依次扫描595_in(weii); /先传位码595_in(duani); /再传段码595_out();delay2ms();/延迟时间2ms以内注:74164和74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些。74595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变。这在串行速度慢的场合很有用处,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。51单片机+74hc595锁存器驱动一个静态数码管 收藏 实验开发板HC6800 v2.8 (淘宝可以查到)将JP2 与JP3相连即可,注意排线要反接代码如下: view plaincopy to clipboardprint?10203040506070809010011012013014015001./* 02.* 标题: 试验数码管上如何显示数字(共阳极) * 03.* * 04.* 连接方法:P2 与P3 用8PIN排线连接 * 05.* 06.* * 07.* * 08.*/ 09. 10. 11.#include 12.#include 13.void delay(unsigned int i); /函数声名 14. 15./ 此表为 LED 的字模,0F 16.unsigned char code LED7Code = 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71; 17. 18.sbit lock=P35;/12,storage register clock input 19. 20.sbit clk=P36;/11,shift register clock input 21. 22.sbit dat=P34;/14,serial data input 23./*将显示数据串行发送到74hc595*/ 24.void sendTo(unsigned char k) 25. 26. unsigned char i; 27. for(i=0;i=1;/发送数据右移一位 35. 36. 37. 38.void main() 39. 40. unsigned int LedNumVal=0 ,C ; /定义变量 41. 42. while(1) 43. 44. if (+C= 300) 45. LedNumVal+ ; /每隔300个扫描周期加一次 46. C =0; /每隔300个扫描清零 47. 48. lock=0; 49. / 将字模送到14,serial data input 50. sendTo(LED7CodeLedNumVal%10&0x7f); 51. /LED7 0x7f为小数点 共阴和共阳此处也是不一样; 52. _nop_(); 53. _nop_(); 54. lock=1;/所存数据 55. delay(300); /调用延时程序 56. 57. 58. 59. 60. 61. 62./* 63.* * 64.* 延时程序 * 65.* * 66.*/ 67.void delay(unsigned int i) 68. 69. char j; 70. for(i; i 0; i-) 71. for(j = 200; j 0; j-); 72. 本文来自CSDN博客,转载请标明出处:/rainertop/archive/2010/10/24/5962116.aspx单片机实验箱扩展LED点阵板实验一个汇编语言程序编程的优秀范例1.说明: 在杨建南同学毕业论文的提示下,我要求孟仁周同学制作了这个在单片机实验箱上扩展的LED点阵板实验。扩展板电路中只用了三只元件:一片75 LED点阵板CD-2057,一只移位寄存器74HC164和一只带输出锁存的8位移位寄存器74HC595。扩展板与单片机的连接很简单,除了两根正、负电源线外,只有串行数据和时钟共5根线,可用多种形式与单片机连接。 孟仁周同学编写了一个规范的、专业的汇编语言程序,为了同学们学习方便,我将这个程序以及系统的工作原理作了详细的介绍,同学们应以此作为自己学习编程的范本,编写出规范的程序和写出规范的设计论文。同时,这也是一个LED点阵板上进行帧扫描和行扫描以及字符移动显示的应用实例,它的工作方式是字符逐行向上漂移,我也绘出了程序控制流程图供大家学习,对汇编语言源程序,我作了详细的注释。聂思敏 记于2005年4月24日星期日2. 电路简介图1 扩展LED点阵实验板电路图在扩展LED点阵实验板电路中最主要的是一片75 LED点阵板CD-2057(该型号印在器件的背面),它的7根行线是相应行内5只发光二极管的公共负极端,5根列线为相应列内7只发光二极管的公共正极端,当一根列线接正5V,一根行线接地时,两线相交处的发光二极管被点亮。图2是LED点阵板PLTM2088BS结构图,由于有88=64只发光二极管,显然显示效果较好。我们手中除了有PLTM2088BS外,还有若干75 LED点阵板CD-2057,是从市场上购得的旧材料,每片的价格不足两元,但未找到其内部结构图。于是参照图2进行实测,很容易找出其逻辑关系,与图2的结构完全相似,只是少了一行三列。图2 PLTM2088BS结构图实验板电路中带输出锁存的8位移位寄存器74HC595的低7位输出端与点阵板CD-2057行线连接。74HC595的第14脚SD1是串行数据输入线,11脚SRCLK为串行输入时钟控制线,当SRCLK从低电平跳到高电平时,SD1的一个数据移入输入级移位寄存器。12脚RCLK为输出级锁存器的时钟控制线,当RCLK从低电平跳到高电平时,输入级移位寄存器的数据转移到输出级。电路中8位串入并出移位寄存器74HC164的高5位输出端与点阵板CD-2057列线连接。若列线也用74HC595连接,效果似乎更好些。由于74HC164的输出端不带锁存,送数时易出现余辉,从而降低对比度。但74HC164是单片机教程中常用的器件,使用它可以让学生熟悉这一器件的特性。编程中,如果设计成将数据送至列的形式,则每次刷新列数据时只须对8位的串行移位寄存器74HC164移入5位数据即可。以上三个器件连接好后,除了正5V和对地的电源线外,另外5根线中有一根行数据输入线SD1和一根列数据输入线B,两根时钟控制线74HC595的SRCLK和74HC164的CLK,以及74HC595的输出转移控制线RCLK。3. 字符移动显示原理及软件设计图1给出了扩展电路与单片机连接的一个方案。根据这种联接形式,介绍在LED点阵板上实现字符移动显示的原理。该方案是在点阵板CD-2057上显示自下向上漂移的字母或图案。由于只有75=35只发光三极管,像素太少,不宜显示汉字,因为显示效果不好看,但工作原理相同。若将点阵板增至4块,显示的汉字就很美观了。3.1 程序框图开始取字表首地址DPTR置循环次数R3=35置帧扫描次数R2=20调帧扫描子程序R2次扫完?取下一个字的地址DPTR+1所有字显示完?NNYY帧扫描子程序置表地址偏移指针R1=0置行扫描字R5置扫描行数R4=7从表中取一行数据调列发送子程序,送列数据取行控制字R5调行发送扫描子程序点亮一行调延时子程序行扫描字R5右移,准备点亮下一行字表偏移指针R1+1行扫描完?子程序返回NY图3 主程序及字扫描子程序在主程序中,使用DPTR地址寄存器作为地址指针,开始时指向数据表首地址。第一次循环时,DPTR指向第一列,在循环体中DPTR加1,第二次循环时,地址指针后移一列。帧扫描子程序每次扫描LED点阵板7行数据。数据串行送至74HC164输出端连接的5根列线。行线作控制开关使用,由74HC595输出端提供控制信号。第一次送出第一个字符最上一行5位列数据时,作行扫描开关除了置第一行为低外,其余行置高,即打开第一行,关闭其余行。第二次送出第一个字符第二行5位列数据,行扫描开关置第二行为低,其余行置高,打开第二行,关闭其余行,以后类推。用这样方式完成一帧扫描。数据表按显示要求编码。每一个字节为LED点阵板一行中5位相应的显示数据。由于只发送5次,所以有效数据只在一个字节的低5位。当列线为0时与行线相交点的发光三极管关,列线为1时开。数据表中一行7列的7个字节数据为一个字符的编码信息。DPTR在帧扫描子程序外置数据表地址的基值,R1作地址偏移量,以两者之和对数据寻址。R1的初值为0,当DPTR为表首地址时,在子程序的循环中R1从0增加到6,取出第一个显示字符的全部7个字节并与行开关配合依次逐行显示,完成一帧扫描操作。DPTR在每次循环后加1,使得它所指向的数据表地址前移。此后调用帧扫描子程序时,每帧显示的字符将向后移。例如第二次调用帧扫描子程序,DPTR的值为表首地址加1,此时当R1再从0增加到6时,取出的是第一个显示字符后6个字节和第二个显示字符的第一个字节,并与行开关配合依次逐行显示,完成一帧扫描操作。此时看到的显示效果为第一个显示字符向上移动了一行,其第一行从上端移出了屏幕,而第二个显示字符的第一行从下端进入了屏幕。随着DPTR在每次循环后加一次次地加1,每帧显示都将当前显示字符的一行从上端移出,将后续显示字符的一行从下端移入,形成了所有设置字符的流水显示。DPTR能增加的最大数是循环计数器R3的初值,因此R3的初值应比数据表中数据总数少7,否则DPTR与R1相加后将指到表外。为了保证最后一个字也能移动显示,DPTR又要能指向最后一个显示字符的最后一个编码字节。因此将数据表最后一行用了全0数据,结果以黑屏显示效果结束全部字符一场移动显示。每帧反复循环扫描的次数,决定显示移动速度。在主程序中,移动速度由帧扫描次数计数器R2中的初值决定。该值要根据不同晶振的频率和个人的喜好决定。列发送子程序置列数R0=5列时钟线置低右移累加器使最低位送至数据输出端口列时钟线置高子程序返回NY行发送子程序置行数R0=8行时钟线置低右移累加器使最低位送至数据输出端口行时钟线置高子程序返回NY输出时钟线置低关输出输出时钟线置高开输出8行送完?5列送完?图4 行、列数据发送子程序在图4所示的列数据发送子程序中,CPU通过P1.5端口的5次串行移位操作,将数据送到74HC164的输出端及LED点阵板CD-2057的5根列线。LED点阵板CD-2057按重合法方式显示,可将数据同时送到5条列线,然后开启这5列数据应出现的行线,关闭其它行。由于只有7根行线与74HC595的第0到6位连接,第一次调用字扫描子程序,CPU通过P1.2端口的8次串行移位操作,将控制字#10111111B送到74HC595的输出端及LED点阵板CD-2057的7根列线。控制字#10111111B中的数据0处于输出端第6位,点亮LED点阵板CD-2057顶端第一行,其余行关闭。以后控制字循环经过循环移位后发送出来,依次点亮第二行、第三行等等,其余行关闭。由于LED点阵板只有7位,所以有一次操作将0移出LED点阵板,此时屏幕全关。3.2 源程序; Define I/O for latticeP_ROW_DATA BIT P1.2 ;行数据发送端口P_ROW_CLK BIT P1.0 ;行时钟输出端口P_ROW_CS BIT P1.1 ;行数据输出控制端口P_COL_DATA BIT P1.5 ;列数据发送端口至74HC164P_COL_CLR BIT P1.4 ;列线清口,现直接接VccP_COL_CLK BIT P1.3 ;列时钟输出端口 ORG 0000HSTART: MOV DPTR, #POINT_TAB ;置表首地址 MOV R3, #35 ;比要显示的总字节数少7。P_WORD_MOVE: MOV R2, #20;每个字符循环扫描次数,决定显示移动速度P_SCAN_DEGREE: ACALL P_WORD_SCAN ;调帧扫描程序 DJNZ R2, P_SCAN_DEGREE;反复扫描同一帧 INC DPTR ;帧数据地址前移一行 DJNZ R3, P_WORD_MOVE ;扫描一场的全部字符 AJMP START; Scan functionP_WORD_SCAN: MOV R1, #00H ;置表地址偏移指针初值 MOV R5, #10111111B ;置行扫描字 MOV R4, #07 ;置行扫描次数P_NEXT_BIT: MOV A, R1 MOVC A, A+DPTR ;取一个列数据 ACALL P_COL_SEND ;发送列数据 MOV A,R5 ;取行扫描字 ACALL P_ROW_SEND ;显示一行 ACALL DELAY ;维持点亮一行 MOV A, R5 RR A ;扫描字指向下一行 MOV R5, A INC R1 ;指向下一行的列数据 DJNZ R4, P_NEXT_BIT;一帧7行数据扫描完否?未完再扫 RET; Send data for col display.Use 74HC164 chipP_COL_SEND: MOV R0,#05H ;置列计数值P_COL_NEXTBIT: CLR P_COL_CLK ;列时钟线置低 RRC A ;带进位循环移出数据最低位至进位位 MOV P_COL_DATA,C;送一位数据至列发送端口 SETB P_COL_CLK ;列时钟线置高,串行发送一位列数据 DJNZ R0,P_COL_NEXTBIT ;一列数据发完否?未完再发 RET; Send data for Row select.Use M74HC595B chipP_ROW_SEND: CLR P_ROW_CS ;关闭74HC595输出寄存器 MOV R0,#08H ;置行计数值P_ROW_NEXTBIT: CLR P_ROW_CLK ;行时钟线置低 RRC A ;带进位循环移出控制字最低位至进位位 MOV P_ROW_DATA,C;送一位数据至行发送端口 SETB P_ROW_CLK ;行时钟线置高,串行发送一位行数据 DJNZ R0,P_ROW_NEXTBIT;一行数据发完否?未完再发 SETB P_ROW_CS ;开启74HC595输出寄存器 RETDELAY: MOV R7,#30 DELAY_LOOP: MOV R6,#30 DJNZ R6,$ DJNZ R7,DELAY_LOOP RET; Word model tablePOINT_TAB: DB 00H,00H,00H,00H,00H,00H,00H DB 00H,0AH,0AH,0EH,0AH,0AH,00H ;H DB 00H,0EH,08H,0EH,08H,0EH,00H ;E DB 00H,08H,08H,08H,08H,0EH,00H ;L DB 00H,08H,08H,08H,08H,0EH,00H ;L DB 00H,0AH,15H,11H,0AH,04H,00H ;O DB 00H,00H,00H,00H,00H,00H,00H END4. 结束语 除了用这里介绍的P1口输出,也可改为P2口输出,还可改为用串行口作同步串行输出。根据上述字符输出的工作原理,可以充分发挥自己的想象力,对这一程序作一些修改,产生各种各样的显示输出效果。例如可以将字符上滚改为下滚,将一行一行地滚动改为一字一字地跳跃。或改为左进右出,右进左出。但有些要求看似简单,实现起来也不是太容易的,这就增加了挑战性。以上若有问题,可找孟仁周同学咨询,也可直接找我。另外,吴坤同学在校期间,欢迎各位同学前往探讨学术问题。吴坤同学是本行高手,是你们的大师兄,常日在学生科研室内,请勿错过机会。ProteuS在ARM系统设计中的应用引 言 现在,人们生活中的每个角落都有嵌入式设备的存在,比如DVD、移动电话、MP3及掌上电脑等等。这些嵌入式设备多采用32位RISC嵌入式处理器作为核心部件。其中基于ARM核的嵌入式处理器独占鳌头,在32位RISC处理器中占据超过75的市场份额。因而越来越多的电子爱好者都加入了学习ARM的队伍中。通过和一般单片机系统开发过程的比较不难发现,嵌入式系统的设计包括硬件设计和软件设计两个方面,其调试过程包括软件调试、硬件测试、系统调试3个过程。软件调试一般比较容易进行,但是硬件测试和系统调试则比较麻烦,因为要进行这两个过程必须在 PCB制作、元器件焊接完毕之后才能进行;而PCB的制作、元器件的焊接是非常费时费力的,如果能采用仿真工具ProteuS VSM,则不用制作具体的电路板也能够完成以上工作。毫无疑问,这样可给广大ARM学习者带来很大的方便。1 Proteus简介Proteus软件是英国Labcenter electronics公司的EDA工具软件,是一个电子设计的教学平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是:实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及Phil-lips公司的ARM(LPC系列)等。提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil、ADS等软件。具有强大的原理图绘制功能。能够进行SCH(原理图)和PCB(印刷板)电路的设计。2 Proteus环境下的原理图设计Proteus和Protel、EWB等软件相似,绘制原理图都要先从器件库里取出所需的元器件符号并在绘图区布局好,同时编辑好元件的参数,接着进行连线,添加必要的网络标号等步骤。下面通过一个简单的实例说明如何使用Proteus软件实现ARM(以LPC2106为例)系统的设计与仿真。实例以 LPC2106控制器为核心,使用硬件SPI接口与74HC595进行连接,添加必要的外围电路,控制74HC595驱动LED数码管显示。电路原理如图 1所示。LPC2106的P04(SCKCAP01)、P06(MOSICAP02)和P08(TxD1PWM4)分别与 74HC595的SH_CP、DS和ST_CP相连来控制74HC595,74HC595的输出Q0Q6分别与数码管和LED相连,控制它们的实时显示。3 程序代码的编写程序代码的编写主要分4个部分进行:LPC2106的初始化代码;LPC2106异常向量入口及异常向量与C语言代码的接口,包括初始化堆栈的代码;LPC2106目标板特殊的代码,包括异常处理程序和目标板初始化程序;根据实例要求并结合原理图,编写实现预期功能的代码,即通常的执行代码,代码文件保存为“mainC”。通常为了节省开发的时间,一般用设计好的工程模板,这里使用LPC2100系列工程模板。模板中包含LPC2100系列ARM7微控制器的启动文件,包括 STACKS、HEAPS、STARTUPS和TARGETC;模板还包含LPC2100系列ARM7微控制器的头文件,分散加载描述文件(如 mem_ascf、mem_bscf和mem_cscf)等等。这样在以后的程序代码编写时就可以直接使用这些工程模板,而不用再编写初始、启动等程序代码了,只需根据不同的要求编写“mainC”就行了,因而节省了大量时间,大大提高了工作效率。这里主要说明“mainC”的编写,要实现的功能是使用硬件SPI接口输出0F的数据,通过74HC595控制LED数码管显示0F字符,同时控制4个LED显示对应的十六进制数。程序源代码如下:4 仿 真 用ADS集成开发环境进行程序的编译连接设置,ADS集成开发环境是ARM公司推出的ARM核微控制器集成开发工具,英文全称为ARM Developer Suite,成熟版本为ADS12。ADS12支持ARM10以前的所有ARM系列微控制器,支持软件调试,支持汇编、C和C+源程序,具有编译效率高、系统库功能强等特点。打开ADS12集成开发环境CodeWarrior IDE,使用事先加入的工程模板建立一个新的工程spimcp,把以上编好的代码文件mainc添加进工程。进行相关设置后,选择 ProjeetMake命令,编译并连接工程,生成spihex文件。 在原理图中双击微控制器LPC2106,出现一属性设置窗口Edit Component,如图2所示。在其中的ProgramFile中添加上面生成的spihex文件的路径,单击OK完成设置。点击原理图左下角的运行按钮即开始仿真运行。数码管显示SPI发送的OF的数据,LED显示的是相对应的十六进制值。仿真结果完全符合设计要求。结 语本文结合一个简单的SPI接口实验详细说明了ProteuS在ARM开发中的应用。可以看出,Proteus功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。使用Proteus进行ARM的虚拟开发,不仅可以减少实验硬件资本的投入,还突破了实际开发板中实验内容的局限性,使开发者能够充分发挥自身的主动性。使用Proteus仿真进行系统虚拟开发成功之后再进行实际制作,无疑可以提高开发效率、降低开发成本、提升开发速度,具有较高的推广应用价值74HC595的实际应用与编程(汇编C语言)74HC595具有一个8位串行输入并行输出的移位寄存器和一个8位输出锁存器。应用电路图:74HC595演示电路板:应用演示

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论