可控跑马灯的设计与实现 2Word下载.docx

上传人:b****6 文档编号:18984623 上传时间:2023-01-02 格式:DOCX 页数:13 大小:205.48KB
下载 相关 举报
可控跑马灯的设计与实现 2Word下载.docx_第1页
第1页 / 共13页
可控跑马灯的设计与实现 2Word下载.docx_第2页
第2页 / 共13页
可控跑马灯的设计与实现 2Word下载.docx_第3页
第3页 / 共13页
可控跑马灯的设计与实现 2Word下载.docx_第4页
第4页 / 共13页
可控跑马灯的设计与实现 2Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

可控跑马灯的设计与实现 2Word下载.docx

《可控跑马灯的设计与实现 2Word下载.docx》由会员分享,可在线阅读,更多相关《可控跑马灯的设计与实现 2Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

可控跑马灯的设计与实现 2Word下载.docx

另外,AT89C51还可以进行0HZ的静态逻辑操作,并支持两种软件的节电模式。

闲散方式停止中央处理器的工作,能够允许随机存取数据存储器、定时/计数器、串行通信口及中断系统继续工作。

掉电方式保存随机存取数据存储器中的内容,但震荡器停止工作并禁止其它所有部件的工作直到下一个复位。

2.1AT89C51的硬件结构

AT89C51共有40条引脚,引脚排列如图2.1所示。

图2.1AT89C51的引脚排列图

AT89C51主要特性如下:

1)与MCS-51兼容。

2)4K字节可编程闪烁存储器。

3)寿命:

1000写/擦循环。

4)数据保留时间为10年。

5)全静态工作为0Hz-24MHz。

6)三级程序存储器锁定。

7)128×

8位内部RAM。

8)32可编程I/O线。

9)两个16位定时器/计数器。

10)5个中断源。

11)可编程串行通道。

12)低功耗的闲置和掉电模式。

13)片内振荡器和时钟电路。

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P0口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口:

P3.0RXD(串行输入口);

P3.1TXD(串行输出口);

P3.2/INT0(外部中断0);

P3.3/INT1(外部中断1);

P3.4T0(记时器0外部输入);

P3.5T1(记时器1外部输入);

P3.6/WR(外部数据存储器写选通);

P3.7/RD(外部数据存储器读选通)。

端口引脚

第二功能

P3.0

RXD

P3.1

TXD

P3.2

INT0

P3.3

INT1

P3.4

T0

P3.5

T1

P3.6

WR

P3.7

RD

图2.2P3口第二功能列表

  RST为复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

  ALE/PROG为当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

  PSEN为外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

  EA/VPP为当/EA保持低电平时,则在此期间外部程序存储器,不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;

当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

AT89C51中有一个用于构成内部震荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。

这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自然震荡器。

外接石英晶体及电容C1,C2接在放大器的反馈回路中构成并联震荡电路。

对外接电容C1,C2虽然没有十分严格的要求,但电容容量的大小会轻微影响震荡频率的高低、震荡器工作的稳定性、起振的难易程序及温度稳定性。

如果使用石英晶体,我们推荐电容使用30PF±

10PF,而如果使用陶瓷振荡器建议选择40PF±

10PF。

用户也可以采用外部时钟。

采用外部时钟的电路如图示。

这种情况下,外部时钟脉冲接到XTAL1端,即内部时钟发生器的输入端,XTAL2则悬空。

由于外部时钟信号是通过一个2分频触发器后作为内部时钟信号的,所以对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。

2.2AT89C51的工作模式

AT89C51共用2种工作模式,分别为闲散节电模式和掉电模式。

下面进行介绍。

AT89C51有两种可用软件编程的省电模式,它们是闲散模式和掉电工作模式。

这两种方式是控制专用寄存器PCON中的PD和IDL位来实现的。

PD是掉电模式,当PD=1时,激活掉电工作模式,单片机进入掉电工作状态。

IDL是闲散等待方式,当IDL=1,激活闲散工作状态,单片机进入睡眠状态。

如需要同时进入两种工作模式,即PD和IDL同时为1,则先激活掉电模式。

在闲散工作模式状态,中央处理器CPU保持睡眠状态,而所有片内的外设仍保持激活状态,这种方式由软件产生。

此时,片内随机存取数据存储器和所有特殊功能寄存器的内容保持不变。

闲散模式可由任何允许的中断请求或硬件复位终止。

终止闲散工作模式的方法有两种,一是任何一条被允许中断的事件被激活,IDL被硬件清除,即刻终止闲散工作模式。

程序会首先影响中断,进入中断服务程序,执行完中断服务程序,并紧随RETI指令后,下一条要执行的指令就是使单片机进入闲散工作模式,那条指令后面的一条指令。

二是通过硬件复位也可将闲散工作模式终止。

需要注意的是:

当由硬件复位来终止闲散工作模式时,中央处理器CPU通常是从激活空闲模式那条指令的下一条开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期有效,在这种情况下,内部禁止中央处理器CPU访问片内RAM,而允许访问其他端口,为了避免可能对端口产生的意外写入:

激活闲散模式的那条指令后面的一条指令不应是一条对端口或外部存储器的写入指令。

在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在中指掉电模式前被冻结。

退出掉电模式的唯一方法是硬件复位,复位后将从新定义全部特殊功能寄存器但不改变RAM中的内容,在VCC恢复到正常工作电平前,复位应无效切必须保持一定时间以使振荡器从新启动并稳定工作。

闲散和掉电模式外部引脚状态如图2.3所示。

模式

程序存储器

ALE

P0

P1

P2

P3

闲散模式

内部

1

数据

浮空

地址

掉电模式

外部

图2.3闲散和掉电模式外部引脚状态

2.3AT89C51程序存储器的加密

AT89C51可使用对芯片上的三个加密位LB1,LB2,LB3进行编程(P)或不编程(U)得到如图2.4所示的功能:

程序加密位

保护类型

U

没有程序保护功能

2

P

禁止从外部程序存储器中执行MOVC指令读取内部程序存储器的内容

3

除上表功能外,还禁止程序校验

4

除以上功能外,同时禁止外部执行

图2.4程序加密位的配置

当LB1被编程时,在复位期间,EA端的电平被锁存,如果单片机上电后一直没有复位,锁存起来的初始值是一个不确定数,这个不确定数会一直保存到真正复位位置。

为了使单片机正常工作,被锁存的EA电平与这个引脚当前辑电平一致。

机密位只能通过整片擦除的方法清除。

3硬件电路设计

本设计使用AT89C51芯片作为控制芯片,利用P0口连接8个发光二极管,利用按键S0输入INT0下降沿中断控制“跑马灯”D0—D7的停与运行,再利用按键S1输入INT1下降沿中断控制“跑马灯”的种类的变换,以达到要求的显示效果。

硬件资源分配如图3.1所示。

图3.1单片机硬件资源分配

即用8个发光二极管,正极上拉1K电阻到5V,负极分别接到P0.0到P0.7。

输入是用按键并联104电容,并上拉1K电阻到5V电源,接到外部中断INT0和INT1,用下降沿触发中断,来对按键进行输入,从而来控制跑马灯。

应用PROTEL软件画出电路原理图,并用手中已有的实验开发板来进行验证。

其中电路原理图如图3.2所示。

图3.2可控跑马灯电路原理图

4软件设计

由任务书给出的功能要求,并结合硬件电路设计和资源分配,来进行软件设计。

步骤为先画出软件流程,然后根据流程图在KeiluVision2开发环境下使用C语言进行编写代码和仿真调试,最后在手中已有的51开放板上进行脱机实验。

经过不断修改之后,代码趋于完善。

4.1程序流程图

图4.1程序流程图

4.2程序代码

/********

控制器:

AT89C51

编译环境:

KeiluVision2

实现功能:

要求开始时,所有灯全亮,按下按键后开始跑马灯,再按下键时停止,再按下键时继续,并要求有多种亮暗组合

资源配置:

外部中断P1.0和P1.1为按键KEY1和KEY2的输入;

P0.0-P0.7为LED显示

********/

#include<

reg51.h>

#defineuintunsignedint

#defineucharunsignedchar

LED_tab1[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

LED_tab2[8]={0xfc,0xf9,0xf1,0xe7,0xcf,0x9f,0x3f,0x7e};

LED_tab3[8]={0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e};

ucharnum1;

ucharnum2;

ucharstop_num2;

ucharLED_STOP;

/****

功能:

延时

****/

voiddelay(uintt)

{

uinti;

ucharj;

for(i=0;

i<

t;

i++)

for(j=0;

j<

200;

j++);

}

/*****

LED显示

*****/

voiddisplay()

uchari;

if(num1==0)

{

for(i=num2;

8;

{

P0=LED_tab1[i];

stop_num2=i;

delay(200);

if(LED_STOP)

break;

}

}

if(num1==1)

P0=LED_tab2[i];

if(num1==2)

P0=LED_tab3[i];

}

}

MCU的初始化

voidmcu_init(void)

P0=0x00;

delay(2000);

num1=0;

num2=0;

LED_STOP=0;

EA=0;

IT0=1;

IT1=1;

EX0=1;

EX1=1;

EA=1;

主函数

voidmain(void)

mcu_init();

while

(1)

display();

KEY1外部中断处理函数

voidKEY1_SER()interrupt0

LED_STOP=!

LED_STOP;

if(!

LED_STOP)

P0=0xf0;

else

num2=stop_num2;

KEY2外部中断处理函数

voidKEY2_SER()interrupt2

num1++;

if(num1>

2)

num1=0;

5心得体会

在本周的课程设计中,我认识到课本上的知识的实际应用,增强了思考和解决实际问题的能力。

虽然只是短暂的一周,但在这期间,却让我受益匪浅。

这次课程设计让我认识到了知识和实践的重要性。

只有牢固掌握了所学的理论知识,才能有清晰的思路,知道每一步该怎样走,才能顺利的解决每一个问题。

但在实际应用中还要更深入思考。

通过查阅书籍和上网搜索资料,我发现所说的基本上都是一样的,只有通过自己的实际操练,上机编程,下载到实验板来验证,才能发现问题的所在,从而真正掌握知识技能。

一周的课程设计虽然结束了,但是在这期间所学的知识和老师的指导让我受益匪浅。

参考文献

1.姚福安.电子电路设计与实践.山东科学技术出版社,2001年10月

2.涂时亮.单片机软件设计技术.重庆科技文献出版社,1987

3.张毅刚.新编MCS51实用汇编程序设计.哈尔滨工业大学出版社,2003

4.康华光.电子技术基础.高教出版社,2003

5.胡汉才.单片机原理及接口技术.清华大学出版社,1996

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1