基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx

上传人:b****1 文档编号:5838603 上传时间:2023-05-05 格式:DOCX 页数:26 大小:286.28KB
下载 相关 举报
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第1页
第1页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第2页
第2页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第3页
第3页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第4页
第4页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第5页
第5页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第6页
第6页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第7页
第7页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第8页
第8页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第9页
第9页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第10页
第10页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第11页
第11页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第12页
第12页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第13页
第13页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第14页
第14页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第15页
第15页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第16页
第16页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第17页
第17页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第18页
第18页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第19页
第19页 / 共26页
基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx

《基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx(26页珍藏版)》请在冰点文库上搜索。

基于AT89S52的流水灯状态控制与数码管显示系统Word文件下载.docx

MCU[1](Microcontrollers)isakindofintegratedcircuitchip,istheuseofultralargescaleintegratedcircuittechnologytoadataprocessingcapabilityofthecentralprocessingunit(CPU),randomaccessmemoryram,ROMandvarietyofI/Oportandinterruptsystem,timer/counterandfunction(possiblyalsocomprisesadisplaydrivecircuit,pulsewidthmodulationcircuit,analogmultiplexer,a/Dconvertercircuit)integratedintoapieceofsiliconconstituteasmallandtoimprovethemicrocomputersystem,iswidelyusedinindustrialcontrol.Fromthelastcentury80'

s,fromthe4,8bitmicrocontroller,tothepresent300Mofthehigh-speedmicrocontroller.

ThedesignisbasedonAT89S52chipmachinedesignoffiveLEDwaterlampcircuitthroughofAT89S52writeClanguageprogramtoachievetheeightlight-emittingdiodelightwatercontrolfunctionandbyAT89S52externalinterruptfunctionrealizestheswitchingoflightwaterstateandflickerfrequency,alsowithfourdigitaltubedisplaylightwaterstateinformation.Intheprocessofthedesignofthesubject,learningandmasteringthefunctionalprincipleofAT89S52microcontrolleranditsClanguageprogrammingmethod,understandthelifeofneonlights.

Keywords:

AT89S52chip;

Runninglight;

Timeinterrupt;

Digitaltube;

第1章引言1

1.151单片机简介1

1.2AT89S52单片机简介1

1.3论文主要内容1

第2章流水灯状态控制与显示系统设计过程2

2.1设计思路说明2

2.2流水灯状态控制与数码管显示系统设计过程2

2.2.1编写头文件及定义整型及字符2

2.2.2用16进制表示流水形式3

2.2.3编写4位数码管程序3

2.2.4编写延时函数4

2.2.5编写定时器外部中断程序4

2.2.6编写主函数6

2.2.7编写流水灯程序6

2.3基于源程序设计的AutoFlowchart流程图11

2.3.1延时函数11

2.3.2流水灯延时控制11

2.3.3主函数12

2.3.44位数码管状态显示功能13

2.3.5花样流水灯状态控制流程14

2.4电路原理proteus仿真图15

2.5流水灯状态控制与显示系统程序源代码15

第3章对设计过程的总结与分析24

3.1设计过程中的问题及解决思路24

3.2设计总结24

致谢25

参考文献25

第1章引言

1.151单片机简介

51单片机是对所有兼容Intel8031指令系统的单片机的统称。

该系列单片机的始祖是Intel的8031单片机,后来随着Flashrom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。

很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。

51单片机是基础入门的一个单片机,还是应用最广泛的一种。

需要注意的是52系列的单片机一般不具备自编程能力。

1.2AT89S52单片机简介

AT89S52是一种低功耗、高性能CMOS 

8位微控制器,具有8K系统可编程Flash 

存储器。

使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。

片上Flash允许程序存储器在系统可编程,亦适于常规编程器。

在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。

AT89S52具有以下标准功能:

8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。

另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。

空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。

掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

1.3论文主要内容

本论文主要讲述了基于AT89S52单片机实现对LED流水灯状态控制并通过4位数码管显示状态的设计过程。

展示了由定时器外部中断控制流水灯,并组成流水灯控制与显示系统的构思,以及运用keil4软件编写流水灯程序的过程,涵盖了程序编写的思路,并对整个设计过程中所遇到的问题进行了总结与反思。

第2章流水灯状态控制与显示系统设计过程

2.1设计思路说明

从选择的设计题目出发,题目要求为设计多种花样不同的流水灯,并实现对其的控制功能。

基于设计要求及所实际拥有的LED灯的个数,首先需要设计花样流水灯的闪烁方式:

单个点亮LED0~7,单个点亮LED7~0;

逐个点亮LED0~7,LED逐个熄灭0~7;

奇数灯流水1~7,偶数灯流水0~6;

双灯流水,4灯流水;

两边住中间亮,两边住中间灭,中间往两边亮,中间往两边灭。

在决定好流水灯的闪烁方式后,接下来需要做的是了解并弄清楚自己所要用于实现花样流水灯闪烁的51单片机及AT89S52芯片的原理及各个端口的用途,以及如何通过程序点亮对应的LED灯,然后设计定时器中断程序实现通过AT89S52的定时器外部中断对流水灯进行控制,并通过外接4位数码管显示所控制的流水灯状态,组成一个整体的控制系统。

最后再针对自己的设计思路并结合AT89S52单片机,用keil软件编写C语言程序,最后再将编写好的程序所生成的hex文件用progisp软件烧写进所制作的单片机里,并依照烧入完成后程序实际运行效果调试程序,直到达到较为理想的流水灯控制与状态显示系统为止。

2.2流水灯状态控制与数码管显示系统设计过程

2.2.1编写头文件及定义整型及字符

#include<

reg52.h>

typedefunsignedcharuchar;

typedefunsignedintuint;

sbits1=P1^0;

sbits2=P1^1;

sbitwei1=P3^4;

sbitwei2=P3^5;

sbitwei3=P3^6;

sbitwei4=P3^7;

ucharflag;

uintt=100;

2.2.2用16进制表示流水形式

单个点亮LED0~7:

0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f

单个点亮LED7~0:

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe

逐个点亮LED0~7:

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00

逐个熄灭LED7~0:

0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff

双LED流水灯:

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f

四LED流水:

0xf0,0xe1,0xc3,0x87,0x0f

两边往中间亮/中间往两边灭:

0xff,0x7e,0x3c,0x18,0x00

两边往中间灭/中间往两边亮:

0x00,0x81,0xc3,0xe7,0xff

2.2.3编写4位数码管程序

共阳代码:

0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x05

voiddisp()

{

P3=0XF0|P3;

wei1=0;

P2=tab[flag+1+54];

delay(3);

wei1=1;

wei2=0;

P2=tab[t/100+54];

wei2=1;

wei3=0;

P2=tab[t/10%10+54];

wei3=1;

wei4=0;

P2=tab[t%10+54];

wei4=1;

}

2.2.4编写延时函数

voiddelay(uintms)

{

uchari;

while(ms--)

for(i=0;

i<

120;

i++);

2.2.5编写定时器外部中断程序

voidtime0_init()//定时器T0初始化

TMOD=0x01;

//设置定时器0工作方式1

TH0=(65536-50000)/256;

//定时50ms高8位设置

TL0=(65536-50000)%256;

//低8位设置

ET0=1;

//开启定时器0中断使能

EA=1;

//开启总中断使能

TR0=1;

//开启中断

EX0=1;

IT0=1;

voidtime0()interrupt1//定时器T0入口函数

//对定时50ms重新赋初值

P1=0xff;

switch(P1)

{

case0xff:

t=100;

break;

case0xfe:

t=200;

case0xfd:

case0xfc:

t=300;

}

disp();

voidint0()interrupt0

flag++;

if(flag==5)

flag=0;

}

2.2.6编写主函数

voidmain()

time0_init();

while

(1)//主循环

2.2.7编写流水灯程序

ucharj;

switch(flag)

case0:

for(j=0;

j<

8;

j++)//单个点亮LE0~LED7

{

P0=tab[j];

delay(t);

if(flag==1)

break;

}

for(j=8;

16;

j++)//单个点亮LE7~LED0

}break;

case1:

for(j=16;

24;

j++)//逐个点亮LE0~LED7

if(flag==2)

}

for(j=24;

32;

j++)//逐个熄灭LE0~LED7

case2:

4;

j++)//奇数流水

P0=tab[2*j+1];

if(flag==3)

j++)//偶数流水

P0=tab[2*j];

case3:

for(j=32;

39;

j++)//双LED流水

if(flag==4)

for(j=39;

44;

j++)//4LED流水

case4:

for(j=44;

49;

j++)//两边往中间亮

if(flag==0)

for(j=49;

54;

j++)//两边往中间灭

for(j=53;

j>

48;

j--)//中间往两边亮

for(j=48;

43;

j--)//中间往两边灭

2.3基于源程序设计的AutoFlowchart流程图

2.3.1延时函数

2.3.2流水灯延时控制

2.3.3主函数

2.3.34位数码管状态显示功能

2.3.4花样流水灯状态控制流程

2.4电路原理proteus仿真图

2.5流水灯状态控制与显示系统程序源代码

uchartab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//单个点亮LED0~7

0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,//单个点亮LED7~0

0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//16~23逐个点亮

0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff,//24~31逐个熄灭

0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,//32~38双LED

0xf0,0xe1,0xc3,0x87,0x0f,//39~43四LED

0xff,0x7e,0x3c,0x18,0x00,//44~48两边往中间亮/中间往两边灭

0x00,0x81,0xc3,0xe7,0xff,//49~53两边往中间灭/中间往两边亮

0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x05};

//。

延时1ms函数。

//设置定时器0工作方式1

//定时50ms高8位设置

//低8位设置

//开启总中断使能

//开启中断

voidtime0()interrupt1//定时器T0入口函数

//对定时50ms重新赋初值

主函数。

ucharj;

j--)//中间往两边亮

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2