嵌入式系统原理实验三跑马灯
嵌入式系统课程设计 跑马灯报告
![嵌入式系统课程设计 跑马灯报告](https://img.taocdn.com/s3/m/6c0b6f1da8114431b90dd80a.png)
嵌入式系统课程设计报告学部专业学号姓名指导教师日期一、实验内容设计msp430单片机程序并焊接电路板,利用msp430单片机芯片实现对跑马灯、按键识别及数码显示这三大模块的控制二、实验目的1.熟悉电路原理图,了解单片机芯片与各大模块间的控制关系2.增强看图和动手设计能力,为将来从事这个专业及相关知识奠定基础3.在焊接的同时,理解源程序是如何实现相应功能的三、实验设备及器材清单实验设备:电烙铁、烙铁架、尖嘴钳、斜口钳、镊子、万用表等器材清单:四、硬件电路框图五、程序清单跑马灯程序#include <MSP430X14X.H>#define uchar unsigned char#define uint unsigned intint main( void ){void delay( );WDTCTL = WDTPW + WDTHOLD; unsigned char i=0,j=0;P2DIR=0XFF;P2SEL=0X00;while(1){for(i=0;i<10;i++){P2OUT=0XFF;delay(50);P2OUT=0X00;delay(50);}for(j=0;j<10;j++){P2OUT=0X55;delay(50);P2OUT=0XAA;delay(50);}}}void delay(uint n){uint a,b;for(a=0;a<=n;a++){for(b=0;b<=1538;b++);}}键盘程序#include "msp430x14x.h"int keyvalue=0;int i;int table[]={0X3f,0X06,0X5b,0X4f,0X66,0X6d,0X7d,0X07};void main( void ){WDTCTL = WDTPW + WDTHOLD; // 关看门狗P3DIR|=0X0b; //P3.0 P3.1 P3.3设置为输出状态P3SEL=0X0a; //选择P.1 P3.3为外围器件功能使用P3OUT=0X00; //P3引脚低电平P3OUT=0XFF; //P3引脚高电平P4DIR=0X00; //P4.0-P4.7引脚设置为输入P4SEL=0X00; //选择P4.0-P4.7为外围器件功能使用,即按键的输入口P1DIR=0X00; //P1.0-P1.7引脚设置为输入P1SEL=0X08; //选择P1.3为外围器件功能使用P1IE=0X08; //P1.3中断使能P1IES=0X08; // 下降沿中断标志置位U0CTL=SWRST; //UART逻辑为复位状态,可以设置串口U0CTL=CHAR+SYNC+MM; //8位数据位,SPI模式,地址位多机协议U0TCTL=SSEL1+SSEL0+STC;//选择主时钟MCTL,3端SPI,STE禁止U0TCTL=CKPH; //UCTL时钟信号延迟半个周期U0TCTL=~CKPL; //CKPL=1,时钟信号的高电平位无效电平U0BR0=0X02; //波特率2分频U0BR1=0X00;U0MCTL=0X00;ME1|=USPIE0; //串口0同步模块使能U0CTL&=~SWRST; //UART处于工作状态while(1){for(i=0;i<8;i++){if((P4IN&0x01<<i)==0X00) //按下1键(低电平)1111 1110&0000 0001=00000 0000==0x00//按下2键(低电平)1111 1101&0000 0010=0000 0000==0x00{keyvalue=table[i]; //按下1键keyvalue=0x3f 按下2键eyvalue=0x06U0TXBUF=keyvalue; //接收数据缓存//while((IFG1&UTXIFG0)==0);//IFG1&=~UTXIFG0;}}}}#pragma vector=PORT1_VECTOR //进入中断程序__interrupt void port1_vr(void){P3OUT=0X00; //P3输出低电平}六、实验小结时间过的很快,这个学期的MSP430单片机结束了,随之而来的课程设计也要结束了。
嵌入式跑马灯实验
![嵌入式跑马灯实验](https://img.taocdn.com/s3/m/96128c47cf84b9d528ea7a13.png)
一、实验名称:跑马灯二、实验要求:编写程序控制跑马灯的亮灭:首先是全不亮,接着第1个灯亮,第2个灯亮,第3个灯亮,第4个灯亮,最后所有的灯一起亮,即按顺序亮,然后全亮,最后全灭,顺序循环。
最后蜂鸣器响,然后灯全部灭。
三、实验步骤1、点击WINDOWS 操作系统的开始-> 程序-> ARM Developer Suite v1.2 ->CodeWarrior forARM Developer Suite 启动ADS1.2 IDE 或双击CodeWarrior for ARMDeveloper Suite 快捷方式起动启。
2、打开原有的有关跑马灯实验的工程。
3、源程序代码:。
/******************************************************************** ********* File:LEDCON.C* 功能:LED闪烁控制。
对发光二极管LED4进行控制,采用软件延时方法。
* 使用I/O口直接控制LED,采用灌电流方式。
* 说明:将跳线器JP8_LED4短接。
********************************************************************* *******/#include "config.h"#define LEDCON4 0x00002000 /* P0.13引脚控制LED4,低电平点亮*/#define LEDCON1 0x00000400 /* P0.10引脚控制LED1,低电平点亮*/#define LEDCON2 0x00000800 /* P0.11引脚控制LED2,低电平点亮*/#define LENCON3 0x00001000 /* P0.12引脚控制LED3,低电平点亮*/#define BEEP 0x00000080 /* P0.7引脚控制蜂鸣器,低电平响*/#define ALL 0x00003C80#define LEDALL 0x00003C00/******************************************************************** ********* 名称:DelayNS()* 功能:长软件延时* 入口参数:dly 延时参数,值越大,延时越久* 出口参数:无********************************************************************* *******/void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--)for(i=0; i<50000; i++);/******************************************************************** ********* 名称:main()* 功能:控制LED闪烁********************************************************************* *******/int main(void){ PINSEL0 = 0x00000000; // 设置所有管脚连接GPIOPINSEL1 = 0x00000000;IODIR = ALL; // 设置ALL控制口为输出while(1) //实现循环{IOSET =ALL;//初始化所有的灯灭IOSET =BEEP;// 蜂鸣器不响IOCLR = LEDCON1; //低电平灯亮DelayNS(100); //延迟时间IOSET = LEDCON1; //高电平灯灭DelayNS(100); //延迟时间IOCLR = LEDCON2;DelayNS(100);IOSET = LEDCON2;DelayNS(100);IOCLR = LEDCON3;DelayNS(100);IOSET = LEDCON3;DelayNS(100);IOCLR = LEDCON4;DelayNS(100);IOSET = LEDCON4;DelayNS(100);IOCLR =ALLLED;//所有的灯亮DelayNS(100);IOCLR =BEEP;//蜂鸣器响DelayNS(100);}return(0);4、调试程序观察实验结果。
嵌入式实训跑马灯报告
![嵌入式实训跑马灯报告](https://img.taocdn.com/s3/m/bcb059857e192279168884868762caaedc33ba59.png)
一、引言随着科技的飞速发展,嵌入式系统在各个领域得到了广泛的应用。
为了更好地了解嵌入式系统的开发过程,提高自己的实践能力,我参加了嵌入式实训课程,并完成了跑马灯项目的开发。
本文将详细介绍跑马灯项目的背景、设计思路、实现过程以及总结和反思。
二、项目背景跑马灯是一种常见的嵌入式应用,其基本功能是在屏幕上显示不断滚动的文字。
跑马灯项目旨在通过实践,让我们掌握嵌入式系统开发的基本流程,包括硬件选型、软件开发、调试与优化等。
三、设计思路1. 硬件选型跑马灯项目主要涉及硬件部分有:单片机、显示模块、按键模块、电源模块等。
考虑到成本和易用性,我选择了基于STC89C52单片机的硬件平台,该单片机具有丰富的外设资源,且价格低廉。
2. 软件设计跑马灯项目主要涉及软件设计,包括主程序、显示模块、按键模块等。
(1)主程序:负责跑马灯的基本功能,包括文字显示、滚动速度调整、按键控制等。
(2)显示模块:负责将文字显示在屏幕上,包括字体选择、颜色设置等。
(3)按键模块:负责实现按键功能,包括启动/停止跑马灯、调整滚动速度等。
3. 调试与优化在软件开发过程中,需要不断调试和优化程序,以提高跑马灯的性能。
主要优化方向包括:(1)优化程序结构,提高代码可读性和可维护性。
(2)优化显示模块,提高显示效果。
(3)优化按键模块,提高按键响应速度。
四、实现过程1. 硬件搭建首先,根据设计图纸,焊接电路板,连接单片机、显示模块、按键模块等硬件设备。
2. 软件编写(1)主程序:编写主程序,实现跑马灯的基本功能。
(2)显示模块:编写显示模块,实现文字显示、颜色设置等功能。
(3)按键模块:编写按键模块,实现按键控制功能。
3. 调试与优化在软件开发过程中,使用示波器、逻辑分析仪等工具进行调试,观察程序运行情况,发现问题并及时修改。
经过多次调试,跑马灯项目最终实现预期功能。
五、总结与反思1. 总结通过本次嵌入式实训,我掌握了跑马灯项目的开发过程,包括硬件选型、软件开发、调试与优化等。
心形跑马灯实训报告
![心形跑马灯实训报告](https://img.taocdn.com/s3/m/c01ead7f59fb770bf78a6529647d27284b7337fa.png)
一、实训目的本次心形跑马灯实训旨在通过实际操作,让学生掌握心形跑马灯的设计原理、电路搭建、编程控制以及实际应用等方面的知识。
通过实训,提高学生的动手能力、创新能力和团队协作能力,同时加深对电子技术、嵌入式系统及编程的理解。
二、实训背景随着科技的发展,嵌入式系统在日常生活中得到了广泛应用。
心形跑马灯作为一种新颖的电子装饰品,具有较高的观赏性和实用性。
本实训项目以心形跑马灯为载体,让学生在实训过程中学习相关知识,培养创新意识。
三、实训内容1. 心形跑马灯设计原理心形跑马灯采用LED灯珠作为显示单元,通过单片机控制LED灯珠的亮灭,形成动态的心形图案。
设计原理主要包括以下几个方面:(1)心形图案设计:通过数学公式计算心形图案的坐标点,将坐标点映射到LED灯珠上。
(2)LED灯珠驱动电路:设计LED灯珠的驱动电路,确保LED灯珠正常工作。
(3)单片机控制电路:设计单片机控制电路,实现LED灯珠的亮灭控制。
2. 心形跑马灯电路搭建(1)电路元器件:主要包括单片机、LED灯珠、电阻、电容、面包板、导线等。
(2)电路搭建步骤:①根据设计原理,设计电路图。
②在面包板上搭建电路,连接单片机、LED灯珠、电阻、电容等元器件。
③检查电路连接是否正确,确保电路正常工作。
3. 心形跑马灯编程控制(1)编程环境:使用C语言进行编程。
(2)编程步骤:①初始化单片机端口,设置LED灯珠的亮灭模式。
②编写心形图案的生成函数,计算心形图案的坐标点。
③编写控制LED灯珠亮灭的函数,实现心形图案的动态显示。
4. 心形跑马灯实际应用(1)展示平台:将心形跑马灯应用于各类活动、展览等场合,展示其独特魅力。
(2)应用场景:如商场、酒店、旅游景点等。
四、实训过程1. 理论学习:首先,学生对心形跑马灯的设计原理、电路搭建、编程控制等方面进行理论学习,了解相关知识。
2. 电路搭建:在面包板上搭建心形跑马灯电路,连接元器件,确保电路正常工作。
3. 编程实践:使用C语言编写心形跑马灯的代码,实现心形图案的动态显示。
3路跑马灯实验
![3路跑马灯实验](https://img.taocdn.com/s3/m/dc69fd503b3567ec102d8a2a.png)
单片机实验报告一一、 实验目的1. 掌握Keil 集成开发环境基本使用方法;2. 掌握学林51mini 仿真器和下载(编程)器的基本使用方法。
二、 实验主要仪器及环境:Keil ,51单片机,51mini 仿真器,计算机。
三、 实验内容p1口八个灯作3路跑马灯。
分别往端口送三个不同的数, 理解数字和端口的对应关系四、 实验步骤1)复位。
观察记录SFR 、IO 的状态以及第一条指令代码的地址,验证复位后51单片机的状态;2)全速运行。
观察记录LED 的运行情况,与前面下载到单片机运行的情况相比较。
3)复位,采用单步运行(F10),观察记录执行每一条指令后相关寄存器、IO 的变化情况。
4)复位,在延时程序处设置断点,运行到断点时,采用单步跟踪(F11),进入到延时程序,观察记录相关寄存器、IO 的变化情况。
5)修改程序,增大、减少延迟时间,仿真观察LED 变化情况,保存源程序。
五、 实验流程框图、实验程序1、实验流程框图如下:评 阅 开始D02和D05灯亮 延时 D01、D04和D07灯亮 延时 D00、D03和D06灯亮延时返回2、实验程序如下:ORG 0000H ;LJMP MAIN ;ORG 0080H ;MAIN: MOV P1,#0DBH ;11011011--零为亮ACALL DELay ;MOV P1,#06DH ;01101101ACALL DELay ;MOV P1,#0B6H ;10110110ACALL DELay ;AJMP MAIN ;delay: mov r7,#255 ;延时子程序d1: mov r6,#255d2: djnz r6,d2djnz r7,d1retEnd六、实验及程序的分析和讨论为实现3路跑马灯,本次实验三次灯亮灭的变换为一个周期。
MOV P1,#0DBH;11011011实现的是D02和D05灯亮,MOV P1,#06DH;01101101实现的是D01、D04和D07灯亮,MOV P1,#0B6H;10110110实现的是D00、D03和D06灯亮。
实验三、跑马灯的程序设计
![实验三、跑马灯的程序设计](https://img.taocdn.com/s3/m/dee4fd1ba8114431b90dd8ef.png)
实验三、跑马灯程序设计实验(2学时)一、实验目的1、熟悉89C51单片机系列指令系统;2、掌握软件定时程序的编写方法和子程序的调用方法;3、掌握使用汇编语言来实现跑马灯设计。
二、实验内容参照如下原理图设计一个跑马灯控制程序,让8个led按照自己的设想发光,显示的样式尽可能的丰富,灯的变化延时通过调用软件延时子程序来实现,要求延时时间为0.5S。
LED灯样式参考:1、让8个灯闪烁完后,1个灯向左(RL)或向右(RR)移动(流水灯)。
2、8个灯通过取表格“T AB:DB 81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFH”值进行变化。
三、实验设备微机1台,单片机实验板1块四、实验报告要求1、写出实验目的、实验内容、实验设备、程序流程图和源程序清单(加注释);2、写出运行结果,并分析其是否正确;3、说明实验中遇到的问题及解决的方法;4、用实验报告纸手写实验报告。
ORG 0000HSJMP MAINORG 0030H;LCALL MAINMAIN:MOV P1,#00HMOV DPTR,#LIGHTCHU:MOV R3,#06HMOV A,#00HTURN:MOV 20H,AMOVC A,@A+DPTRMOV P1,AMOV A,20HINC ALCALL DELAYDJNZ R3,TURNSJMP CHUDELAY:MOV R0,#05HD1:MOV R1,#250D2:MOV R2,#200D3:DJNZ R2,D3D4:DJNZ R1,D2DJNZ R0,D1RETLIGHT:DB 81H,42H,24H,18H,24H,42H SJMP $END本实验,使我受益良多。
在实验未开始之前,老师给了我们讲解了什么是跑马灯,让我们知道这跑马灯是怎么一回事;后来老师还讲了一两个例子,这让我们在设计程序的时候,有了头绪。
本实验,我的程序是P1两边同时来灯,当两灯相碰撞时,就反弹;反弹到顶/底时,再向内聚;然后再反弹……这是实验最终的程序,但在程序未出炉之前,遇到了一些问题。
ARM嵌入式跑马灯设计实验报告
![ARM嵌入式跑马灯设计实验报告](https://img.taocdn.com/s3/m/caf4a16b27d3240c8447ef95.png)
ARM嵌入式设计实验报告题目:跑马灯的设计专业:班级:姓名:学号:指导教师:2014年11 月目录1 题目要求 (1)2 设计软件的安装 (1)3 开发平台的搭建 (4)4 项目设计 (8)4.1 设计思路概述 (8)4.1.1 设计层次介绍 (9)4.1.2 设计模块介绍 (12)5总结 (16)1.题目要求:在windows系统上安装一个Linux操作系统,并且在自己搭建的平台上实现跑马灯的设计。
1.1.实验工具:计算机 linux操作系统1.1.2.实验目的:熟练掌握arm开发环境的设计,了解跑马灯的编程。
2.设计软件的安装:本项目设计软件为ReHat Linux 9.0操作系统,实验开发平台为MagicARM270具体关键安装步骤如下:3.开发平台的搭建:实验步骤(1)安装交叉编译器将光盘提供的交叉编译器安装包arm-linux-3.4.1.tar.bz2复制到某个目录下,然后进行解压安装,指定安装路径为/usr/local/arm。
# tar xjvf arm-linux-3.4.1.tar.bz2 -C /usr/local/arm注意:安装交叉编译器需要root权限,请使用root登录或者使用su命令增加root权限。
(2)设定交叉编译器路径修改/etc/profile文件,在其中增加arm-linux-gcc的路径,然后重新登录:# Path manipulationif [ `id -u` = 0 ]; thenpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/3.4.1/bin ⇓增加此行fi(3)设置宿主机网络从RedHat Linux的Main Menu菜单,选择System Settings◊Network,打开网络配置界面。
(4)设置宿主机网络双击eth0,在弹出的界面进行具体的网络设置,如IP地址、子网掩码等信息。
嵌入式跑马灯实验报告
![嵌入式跑马灯实验报告](https://img.taocdn.com/s3/m/0652571d302b3169a45177232f60ddccda38e696.png)
嵌入式跑马灯实验报告嵌入式跑马灯实验报告引言:嵌入式系统是现代科技中的重要一环,它融合了计算机科学和电子工程的知识,被广泛应用于各个领域。
而跑马灯作为嵌入式系统中的一个经典实验,不仅能够帮助我们理解嵌入式系统的原理,还能够培养我们的动手能力和创新思维。
本篇实验报告将详细介绍嵌入式跑马灯实验的设计与实现过程,并总结实验中的收获和经验。
一、实验背景跑马灯是一种常见的电子显示器件,它能够按照一定的规律闪烁或滚动显示文字、图案等内容。
在本次实验中,我们将使用嵌入式系统来设计一个跑马灯,并通过编程控制其显示效果,从而加深对嵌入式系统的理解和应用。
二、实验材料1. 嵌入式开发板:我们选择了一款基于ARM架构的开发板,具有较高的性能和丰富的外设接口,适合进行跑马灯实验。
2. LED灯:我们使用了8个LED灯作为跑马灯的显示元素,通过控制每个LED的亮灭状态,实现跑马灯的效果。
3. 连接线:用于将开发板和LED灯进行连接,确保信号的传输和控制的准确性。
三、实验设计与实现1. 硬件连接:首先,我们将LED灯与开发板的GPIO口进行连接。
通过查阅开发板的引脚图,我们确定了每个LED灯对应的GPIO引脚,并使用连接线将它们相连。
2. 系统初始化:在嵌入式开发环境中,我们编写了初始化代码,用于配置GPIO 口的工作模式和初始化LED灯的状态。
通过设置引脚为输出模式,并将其电平置低,我们确保了LED灯的初始状态为熄灭。
3. 跑马灯效果实现:为了实现跑马灯的效果,我们编写了一个循环程序。
在每个循环中,我们通过改变LED灯的亮灭状态,实现灯光的闪烁。
具体而言,我们使用一个变量来表示当前亮灯的位置,然后将该位置对应的LED引脚电平置高,其他LED引脚电平置低。
随后,我们通过延时函数控制灯光的亮灭时间,再将亮灯位置变量进行更新,实现灯光的移动效果。
通过不断循环执行该程序,我们可以看到跑马灯的效果。
4. 实验调试:在实验过程中,我们发现了一些问题,例如灯光闪烁过快或过慢、灯光移动的不连续等。
嵌入式操作系统跑马灯实验报告
![嵌入式操作系统跑马灯实验报告](https://img.taocdn.com/s3/m/eb2a1a195f0e7cd18425364c.png)
嵌入式操作系统实验报告实验题目:实验一 CVT-PXA270的使用及跑马灯实验专业:计算机科学与技术班级:姓名:学号:1. 了解Linux下端口编程的方法;2. 掌握CVT-PXA270下的directio通用端口编程驱动程序的使用;3. 掌握CVT-PXA270下跑马灯的使用方法。
二、实验内容1.了解CVT-PXA270的外部结构,以及各端口的使用2.测试跑马灯状态,使跑马灯程序在Linux系统下运行3.修改跑马灯程序,使跑马灯呈现出不同的状态三、实验方案/* 当前跑马灯状态*/unsigned char led_status = 0x00;//******************************************************************** // Function name : delay// Description : delay for a while// Return type : void// Argument : int count********************************************************************* /void delay(int count){while(count --);}/* 主函数*/int Main(int argc, char* argv[]){while(1){*((unsigned char *) 0x04005000) = led_status;delay(0xffffff);led_status ++;}return 0;}四、试验结果实验箱上的四个跑马灯将不断闪烁,修改程序中delay函数调用的值将变它们显示的速度,值越大,显示越慢。
本次实验过程中,由于第一次实验,对实验器件,还有实验过程都不大了解,使得做实验过程中遇到很大的问题。
也花费了不少时间,不过在慢慢的摸索中,以及老师的指导和同学的帮助下,最终也了解了CVT-PXA270的外部结构,以及各个引脚的作用,还有各个串口和并口的具体使用,还观察了跑马灯在CVT-PXA270下的运行状态,以及它的运行程序,当程序中的delay函数改变时,其状态也随之改变。
跑马灯实验报告
![跑马灯实验报告](https://img.taocdn.com/s3/m/4386796e5b8102d276a20029bd64783e08127d6c.png)
一、实验目的1. 熟悉嵌入式系统硬件电路的搭建与调试;2. 掌握C语言编程,实现跑马灯功能;3. 理解并掌握GPIO口操作,学习定时器中断的使用。
二、实验环境1. 开发板:STM32F103C8T6开发板2. 编译器:Keil uVision53. 软件库:STM32标准外设库三、实验原理跑马灯实验是通过控制LED灯的亮灭,实现LED灯依次点亮的效果。
实验原理如下:1. GPIO口控制:将LED灯连接到开发板的GPIO口,通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;2. 定时器中断:定时器产生中断,实现LED灯点亮与熄灭的时间间隔;3. 循环控制:通过循环控制LED灯的点亮顺序,实现跑马灯效果。
四、实验步骤1. 硬件电路搭建(1)将LED灯的正极连接到开发板的GPIO口,负极接地;(2)将开发板的电源和地线连接到电源模块。
2. 软件编程(1)在Keil uVision5中创建项目,并导入STM32标准外设库;(2)编写程序,实现以下功能:a. 初始化GPIO口,将LED灯连接的GPIO口配置为输出模式;b. 初始化定时器,设置定时器中断周期,使LED灯点亮与熄灭的时间间隔为1ms;c. 编写定时器中断服务程序,控制LED灯的点亮与熄灭;d. 编写主函数,实现LED灯依次点亮的效果。
3. 编译与下载(1)编译程序,生成可执行文件;(2)将开发板连接到计算机,通过串口下载程序到开发板。
4. 实验调试(1)打开串口调试助手,观察LED灯的点亮与熄灭效果;(2)调整程序参数,优化跑马灯效果。
五、实验结果与分析1. 实验结果(1)LED灯依次点亮,实现跑马灯效果;(2)LED灯点亮与熄灭的时间间隔可调。
2. 实验分析(1)通过控制GPIO口的输出电平,实现LED灯的点亮与熄灭;(2)定时器中断实现LED灯点亮与熄灭的时间间隔控制;(3)循环控制实现LED灯依次点亮的效果。
六、实验总结本次实验成功实现了跑马灯功能,加深了对嵌入式系统硬件电路、C语言编程和GPIO口操作的理解。
03跑马灯实验
![03跑马灯实验](https://img.taocdn.com/s3/m/e99e7d232f60ddccda38a0ca.png)
�
这?实现跑马灯的方法是依次灭掉前一个灯和点亮后一个灯再延时一会?断循环就可以看到跑马灯的效果了
第三课,跑马灯试验 在本课中,你可以学习到几乎所有单片机试验课程都会介绍到跑马灯试验. 打开 lesson3 目录的工程文件,如图:
这里实现跑马灯的方法是,依次灭掉前一个灯和点亮后一个灯,再延时一会,不断循 环,就可以看到跑马灯的效果了. 请在编译后,进入仿真,点全速运行看结果. 好好研究这段代码,下面做作业: 作业: 例程中的跑马灯在同一时刻只显示 1 个灯,现在改为同时亮着 2 个灯的跑马灯.
实验三:跑马灯实验
![实验三:跑马灯实验](https://img.taocdn.com/s3/m/d1c2391284868762cbaed553.png)
微控制器综合设计与实训实验名称:实验三跑马灯实验实验三:跑马灯实验1 实训任务(1) 编写程序,实现对LED1~LED8的轮流点亮;(2) 仿真调试,调整延时时间,利用仿真示波器观察延时时间长短;(3) 下载程序,观察跑马灯运行状况。
1.1 实验说明本实验将要实现的是控制实训平台上的8个LED灯实现一个类似跑马灯的效果,LED通过控制IO口的高低电平工作,因此实验的关键在于如何控制STM32的IO口输出。
1.2 实验步骤(1) 在实训平台上将IO口与LED(LED1~LED8)连接;(2) 复制工程模板文件夹,新建led.c和led.h文件,并将新建文件加入工程中;(3) 编写led.h文件,声明void LED_Init(void)初始化函数,宏定义LED1~LED8;(4) 编写led.c文件,建立void LED_Init(void)初始化函数,实现对LED灯用到的IO端口的配置,配置为推挽输出,速度为50MHZ;(5) 编写main()函数,实现对LED1~LED8的轮流点亮;(6) 软件仿真,调整延时时间,利用仿真示波器观察延时时间长短;(7) 下载程序,观察跑马灯的运行状况。
2 程序设计2.1 通过数组实现流水灯:2.2 通过宏定义实现流水灯:2.3 通过函数实现流水灯:2.4 通过SYSTICK中断实现流水灯:3硬件原理图设计4 总结通过数组实现流水灯:通过宏定义实现流水灯:通过函数实现流水灯:通过SYSTICK中断实现流水灯:实验心得:本次实验通过四种方法来实现流水灯,分别是通过数组实现流水灯,通过宏定义实现流水灯,通过函数实现流水灯,通过SYSTICK中断实现流水灯。
让我体会到单片机代码的多样性及强大的拓展功能。
MCU通过控制IO口的高低电平来直接控制LED的亮灭,所以本实验的关键是如何控制STM32的IO口输出,来达到我们想要的效果。
就比如灯光秀。
嵌入式系统实训报告--走马灯
![嵌入式系统实训报告--走马灯](https://img.taocdn.com/s3/m/0fa7d013cc7931b765ce15e5.png)
《嵌入式系统技术》实训报告1、实验目的z熟悉A DS 开发环境调试环境。
z掌握简单的A RM 汇编指令的使用方法。
z掌握S3C2440A 的I/O 控制寄存器的配置。
z掌握A RM 汇编指令和C语言相互调用的方法2、实验设备z PC 机、ARM 仿真器、2440 实验箱、串口线。
3、实验内容z熟悉A RM 开发环境的建立。
z使用A RM 汇编和C语言设置G PIO 口的相应寄存器。
z编写跑马灯程序。
4、实验原理C 程序与汇编程序相互调用规则为了使单独编译的C 语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。
ATPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是A RM 程序和T humb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。
下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书籍。
1.基本A TPCS基本A TPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容:(1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的A TPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。
但是它不能提供以下的支持:ARM 程序和T humb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。
而派生的其他几种特定的ATPCS 就是在基本ATPCS 的基础上再添加其他的规则而形成的。
其目的就是提供上述的功能。
2.寄存器的使用规则寄存器的使用必须满足下面的规则:(1) 子程序间通过寄存器R0~R3 来传递参数。
这时,寄存器R0~R3 可以记作A0~A3。
被调用的子程序在返回前无需恢复寄存器R0~R3 的内容。
走马灯实验报告67586
![走马灯实验报告67586](https://img.taocdn.com/s3/m/073fcdb14b35eefdc9d33387.png)
电子系统综合设计报告学号0229姓名李文海年级专业2010级电子信息工程(二)指导教师刘怀强学院理学院走马灯实验论文--《嵌入式系统技术》1、实验目的1、学会DP-51PRO实验仪监控程序下载、动态调试等联机调试功能的使用;2、理解和学会单片机并口的作为通用I/O的使用;3、理解和学会单片机外部中断的使用;4、了解单片机定时器/计数器的应用。
2、实验设备z PC 机、ARM 仿真器、2440 实验箱、串口线。
3、实验内容z熟悉A RM 开发环境的建立。
z使用A RM 汇编和C语言设置G PIO 口的相应寄存器。
z编写跑马灯程序。
5、实验原理走马灯实验是一个硬件实验,因此要求使用DP-51PRO 单片机综合仿真实验仪进行硬件仿真,首先要求先进行软件仿真,排除软件语法错误,保证关键程序段的正确。
然后连接仿真仪,下载监控程序,进行主机与实验箱联机仿真。
为了使单独编译的C语言程序和汇编程序之间能够相互调用,必须为子程序间的调用规定一定的规则。
ATPCS ,即ARM ,Thumb 过程调用标准(ARM/Thumb Procedure Call Standard),是A RM 程序和T humb 程序中子程序调用的基本规则,它规定了一些子程序间调用的基本规则,如子程序调用过程中的寄存器的使用规则,堆栈的使用规则,参数的传递规则等。
下面结合实际介绍几种A TPCS 规则,如果读者想了解更多的规则,可以查看相关的书籍。
1.基本A TPCS基本A TPCS 规定了在子程序调用时的一些基本规则,包括下面3方面的内容:(1)各寄存器的使用规则及其相应的名称。
(2)数据栈的使用规则。
(3)参数传递的规则。
相对于其它类型的A TPCS,满足基本A TPCS 的程序的执行速度更快,所占用的内存更少。
但是它不能提供以下的支持: ARM 程序和T humb 程序相互调用,数据以及代码的位置无关的支持,子程序的可重入性,数据栈检查的支持。
单片机实训报告跑马灯
![单片机实训报告跑马灯](https://img.taocdn.com/s3/m/e1fa1b685b8102d276a20029bd64783e09127da9.png)
一、实训背景随着科技的发展,单片机作为一种重要的嵌入式系统控制单元,在工业控制、智能家居、物联网等领域得到了广泛的应用。
为了提高学生对单片机程序设计的理解和实践能力,本次实训选择了跑马灯程序设计作为实训项目。
二、实训目的1. 熟悉单片机的基本结构和编程方法。
2. 掌握Keil C51集成开发环境的使用。
3. 学习跑马灯程序的设计与实现。
4. 培养动手实践能力和团队协作精神。
三、实训内容本次实训主要分为以下几个部分:1. 电路设计:设计跑马灯的电路,包括单片机、LED灯、电阻、按键等元件。
2. 程序设计:编写跑马灯的程序,实现LED灯的正序、倒序、闪烁等功能。
3. 程序调试:在Keil C51集成开发环境中进行程序调试,确保程序正常运行。
4. 实验报告撰写:总结实训过程中的经验和收获,撰写实验报告。
四、电路设计跑马灯电路主要包括以下元件:1. 单片机:选用AT89C51单片机作为控制核心。
2. LED灯:使用8个LED灯作为显示元件。
3. 电阻:用于限流,防止LED灯烧毁。
4. 按键:用于控制跑马灯的运行模式。
电路连接方式如下:1. 将8个LED灯的正极依次连接到单片机的P1口。
2. 将8个LED灯的负极依次连接到地线。
3. 将按键的一端连接到单片机的P3.0口,另一端连接到地线。
五、程序设计跑马灯的程序采用C语言编写,主要功能包括:1. 正序跑马灯:LED灯依次点亮,从D1到D8。
2. 倒序跑马灯:LED灯依次点亮,从D8到D1。
3. 闪烁跑马灯:LED灯快速闪烁。
程序流程如下:1. 初始化单片机P1口为输出模式。
2. 根据按键输入选择跑马灯的运行模式。
3. 根据选择的模式,依次点亮LED灯。
4. 延时一段时间,然后继续点亮下一个LED灯。
5. 重复步骤3和4,直到所有LED灯点亮完毕。
程序代码如下:```c#include <reg51.h>#define LED P1void delay(unsigned int t) {unsigned int i, j;for (i = 0; i < t; i++)for (j = 0; j < 120; j++);}void main() {unsigned char i;LED = 0x01; // 正序跑马灯while (1) {for (i = 0; i < 8; i++) {delay(500); // 延时LED = (0x01 << i); // 点亮下一个LED灯}}}```六、程序调试在Keil C51集成开发环境中,将程序代码编译生成HEX文件,然后将HEX文件烧录到单片机中。
Blinky嵌入式系统实验报告
![Blinky嵌入式系统实验报告](https://img.taocdn.com/s3/m/cd648d9fba4cf7ec4afe04a1b0717fd5360cb2e3.png)
一、实验项目名称Blinky验证及修改二、实验目的和要求(1)实验目的1.会用《STM32固件库使用手册的中文翻译版》解决实验中出现的问题及修改的方法。
2.掌握Blinky程序的原理及修改跑马灯的基本方法和原理(2)实验要求修改LED灯的亮的位置以及改变流水灯的顺序三、实验环境(1)硬件配置器件数量英蓓特STM32V100开发板ULINK2仿真器1 1 1PCUSB数据线2(2)软件配置软件平台数量PC机操作系统PC机端串口通信程序Windows7超级终端Keil uVision 3.23嵌入式软件开发环境四、实验内容和原理(1)电路原理图图1 LED引脚连接电路图上图为LED引脚连接电路图。
本实验中, 修改相应的程序以改变LED灯亮灭的位置以及流水方向。
其中, 如图所示, 四个LED灯分别对应PC6—PC9四个端口。
(2)实验内容1.首先打开Blinky文件夹(里面有三个文件夹: uvision-存放工程文件和源文件, obj-存放编译文件, listing-存放链接及印像文件), 进入uvision文件夹中双击Blinky.Uv2工程文件, 则会打开工程文件。
2、工程文件中包含Start Up(启动代码存放区), Source Code(主要的源程序代码存放区), Library(源程序文件库), Document(程序的说明文档)文件夹。
3.连接好电源线和仿真器接线(外接仿真器连接线(JATG))4、选择仿真器, 在工程总目录(Target)上点击右键, 然后选择Option for Target ‘STM32 Trace A。
在Debug选项卡下, 选中UNINK Cortex Debugger。
分别如图2、图3所示。
图2 设置工程选项图3 设置Debug选项卡5.检查UNINK2是否正常连接上。
如果UNINK2通过USB线连接到开发板后, 上面的RUN和COM指示灯先变为蓝色后熄灭, 而USB指示灯一直为红色, 则说明ULINK没问题。
嵌入式系统实验报告-跑马灯
![嵌入式系统实验报告-跑马灯](https://img.taocdn.com/s3/m/2585e21a55270722192ef78b.png)
嵌入式系统基础实灯
请简要描述你的实验主要步骤
1.打开源程序工程,编译链接生成二进制文件;
2.烧写二进制代码并运行开发板;
3.观察开发板上的按钮与LED灯;
4.恢复开发板为初始状态;
请说明实验中你遇到的问题及解决方法
实验源码方面没有什么问题,问题在于具体操作方面:
1.使用usb线连接开发板之后,需要将切换开关置于编程位置。而且再写入之前要按一下复位键。
实验关键部分相关源码
void marquee()
{
int i;
while(1) {
for(i = 0; i < 9; i++){
delay(10);
*led_array[i] = ON;
delay(10);
*led_array[i] = OFF;
stm32跑马灯实验报告
![stm32跑马灯实验报告](https://img.taocdn.com/s3/m/93b2148da0c7aa00b52acfc789eb172dec639941.png)
stm32跑马灯实验报告STM32跑马灯实验报告引言:STM32是一款广泛应用于嵌入式系统开发的微控制器,具有高性能、低功耗和丰富的外设接口。
跑马灯实验是入门级的STM32实验项目,通过控制LED灯的亮灭顺序实现跑马灯效果。
本实验报告将详细介绍实验的目的、原理、实施步骤以及实验结果。
一、实验目的跑马灯实验旨在通过STM32的GPIO控制LED灯的亮灭,实现灯光在多个LED之间依次点亮和熄灭的效果。
通过这个实验,我们可以了解STM32的GPIO口的操作方式,掌握基本的STM32编程技巧。
二、实验原理STM32的GPIO口可以设置为输出模式,通过控制GPIO口的电平(高电平或低电平)来控制LED灯的亮灭。
跑马灯实验中,我们将多个LED连接到STM32的不同GPIO口上,通过依次改变GPIO口的电平状态,实现灯光在不同LED之间依次传递的效果。
三、实施步骤1. 准备材料:STM32开发板、杜邦线、若干个LED灯。
2. 连接电路:将多个LED分别连接到STM32的不同GPIO口上,确保极性正确。
3. 创建工程:使用Keil等开发环境创建STM32工程,并配置好相应的引脚。
4. 编写代码:在main函数中编写代码,通过设置GPIO口的电平状态实现跑马灯效果。
5. 编译烧录:编译代码生成可执行文件,并将其烧录到STM32开发板上。
6. 运行实验:将STM32开发板上电,观察LED灯的亮灭顺序是否符合预期。
四、实验结果经过实验,我们成功实现了跑马灯效果。
LED灯在不同的GPIO口之间依次点亮和熄灭,形成了流动的灯光效果。
通过调整代码中GPIO口的顺序和时间延迟,我们还可以改变灯光的流动速度和方向。
实验结果与预期一致,验证了我们的设计和实施的正确性。
五、实验总结通过这个实验,我们对STM32的GPIO控制和编程有了更深入的了解。
我们学会了如何通过改变GPIO口的电平状态来控制外部设备,掌握了基本的STM32编程技巧。
跑马灯实验指导书
![跑马灯实验指导书](https://img.taocdn.com/s3/m/13c43e7ff242336c1eb95efd.png)
嵌入式程序设计实验指导书教研室:计算机科学与技术教研室计算机科学与信息工程学院实验三 LED 控制实验【开发语言及实现平台或实验环境】1.硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机;2.软件:μVision IDE for ARM 集成开发环境,Windows 98/2000/NT/XP。
【实验目的】1.掌握利用S3C2410X 芯片地址总线扩展的I/O 来驱动LED 显示;2.了解ARM 芯片中利用总线扩展I/O 口的使用方法。
【实验要求】编写程序,控制实验平台的发光二极管LED1,LED2,LED3,LED4,使它们有规律的点亮和熄灭,具体顺序如下:LED1 亮->LED2 亮->LED3 亮->LED4 亮->LED1 灭->LED2 灭->LED3 灭->LED4 灭->全亮->全灭,如此反复。
【实验原理】EduKit-IV 设计了5 个LED(D1~D5)用于指示和控制系统的状态,其中D2 指示电源的状态,其他4个的状态是用户可编程的(SYSLED1~SYSLED4),在EduKit-IV 中,这4 个LED 的状态通过扩展I/O 接口进行控制,其接口电路如图3-1 和图3-2 所示。
芯片74VHC573DT 的选通物理地址为0x21180000,当访问这个物理地址的时候,就可以访问其上的硬件资源了。
这里可以把其理解为一个寄存器,寄存器地址是0x21180000,它的低4 位控制了4 个LED灯,通过访问地址为0x21180000 的寄存器,往其低4 位置高/低电平,从而控制相应的4 个LED 灯的亮/灭。
(注意:寄存器0x21180000 是只写的,在软件编程时只能往里写数据,不能从里读数据)图3-1 向LED 写入数据图3-2 LED1-4 连接图如图3-2 所示,LED1-4 这4 个LED 采用了共阳极的接法,分别与SYSLED1-4 相连,通过SYSLED1-4 引脚的高低电平来控制发光二极管的亮与灭。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三跑马灯实验实验目的:通过一个经典的跑马灯程序,了解STM32F1 的IO 口作为输出使用的方法。
通过代码控制ALIENTEK 战舰STM32 开发板上的两个LED:DS0 和DS1 交替闪烁,实现类似跑马灯的效果内容要点:1.硬件设计本章用到的硬件只有LED(DS0 和DS1)。
其电路在ALIENTEK 战舰STM32F103开发板上默认是已经连接好了的。
DS0 接PB5,DS1 接PE5。
所以在硬件上不需要动任何东西。
其连接原理图如图:2.软件设计跑马灯实验我们主要用到的固件库文件是:stm32f10x_gpio.c /stm32f10x_gpio.hstm32f10x_rcc.c/stm32f10x_rcc.hmisc.c/ misc.hstm32f10x_usart /stm32f10x_usart.h其中stm32f10x_rcc.h 头文件在每个实验中都要引入,因为系统时钟配置函数以及相关的外设时钟使能函数都在这个其源文件stm32f10x_rcc.c 中。
stm32f10x_usart.h 和misc.h 头文件在我们SYSTEM 文件夹中都需要使用到,所以每个实验都会引用。
首先,找到之前新建的Template 工程,在该文件夹下面新建一个HARDWARE的文件夹,用来存储以后与硬件相关的代码,然后在HARDWARE 文件夹下新建一个LED 文件夹,用来存放与LED 相关的代码。
新建led.h和led.c文件,一个外设对应一个.h和.c文件。
在Manage Components 管理里面新建一个HARDWARE 的组,并把led.c 加入到这个组里面,将led.h 头文件的路径加入到工程里面一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内容重复引用,一般通过预编译的方式来写头文件。
一般的格式如下:#ifndef __LED_H#define __LED_H……#endif第一次调用时会将#define下面这一节全部定义,重复调用时,下面的东西就不会被引用。
头文件里一般用来写函数声明或者宏定义,在源文件中再去定义具体的函数。
#ifndef __LED_H#define __LED_Hvoid LED_Init(void);#endif然后我们打开USER 文件夹下的LED.uvprojx 工程(如果是使用的上面新建的工程模板,那么就是Template. uvprojx,大家可以将其重命名为LED. uvprojx),按新建按钮新建一个文件,然后保存在HARDWARE->LED 文件夹下面,保存为led.c。
在该文件中输入如下代码:#include "led.h"#include "stm32f10x.h"//引用顶层头文件,否则RCC_APB2PeriphClockCmd()函数不可见//初始化PB5 和PE5 为输出口.并使能这两个口的时钟//LED IO 初始化void LED_Init(void){GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE 端口时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_SetBits(GPIOB,GPIO_Pin_5);//输出PB5为高电平GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOE, &GPIO_InitStructure);GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE5 输出高}该代码里面就包含了一个函数void LED_Init(void),该函数的功能就是用来实现配置PB5和PE5 为推挽输出。
这里需要注意的是:在配置STM32 外设的时候,任何时候都要先使能该外设的时钟。
GPIO 是挂载在APB2 总线上的外设,在固件库中对挂载在APB2 总线上的外设时钟使能是通过函数RCC_APB2PeriphClockCmd()来实现的。
代码如下:RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);这两行代码的作用是使能APB2 总线上的GPIOB 和GPIOE 的时钟。
或者可以写成RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE,ENABLE);在配置完时钟之后,LED_Init 配置了GPIOB.5 和GPIOE.5 的模式为推挽输出,并且默认输出1。
这样就完成了对这两个IO 口的初始化。
函数代码是:GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->GPIOB.5 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); //初始化GPIOB.5GPIO_SetBits(GPIOB,GPIO_Pin_5); //GPIOB.5 输出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->GPIOE.5 推挽输出GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO 口速度为50MHzGPIO_Init(GPIOE, &GPIO_InitStructure); //初始化GPIOE.5GPIO_SetBits(GPIOE,GPIO_Pin_5); //GPIOE.5 输出高在GPIOE.5 的初始化的时候就不需要再重复最后一行代码:GPIO_SetBits(GPIOE,GPIO_Pin_5);的作用是在初始化中将GPIOE.5 输出设置为高。
保存led.c 代码,这样LED_Init()函数就编写完成了。
接下来,开始写main.c文件首先,我们要用到GPIO相关的函数来操作I/O口,所以要先包含顶层的头文件#include "stm32f10x.h"其次要将led.h文件包含进来#include "led.h"之后就可以在main函数中调用LED_Init( )函数了。
#include "stm32f10x.h"#include "led.h"int main(void){LED_Init( ); //初始化与LED 连接的硬件接口while(1){ }}接下来就可以设置I/O口的电平了。
首先while(1){GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOE,GPIO_Pin_5);}如果不延时的话,我们是看不到效果的,所以我们调用一个延时delay_init();在调用之前要引用头文件#include "delay.h"#include "stm32f10x.h"#include "led.h"#include "delay.h"int main(void){delay_init();LED_Init( );while(1){GPIO_SetBits(GPIOB,GPIO_Pin_5);GPIO_SetBits(GPIOE,GPIO_Pin_5);delay_ms(500);GPIO_ResetBits(GPIOB,GPIO_Pin_5);GPIO_ResetBits(GPIOE,GPIO_Pin_5);delay_ms(500);}}实验现象:LED灯同时亮灭,中间间隔500毫秒。
能否让LED灯出现跑马灯现象,即一个亮的同时另一个灭?。