定时器数码管显示与花样流水灯设计报告
流水灯课程设计报告
流水灯课程设计报告1、概述随着科学技术水平的不断向前提高以及社会经济的不断向前发展,人们越来越意识到广告宣传的重要性,越来越多的丰富多彩、新颖夺目的LED广告宣传牌充斥在城市的公共场所中,为灯红酒绿的城市增加了炫目多姿的色彩。
这些LED 广告宣传牌动态显示的背后,则是以流水灯的原理为基础,以单片机为控制核心,按照广告商的宣传需求,通过炫目的多彩和新颖的方式来吸引人们的眼球来完成广告宣传。
基于单片机的流水灯的设计,主要是以单片机为控制核心,通过自身的数据输入输出端口完成与流水灯显示电路的数据联通,通过内部的程序运行来实现对流水灯显示电路的动态控制,进而实现显示电流的循环亮灭的操作。
所以对于基于单片机的流水灯系统的深入研究与学习对于学习单片机控制系统以及LED广告宣传系统的工作机制进来说具有非常重要的现实意义。
2、基于单片机的流水灯的系统电路流水灯的显示电路就是多个二极管通过一端公共连接而构成的显示电路,并将另一端分别与单片机的多个数据输入输出端口进行连接,当单片机向这些端口发送相应的数据时,根据二极管的工作特性,从而实现对其的亮灭控制。
当然,单片机工作还需要复位电路和晶振电路配合单片机芯片构成单片机工作的最小系统,从而满足单片机正常工作的基本条件。
如图1所示,为基于单片机的流水灯控制系统硬件电路图,该硬件电路以AT89C51为基本的控制核心,实现对8为二极管流水灯显示电路的亮灭控制。
该控制系统是以AT89C51为系统的控制单片机,它是美国ATMEL公司生产的高性能的CMOS 8位处理器,同时配备了丰富的硬件资源,有128字节的RAM供用户使用,并提供2个16为定时器/计数器完成定时和计数的工作以及32根数据输入输出端口来单片机与外部电路的数据连通的工作。
8位二极管构成的流水灯显示电路是用共阳极的连接方法来构成的显示电路的。
常见的LED显示灯电路中的二极管连接方法有两种,一种是共阳极连接,一种是共阴极连接,它们是根据显示电路中二极管公共连接的方式来决定的。
单片机课程设计多功能花样流水灯设计
此次单片机课程设计我学到了许多,第一次学会了软硬结合做一个项目出来,自我感觉非常自豪,但是由于自我能力的不足,我更加体会到理论知识与动手能力相结合的重要性,而且设计过程中使我懂得在设计程序之前,务必要对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源?懂得设计的关键是要有一个清晰的思路和一个完整的软件流程图。在设计程序时,不能妄想一次就将整个程序设计好,反复修改,不断改进是程序设计的必经之路。比如在设计显示程序时,一开始数码管的显示不全,然后就不断地调试延时程序,结果数字缺定在0不动,经过反复的调试终于将程序调试成功。而且要学会拓展自己思路,一开始只做了一个速度显示,后来感觉挺好玩的,就做了花样显示。同时要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你思路,这样也为资料的保存和交流提供了方便。整个设计的过程中(还是碰到了一些问题。比如对于键盘的延时防抖问题不能较好的解决,对于编程的顺序及各模块程序调用掌握得还不够好,对于一些相关的应用软件没能熟练掌握。通过这几天的反复思考,以及参考网上的程序最终还是完成了设计。设计中我最大的收获就是自己的动手能力和独立解决问题的能力得到了很大的提高,在动手的过程中,不仅能增强实践能力而且在理论上可以有更深的认识。
长 江 学 院
花样流水灯设计报告
课题:多功能花样流水灯
院系:机械与电子工程系
专业:自动化
班级:
学号:
姓名:
指导老师:
2016年12月20日
1、设计思路………………………………………………………………………3
2、流程图……………………………………………………………………………………..4
四、硬件设计思路和电路图7
关键词:STC89C52RCLED灯单片机花样流水灯
花样流水灯实验报告
始
编
写数组 主
循环 逐个
点亮 24 灯
同时闪烁 逐个
熄灭 2、程序清单及说明 #include<reg52.h> #include<intrins.h> #define uint unsigned int #define uchar unsigned char uchar code table[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};//逐个点 亮 0~7
黄淮学院信息工程学院
单片机原理及应用课程设计性实验报告
实验名称
花样流水灯控制实验
实验时间
2017 年 3 月
24 日
学生 姓名
1024
实验 地点
070320
同组
1024
专业
电子科学与技
人员
班级 术1501B
一、实验目的
1、会使用单片机 4 个并行 I/O 端口连接外部设备并构建单片机最
小应用系统。
2、能使用工具软件绘制单片机硬件原理图、能编写简单的汇编程
序。
3、会编写常见的顺序程序、循环程序、延时子程序和查表程序。
二、实验主要仪器设备和材料
Keil 软件;Proteus 软件 三、任务设计要求
采用 STC89C52 单片机构建最小系统,在 P0-2 口外接 24 只发光二极 管,编程实现 24 只灯的花样显示控制。
四、总体设计方案
P0 接口
电
A
并 行
八、项目总结 在本次花样流水灯试验中,使用循环程序、数组语句实现了实验要求, 设计过程中遇到了很多的问题,但经过努力,最终设计出了合理的解决方 案。通过此次实验,对多个 led 灯的控制能力进一步得到提升。
多功能流水灯实验报告
多功能流水灯实验报告第一篇:多功能流水灯实验报告课程设计报告设计课题:多功能流水灯专业班级:学生姓名:指导教师:设计时间:题目多功能流水灯一、课程设计目的1、掌握数字系统的设计方法和测试方法。
二、课程设计题目(问题)描述和要求设计一个四模式三路彩灯(红、绿、黄三种颜色)显示系统。
该系统的显示模式由外部输入Z、Y控制,要求开机自动置入初态后便按规定模式循环运行。
设各路彩灯均为8个(红灯序号为r1-r8,绿灯序号为g1-g8,黄灯序号为y1-y8),各模式规定如下: XY=00时,系统的显示模式在以下六个节拍间循环:第一节拍,依次点亮奇号红灯(r1亮→r1、r3亮→r1、r3、r5亮→r1、r3、r5、r7亮),其余灯均灭。
第二节拍,依次点亮偶号红灯,其余灯均灭。
第三节拍,依次点亮奇号绿灯,其余灯均灭。
第四节拍,依次点亮偶号绿灯,其余灯均灭。
第五节拍,依次点亮奇号黄灯,其余灯均灭。
第六节拍,依次点亮偶号黄灯,其余灯均灭。
XY=01时,系统的显示在第一、二节拍间循环。
XY=10时,系统的显示在第三、四节拍间循环。
XY=11时,系统的显示在第五、六节拍间循环。
三、系统分析与设计根据课程设计题目问题描述和要求,完成:主要器件:绘制电路原理图:确定选用的元件及其封装形式,完善电路。
原理图设计过程:进行电子电路设计时,首先要有一个设计方案,而将电路设计方案表达出来的最好方法就是画出清晰、正确的电路原理图。
根据设计需要选择出元器件,并把所选用的元器件和相互之间的连接关系明确地列出,直观地表达出设计概念。
电路原理图的基本组成是电子元器件符号和连接导线,电子元器件符号包含了该元器件的功能,连接导线则包含了元器件的电气连接信息,所以电路原理图设计的质量好坏直接影响到PCB印制电路板的设计质量。
绘制原理图的两大原则:首先应该保证整个电路原理图的连线正确,信号流向清晰,便于阅读分析和修改;其次应该做到元器件的整体布局合理、美观、实用。
单片机流水灯实验报告
单片机流水灯实验报告单片机流水灯实验报告一、实验目的本实验旨在通过单片机控制八个LED灯,实现流水灯效果。
通过本实验,我们希望达到以下目的:1.深入理解单片机的I/O端口的工作原理和使用方法。
2.掌握单片机定时器/计数器的工作原理和使用方法。
3.学会编写简单的单片机程序,实现特定的LED灯控制。
4.通过实践操作,提高单片机软硬件的综合应用能力。
二、实验设备1.单片机开发板2.电脑一台3.八个LED灯4.杜邦线若干5.电阻、电容等电子元件三、实验原理本实验采用AT89C51单片机作为主控芯片。
八个LED灯分别连接到P1端口的P1.0到P1.7。
通过编程控制P1端口的每一个引脚,实现对LED灯的亮灭控制。
使用定时器/计数器实现延时,达到流水灯效果。
四、实验步骤和内容1.搭建硬件电路将八个LED灯、一个上拉电阻以及相应的杜邦线连接至单片机开发板。
确保电源正确连接,并注意LED灯的长脚为正极,短脚为负极。
2.编写程序使用Keil C51编写程序,实现如下功能:点亮每个LED灯一定的时间,然后熄灭。
重复此过程,形成流水灯效果。
代码如下:#include <reg51.h> //包含51单片机的头文件#define LED P1 //定义LED为P1端口void delay(unsigned int time) //延时函数{unsigned int i,j;for(i=0;i<time;i++)for(j=0;j<1275;j++);}void main() //主函数{while(1) //程序一直循环执行{unsigned char i=0; //定义一个变量i,用于循环控制LED灯while(i<8) //循环点亮每个LED灯{LED=~(0x01<<i); //点亮第i个LED灯delay(50000); //延时50ms(50*1275us)i++; //变量i加1,控制下一个LED灯}}}3.编译程序将程序编译为二进制文件,生成HEX文件。
流水灯的设计实验报告
流水灯的设计实验报告流水灯的设计实验报告引言:流水灯作为一种常见的电子实验装置,广泛应用于各种电子设备中。
本次实验旨在通过设计和制作一个简单的流水灯电路,来理解流水灯的工作原理和电子元件的基本使用方法。
一、实验目的本次实验的目的是通过设计和制作一个流水灯电路,来加深对流水灯工作原理和电子元件的理解,并掌握基本的电路连接和焊接技巧。
二、实验原理流水灯是一种多个LED灯按照一定的顺序依次点亮和熄灭的电子装置。
其工作原理是通过时钟信号控制LED灯的亮灭,使得LED灯在一定的时间间隔内按照指定的顺序依次亮起。
在本次实验中,我们将使用555定时器芯片作为时钟信号的发生器,并通过计数器和逻辑门电路来控制LED灯的亮灭。
三、实验材料与方法1. 实验材料:- 555定时器芯片- 74HC4017计数器芯片- 逻辑门电路芯片- LED灯- 电阻、电容等元件- 面包板、导线等实验器材2. 实验方法:- 根据电路原理图连接电子元件,注意正确连接引脚和极性。
- 使用焊接工具将电子元件固定在面包板上。
- 连接电源,注意电压和电流的安全使用。
- 调整电路参数,观察流水灯的亮灭顺序和频率。
四、实验结果与分析经过实验,我们成功设计和制作了一个流水灯电路,并且实现了预期的效果。
LED灯按照指定的顺序依次亮起,并在一定的时间间隔后熄灭,再由下一个LED灯亮起。
整个流水灯的亮灭过程形成了一个连续流动的效果,非常美观。
通过调整电路参数,我们还可以改变流水灯的亮灭顺序和频率。
例如,增加LED灯的数量,可以实现更长的流水灯效果;调整计数器芯片的工作频率,可以改变流水灯的闪烁速度。
这些参数的调整,可以根据实际需求来进行灵活设置。
五、实验心得与体会通过本次实验,我对流水灯的工作原理和电子元件的使用方法有了更深入的了解。
在实际操作中,我学会了正确连接电子元件的方法,并掌握了一定的焊接技巧。
通过不断调整电路参数,我也体验到了电子元件对电路性能的影响。
流水灯显示实验报告
流水灯显示实验报告流水灯显示实验报告一、实验目的本实验旨在通过单片机控制LED灯的亮灭,实现流水灯的显示效果。
通过本实验,旨在巩固学生对单片机基本理论知识的理解,掌握流水灯显示的基本原理与设计方法,提高实践操作能力。
二、实验原理流水灯是一种常见的LED显示效果,通过控制LED灯的亮灭顺序和时间间隔,使LED灯以一定的速度逐次点亮或熄灭,形成流水般的效果。
本实验采用单片机控制LED灯的亮灭,通过编程实现流水灯的显示。
三、实验步骤1.准备实验材料(1)单片机开发板(2)LED灯若干(3)杜邦线若干(4)面包板(5)镊子、电烙铁等工具2.搭建硬件电路(1)将LED灯按照一定的顺序连接到单片机开发板的GPIO口上。
(2)使用杜邦线将电源连接到LED灯的正极和负极。
(3)连接单片机开发板与电脑的串口。
3.编写程序(1)打开单片机开发板的编程软件,如Keil uVision。
(2)编写程序代码,实现流水灯的显示效果。
程序代码包括初始化、延时、循环点亮和熄灭LED灯等部分。
(3)将程序代码下载到单片机开发板中。
4.调试与测试(1)打开电源,观察LED灯的亮灭情况,检查是否实现了流水灯效果。
(2)调整程序代码中的延时参数,改变LED灯的亮灭速度。
(3)检查程序代码中的语法错误和逻辑错误,确保程序的正确性。
四、实验结果与分析1.实验结果通过本次实验,我们成功地实现了流水灯的显示效果。
当电源接通后,LED灯按照设定的顺序逐次点亮或熄灭,形成流水般的效果。
同时,通过调整程序代码中的延时参数,我们还可以改变LED灯的亮灭速度。
2.结果分析本次实验的成功得益于正确的实验方法和步骤。
首先,我们准确地搭建了硬件电路,确保LED灯与单片机的连接正确;其次,我们合理地编写了程序代码,实现了流水灯的显示效果;最后,我们对实验结果进行了仔细的观察和调试,确保实验结果的正确性。
通过本次实验,我们不仅提高了实践操作能力,还巩固了对单片机基本理论知识的理解。
爱心花样流水灯实训报告
一、实训背景随着科技的发展,电子技术已经深入到我们生活的方方面面。
作为电子技术的重要应用之一,LED灯因其色彩鲜艳、亮度高、寿命长等优点,被广泛应用于各种场合。
本次实训旨在通过制作爱心花样流水灯,掌握LED灯的控制技术,提高电子制作能力,同时培养创新意识和团队协作精神。
二、实训目标1. 熟悉LED灯的工作原理和驱动方法。
2. 掌握单片机编程技术,实现LED灯的控制。
3. 设计并制作爱心花样流水灯,使其具有动态效果。
4. 提高动手能力和问题解决能力。
三、实训内容1. 方案设计本次实训采用51单片机作为控制核心,通过编程控制LED灯的亮灭,实现爱心花样的动态效果。
具体方案如下:(1)选用红色LED灯作为显示单元,以形成爱心图案。
(2)采用定时器中断技术,实现LED灯的动态闪烁。
(3)设计程序,实现爱心图案的循环显示。
2. 电路设计根据方案设计,绘制电路原理图,主要包括以下部分:(1)单片机最小系统:包括晶振、复位电路、电源电路等。
(2)LED驱动电路:将单片机的输出信号转换为适合LED灯的驱动信号。
(3)显示电路:将LED灯按照爱心图案进行排列。
3. 程序设计利用C语言编写程序,实现以下功能:(1)初始化定时器,设置中断频率。
(2)编写中断服务程序,控制LED灯的亮灭。
(3)设计爱心图案的显示程序,实现循环显示效果。
4. 实物制作根据电路原理图,焊接电路板,安装LED灯,连接电源,调试程序。
四、实训过程1. 电路焊接按照电路原理图,将单片机、LED灯、电阻等元器件焊接在电路板上。
2. 程序编写利用Keil软件编写程序,通过串口下载到单片机中。
3. 调试通过观察LED灯的显示效果,检查程序是否存在错误。
如有问题,修改程序并重新下载。
4. 优化根据实际情况,对程序进行优化,提高显示效果。
五、实训成果通过本次实训,成功制作了一款爱心花样流水灯。
该流水灯具有以下特点:1. 色彩鲜艳,动态效果明显。
2. 控制简单,易于操作。
单片机跑马灯(流水灯)控制实验报告
单片机实验报告姓名: 学号:一、 实验实现功能:1:计数器功能2:流水灯二、 具体操作:1、计数器功能数码管的动态显示。
每按一次K2键计数器加1通过数码管显示出来,计数器可以实现从0计数到9999。
2、流水灯当在计数器模式下的时候按下K3键时程序进入跑马灯模式,8个小灯轮流点亮每次只点亮一个,间隔时间为50ms 。
三、 程序流程图开始 定时器T0 设置初值,启动定时器,打开中断复位 Key2按下 中断关闭 计数器模式 计数器加1 Key3按下 流水灯模式 数码管显示数字加1 跑马灯点亮间隔50ms Key1按下中断打开四、程序#include <reg51.h>typedef unsigned char uint8;typedef unsigned int uint16; //类型定义sbit P2_1 = P2^1;sbit P2_2 = P2^2;sbit P2_3 = P2^3;sbit P2_4 = P2^4; //位声明四个数码管开关sbit Key2 = P3^2;sbit Key3 = P3^3; //位声明2个按键K2和K3sbit Ledk = P2^0 ; //LED 开关void delay(uint16 i); //延时函数声明void refresh (); // 数码管刷新函数声明void liushuideng(); //流水灯函数声明uint8 number[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码管的真值表uint8 out[4] = {0}; // 数组变量uint16 counter=0; //用作计数器的变量uint16 Time_counter=0; //用作定时器的变量void main() //主函数{TMOD = 0x01; //定时器0,工作方式一TH0 = 0xFC;TL0 = 0x18; //定时器初值使每次循环为1msTR0 = 0; //定时器0开始作ET0 = 0; // 定时器中断关EA = 0; // 关中断while(1) //计数器模式{Ledk =1 ; //led开关关out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位if (!Key2) //计数器加1{++counter; //自加out[0]=number[counter%10]; //取个位out[1]=number[counter%100/10]; //十位out[2]=number[counter%1000/100]; //百位out[3]=number[counter/1000]; //千位while(!Key2) //等待键盘抬起refresh(); //刷新数码管}refresh(); //刷新数码管if (!Key3) // 进入跑马灯模式liushuideng();}} //主函数结束/*******************延时*************/void delay(uint16 i){uint8 j; // 定义局部变量for(i;i>0;i--) //循环i*240 次for(j=240;j>0;j--);}/************数码管刷新******************/void refresh (){uint8 j;for (j=0;j<4;j++) //四次循环刷新数码管{switch(j){case 0: P2_1=1;P2_2=1;P2_3=1;P2_4=0;break;case 1: P2_1=1;P2_2=1;P2_3=0;P2_4=1;break;case 2: P2_1=1;P2_2=0;P2_3=1;P2_4=1;break;case 3: P2_1=0;P2_2=1;P2_3=1;P2_4=1;break;//每次循环只选中一个数码管default:break;}P0 = out[j]; // 位选,给数码管送值delay (20); //延时消抖}}/*************定时器的中断服务函数**************/void Timer0_Overflow() interrupt 1 //定时器0溢出中断,这个语句1ms执行一次{TH0 = 0xFC;TL0 = 0x18; //每1ms重新赋定时器初值Time_counter++; //计数,看经过了几个1ms}/***********************流水灯子函数****************************/ void liushuideng(){uint8 j = 0 ; //定义局部变量P0 = 0xff; // 小灯全关TR0 = 1; //定时器1开始计时EA = 1; //中断开放ET0 = 1; //定时器0中断开while(1){Ledk = 0 ; //打开LED开关P2 = P2|0x1E; //关掉数码管if(50 == Time_counter) //50个毫秒{P0=~(1<<j++); //控制小灯Time_counter = 0; //清零开始下一次循环定时}if (8==j) //移完8次再重新移{j=0;}}}。
创意流水灯实验报告(3篇)
第1篇一、实验背景随着科技的不断发展,电子技术已经渗透到我们生活的方方面面。
其中,LED流水灯作为一种新型照明产品,因其节能、环保、色彩丰富等特点,在装饰照明、广告宣传等领域得到了广泛应用。
为了深入了解LED流水灯的工作原理,提高我们的动手实践能力,我们设计并完成了一项创意流水灯实验。
二、实验目的1. 了解LED流水灯的工作原理。
2. 掌握LED流水灯的电路连接方法。
3. 通过创意设计,提高LED流水灯的观赏性和实用性。
三、实验原理LED流水灯是通过将多个LED灯珠串联或并联,通过控制电路的通断来实现流水效果的。
实验中,我们采用PWM(脉冲宽度调制)技术来控制LED灯的亮度,从而实现流水灯的动态效果。
四、实验器材1. LED灯珠:红、绿、蓝各50颗2. 马达:1台3. 电阻:若干4. 线路板:1块5. 电源:9V直流电源6. 剪刀、胶带等辅助工具五、实验步骤1. 设计电路图:根据LED灯珠的参数,设计出合适的电路图,确保电路连接正确。
2. 制作电路板:按照电路图,将LED灯珠、电阻、马达等元器件焊接在电路板上。
3. 连接电源:将电路板与9V直流电源连接,确保电路板供电正常。
4. 制作流水灯外壳:根据设计要求,制作流水灯外壳,确保内部电路布局合理。
5. 测试流水灯效果:接通电源,观察LED灯珠的流水效果,检查电路是否正常工作。
6. 优化设计:根据实验效果,对流水灯的设计进行优化,提高观赏性和实用性。
六、实验结果与分析1. 实验结果:经过多次测试,我们成功制作出了一款具有流水效果的LED流水灯。
在实验过程中,LED灯珠的流水效果稳定,颜色鲜艳,马达运行正常。
2. 结果分析:通过本次实验,我们掌握了LED流水灯的工作原理和电路连接方法。
在实验过程中,我们了解到PWM技术在控制LED灯亮度方面的应用,以及马达在流水灯中的驱动作用。
3. 优化建议:为了提高流水灯的观赏性和实用性,我们可以在以下几个方面进行优化:(1)增加LED灯珠的种类和数量,丰富流水灯的色彩效果。
按键控制数码管和流水灯设计报告实验报告
按键控制数码管和流水灯设计报告实验报告实验名称:按键控制数码管和流水灯设计报告一、实验目的本实验旨在通过使用按键来控制数码管和流水灯的显示,加深对数码管和流水灯工作原理的理解,并掌握按键的基本输入输出原理。
二、实验器材1. Arduino开发板2.数码管模块3.面包板4.面包板连接线5.按键模块6.跳线三、实验原理数码管是一种将数字和一些常用符号通过数码电路显示在特定位置的显示器件,由多个LED组成,可显示0-9及一些小于9的字母和符号。
流水灯是一种LED灯的组合,通过不同的时序控制,实现灯光依次点亮或熄灭的效果。
本实验通过使用按键控制器将数码管和流水灯的状态控制与显示,按下不同的按键可以使数码管切换显示不同的数字,同时控制流水灯的点亮或熄灭。
四、实验步骤1. 将数码管模块连接到Arduino开发板的数字I/O口,连接方式可参考数码管模块的接口定义和Arduino开发板的编号。
2. 将按键模块连接到Arduino开发板的数字I/O口,连接方式可参考按键模块的接口定义和Arduino开发板的编号。
3. 按键模块和数码管模块都需要使用面包板连接线和跳线连接到Arduino开发板的相应引脚上。
4.根据按键的读取状态,通过编程控制数码管显示相应的数字,利用流水灯实现通过按键的控制点亮或熄灭。
五、实验结果经过编程和调试,实验中数码管能够正确显示按键输入的数字,同时根据按键输入状态控制流水灯的点亮或熄灭。
按不同的按键可以切换数码管的数字显示,实现了按键对数码管和流水灯的控制。
六、实验总结本实验通过按键来控制数码管和流水灯的显示,加深了对数码管和流水灯的工作原理的理解。
同时,掌握了按键的基本输入输出原理,并通过编程控制实现了按键对数码管和流水灯的控制。
本实验还有一些可以改进的地方,例如可以增加多个按键,实现更多的控制功能;还可以通过增加延时函数控制流水灯的点亮或熄灭速度。
通过不断改进和练习,可以提高对Arduino开发板的理解和掌握。
关于数码管日历以及流水灯功能实现设计报告
关于数码管日历以及流水灯功能实现设计报告1.设计内容:利用Quartus II 13.0建立CPU软核,同时用NIOS II 生成相应的驱动程序。
本人利用8个七段数码管作为日历显示器,同时以4个按键作为控制器,用6个LED灯显示四个按键状态,另外额外添加了8个LED实现流水灯。
2.设计要求:能实现日期显示,并且能够实现日期的修改,用key3控制程序是否运行,用key2控制修改的项目,初始状态默认为修改年份,按下key2状态变为修改月份,再按下key2状态变为修改天数,之后重复。
Key1和key0分别为增加和减少。
同时添加一个流水灯显示。
3.软核建立:利用Quartus II 13.0建立软核,在Qsys中分别添加以下相应器件:a.CPU使用的是f型的cpub.SDRAM位宽16,64Mbits,基地址保证为0x00000000c.CLOCK 内部时钟,频率为50MHzd.EPCS串行存储器,代码被从EPCS控制器的片内搬到RAM中执行e.SYSID系统基地址分配f.JTAG UART深度64位,用于内部测试和在线编程g.LIGHTS加入一个位宽为8的PIO控制8个LED灯用于流水灯显示h.SEG添加了8个七段数码管用于显示年月日i.KEY 添加了四个key输入管脚,分别为key1、key2、key3、key4,使用上升沿触发。
输入管脚经非门之后输入。
j.KEY_STATEPIO输出管脚控制LED等,显示按键目前数值状态:Generate之后,添加一个PLL,两个时钟输出,一个相位偏移为0,另外一个是75o。
将相位不变的时钟作为cpu时钟,另外一个作为sdram时钟。
Re_set接vcc,pll的输入接外接时钟,输入接非门进入,然后自动生成其他pins。
将I/O设置为普通的I/O,然后分配管脚。
编译,通过之后软核就生成完毕。
图 1 软核框图示意图4.NIOS II驱动程序编写:本实验设想是利用七段数码管显示日期,日期可以更改,并且能够显示流水灯。
数码流水灯实训报告
《电子技术设计》实训报告姓名学号专业指导教师实训时间电子信息工程系2010-2011学年第一学期[设计题目]数码流水灯[设计要求]1. 实现流水灯的循环2.实现数码管的显示流水灯循环的次数3. 连接整体电路,测试分析实验的结果[主要技术参数]1.CD40172.LM555CM频率2.7HZ[设计原理及仿真](1)LM555CM555集成时基电路是一种数字、模拟混合型的中规模集成电路,可连接成多谐振荡电路,产生单位脉冲,用于触发计数器。
在延时操作中,脉冲由一个电阻和一个电容控制。
用于稳定工作的振荡器时,频率由两个电阻和一个电容控制。
NE555会在下降延触发和清零,此时输出端产生200mA的电流。
NE555的工作温度为0oC~70 oC。
如下图:(2)CD4017十进制计数/分频器CD4017,其内部由计数器及译码器两部分组成,由译码输出实现对脉冲信号的分配,整个输出时序就是O0、O1、O2、…、O9依次出现与时钟同步的高电平,宽度等于时钟周期。
CD4017有10个输出端(O0~O9)和1个进位输出端~O5-9。
每输入10个计数脉冲,~O5-9就可得到1个进位正脉冲,该进位输出信号可作为下一级的时钟信号。
CD4017有3个输(MR、CP0和~CP1),MR为清零端,当在MR端上加高电平或正脉冲时其输出O0为高电平,其余输出端(O1~O9)均为低电平。
CP0和~CPl 是2个时钟输入端,若要用上升沿来计数,则信号由CP0端输入;若要用下降沿来计数,则信号由~CPl端输入。
设置2个时钟输入端,级联时比较方便,可驱动更多二极管发光。
由此可见,当CD4017有连续脉冲输入时,其对应的输出端依次变为高电平状态,故可直接用作顺序脉冲发生器。
CD4017输出高电平的顺序分别是③、②、④、⑦、⑩、①、⑤、⑥、⑨脚,故③、②、④、⑦、⑩、①脚的高电平使6串彩灯向右顺序发光,⑤、⑥、③脚的高电平使6串彩灯由中心向两边散开发光。
数码管以及流水灯
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void exter0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
单片机课程设计论文
中文题目:数码管以及流水灯
英文题目:Digital tube, and running water lamp
姓名:姚银涛
系别:电子科学系
班级:08电科(1)班
学号:080702128
日期:2011年6月26日
指导老师:魏晓慧
教务处制
课程设计任务书
设计任务:以89C52单片机为核心,制作一个数码管和流水灯互相配合显示的器件。
TL0=(65536-50000)%256;
TR0=1;
flag=1;
t0=0;
P1=0xff;
TR1=0;
}
}
}
delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
结束语
本次论文介绍了数码管的动态显示以及流水灯,通过自己的编程以及思考,我对单片机的学习更深一步了,在今后的学习中,我会更加认真地学习基础知识,以便能够更熟练地应用单片机的功能,为以后的工作和学习奠定良好的基础。
关键词:单片机,数码管,动态显示,流水灯,定时器
四、编程程序. . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
数码管加流水灯
实验报告班级学号姓名实验日期实验名称:数码管及流水灯显示一、实验目的了解数码管动态显示原理,学会LPC2103通用I/O口的使用。
二、实验内容1.用LPC2103控制8个LED闪烁形成的流水灯效果;2.用LPC2103控制数码管循环显示的效果三、实验原理1.本实验中共接入了8个共阳八段数码管(数码管阳极连在一起),演示数码管中的某一段点亮只需在对应的位置写入“0”即可。
在这里74HC595实现了数据串并转换的功能,试验中用到的两片74HC595分别用于控制八个数码管的位选和其中每个数码管的段选。
本实验循环显示了十六进制数码“0—9”。
2.为了最大程度的利用芯片的I/O口资源,在硬件设计时显示模块和数入模块都采用了芯片74HC59,74HC59是一种串行输入转并行输出的芯片,与I/O口连接的共有三个引脚:引脚SH_CP为移位暂存器的输入,上升沿时移位暂存器中的数据依次移动一位,下降沿移位寄存器的数据不变;引脚ST_CP为寄存器的时序输入,上升沿时移位暂存器的数据进入存储寄存器,下降沿时存储寄存器的数据保持不变,使用时通常将ST_CP置为低电平,移位结束后再在ST_CP端产生一个正脉冲更新数据,还有一个引脚为数据输入端DS.四、实验步骤1.用protues设计流水灯控制电路;2.在Keilc51中编写流水灯控制程序,编译通过后,与protues联合调试;3.按动k1键,观察是否达到演示效果;4.用中断方式编写程序,功能实现后再改为查询方式,比较二者的区别。
五、实验流程图六、实验源程序#include "config.h"#define SPI_CS 1<<8//P0.8定义为hc595的片选信号线,用于数码管显示数据的输出#define SPI_CS1 1<<11//P0.11定义为hc595的片选信号线,用于数码管的位选#define SPI_DATA 1<<6//P0.6输出数码管要显示的数#define SPI_DATA1 1<<7//P0.7控制那一位数码管亮#define SPI_CLK 1<<4//P0.4时钟控制信号线void DelayNS(uint32 dly){uint32 i;for(;dly>0;dly--)for(i=0;i<5000;i++);}void HC595_SendDat(uint8 dat)//待显示数据的输出{uint8 i;IOCLR = SPI_CS;//SPI_CS=0,选中芯片 for(i=0;i<8;i++)//发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0,产生输出时钟if((dat&0x80)!=0) IOSET = SPI_DATA;//发送1else IOCLR = SPI_DATA;//发送0dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1,产生输出时钟}IOSET = SPI_CS; //SPI_CS=1,输出显示数据主程序流程图 数码管显示子程序流程图}void HC595_SendDat1(uint8 dat)//要显示数据位的控制{uint8 i;IOCLR = SPI_CS1; //SPI_CS=0for(i=0;i<8;i++) //发送8位数据{IOCLR = SPI_CLK; //SPI_CLK=0if((dat&0x80)!=0) IOSET = SPI_DATA1;else IOCLR = SPI_DATA1;dat<<=1;IOSET = SPI_CLK; //SPI_CLK=1}IOSET = SPI_CS1; //SPI_CS=1,输出显示数据}int Num_show(){const uint8 DISP_TAB[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//数码显示段码表 0 1 2 3 4 5 6 7 8 9 a b c d e fconst uint8 DISP_TAB1[8] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//数码显示位码表第1位 (8)uint8 i;for(i=0;i<8;i++){HC595_SendDat(DISP_TAB[i]);//与下面一条语句共同控制在第i位显示i(i<8)HC595_SendDat1(DISP_TAB1[i]);DelayNS(100);HC595_SendDat(0xff);//与下面一条语句共同控制关闭第i位数码显示HC595_SendDat1(DISP_TAB1[i]);}for(i=0;i<8;i++){HC595_SendDat(DISP_TAB[i+8]);//与下面一条语句共同控制在第i位显示i(7<i<=f)HC595_SendDat1(DISP_TAB1[i]);DelayNS(100);HC595_SendDat(0xff);//与下面一条语句共同控制关闭第i位数码显示HC595_SendDat1(DISP_TAB1[i]);}return(0);}extern void DelayNS(uint32 dly);extern void HC595_SendDat(uint8 dat);extern void HC595_SendDat1(uint8 dat);#include "config.h"#include "Num show.h"#define SPI_IOCON 0x000009d0//SPI接口的IO设置字int main(){PINSEL0=0x00000000;//设置所有引脚连接GPIOPINSEL1=0x00000000;IODIR=SPI_IOCON; //定义连接595的引脚为输出while(1){Num_show();}return(0);}#define IN_TARGET#include "config.h"void __irq IRQ_Exception(void){while(1); // 这一句替换为自己的代码}void FIQ_Exception(void){ while(1); // 这一句替换为自己的代码}void TargetInit(void){ }void TargetResetInit(void){ /* 设置系统各部分时钟 *//* PLLCON = 1;#if ((Fcclk / 4) / Fpclk) == 1VPBDIV = 0;#endif#if ((Fcclk / 4) / Fpclk) == 2VPBDIV = 2;#endif#if ((Fcclk / 4) / Fpclk) == 4VPBDIV = 1;#endif#if (Fcco / Fcclk) == 2PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);#endif#if (Fcco / Fcclk) == 4PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);#endif#if (Fcco / Fcclk) == 8PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);#endif#if (Fcco / Fcclk) == 16PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);#endifPLLFEED = 0xaa;PLLFEED = 0x55;while((PLLSTAT & (1 << 10)) == 0);PLLCON = 3;PLLFEED = 0xaa;PLLFEED = 0x55;*/ /* 设置存储器加速模块 */MAMCR = 2; //MAMCR 8u2 00-MAM 功能被禁止、01-MAM功能部分使能、10-MAM功能完全使能/* MAMTIM 8u3000=0-保留001=1-一段时间内只有 1 个处理器时钟(cclk)用于 MAM 取指。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
四、设计参考程序
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit we1=P3^2;
sbit we2=P3^3;
sbit k1=P3^1;
uchar code table[ ]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x55,
具体功能表如下图所示:
:
n++;
if(n==20)
{ n=0;
count++;
if(count==60)
count=0;
}
}
五、系统设计效果显示图
六、部分芯片资料
1、AT89S51芯片
AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。
c、使用电流:静态:总电流80mA(每段10mA);动态:平均电流4-5mA峰值电流100mA
数码管使用注意事项说明:
(1)数码管表面不要用手触摸,不要用手去弄引角;
(2)焊接温度:260度;焊接时间:5S
具体引脚图如下:
2,4511芯片的连接。
芯片的引脚BI,LT一同接到电源的正极,引脚LE接地,引脚A,B,C,分别接到单片机的P2.0,P2.1,P2.2,P2.3引脚。
3、用途。数码管计时器可用于十字路口作为交通灯使用,以便保障交通畅通有序,缓解交通车流。流水灯的变换样式显示,点缀多彩生活,降低人们的视觉疲劳,可以在车站,或用于广告制作使用。
二、硬件设计思想和电路原理图
1.下图为数码管驱动显示电路原理图:
2.下图为硬件连接框架图
3、硬件连接原理图
三,详细说明如何使用硬件单元
·中断唤醒省电模式
· 3级加密位
·看门狗(WDT)电路
·软件设置空闲和省电功能
·灵活的ISP字节和分页编程
·双数据寄存器指针
.看门狗(WDT)电路的主要是实现复位功能.当单片机运行出现死循环时,看门狗(WDT)电路可以起保护功能,实现复位作用.
2、4511BCD码数码管译码器
CC4511是BCD-7段所存译码驱动器,在同一单片结构上由COS/MOS逻辑器件和n-p-n双极型晶体管构成。这些器件的组合,使CC4511具有低静态耗散和高抗干扰及源电流高达25mA的性能。由此可直接驱动LED及其它器件。LT、BI、LE输入端分别检测显示、亮度调节、存储或选通一BCD码等功能。当使用外部多路转换电路时,可多路转换和显示几种不同的信号。
一,系统设计目的,功能。
1、目的。基于AT89S51芯片,熟悉芯片的使用,实验电路板的焊接,数码显示管的使用,C语言编程的设计。提高动手设计能力以及发现问题并且解决问题的能力。
2、功能。在使用12MHZ晶振的条件下,用T1产生50ms定时,两个7段LED数码管从“00”开始显示,每1s加1,到达“59”后,再从“00”开始,完成60s定时功能。通过按键控制8位流水灯的动态显示样式,按键一次,就有不同的显示样式,总共有4种动态显示样式,按键按下4次后回归到第一次的显示样式,就这样不断循环往复的过程,需说明,流水灯点亮的同时也不影响定时器计时。
主要功能特性:
.兼容MCS-51指令系统
· 4k可反复擦写(>1000次)ISP Flash ROM
· 32个பைடு நூலகம்向I/O口
· 4.5-5.5V工作电压
· 2个16位可编程定时/计数器
·时钟频率0-33MHz
·全双工UART串行中断口线
· 128x8bit内部RAM
· 2个外部中断源
·低功耗空闲和省电模式
0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xaa,
0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa,0x00,
0x7e,0xbd,0xdb,0xe7,0xdb,0xbd,0x7e,0x00
};
uchar n,count,all,b,c,d,i,j=0;
b=0xfe;
P2=0XFF;
while(1)
{ if(k1==0)
{ delayms(10); //按键消抖,大概需要10毫秒
if(k1==0)
{ for(i=0;i<8;i++)
for(d=113;d>0;d--)
{
{ for(c=1;c>0;c--)
display(count);
P1=table[i+j];
AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器
此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
}
}
j+=8;
if(j==32)
{j=0;}
while(!k1)//等待按键释放
display(count);
}
}
else
{ display(count);
}
}
}
void T1_time() interrupt 3
{ TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
delayms(5);
we1=1;
we2=0;
ge=num%10;
P2=ge;
delayms(5);
}
void main()
{ TMOD=0x10;
TH1=(65536-50000)/256;//装入初值
TL1=(65536-50000)%256;
EA=1;
ET1=1;
TR1=1;
count=0;
P1=0XFF;
uint shi,ge,g,h;
void delayms(uint a) //延时程序
{uint x,y;
for( x=a;x>0;x--)
for(y=113;y>0;y--);
}
void display(uint num) //数码管显示程序
{ we2=1;
we1=0;
shi=num/10;
P2=shi;
1,七段数码管(共阴极)的使用。
该显示管总共有10个引脚,包括a-g和dp以及二个位选为we1,we2。将a-f分别与4511芯片的QA-QG连接,we1,we2分别与AT89C51的引脚P3.2,P3.3连接。
数码管使用条件:
a、段及小数点上加限流电阻;
b、使用电压:段:根据发光颜色决定;小数点:根据发光颜色决定
定时器数码管显示与花样流水灯设计报告
物理学院刘雄59
摘要:本次设计以单片机为核心,利用单片机定时器功能实现0到59秒在数码管上显示,通过按键控制花样流水灯的显示样式。本文将浅谈一下其实现的功能及具体模式。
关键词:单片机;数码管;LED;
引言:随着科技的发展和进步,自动控制系统日益完善,但是这些都离不开芯片,可以这样说没有芯片存在,就不可能有今天的科技成果。本设计将基于单片机AT89C51控制60秒定时器,同时通过程序编写实现流水灯显示。流水灯的样式变化多样,并通过按键可控流水灯显示样式,从而给人于美的感觉体验。