




免费预览已结束,剩余28页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。 8051片内有4kB的程序存储单元,其地址为0000H0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这在使用中应加以注意: 其中一组特殊是0000H0002H单元,系统复位后,PC为0000H,单片机从0000H单元开始执行程序,如果程序不是从0000H单元开始,则应在这三个单元中存放一条无条件转移指令,让CPU直接去执行用户指定的程序。 另一组特殊单元是0003H002AH,这40个单元各有用途,它们被均匀地分为五段,它们的定义如下: 0003H000AH 外部中断0中断地址区。 000BH0012H 定时/计数器0中断地址区。 0013H001AH 外部中断1中断地址区。 001BH0022H 定时/计数器1中断地址区。 0023H002AH 串行中断地址区。 可见以上的40个单元是专门用于存放中断处理程序的地址单元,中断响应后,按中断的类型,自动转到各自的中断区去执行程序。因此以上地址单元不能用于存放程序的其他内容,只能存放中断服务程序。但是通常情况下,每段只有8个地址单元是不能存下完整的中断服务程序的,因而一般也在中断响应的地址区安放一条无条件转移指令,指向程序存储器的其它真正存放中断服务程序的空间去执行,这样中断响应后,CPU读到这条转移指令,便转向其他地方去继续执行中断服务程序。 数据存储器 数据存储器也称为随机存取数据存储器。MCS-51单片机的数据存储器在物理上和逻辑上都分为两个地址空间,一个是内部数据存储区和一个外部数据存储区。MCS-51内部RAM有128或256个字节的用户数据存储(不同的型号有分别),它们是用于存放执行的中间结果和过程数据的。MCS-51的数据存储器均可读写,部分单元还可以位寻址。 8051内部RAM共有256个单元,这256个单元共分为两部分。其一是地址从00H7FH单元(共128个字节)为用户数据RAM。从80HFFH地址单元(也是128个字节)为特殊寄存器(SFR)单元。从图1中可清楚地看出它们的结构分布。 在00H1FH共32个单元中被均匀地分为四块,每块包含八个8位寄存器,均以R0R7来命名,我们常称这些寄存器为通用寄存器。这四块中的寄存器都称为R0R7,那么在程序中怎么区分和使用它们呢?聪明的INTEL工程师们又安排了一个寄存器程序状态字寄存器(PSW)来管理它们,CPU只要定义这个寄存的PSW的第3和第4位(RS0和RS1),即可选中这四组通用寄存器。对应的编码关系如图2所示。 内部RAM的20H2FH单元为位寻址区,既可作为一般单元用字节寻址,也可对它们的位进行寻址。位寻址区共有16个字节,128个位,位地址为00H7FH。位地址分配如表1所示,CPU能直接寻址这些位,执行例如置“1”、清“0”、求“反”、转移,传送和逻辑等操作。我们常称MCS-51具有布尔处理功能,布尔处理的存储空间指的就是这些为寻址区。 表1 RAM位寻址区地址表 单元地址 MSB 位地址 LSB 2FH 7FH 7EH 7DH 7CH 7BH 7AH 79H 78H 2EH 77H 76H 75H 74H 73H 72H 71H 70H 2DH 6FH 6EH 6DH 6CH 6BH 6AH 69H 68H 2CH 67H 66H 65H 64H 63H 62H 61H 60H 2BH 5FH 5EH 5DH 5CH 5BH 5AH 59H 58H 2AH 57H 56H 55H 54H 53H 52H 51H 50H 29H 4FH 4EH 4DH 4CH 4BH 4AH 49H 48H 28H 47H 46H 45H 44H 43H 42H 41H 40H 27H 3FH 3EH 3DH 3CH 3BH 3AH 39H 38H 26H 37H 36H 35H 34H 33H 32H 31H 30H 25H 2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 24H 27H 26H 25H 24H 23H 22H 21H 20H 23H 1FH 1EH 1DH 1CH 1BH 1AH 19H 18H 22H 17H 16H 15H 14H 13H 12H 11H 10H 21H 0FH 0EH 0DH 0CH 0BH 0AH 09H 08H 20H 07H 06H 05H 04H 03H 02H 01H 00H - 特殊功能寄存器 特殊功能寄存器(SFR)也称为专用寄存器,特殊功能寄存器反映了MCS-51单片机的运行状态。很多功能也通过特殊功能寄存器来定义和控制程序的执行。 MCS-51有21个特殊功能寄存器,它们被离散地分布在内部RAM的80HFFH地址中,这些寄存的功能已作了专门的规定,用户不能修改其结构。表2是特殊功能寄存器分布一览表,我们对其主要的寄存器作一些简单的介绍。 程序计数器PC(program Counter) 程序计数器在物理上是独立的,它不属于特殊内部数据存储器块中。PC是一个16位的计数器,用于存放一条要执行的指令地址,寻址范围为64kB,PC有自动加1功能,即完成了一条指令的执行后,其内容自动加1。PC本身并没有地址,因而不可寻址,用户无法对它进行读写,但是可以通过转移、调用、返回等指令改变其内容,以控制程序按我们的要求去执行。 累加器ACC(Accumulator) 累加器A是一个最常用的专用寄存器,大部分单操作指令的一个操作数取自累加器,很多双操作数指令中的一个操作数也取自累加器。加、减、乘、除法运算的指令,运算结果都存放于累加器A或AB累加器对中。大部分的数据操作都会通过累加器A进行,它形象于一个交通要道,在程序比较复杂的运算中,累加器成了制约软件效率的“瓶颈”,它的功能较多,地位也十分重要。以至于后来发展的单片机,有的集成了多累加器结构,或者使用寄存器阵列来代替累加器,即赋予更多寄存器以累加器的功能,目的是解决累加器的“交通堵塞”问题。提高单片机的软件效率。 表2 特殊功能寄存器 标识符号 地址 寄存器名称 ACC 0E0H 累加器 B 0F0H B寄存器 PSW 0D0H 程序状态字 SP 81H 堆栈指针 DPTR 82H、83H 数据指针(16位)含DPL和DPH IE 0A8H 中断允许控制寄存器 IP 0B8H 中断优先控制寄存器 P0 80H I/O口0寄存器 P1 90H I/O口1寄存器 P2 0A0H I/O口2寄存器 P3 0B0H I/O口3寄存器 PCON 87H 电源控制及波特率选择寄存器 SCON 98H 串行口控制寄存器 SBUF 99H 串行数据缓冲寄存器 TCON 88H 定时控制寄存器 TMOD 89H 定时器方式选择寄存器 TL0 8AH 定时器0低8位 TH0 8CH 定时器0高8位 TL1 8BH 定时器1低8位 TH1 8DH 定时器1高8位经过12位AD转换器后,接8051单片机,单片机输出端用3个引脚去控制两个执行件,其中一个件用一个脚,另一个件用两个脚单片机有P0.0P0.7,P1.0P1.7,P2.0P2.7,P3.0P3.7,这些引脚,怎么去分配啊?如果你的地址空间有余富的话 可以使用p2.7,p2.6,p2.5作为地址线,分别将两个执行件映射到单片机的地址空间,这样可以按照访问存储器的方法使用movx指令进行控制。如果地址空间没有余富或者说地址线不够用,可以使用p1口的某三条线作为执行件的选通信号,具体使用那一位可以根据你的系统,只要没有用到的p1口的管脚都可以使用。由于p3口多是复用管脚,因此在搞不清具体用法的时候,要慎用p3口。另外,如果涉及到时序问题,p1口是很好的选择。8051有5个中断源,它们是两个外中断INT0(P3.2)和INT1(P3.3)、两个片内定时/计数器溢出中断TF0和TF1,一个是片内串行口中断TI或RI,这几个中断源由TCON和SCON两个特殊功能寄存器进行控制。用8051单片机设计一数字式温度计 的电路图 有程序的最好这个电路很简单,我说一下就可以了。数字式温度传感器用最常用的DS18B20,它只有3个管脚,一个接电源,一个接地,另一个接8051单片机就可以了。温度值用数码管显示。这样整个电路就接好了。如果楼主觉得我回答的可以别忘了给我加分哦,为了你的问题我花费了半天的时间啊。程序如下:#include#include #define uchar unsigned char #define uint unsigned int#define Self_Define_ISP_Download_Command 0x3Dsfr IAP_CONTR=0xE7;sbit DQ = P35; /DS18B20接入口uchar code table= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ;char bai,shi,ge; /定义变量void Init_Com(void) TMOD = 0x20; SM0=0; SM1=1; REN=1; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; EA=1; ES=1;/*延时子函数*/void delay(uint num) while(num-) ;/*DS18b20温度传感器函数*/Init_DS18B20(void) /传感器初始化 uchar x=0; DQ = 1; /DQ复位 delay(10); /稍做延时 DQ = 0; /单片机将DQ拉低 delay(80); /精确延时 大于 480us /450 DQ= 1; /拉高总线 delay(20); x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(30);/读一个字节ReadOneChar(void) uchar i=0; uchar dat = 0; for (i=8;i0;i-) DQ = 0; / 给脉冲信号 dat=1; DQ = 1; / 给脉冲信号 if(DQ) dat|=0x80; delay(8); return(dat);/写一个字节WriteOneChar(unsigned char dat) uchar i=0; for (i=8; i0; i-) DQ = 0; DQ = dat&0x01; delay(10); DQ = 1; dat=1; delay(8);/读取温度int ReadTemperature(void) uchar a,b; uint t; float tt; Init_DS18B20(); WriteOneChar(0xCC); / 跳过读序号列号的操作 WriteOneChar(0x44); / 启动温度转换 Init_DS18B20(); WriteOneChar(0xCC); /跳过读序号列号的操作 WriteOneChar(0xBE); /读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=ReadOneChar();/低位 b=ReadOneChar();/高位 tt=(b*256+a)*0.0625*100;/2个8位合成16位 t=(int)tt; /*t=b; t0;a-) for(b=100;b0;b-); /延时约1S IAP_CONTR = 0x60; else TI=0; 8051单片机的PO口用作通用I/O口输入时,若通过TTL“OC”门输入数据,应该注意什么?为什么?需要上拉电阻。OC门电路无法输出高低电平,只有靠上拉电阻才能实现。这是我刚写的一个74HC595 驱动8段数码管的,程序是让数码管0到9循环显示求一个8051接74HC595 8段数码管的C代码#include sbit sclk=P20;sbit sda=P21;sbit slck=P22;int tab10=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F;void delay() int i,j;for(i=0;i255;i+)for(j=0;j80;j+);void bit_dat(bit i) sclk=0; sda=i; sclk=1;void dat(char i) slck=0;bit_dat(bit)(tabi&0x80);bit_dat(bit)(tabi&0x40);bit_dat(bit)(tabi&0x20);bit_dat(bit)(tabi&0x10);bit_dat(bit)(tabi&0x08);bit_dat(bit)(tabi&0x04);bit_dat(bit)(tabi&0x02);bit_dat(bit)(tabi&0x01);slck=1;main() int i;while(1) for(i=0;i10;i+)dat(i); delay();i=0;8051的时钟周期,机器周期,指令周期是如何分配的?当振荡频率为10MHZ时,一个机器周期为多少微秒?8051的时钟周期即CPU的晶振的振荡频率的振荡周期(频率的倒数)当振荡频率为10MHZ时,振荡周期=1/10MHZ=0.1us机器周期是完成一个基本操作的时间单元,一个机器周期=12个时钟周期当振荡频率为10MHZ时,机器周期=12x0.1=1.2us8051的指令周期,指取出并执行一条指令的时间。一般为1-4个机器周期指令集8051 INSTRUCTION SET1.Arithmetic operations:Mnemonic Byte CycADD A,Ri 1 1ADD A,Rn 1 1ADD A,direct 2 1ADD A,#data 2 1ADDC A,Ri 1 1ADDC A,Rn 1 1ADDC A,direct 2 1ADDC A,#data 2 1SUBB A,Ri 1 1SUBB A,Rn 1 1SUBB A,direct 2 1SUBB A,#data 2 1INC A 1 1INC Ri 1 1INC Rn 1 1INC DPTR 1 1INC direct 2 1INC direct 2 1DEC A 1 1DEC Ri 1 1DEC Rn 1 1DEC direct 2 1MUL AB 1 4DIV AB 1 4DA A 1 12.Logical opreations:ANL A,Ri 1 1XRL A,Ri 1 1ANL A,Rn 1 1XRL A,Rn 1 1ANL A,direct 2 1XRL A,direct 2 1ANL A,#data 2 1XRL A,#data 2 1ANL direct,A 2 1XRL direct,A 2 1ANL direct,#data 3 2XRL direct,#data 3 2ORL A,Ri 1 1CLR A 1 1ORL A,Rn 1 1CPL A 1 1ORL A,direct 2 1RL A 1 1ORL A,#data 2 1RLC A 1 1ORL direct,A 2 1RR A 1 1ORL direct,#data 3 2RRC A 1 1SWAP A 1 13.Data transfer:Mnemonic Byte CycMOV A,Ri 1 1MOV DPTR,#data16 3 2MOV A,Rn 1 1MOVC A,A+DPTR 1 2MOV A,direct 2 1MOVC A,A+PC 1 2MOV A,#data 2 1MOVX A,Ri 1 2MOV Ri,A 1 1MOVX A,DPTR 1 2MOV Ri,direct 2 2MOVX Ri,A 1 2MOV Ri,#data 2 1MOVX DPTR,A 1 2MOV Rn,A 1 1PUSH direct 2 2MOV Rn,direct 2 2POP direct 2 2MOV Rn,#data 2 1XCH A,Ri 1 1MOV direct,A 2 1XCH A,Rn 1 1MOV direct,Ri 2 2XCH A,direct 2 1MOV direct,Rn 2 2XCHD A,Ri 1 1MOV direct,direct 3 2MOV direct,#data 3 24.Boolean variable manipulation:Mnemonic Byte CycCLR C 1 1ANL C,bit 2 2SETB C 1 1ANL C,/bit 2 2CPL C 1 1ORL C,bit 2 2CLR bit 2 1ORL C,/bit 2 2SETB bit 2 1MOV C,bit 2 1CPL bit 2 1MOV bit,C 2 25.Program and machine control:Mnemonic Byte CycNOP 1 1JZ rel 2 2RET 1 2JNZ rel 2 2RETI 1 2JC rel 2 2ACALL addr11 2 2JNC rel 2 2AJMP addr11 2 2JB bit,rel 3 2LCALL addr16 3 2JNB bit,rel 3 2LJMP addr16 3 2JBC bit,rel 3 2SJMP rel 2 2CJNE A,direct,rel 3 2JMP A+DPTR 1 2CJNE A,#data,rel 3 2DJNZ Rn,rel 2 2CJNE Ri,#data,rel 3 2DJNZ direct,rel 3 2CJNE Rn,#data,rel3 28051引脚功能8051 基本资料如下:8051 主要特性8051 引脚说明8051 中断服务常式的进入点8051 特殊目的寄存器8051 内部控制寄存器at89c51 为 ATMEL 所生产的可电气烧录清洗的 8051 相容单芯片,其内部程序代码容量为4KB8051主要功能列举如下: 为一般控制应用的 8 位单芯片 晶片内部具时钟振荡器(传统最高工作频率可至 12MHz) 内部程式存储器(ROM)为 4KB 内部数据存储器(RAM)为 128B 外部程序存储器可扩充至 64KB 外部数据存储器可扩充至 64KB 32 条双向输入输出线,且每条均可以单独做 I/O 的控制 5 个中断向量源 2 组独立的 16 位定时器 1 个全多工串行通信端口 8751 及 8752 单芯片具有数据保密的功能 单芯片提供位逻辑运算指令VCC8051 电源正端输入,接+5V。VSS电源地端。XTAL1单芯片系统时钟的反相放大器输入端。XTAL2系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一 20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。RESET8051的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,8051便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。EA/VppEA为英文External Access的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。ALE/PROGALE是英文Address Latch Enable的缩写,表示地址锁存器启用信号。8051可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0A7)锁进锁存器中,因为8051是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。PSEN此为Program Store Enable的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。8051可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。PORT0(P0.0P0.7)端口0是一个8位宽的开路汲极(Open Drain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0A7)及数据总线(D0D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0A7,再配合端口2所送出的A8A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。PORT2(P2.0P2.7)端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在8051扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8A15,这个时候P2便不能当做I/O来使用了。PORT1(P1.0P1.7)端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。PORT3(P3.0P3.7)端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。其引脚分配如下:P3.0:RXD,串行通信输入。P3.1:TXD,串行通信输出。P3.2:INT0,外部中断0输入。P3.3:INT1,外部中断1输入。P3.4:T0,计时计数器0输入。P3.5:T1,计时计数器1输入。P3.6:WR:外部数据存储器的写入信号。P3.7:RD,外部数据存储器的读取信号。(1)累加器A(Accumulator)写程序时大部分的指令运算都通过此寄存器,包括数据转移、储存运算结果和条件转移判断。(2)B寄存器此寄存器主要用于乘法及除法指令中,在乘法运算中存放乘积结果的高字节数据;在除法运算中则存放余数。当然也可以做一般寄存器来使用。(3)程序状态字PSW(Program Status Word)此寄存器用来存放CPU的状态,类似一般CPU的标志寄存器,使用者可以改变其值来控制CPU的执行。(4)堆叠指针SP为8位的寄存器,用以指示目前堆叠区的存放位置,堆叠区最多只有256,而且一定在内部RAM中,当8051系统重置后SP指向07H,因此程序一执行时通常会将堆叠往后移,避免程序执行时把堆叠破坏掉。(5)数据指针DPTR(Data Pointer)DPTR是一个16位寄存器,由DPH及DPL两寄存器组成,系统DPTR可以看成是16位寄存器寻址到完整的64K存储器空间或是看成两个8位寄存器来加以利用。一旦当成16位寄存器便可利用指令MOVX A, DPTR来存取外部数据存储器,或利用指令MOVC A, DPTR来存取外部程序存储器。(6)P0、P1、P2、P3(端口0端口3)为8051 4个I/O端口的输出锁存寄存器。(7)TH0、TL0、TH1、TL1定时计数寄存器分别为定时器0及定时器1的工作寄存器,这二对寄存器可以做16位的计时计数用。(8)串行端口缓冲器SBUF(Serial Buffer)用来存放串行传输时数据进出的工作寄存器,经由串行端口传送数据出去是将数据写入SBUF,而接收时则由SBUF内读出对方传送来的数据。(9)控制寄存器IP、IE寄存器是做8051的中断控制用;TMOD、TCON寄存器用来做计时计数器控制;SCON则控制串行传输的工作模式设定。PCON则做8051省电模式操作控制。8051内部控制寄存器只有6个,想要充分发挥8051单芯片的功能必须对这些暂存器有所了解。IE、IP寄存器 :中断控制用TMOD、TCON寄存器 :计时计数器用SCON寄存器 :串行传输控制PCON寄存器 :省电模式操作以下分别列表介绍。可位寻址,地址:A8HEA(IE.7) :EA=0时,所有中断禁用(中断不产生)。EA=1时,各中断之产生由个别的启用位决定。(IE.6) :保留。ET2(IE.5):启用定时器 2 溢位之中断(8052使用)。ES(IE.4) :启用串行端口之中断(ES=1启用,ES=0禁用)。ET1(IE.3):启用定时器1中断。EX1(IE.2):启用外部中断INT1之中断。ET0(IE.1):启用定时器0中断。EX0(IE.0):启用外部中断INT0之中断。可位寻址,地址B8H。(IP.7) :保留。(IP.6) :保留。PT2(IP.5):设定定时器 2 之优先次序(8052使用)。PS(IP.4) :设定串行端口之中断优先顺序。PT1(IP.3):设定定时器 1 之优先顺序。PX1(IP.2):设定外部中断 INT1 之优先顺序。PT0(IP.1):设定定时器 0 之优先顺序。PX0(IP.0):设定外部中断 INT0 之优先顺序。不可位寻址,地址89H。定时器1 定时器0 GATE :定时器动作开关控制位,当GATE=1 时,INT0或INT1 引脚为高电平,同时TCON中的 TR0 或 TR1 控制位为1时,计时/计数器 0 或 1 才会动作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1即可动作。C/T :做定时器或计数器功能之选择位。C/T=1为计数器,由外部引脚 T0 或 T1 输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。M1: 模式选择位1。M0: 模式选择位0。可位寻址,地址88H。TF1(TCON.7):定时器1溢位标志,当计时溢位时,由硬件设定为1,在执行过相对的中断服务常式后则自动清除为0。TR1(TCON.6):定时器1启动控制位,可以由软件来设定或清除。TR1=1时启动定时器动作,TR1=0时关闭。TF0(TCON.5):定时器0溢位标志,当计时溢位时,由硬件设定为1,在执行过相对的中断服务常式后则自动清除为0。TR0(TCON.4):定时器0启动控制位,可以由软件来设定或清除。TR0=1时,启动定时器动作,TR0=0时关闭。IE1(TCON.3):外部中断1动作标志,当外部中断被侦测出来时,硬件自动设定此位,在执行过中断服务常式后,则消除为0。IT1(TCON.2):外部中断1动作型式选择,IT1=1时,由下降缘产生外部中断,IT1=0时,则为低电平产生中断。IE0(TCON.1):外部中断0动作标志,当外部中断被侦测出来时,硬件自动设定此位,在执行过中断服务常式后,则清除为0。IT0(TCON.0):外部中断0动作型式选择,IT0=1时为下降缘产生外部中断,IT0=0 时则为低电平产生中断。可位寻址,地址98H。SM0(SCON.7):串行端口模式设定位0。SM1(SCON.6):串行端口模式设定位1。SM2(SCON.5):8051连接多重处理器通信的控制位。REN(SCON.4):串行通信接收启用信号,该位可以由软件来设定。TB8(SCON.3):在串行通信模式2和模式3操作时第9个传送数据位。RB8(SCON.2):在串行通信模式2和模式3操作时第9个接收数据位。TI(SCON.1) :串行通信传送的中断处理标志。RI(SCON.0) :负责串行通信接收的中断处理标志。模式选择:不可位寻址,地址87H。SMOD:双倍波特率产生控制位。 :保留3位。GF1 :一般用途标志。GF0 :一般用途标志。PD :降低8051功率消耗控制位,PD=1时设定,PD=0为清除。IDL :8051晶片闲置状态操作控制位。8051的基本电路中接入时钟脉冲有什么用时钟脉冲?是晶振吗?若是问晶振,因为单片机内部电路说到底就是个时序逻辑电路(含有锁存器、触发器等),而时序逻辑电路与组合逻辑电路最大的不同就是它需要时钟,这样它才能被启动工作、确定内部各器件状态改变的先后顺序,以正常工作。而晶振是由石英晶体做成,能发出频率很稳定的脉冲,可以作为单片机的时钟标准。单片机电子实时时钟/万年日历系统悬赏分:0 - 提问时间2006-5-30 17:58 【一】题目:电子实时时钟/万年日历系统【二】本方案实现功能: 1显示准确的北京时间(时、分、秒)及公历日期显示功能(年、月、日)2可通过按键切换年、月、日及时、分、秒的显示状态3可随时可以调校年、月、日或时、分、秒4可每次增减一进行时间调节,也可快速增减进行时间调节5有闹钟功能,模拟真实闹钟声音,闹钟声音由缓慢逐渐变为急促6附带秒表功能7可动态完整显示年份,实现真正的万年历【三】方案考虑:1硬件方案:(1)led数码管:采用8只数码管实现显示功能。(2)按键:采用4个按键实现调节时间,跳转执行功能等。? 按键分布 ? 按键功能:1) 按键1:短按转换年月日/时分秒;长按进入闹钟设置。2) 按键2:短按移位修改;在正常计时状态下长按进入秒表;在闹钟设置状态下长按开闹钟。3) 按键3:在修改状态下短按被修改位逐步加一,长按被修改位快速增加;在正常计时并显示年月日状态下短按显示完整年月。4) 按键4:在修改状态下短按被修改位逐步减一,长按被修改位快速减少;在正常计时并显示年月日状态下短按显示月日星期。按键数目考虑:采用4个按键的目的在于简化操作。片机驱动LED数码管有很多方法,按显示方式分,有静态显示和 动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。 静态显示就是显示驱动电路具有输出锁存功能,单片机将所要显示的数据,显示数据稳定,占用很少的CPU时间。动态显示需要CPU时刻对显示器件进行数据刷新,显示数据有闪烁感,占用的CPU时间多。 这两种显示方式各有利弊;静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多; 动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。 硬件译码就是显示的段码完全由硬件完成,CPU只要送出标准的BCD码即可,硬件接线有一定标准。软件译码是用软件来完成硬件的功能,硬件简单,接线灵活,显示段码完全由软件来处理,是目前常用的显示驱动方式。 比较常用的显示驱动芯片有: 74LS164 , CD4094+ULN2003(2803) ,74HC595+ULN2003(2803) , TPIC6B595,AMT9095B, AMT9595等许多。 另外,市场上还有一些专用的LED扫描驱动显示模块如MAX7219等,功能很强,价格稍高一些。下面是一个用74LS164驱动显示的例子和一个用4094扫描驱动显示的例子: 上例图中加了一个PNP型的三极管来控制数码管的电源,是因为164没有数据锁存端,数据在传送过程中,对输出端来说是透明的,这样,数据在传送过程中,数码管上有闪动现象,驱动的位数越多,闪动现象越明显。为了消除这种现象,在数据传送过程中,关闭三极管使数码管没电不显示,数据传送完后立刻使三极管导通,这样就实现锁存功能。这种办法可驱动十几个164显示而没有闪动现象。 这个例子是用4094做位选,用89C2051的P1口线做段驱动来扫描驱动9位数码管的显示。 由于4094只有8个输出口线,其中第九位是用CPU口线直接进行位选的。9个LED的所有相同位置的段口线都接到一起,然后接到单片机的一个口线上,供八段,使用8条CPU口线。其软件的工作过程是这样的:要在LED上显示1-9位数,首先将1的段码送到P1口线上,然后向4094送位选数据01,使4094的Q1口线输出高电平,选中第一位数码管,使阳极得电,在第一位上就显示出1,重复上述过程,一直到第九位,然后不断重复这一过程,就实现了扫描显示。基于单片机总线方式的数码管接口电路(1)在开发单片机的过程中,常常会因为资源不足而不得不大量扩展接口芯片以满足应用系统的需要,其中原因之一就是人机界面中的键盘、显示占用了系统太多资源,造成系统庞大,并降低了系统的可靠性。在单片机应用系统中。通常键盘、显示可以采用一些通用或专用芯片进行扩展,以节省单片机资源,但和系统开销之间有不可调和的矛盾。为解决这一问题,我们将数码管显示也做成映射为存储空间的方法来选通数码管,极大地节约了单片机资源。系统造价也减少了,较之我们现在流行的数码管接口电路有极大的优势。它不需要像传统的静态显示那样需要大量硬件作支持,也不像一般的动态显示那么难于编程,更为突出的一点就是非常容易扩展更多数码管显示。 这个问题是笔者在备战大学生电子设计大赛时遇见的。当时我们要尽量压缩最小系统的硬件开销,又不至于减少其功能,碰到最棘手的问题就是显示部分。我们首先想用串口通信加74LS164的方案解决,但是手工制作确实难度很大。后来我们用专用显示芯片MAX7912完成,同样有上述问题。我们还用过8255作控制接口,虽然较前两种解决方案有所改进,但是系统造价并没有降下来,最终我们选择了基于单片机总线方式的数码管接口电路,把它用在统一制作的单片机最小系统板上,效果非常明显。只需额外加一个74LS 3 7 3锁存器和74LS245作驱动,就非常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高校辅导员核心素养提升的策略与实施路径
- 人工智能在高职信息技术课程的教学评估中应用
- 扩大社区养老服务有效供给实施方案
- 英语高一模拟试题及答案
- 公安局驻地反侵袭应急预案
- 电力监控专业考试题及答案
- 第14课 守护精灵-控制逻辑说课稿-2023-2024学年小学信息技术(信息科技)五年级下册清华大学版
- 广告营销专业考试题及答案
- 2024年五年级英语下册 Unit 2 Can I help you Lesson 12说课稿 人教精通版(三起)
- 手表专业测试题目及答案
- 建筑设计公司结构设计师工作手册
- 2025年青海省事业单位招聘考试卫生类护理学专业知识试题
- 宝宝呛奶科普课件
- 安全注射标准WST856-2025学习解读课件
- Z世代对消费场所视觉对比度
- 语言认同建构机制-第1篇-洞察及研究
- 2025年贵州省中考物理试题及答案
- 造血干细胞移植并发症
- (2025年标准)sm调教协议书
- 工会委员候选人选票(式样)
- 55790《表面工程学(第2版)》教学大纲
评论
0/150
提交评论