51单片机实训(二)————基于Proteus的花样流水灯设计


前言

  • 大家好,我是三🐎!这是我51单片机专栏的第四篇文章,本文分享另一个简单实用的小项目————基于Proteus的花样流水灯设计。

一、项目概述

1.1 系统概述

流水灯是在控制系统的控制下按照设定的顺序和时间来发亮和熄灭,形成一定视觉效果的一组灯。流水灯常安装于店面、招牌、夜间建筑物,可以让门面或建筑变得更加美观显眼。形成一定的视觉效果,常安装于店面和招牌上。

1.2 功能设计

为实现流水灯的实际效果所采用了按钮与流水灯相结合的设计方案,使效果更佳个性化与多元化,更能满足客户的需求,以80C51为核心构架硬件电路,外附LED按以及钮进行显示于控制,同时利用C语言编程实现流水灯的显示功能。
流水灯控制原理为:三极管在电路中充当开关的作用,当电路导通,最左边的LED首先点亮。基极串出一电容连接下一个三极管的集电极。当电容充分充电后,下一个三极管导通使得第二个LED点亮,以此类推。可以通过调节电容的容量值,来控制流水灯点亮的时间。


二、项目硬件设计

本系统的硬件设计包括AT89C51控制器核心电路以及外设电路设计,按钮控制模块以及LED流水灯模块,并在Proteus仿真软件上设计系统的仿真电路。

2.1 AT89C51单片机最小系统

单片机最小系统电路,又称最小应用电路,是指用最少的元件组成的单片机可以工作的系统,AT89C51的最小系统电路主要由单片机、晶振电路、复位电路组成。如下图所示:

在这里插入图片描述

2.2 外设电路

  1. LED流水灯模块
    发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自辐射的荧光。不同的半导体材料中电子和空穴所处的能量状态不同。当电子和空穴复合时释放出的能量多少不同,释放出的能量越多,则发出的光的波长越短。常用的是发红光、绿光或黄光的二极管。发光二极管的反向击穿电压大于5伏。它的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过二极管的电流。
    发光二极管的核心部分是由P型半导体和N型半导体组成的晶片,在P型半导体和N型半导体之间有一个过渡层,称为PN结。在某些半导体材料的PN结中,注入的少数载流子与多数载流子复合时会把多余的能量以光的形式释放出来,从而把电能直接转换为光能。PN结加反向电压,少数载流子难以注入,故不发光。当它处于正向工作状态时(即两端加上正向电压),电流从LED阳极流向阴极时,半导体晶体就发出从紫外到红外不同颜色的光线,光的强弱与电流有关。

在这里插入图片描述
2. 控制按钮模块
按钮是一种常用的控制电器元件,常用来接通或断开‘控制电路’(其中电流很小),从而达到控制电动机或其他电气设备运行目的的一种开关。按钮是一种人工控制的主令电器。主要用来发布操作命令,接通或开断控制电路,控制机械与电气设备的运行。按钮的工作原理很简单对于常开触头,在按钮未被按下前,电路是断开的,按下按钮后,常开触头被连通,电路也被接通;对于常闭触头,在按钮未被按下前,触头是闭合的,按下按钮后,触头被断开,电路也被分断。
按钮的用途很广,例如车床的起动与停机、正转与反转等;塔式吊车的起动,停止,上升,下降,前、后、左、右、慢速或快速运行等,都需要按钮控制。
本设计中,通过控制不同按钮,可以实现流水灯的不同效果。

在这里插入图片描述


三、项目软件设计

本系统的软件代码设计采用Keil uVision4编写。利用基于Proteus仿真软件的单片机设计流程对系统进行仿真测试,通过向单片机中烧录编写的程序,来实现系统所需要完成的全部功能。基于Proteus的花样流水灯设计流程如图所示。

在这里插入图片描述

3.1 程序代码设计

基于Proteus的花样流水灯设计代码设计如下:

#include<reg51.h>

void delay(unsigned int xms){  //延时函数
	unsigned int i, j;
	for(i=0; i<xms; ++i)
		for(j=0; j<110; ++j);
}

void main(){
	while(1)
	{	
		while(P0==0xFE)
		{
		P2=0xFE;
		delay(200);
		
		P2=0xFD;
		delay(200);

		P2=0xFB;
		delay(200);

		P2=0xF7;
		delay(200);

		P2=0xEF;
		delay(200);

		P2=0xDF;
		delay(200);

		P2=0xBF;
		delay(200);

		P2=0x7F;
		delay(200);
		}
			
		while(P0==0xFD)
		{
		P2=0xFE;
		delay(200);
		
		P2=0xFD;
		delay(200);

		P2=0xFC;
		delay(200);

		P2=0xFB;
		delay(200);

		P2=0xEA;
		delay(200);

		P2=0xDF;
		delay(200);

		P2=0xBE;
		delay(200);

		P2=0x7D;
		delay(200);			
		}
			
	    while(P0==0xFB)
		{	
		P2=0xFA;
		delay(200);
		
		P2=0xF4;
		delay(200);

		P2=0xF6;
		delay(200);

		P2=0xF7;
		delay(200);

		P2=0xA4;
		delay(200);

		P2=0x56;
		delay(200);

		P2=0x47;
		delay(200);

		P2=0x7F;
		delay(200);
		}
	
		while(P0==0xF7)
		{
		P2=0xFE;
		delay(50);
		
		P2=0xFD;
		delay(50);

		P2=0xFB;
		delay(50);

		P2=0xF7;
		delay(50);

		P2=0xEF;
		delay(50);

		P2=0xDF;
		delay(50);

		P2=0xBF;
		delay(50);

		P2=0x7F;
		delay(50);
		
     	}
     	
		while(P0==0xEF)
		{
		P2=0xFE;
		delay(50);
		
		P2=0xFD;
		delay(50);

		P2=0xFC;
		delay(50);

		P2=0xFB;
		delay(50);

		P2=0xEA;
		delay(50);

		P2=0xDF;
		delay(50);

		P2=0xBE;
		delay(50);

		P2=0x7D;
		delay(50);			
		}

	    while(P0==0xDF)
	    {
	    P2=0xFF;
	    delay(500);
	    
	    P2=0x00;
	    delay(500);
     	 }
		
		while(P0==0xBF)
		{
		P2=0xEA;
		delay(200);

		P2=0xDF;
		delay(200);

		P2=0xBD;
		delay(200);

		P2=0x7E;
		delay(200);
		}
	 
        while(P0==0x7F)
        {
		P2=0xFF;
	    delay(500);
	    }
	}
}

四、项目调试与分析

打开Protues软件,可以对系统进行Proteus仿真,将程序生成的.hex文件导入仿真系统的单片机内,运行仿真系统。

4.1 Proteus 仿真调试

通过控制按钮,可以实现LED灯D1~D8的亮与灭,实现花样流水灯的效果。

在这里插入图片描述

4.2 结果分析

通过测试,本系统可以实现课题预期所有功能。本次设计是基于Proteus花样流水灯的设计包括硬件电路和软件编程两部分。发现单调的流水灯没有很好的满足用户的需求,那么就采用了按钮结合许多花样的流水灯来增加丰富度。


总结

在本次课程设计中,为实现流水灯的实际效果所采用了按钮与流水灯相结合的设计方案,使效果更佳个性化与多元化,更能满足客户的需求,以AT89C51单片机为主控单元构架硬件电路,控制不同按钮进行LED灯的亮与灭,实现花样流水灯的效果。


附录


附录A 元件清单图

在这里插入图片描述

  • 40
    点赞
  • 262
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
第一章:AVR单片机C语言程序设计概述 1.1 AVR单片机简介 1.2 AVR Studio+WinAVR开发环境安装及应用 1.3 AVR-GCC程序设计基础 1.4 程序与数据内存访问 1.5 I/O端口编程 1.6 外设相关寄存器及应用 1.7 中断服务程序 1.8 GCC在AVR单片机应用系统开发中的优势 第二章:PROTEUS操作基础 2.1 PROTEUS操作界面简介 2.2 仿真电路原理图设计 2.3 元件选择 2.4 仿真运行 2.5 PROTEUS与AVR Studio的联合调试 2.6 PROTEUS在AVR单片机应用系统开发中的优势 第三章:基础程序设计 3.1 闪烁的LED 3.2 左右来回的流水 3.3 花样流水 3.4 LED模拟交通 3.5 单只数码管循环显示0~9 3.6 8只数码管滚动显示单个数字 3.7 8只数码管显示多个不同字符 3.8 K1~K4控制LED移位 3.9 数码管显示4×4键盘矩阵按键 3.10 数码管显示拨码开关编码 3.11 继电器控制照明设备 3.12 开关控制报警器 3.13 按键发音 3.14 INT0中断计数 3.15 INT0及INT1中断计数 3.16 TIMER0控制单只LED闪烁 3.17 TIMER0控制的流水 3.18 TIMER0控制数码管扫描显示 3.19 TIMER1控制交通指示 3.20 TIMER1与TIMER2控制十字路口秒计时显示屏 3.21 用工作于计数方式的T/C0现100以内的按键计数 3.22 用定时器设计的门铃 3.23 报警器与旋转 3.24 100000秒以内的计时程序 3.25 用TIMER1输入捕获功能设计的频率计 3.26 用工作于异步模式的T/C2控制的可调式数码管电子钟 3.27 TIMER1定时器比较匹配中断控制音阶播放 3.28 用TIMER1输出比较功能调节频率输出 3.29 TIMER1控制的PWM脉宽调制器 3.30 数码管显示两路A/D转换结果 3.31 模拟比较器测试 3.32 EEPROM读写与数码管显示 3.33 Flash程序空间中的数据访问 3.34 单片机与PC机双向串口通讯仿真 3.35 看门狗应用 第四章:硬件应用 4.1 74HC138与74HC154译码器应用 4.2 74HC595串入并出芯片应用 4.3 用74LS148与74LS21扩展中断 4.4 62256扩展内存 4.5 用8255现接口扩展 4.6 可编程接口芯片8155应用 4.7 可编程外围定时计数器8253应用 4.8 数码管BCD解码驱动器7447与4511应用 4.9 8×8LED点阵屏显示数字 4.10 8位数码管段位复用串行驱动芯片MAX6951应用 4.11串行共阴显示驱动器MAX7219与7221应用 4.12 16段数码管演示 4.13 16键解码芯片74C922应用 4.14 1602字符液晶测试程序 4.15 1602液晶显示DS1302时时钟 4.16 1602液晶工作于四位模式时显示当前时间 4.17 2×20串行字符液晶演示 4.18 LGM12864液晶显示程序 4.19 PG160128A液晶图文演示 4.21 TG126410液晶串行模式演示 4.21 用带SPI接口的MCP23S17扩展16位通用IO端口 4.22 用TWI接口控制MAX6953驱动4片5×7点阵显示器 4.23 用TWI接口控制MAX6955驱动16段数码管显示 4.24 用DAC0832生成多种波形 4.25 用带SPI接口的数模转换芯片MAX515调节LED亮度 4.26 正反转可控的直流电机 4.27正反转可控的步进电机 4.28 DS18B20温度传感器测试 4.29 SPI接口温度传感器TC72应用测试 4.30 SHT75温湿度传感器应用 4.31 用SPI接口读写AT25F1024 4.32 用TWI接口读写24C04 4.33 MPX4250压力传感器测试 4.34 MMC存储卡测试 4.35 红外遥控发射与解码仿真 第五章:综合设计 5.1 多首电子音乐的选播 5.2 电子琴仿真 5.3 普通电话机拨号键盘应用 5.4 手机键盘仿真 5.5 数码管模拟显示乘法口诀 5.6 用DS1302与数码管设计的可调电子钟 5.7 用DS1302与LGM12864设计的可调式中文电子日历 5.8 用PG12864LCD设计的指针式电子钟 5.9 高仿真数码管电子钟 5.10 1602LCD显示的秒表 5.11 用DS18B20与MAX6951驱动数码管设计的温度报警器 5.12 用1602LCD与DS18B20设计的温度报警器 5.13 温控电机在L298驱动下改变速度与方向运行 5.14 PG160128中文显示日期时间及带刻度显示当前温度 5.15 液晶屏曲线显示两路模数转换结果 5.16 用74LS595与74LS154设计的16×16点阵屏 5.17 用8255与74LS154设计的16×16点阵屏 5.18 8×8LED点阵屏仿电梯数字滚动显示 5.19 用内置EEPROM与1602液晶设计的MD5加密电子密码锁 5.20 12864LCD显示24C08保存的开机画面 5.21 12864LCD显示EPROM27C256保存的开机画面 5.22 IIC-AT24C1024×2硬字库应用 5.23 SPI-AT25F2048硬件字库应用 5.24 带液晶显示的红外遥控调速仿真 5.25 能接收串口信息的带中英文硬字库的80×16点阵显示屏 5.26 用AVR与1601LCD设计的计算器 5.27 电子秤仿真设计 5.28 模拟射击练游戏 5.29 PC机通过485远程控制单片机 5.30 用IE访问AVR+RTL8019设计的以太网应用系统
抢答器是一种常见的电子设备,主要用于比赛或课堂上,用于快速确定参与者或学生谁最先回答问题或按下按钮。基于单片机的设计是一种常见的抢答器设计方法。 基于单片机的抢答器设计可以使用验箱或Proteus仿真软件进行开发和测试。 首先,设计需求包括:按钮开关、显示屏、倒计时功能和正确错误指示。 接下来,根据设计需求,我们需要选取适当的单片机,例如常见的51单片机。然后,将单片机与按钮开关、显示屏、指示等外部元件进行连接。 通过编程,可以现以下功能: 1. 开关检测:使用单片机的IO口来检测按钮开关是否按下。当按钮按下时,发送信号给单片机,触发抢答动作。 2. 倒计时功能:使用定时器功能,现倒计时功能。可以设置倒计时的时间,并在倒计时结束后触发相应的动作,例如熄灭指示或开启下一轮抢答。 3. 显示屏:连接显示屏到单片机的IO口,现显示倒计时时间或其他相关信息。可以利用数码管或LCD显示屏作为显示装置。 4. 正确错误指示设计两个指示,一个代表正确答案,一个代表错误答案。根据参与者的回答情况,触发相应的指示亮起。 在Proteus仿真软件中,可以进行电路图的设计和模拟,通过添加相应的元件和连接线,模拟验箱中的硬件连接。然后,编写单片机的程序,并在仿真软件中进行调试和测试。 通过基于单片机的设计,可以现一个功能完善的抢答器。这种设计不仅能提高交互效果,还可以增加比赛或课堂的趣味性和互动性,提高学生参与度和竞技性。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唐三馬

你的鼓励将是对我最大的帮助!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值