基于C51单片机4按键4花样流水灯4种LCD显示的设计
- 格式:doc
- 大小:59.00 KB
- 文档页数:6


51单片机流水灯程序51单片机是一种广泛使用的微控制器,具有丰富的IO端口和定时器资源。
流水灯程序是51单片机入门的基础示例之一,通过多个LED灯按照一定顺序逐个亮起或熄灭,形成流水灯的效果。
下面详细介绍51单片机流水灯程序的编写。
一、硬件连接要实现流水灯效果,需要将多个LED灯连接到51单片机的IO端口上。
一般使用P1端口作为输出端口控制LED灯的亮灭,P2端口作为输出口控制LED灯亮起的顺序。
具体连接方式如下:•将LED灯的阳极通过限流电阻连接到VCC。
•将每个LED灯的阴极通过限流电阻连接到P1端口。
•将P2端口的每个引脚依次连接到每个LED灯的阴极。
二、程序实现#include <reg52.h> //包含51单片机头文件#define LED P1 //定义LED为P1端口#define ORDER P2 //定义顺序控制为P2端口void delay(unsigned int t); //延时函数声明void main(){unsigned char i;while(1) //循环控制流水灯效果{for(i=0; i<8; i++) //控制8个LED灯{LED = 0x01<<i; //将第i个LED灯置亮delay(10000); //延时一段时间,使LED灯亮起后延时熄灭LED = 0x01>>(i+1); //将第i个LED灯置灭}}}void delay(unsigned int t) //延时函数定义{unsigned int i, j;for(i=0; i<t; i++){for(j=0; j<1275; j++);}}该程序首先定义了LED和ORDER两个变量,分别对应P1和P2端口的输出口。
在主函数中,使用一个while循环控制流水灯效果。
在循环内部,使用一个for循环控制8个LED灯的状态。
在每次循环中,先将第i个LED灯置亮,延时一段时间后将其置灭,然后进入下一个循环。
实验3.1.2 数字量输出输出扩展——LED流水灯一、实验目的1、掌握单片机外设扩展的方法2、使用单片机和8255实现LED流水灯的控制。
二、实验内容使用汇编语言编程,功能为:通过KK1脉冲实现LED灯工作方式即时控制,完成LED 开关控制显示和LED左循环、右循环、间隔闪烁功能。
三、实验环境PC机一台,Proteus仿真软件(或TD-PIT实验系统)一套四、实验硬件电路图说明:U2为单片机SST89E554RC,U1为8255A,通过8255A的PB输出使LED工作,BUTTON 为脉冲开关。
五、程序流程图六、实验程序清单ORG 0000HAJMP 0100HORG 0100HMAIN:MOV TMOD,#60H MOV TH1,#0FFHMOV TL1,#0FFHMOV DPTR,#7300HMOV A,#80HMOVX @DPTR,ASETB TR1MOV DPTR,#7100HLEFT:MOV R0,#8MOV A,#01HAG1:MOVX @DPTR,ACALL DELAYRLC ADJNZ R0,AG1JBC TF1,RIGHTAJMP LEFTRIGHT:MOV R0,#8MOV A,#80HAG2: MOVX @DPTR,ACALL DELAYRRC ADJNZ R0,AG2JBC TF1,FLASHAJMP RIGHTFLASH:MOV R0,#8AG3: MOV A,#55HMOVX @DPTR,ACALL DELAYMOV A,#0AAHMOVX @DPTR,ACALL DELAYDJNZ R0,AG3JBC TF1,LEFTAJMP FLASHDELAY:MOV R1,#0FFHDEL0:MOV R2,#0FFHDEL: DJNZ R2,$DJNZ R1,DEL0RETEND七、实验步骤1、按实验电路图接线;2、编写实验程序,编译连接无误后进入调试状态(可用PROTEUS也可以用硬件调试);3、按动BUTTON(PROTEUS下)或KK1(实验箱),观察流水灯工作情况,验证程序功能。
C51流水灯多样显示程序流水,多样,程序功能说明:1、单个LED流水灯从左到右2、单个LED流水灯从右到左3、从左边一个个点亮8个LED4、从右边一个个点亮8个LED5、所有的LED开关8次6、左右闪烁8次7、8个流水灯两边向中间依次点亮8次8、8个流水灯中间向两边依次点亮8次测试环境:在ME300B开发板上测试通过*************************************************************/ #include<reg51."h> //51系列单片机定义文件#define uchar unsigned char //定义无符号字符#define uint unsigned int //定义无符号整数void delay(uint); //声明延时函数void main(void); //声明主函数/***********************************************************主程序/***********************************************************/void main(void){uint i;uchar temp;while(1){/***********************************************************8个流水灯逐个闪动/***********************************************************/temp=0x01;for(i=0;i<8;i++){P0=~temp;delay(100);temp<<=1;}/******************************************************* ****8个流水灯反向逐个闪动/***********************************************************/temp=0x80;for(i=0;i<8;i++){P0=~temp;delay(100);temp>>=1;}/******************************************************* ****8个流水灯依次全部点亮/***********************************************************/temp =0xFE;for(i=0;i<8;i++){P0=temp;delay(100);temp<<=1;}/******************************************************* ****8个流水灯依次全部熄灭/***********************************************************/temp =0xFE;for(i=0;i<8;i++){P0=~temp;delay(100);temp<<=1;}/******************************************************* ****8个流水灯依次反向全部点亮/***********************************************************/temp=0x7F;for(i=0;i<8;i++){P0=temp;delay(100);temp>>=1;}/******************************************************* ****8个流水灯依次反向全部熄灭/***********************************************************/temp=0x7F;for(i=0;i<8;i++){P0=~temp;delay(100);temp>>=1;}/******************************************************* ****8个流水灯全部点亮关闭8次/***********************************************************/temp=0xfF;for(i=0;i<8;i++){P0=temp;delay(100);P0=~temp;delay(100);}/***********************************************************8个流水灯左右晃动8次/***********************************************************/temp=0xAA;for(i=0;i<8;i++){P0=temp;delay(100);P0=~temp;delay(100);}/*********************************************************** 8个流水灯两边向中间点亮8次/***********************************************************/P0=0XFF;delay(200);for(i=0;i<8;i++){P0=0x7e;delay(100);P0=0xbd;delay(100);P0=0xdb;delay(100);P0=0xe7;delay(100);}/***********************************************************8个流水灯中间向两边点亮8次/***********************************************************/P0=0XFF;delay(200);for(i=0;i<8;i++){P0=0xe7;delay(100);P0=0xdb;delay(100);P0=0xbd;delay(100);P0=0x7e;delay(100);}}}/********************************************************** *延时程序/***********************************************************/void delay(uint t) //定义延时函数{register uint bt; for(;t;t--)for(bt=0;bt<255;bt++);}。
基于51单片机的花样流水灯设计DUAN Ting【摘要】本文以AT89C51单片机为核心,采用单片机技术和C语言编程技术实现了一款8位LED流水灯系统.该系统中的LED灯并排排列可以按照某种既定的规律进行闪烁,对于其他同类灯光美化系统设计而言具有一定的借鉴价值.【期刊名称】《数字技术与应用》【年(卷),期】2018(036)012【总页数】2页(P156-157)【关键词】51单片机;流水灯;单片机设计【作者】DUAN Ting【作者单位】【正文语种】中文【中图分类】TP391.41本文以AT89C51单片机芯片为核心,通过硬件设计工作和软件设计工作,实现控制8个发光LED二极管的闪烁,即使LED二极管按照某种位置放置,按照时间先后和间隔顺序进行发光与熄灭的实现,也称流水灯控制系统。
该系统的设计主要分为三部分,即系统框架设计、硬件设计以及系统软件设计。
1 系统框架设计本设计的目的主要是为了能够控制8个LED发光二极管的闪烁工作,对于一般的基于单片机技术的控制系统开发而言,需要实现系统供电、系统驱动、系统复位以及功能扩展。
为了简化系统设计,减少系统开发工作量,因此本设计的系统框架搭建主要分为单片机最小工作系统模块、灯光控制模块、以及LED发光二极管电路模块3部分,而单片机最小工作系统模块中又分为时钟电路模块和复位电路模块,以及单片机芯片。
2 AT89C51单片机单片机全称为单片微型计算机,又被称为单片微控制器,经过不断的技术迭代和改进,如今的单片机已将一个基本完整的、能够实现计算机基本功能的器件集成于一块微型芯片当中。
开发人员在开发各种控制系统时,常常将单片机作为系统的核心,通过其接口来扩展和实现其他功能,通过向单片机内烧录已经制定好的程序来实现系统自动控制。
AT89C51型单片机是51系列单片机众多款型中最为的经典的单片机之一。
该单片机以其低廉的价格、可靠的性能、良好的扩展和兼容性占据了广大的单片机市场,获得了许多电子工程师的应用。