单片机实例之跑马灯资料共62页文档

合集下载

51单片机实用教程入门之跑马灯

51单片机实用教程入门之跑马灯

MCS-8051 单片机实用教程深圳伟凡数码 QQ:59059381上一节讲了 KEIL 软件的基本使用, 本节开始学习编程,编写第一个程序,如果从没学过的朋友不需要深入了解,只 要按照下面写出第一个程序。

好, 就来试试,很有意思的。

这里主要讲些技巧, 而不是专门的 C 语言,如过想学习更深入 的 C 语言, 请参考相关 C 语言书籍。

前面我们已经讲了怎样建立文件,这里就不多讲了。

按照下面动手写下面程序,当写好后, 我们就可以进行编译了, 点工具栏上的按钮或者 按键盘的功能键 F7 开始编译了,在最下面一个白色窗口显示编译结果, 0 Error(s)表示没有错误,正确的通过编译,0 Warning 表示 0 警告,这里 如果有 1 个或多个警告,并不影响程序的正确编译, 只是表明程序有多余的没有应用的程序。

下面表示程序已经正确的通过了. 如果你的也是这样的, 那就恭喜你成功了。

下面我们就来说说这个程序的基本知识,要记住的, a. 符号// 后面表示注释部分,或者程序的说明部分, 比如上面的程序名称, 日期等 b. /* */ 这个也是表示注释部分. 注意, 注释部分是不被编译的,注释是方便我们更能理解程序 c . #include<stdio.h> 这个表示头文件,表示我们要用到的函数或者定义,由#include<头文件名> 组成,编写规则头文件MCS-8051 单片机实用教程存深圳伟凡数码 QQ:59059382后面不能 有分号" ; ". #include<reg51.h> 也是头文件, 这是我们 51 单片机的头文件, 定义了单片机的特殊功能寄器的定义,我们可以打开头文件查看, 方法是: 将鼠标移动到文件名上, 点鼠标右键,出现以下菜单,点击蓝色部 分,这样就打开了 51 头文件。

打开 51 文件之后, 我们看到了对 51 单片机的端口定时器中断等进行了定义,想要了解含义,去看看单片机的资料, 这里不多讲。

单片机跑马灯

单片机跑马灯

中国地质大学江城学院《单片机原理及应用》课程设计学部班级学号姓名指导教师年月日目录第1章系统开发的基本原理 (3)1.1 复位电路及时钟电路 (3)1.2 跑马灯的基本原理 (4)1.3 数码管的基本原理 (5)1.4 键盘的基本原理 (5)第2章系统硬件设计 (6)2.1 MCS-51单片机介绍 (6)2.2 74HC573锁存器介绍 (7)2.3 74HC02或非门介绍 (7)2.4 4511译码器介绍 (8)2.5 数码管介绍 (9)2.6 系统硬件电路设计 (10)第3章系统软件设计 (12)3.1 软件设计架构 (12)3.2 主程序模块 (13)3.3 跑马灯程序模块 (18)3.4 键盘程序模块 (18)3.5 数码管程序模块 (19)第4章系统测试 (19)4.1 测试方法 (19)4.2 测试考虑的因素 (20)4.3 测试结论 (20)第5章课程设计小结 (20)摘要:单片机最小系统,无论对单片机初学人员还是开发人员都具有十分重要的意义,可以利用最小系统进行编程实现工业控制。

单片机最小系统电路板在单片机开发市场和大学生电子设计方面十分流行。

本次课程设计包括AT89S52单片机最小系统(包括复位和时钟电路)及供电系统、4×4矩阵键盘、独立4个8段LED数码管显示电路。

利用Protel电路设计软件进行原理图设计,PCB布线,借此巩固单片机应用、模拟电路、数字电路课程及学会工程软件protel的使用。

第1章系统开发的基本原理对51 系列单片机来说,最小系统一般应该包括:单片机、时钟电路、复位电路、输入/ 输出设备等。

本次课程设计的系统还包括流水灯、4*4矩阵键盘和二位数码管显示。

1.1 复位电路及时钟电路复位电路和时钟电路是维持单片机最小系统运行的基本模块。

复位电路通常分为两种:上电复位和手动复位。

[2]上电复位手动复位有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。

基于msp430g2553单片机跑马灯设计(DOC)

基于msp430g2553单片机跑马灯设计(DOC)

单片机的出现时计算机发展史上的一个重要里程碑,它开辟了计算机技术的另一个领域——嵌入式(Embedded)计算机领域。

所谓单片机就是把中央处理器、存储器、定时器、I/0接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。

单片机把微型计算机的各主要部分集成在一块芯片上,大大缩短了系统内信号传送距离,从而提高了系统的可靠性及运行速度。

所以单片机是典型的嵌入式系统,是嵌入式系统低端应用的最佳选择。

自20世纪70年代以来,单片机在工业测控、仪器仪表、航空航天、军事武器、家用电器等领域的应用越来越广泛,功能也越来越完善。

由单片机及各种微处理器、DSP所构成的嵌入式系统设计已成为电子技术产业发展的一项重要内容。

单片机技术也成为电子技术及自动化专业必须掌握的技术之一。

近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本设计主要以msp430g2553单片机为基础应用I/O口,复位电路,晶振电路并写好底层程序,做出能应用于跑马灯的最小系统。

关键词:最小系统,嵌入式,msp430g2553,跑马灯1. 绪论 (3)2. 设计方案及分析 (5)2.1 设计目的 (5)2.2 设计要求 (5)2.3 LED灯管 (5)2.3.1 LED灯简介 (5)2.3.2 LED原理 (6)2.4 系统框图 (7)2.5 系统的软件设计 (7)2.5.1 程序编写部分 (7)2.5.2 延时的计算 (8)2.5.3 程序流程图 (8)2.5.4 跑马灯的效果描述 (9)2.6 系统调试及结果分析 (10)3. 总结和体会及遇到的问题 (12)4. 致谢 (13)附录 (14)参考文献 (20)1.绪论由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。

基于单片机多模式带音乐跑马灯设计文档

基于单片机多模式带音乐跑马灯设计文档

高等教育自学考试毕业论文学生姓名:黎政昌考籍号: 911411101567 专业年级:二年级题目:基于单片机的多模式带音乐跑马灯设计指导教师:向诚评阅教师:2012年4月目录1设计的作用、目的 (3)2设计的具体实现 (3)2.1系统概述 (3)2.2单元电路设计与分析 (3)2.3电路的安装与调试 (8)3建议 (9)结论 (10)致谢 (11)参考文献 (12)4附录 (13)摘要跑马灯,顾名思义,就是“会像马儿一样跑动”的小灯,故取名“跑马灯”。

跑马灯在单片机系统中一般是用来指示和显示单片机的运行状态,一般情况下,单片机的跑马灯由多个LED发光二极管组成。

在单片机运行时,可以在不同状态下让跑马灯显示不同的组合,作为单片机系统正常的指示。

当单片机系统出现故障时,可以利用跑马灯显示当前的故障码,对故障做出诊断。

此外,跑马灯在单片机的调试过程中也非常有用,可以在不同时候将需要的寄存器或关键变量的值显示在跑马灯上,提供需要的调试信息。

关键词:跑马灯,单片机,LED发光二极管1设计的作用、目的(1)使用32个彩色LED灯,用这32个发光二极管以不同的模式循环点亮;(2)三个功能键,K1模式键,通过按键调整显示结果,总共有10种模式;K2加速键;K3减速键;(3)十种模式通过一个共阳数码管显示出来,十个模式分别显示为0~9。

通过发光二极管的动态闪亮,显示非常炫目的效果,应用于各种建筑物,大楼,酒吧,KTV,夜总会等娱乐场所,拖尾灯,以及各种休闲娱乐场所用的动态灯光显示,通过此次设计,可以加深对51单片机的应用、C51编程和protues软件操作的能力。

了解51单片机的外围引脚,以及各个端口的功能,还可以通过对走马灯的程序编写让我们对程序的执行方式和特点有一个初步的认识,同时掌握C51软件与protues联机调试程序,对进一步学习单片机打下坚实基础。

2设计的具体实现2.1系统概述本设计的要求是设计一个有多种功能的走马灯,有多种不同的显示方式,加速功能和减速功能,这里的加速减速还有显示方式都是由单片机内部的程序控制,在这里我将32个光二极管分别接在P0和P1,通过程序控制这两个端口的电平高低,将32个光二极管的正极接电源,负极接P0和P1口,即发P0和P1口的相应端口为高电平时,发光二极管的两端都为高电平,所以发光二极管不亮,当发光二极管的相应端口为低电平时就能被点亮。

单片机—走马灯

单片机—走马灯

1 设计方案通过模式键来改变单片的工作模式,进行程序控制,一共有九个模式。

LED 等工作在不同的模式下,有不同的现象。

加速减速开关来控制灯泡的闪亮快慢。

复位电路用来初始化芯片的工作状态。

2AT89S5介绍主要性能● 与MCS-51单片机产品兼容● 8K字节在系统可编程Flash存储器● 1000次擦写周期● 全静态操作:0Hz~33Hz● 三级加密程序存储器● 32个可编程I/O口线● 三个16位定时器/计数器● 八个中断源● 全双工UART串行通道● 低功耗空闲和掉电模式● 掉电后中断可唤醒● 看门狗定时器● 双数据指针● 掉电标识符功能特性描述AT89S52是一种低功耗、高性能CMOS8位微控制器,具有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内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。

VCC : 电源GND: 地P0 口:P0口是一个8位漏极开路的双向I/O口。

作为输出口,每位能驱动8个TTL 逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。

单片机整套实验及程序(交通灯_跑马灯等)文档

单片机整套实验及程序(交通灯_跑马灯等)文档

实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。

二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管(D1、D2、D3、D4)按照一定的方式点亮。

如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。

●基于Proteus ISIS仿真环境完成上述功能的仿真。

●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。

四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。

五、软件流程图与参考程序● 主程序流程图如下:● 参考程序 #include<reg52.h> #include<intrins.h>#define uchar unsigned char #define uint unsigned intuchar aa ,num ,speed ,flag;uchar code table[]={0x0e ,0x0d ,0x0b ,0x07}; uchar code table1[]={0x0a ,0x05,0x09,0x06};uchar codetable2[]={0x0c ,0x09,0x03,0x08,0x01,0x0e ,0x0c ,0x08,0x00}; void delay(uint z)//延时函数 {uint x;uchar y;for(x=z;x>0;x--) for(y=200;y>0;y--); }void init()//条件初始化函数 { flag=0;speed=10;//控制跑马灯流水速度 TMOD=0x01;//中断方式开 始初始化(定时器、中断、标志位设置)Flag=1? 流水灯操作 结 束YNTH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//打开总中断ET0=1;//打开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完成本实验内容,深刻理解汇编语言程序设计结构。

单片机 跑马灯实验精选全文

单片机 跑马灯实验精选全文

可编辑修改精选全文完整版实验一跑马灯实验一、实验内容1、基本的流水灯根据图1电路,编写一段程序,使8个发光二极管D1、D2、D3、D4、D5、D6、D7、D8顺序(正序)点亮:先点亮D1,再点亮D2、D3……D8、D1……,循环点亮。

每点亮一个LED,采用软件延时一段时间。

2、简单键控的流水灯不按键,按正序点亮流水灯;按下K1不松手,按倒序点亮流水灯,即先点亮D8,再顺序点亮D7、D6……D1、D8……。

松手后,又按正序点亮流水灯。

3、键控的流水灯上电,不点亮LED,按一下K1键,按正序点亮流水灯。

按一下K2键,按倒序点亮流水灯,按一下K3键,全部关闭LED。

二、实验方案1、总体方案设计考虑到K4键未被使用,所以将实验内容中的三项合并到一个主函数中:K4键代替实验内容第二项中的K1键;单片机一开机即执行实验内容第一项;K1、K2、K3键实现实验内容第三项。

所用硬件:AT89C52、BUTTON、LED-BLUE、电源输入:P2.0-K1;P2.1-K2;P2.2-K3;P2.3-K4。

低电平有效输出:P0.0~P0.7-D0~D7。

LED组连线采用共阳极,低电平有效软件设计:软件延时采用延时函数delay(t),可调整延迟时间:void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}由于涉及到按键变化所以要设置一个变量oldK保留按键键值,要在延时程序中检测是否按键,当按键后立即设置oldK的值。

按键判断采用在while循环中利用条件语句判断P2的值然后执行该键对应的代码段,达到相应的响应。

为了让K4键的效果优化,即状态变化从当前已亮灯开始顺序点亮或逆序点亮,利用全局变量n来记录灯号,利用算法即可实现。

主要算法:1、全局变量的定义:uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;2、顺序、逆序点亮流水灯:void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}3、实验内容第二项流水灯灯亮顺序变换:void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){out=D[n];n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}4、对应实验内容第一项,开机顺序点亮流水灯:while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}2、实验原理图图2-1 实验原理图3、程序流程图图2-2 程序流程图三、源程序#include"reg51.h"#define uchar unsigned char#define uint unsigned int#define out P0uchar D[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0X7f};//单个LED亮uchar AllOff=0xff;//LED全灭uchar AllOn=0x00;//LED全亮uchar K[]={0xff,0xfe,0xfd,0xfb,0xf7};//按键开关uchar oldK;//记录已按键int n;//记录当前亮的灯号void delay(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK&&P2!=K[0])break;//按下了其他键退出循环}}void delay10ms(){uint i;for(i=0;i<10000;i++);}void forward(){for(n=0;n<=7;n++){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}void backward(){for(n=7;n>=0;n--){out=D[n];delay(15);if(P2!=oldK&&P2!=K[0])break;}out=AllOff;}int delay4(uint t){uint i;while(t--)for(i=0;i<1000;i++){if(P2!=oldK){ //按键变化退出循环return 1;}}return 0;}void hold(){n=8;while(1){if(P2==K[4]){//一直按着K4键,逆序点亮跑马灯oldK=K[4];if(n==-1)n=7; //D0灯亮后点亮D7while(n>=0){n--;if(delay4(15))break;}}if(P2==K[0]){//未按下K4键,一直正序点亮跑马灯oldK=K[0];if(n==8)n=0;//D7灯亮后点亮D0while(n<=7){out=D[n];n++;if(delay4(15))break;}}if(P2!=K[4]&&P2!=K[0]){//按下了其他键,退出hold函数break;}}}void main(){oldK=K[0];while(1){//开机即正序点亮流水灯forward();if(P2!=K[0]){break;}}while(1){out=AllOff;if((P2&0x0f)!=0x0f){//检测有键按下delay10ms();//延时10ms再去检测//P2.0_K1键按下正序点亮流水灯if(P2==K[1]){oldK=K[1];while(1){forward();if(P2!=K[1]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.1_K2键按下逆序点亮流水灯if(P2==K[2]){while(1){backward();if(P2!=K[2]&&P2!=K[0]){//按下了其他键,退出break;}}}//P2.2_K3键按下关闭全部LEDif(P2==K[3]){oldK=K[3];out=AllOff;}//P2.3_K4键按下长按逆序点亮流水灯,不按正序点亮流水灯,直到其他键按下停止if(P2==K[4]){hold();}}}}四、实验结果1、基本的流水灯:开机后即重复顺序点亮流水灯,等待其他按键。

最新单片机实例之跑马灯专业知识讲座

最新单片机实例之跑马灯专业知识讲座

文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
三、程序设计
P1.0端口的LED闪亮
AT89S51
单片机的 I/O端口
P1.0
+Vcc
图3-3 单片机驱动一只发光二极管的原理电路
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
0.5秒延时的汇编程序:
MOV R6,#5
SS:
MOV R7, #200
LOOP: MOV R5, #249
DJNZ R5, $
DJNZ R7,LOOP
DJNZ R6,SS
整个子程序延时为: {[2μs×249+1+2]×200+2}×5=501010μs
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
任务一 一只LED的闪烁
一、课题目标
本课题就是以发光二极管为例,用单片机控制8只发 光二极管,实现逐个点亮、全亮、闪烁等花样显示。
为了便于理解,采用从简单的单只发光二极管的点亮 和熄灭控制开始,到实现八只发光二极管组成的各种样式 闪亮彩灯控制。
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
二、电路原理
图3-1 LED显示电路原理图
文档来源于网络,文档所提供的信息仅供参考之用,不能作为科学依据,请勿模 仿。文档如有不当之处,请联系本人或网站删除。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档