文档库 最新最全的文档下载
当前位置:文档库 › 嵌入式LED灯显示

嵌入式LED灯显示

嵌入式LED灯显示
嵌入式LED灯显示

【设计题目】

矩阵LED字符显示控制系统设计

【设计目的】

1.掌握无操作系统下的硬件软件设计原理和方法;

2.进一步熟悉ARM 处理器的基本结构、指令集、存储系统以及基本接口编程;3.熟悉嵌入式系统各部件的硬件初始化过程以及基本IO控制方法。

4.掌握矩阵LED 的应用原理

【设计内容】

1.利用sys_init初始化程序,利用串口实现PC和开发板的数据通信;

2.编写S3C2410X 处理器的点阵屏驱动程序;

3.编写S3C2410X 处理器的点阵屏应用程序。

4. 当程序运行等待要求从串口输入学生姓名的字符串在矩阵LED上显示出来。【实验环境】

硬件:Embest EduKit-IV 平台,ULINK2 仿真器套件,PC 机;

软件:μVision IDE for ARM 集成开发环境,Windows XP。

【相关知识综述】

背景知识、原理算法等

一、硬件部分

1.点阵屏的结构电路

图1点阵屏的结构电路

图上QL1-QL16为行驱动信号,每个信号控制一行,LR1~LR16 是点阵屏的列驱动信号,

每一个信号控制一列。当行信号为高电平而列信号为低电平,对应的LED 就会亮。

2,S3C2410与点阵屏的连接

图2 S3C2410ARM 处理器与两片CD4094连接得到16位行选信号图

以上电路可以通过S3C2410GPIO 口把CPU 的并行数据(16位两个字节的数据)打入到两个CD4094芯片中并锁存起来变成LL1-LL16的行选信号。

各信号的作用如下表1; 3.点阵屏的保护电路

LL1 LL8

LL7

LL9

LL16 LL15

图3 点阵屏的保护电路图

为了保护LED屏加了对应的电阻实现行限流作用,即LL1-LL16变为RQ1-RQ16

4.LED的驱动

加入行驱动电路的目的是实现LED灯的驱动。这样由RQ1-RQ16变为行驱动信号QL1-QL16。Q11-QL16为图1中的行驱动信号。

图4 行驱动电路

【设计思路】

采用的数据结构、主要的函数说明、程序流程设计图等

主要的函数说明:

led_init(); :LED显示矩阵初始化

static void refresh_l_display_array(u8 bits, u8 *str) :显示字符

void led_logo_disp(void) :显示logo

struct fonts_struct {

unsigned char ascii_width;

unsigned char ascii_height;

unsigned char * ascii_code;

unsigned char ascii_beg;

unsigned char ascii_end;

};

【源程序清单】

/****************************************************************************** ***************

* File:main.c

* Author: embest

* Desc: c main entry

* History:

******************************************************************************* **************/

/*------------------------------------------------------------------------------------------*/

/* include files

*/

/*------------------------------------------------------------------------------------------*/

#include "2410lib.h"

#include "sys_init.h"

#include "fonts.h"

#include "led16x16.h"

/****************************************************************************** ***************

* name: main

* func: c code entry

* para: none

* ret: none

* modify:

* comment:

******************************************************************************* **************/

int main(void)

{

char c;

sys_init(); // Initial system

while(1)

{

uart_printf("\n Please Look At The 16X16 LEDS And Choose Key\n");

uart_printf("1、向左移动\n");

uart_printf("2、向左闪烁移动\n");

uart_printf("3、向右移动\n");

uart_printf("4、向右闪烁移动\n");

c=uart_getch();

uart_printf("%c",c);

led_init(); // Initial led diplay

if(c=='1')

{

l_char_out(0,"^_^学号");

left_out(0,"abcdef");

}

else if(c=='2')

{

l_flash_char_out(0,"^_^学号");

left_out_flash(0,"abcdef");

}

else if(c=='3')

{

r_char_out(0,"^_^学号");

right_out(0,"abcdef");

}

else if(c=='4')

{

r_flash_char_out(0,"^_^学号");

right_out_flash(0,"abcdef");

}

}

}

/****************************************************************************** ***************

* File: Dotled.c

* Author: embest

* Desc: DotLed_Test

* History:

******************************************************************************* **************/

/*------------------------------------------------------------------------------------------*/

/* include files

*/

/*------------------------------------------------------------------------------------------*/

#include

#include "2410lib.h"

#include "fonts.h"

#include "led16x16.h"

/*------------------------------------------------------------------------------------------*/

/* function declare

*/

/*------------------------------------------------------------------------------------------*/

extern void led_char_disp(void);

/*------------------------------------------------------------------------------------------*/

/* global variables

*/

/*------------------------------------------------------------------------------------------*/

u8 l_display_array[2*16];

u8 assic_buffer[3*16];

/*==================================================================== ========================

l_display_array:

+-----+-----+

| | |

| D | E |

| | |

+-----+-----+

A buffer data and

B buffer data -->D buffer data

B buffer data and

C buffer data -->E buffer data

assic_buffer:

+-----+-----+-----+

| | | |

| A | B | C |<---- update the C buffer and move the B buffer data to the A buffer

| | | | and move the C buffer data to the B buffer data

+-----+-----+-----+

====================================================================== ======================*/

/****************************************************************************** ***************

* name: led_update

* func: refresh the led display

* para: none

* ret: none

* modify:

* comment:

******************************************************************************* **************/

static void led_update(void)

{

int j = 20;

while(j--)

{

led_char_disp();

}

}

/****************************************************************************** ***************

* name: l_display_scroll

* func: shift the display

* para: bits:the position str:point the buffer

* ret: none

* modify:

* comment:

******************************************************************************* **************/

static void refresh_l_display_array(u8 bits, u8 *str)

{

u32 i;

u32 remaining_bits = 8-bits;

for(i=0;i<16;i++)

{

l_display_array[2*i] = (*str<>remaining_bits);

l_display_array[2*(i+1)-1] = (*(str+16)<>remaining_bits);

str++;

}

}

static void refresh_flash_display_array(u8 bits, u8 *str)

{

u32 i;

for(i=0;i<16;i++)

{

l_display_array[2*i] = 0;

l_display_array[2*(i+1)-1] =0;

str++;

}

}

/****************************************************************************** ***************

* name: l_display_scroll

* func: scroll the display

* para: str:point the buffer

* ret: none

* modify:

* comment:

******************************************************************************* **************/

static void l_display_scroll ( u8 *str )

{

int i;

for(i=0;i<8;i++)

{

refresh_l_display_array(i, str);

led_update();

}

}

static void l_flash_display_scroll ( u8 *str )

{

int i;

for(i=0;i<8;i++)

{

refresh_l_display_array(i, str);

led_update();

refresh_flash_display_array(i, str);

led_update();

}

}

static void r_display_scroll ( u8 *str )

{

int i;

for(i=8;i>0;i--)

{

refresh_l_display_array(i, str);

led_update();

}

}

static void r_flash_display_scroll ( u8 *str )

{

int i;

for(i=8;i>0;i--)

{

refresh_l_display_array(i, str);

led_update();

refresh_flash_display_array(i, str);

led_update();

}

}

/****************************************************************************** ***************

* name: copy_data

* func: copy data

* para: dst:point the dest data src:points the source data

* ret: none

* modify:

* comment:

******************************************************************************* **************/

static void copy_data(u8 *dst, u8 *src, u32 size)

{

while(size--)

*(dst++) = *(src++);

}

/****************************************************************************** ***************

* name: refresh_assic_buffer

* func: refresh buffer

* para: str:points the new char

* ret: none

* modify:

* comment:

******************************************************************************* **************/

static void l_refresh_assic_buffer(u8 *str)

{

copy_data(&assic_buffer[0], &assic_buffer[16],16);

copy_data(&assic_buffer[16], &assic_buffer[32],16);

copy_data(&assic_buffer[32], str,16);

l_display_scroll(assic_buffer);

}

static void l_flash_refresh_assic_buffer(u8 *str)

{

copy_data(&assic_buffer[0], &assic_buffer[16],16);

copy_data(&assic_buffer[16], &assic_buffer[32],16);

copy_data(&assic_buffer[32], str,16);

l_flash_display_scroll(assic_buffer);

}

static void r_refresh_assic_buffer(u8 *str)

{

copy_data(&assic_buffer[32], &assic_buffer[16],16);

copy_data(&assic_buffer[16], &assic_buffer[0],16);

copy_data(&assic_buffer[0], str,16);

r_display_scroll(assic_buffer);

}

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________ 院(部)____________________________ 专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 01 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 (2) 1、单片机概述 (2) 2、仿真软件介绍 (2) 3、需求分析 (3) 一、课程设计目的 (3) 二、课程设计要求 (4) 三、实验内容 (4) 1、设计任务与要求 (4) 2、系统分析 (4) 1).硬件电路设计(画出原理图、接线图) (5) 2)软件框图 (7) 3、用keil建项目流程 (8) 4、程序清单 (9) 4、系统调试 (11) 四、设计总结(结论) (12)

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。 关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处 理器、存储器和I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合, 便可成为一个单片机控制系统。 单片机经过1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它 们的CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2、仿真软件介绍 (1).Keil uv3 运行Keil uv3

嵌入式系统流水灯、按键、定时器实验报告

嵌入式系统应用 实验报告 姓名: 学号: 学院: 专业: 班级: 指导教师:

实验1、流水灯实验 1.1实验要求 编程控制实验板上LED灯轮流点亮、熄灭,中间间隔一定时间。1.2原理分析 实验主要考察对STM32F10X系列单片机GPIO的输出操作。 参阅数据手册可知,通过软件编程,GPIO可以配置成以下几种模式:◇输入浮空 ◇输入上拉 ◇输入下拉 ◇模拟输入 ◇开漏输出 ◇推挽式输出 ◇推挽式复用功能 ◇开漏式复用功能 根据实验要求,应该首先将GPIO配置为推挽输出模式。

由原理图可知,单片机GPIO输出信号经过74HC244缓冲器,连接LED灯。由于74HC244的OE1和OE2都接地,为相同电平,故A端电平与Y端电平相同且LED灯共阳,所以,如果要点亮LED,GPIO应输出低电平。反之,LED灯熄灭。 1.3程序分析 软件方面,在程序启动时,调用SystemInit()函数(见附录1),对系统时钟等关键部分进行初始化,然后再对GPIO进行配置。 GPIO配置函数为SZ_STM32_LEDInit()(见附录2),函数中首先使能GPIO 时钟: RCC_APB2PeriphClockCmd(GPIO_CLK[Led], ENABLE); 然后配置GPIO输入输出模式: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 再配置GPIO端口翻转速度: GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; 最后将配置好的参数写入寄存器,初始化完成: GPIO_Init(GPIO_PORT[Led], &GPIO_InitStructure)。

嵌入式课程设计流水灯

流水灯编程 实验目的: 掌握GPIO端口的基本控制方法 掌握硬件电路仿真方法。 实验内容: 1、复习流水灯的工作原理。 2、按教材上 3、4节的内容或实验指导书2、1节的内容创建好项目,生成可执行文件。 3、阅读LED示例程序代码。 4、软件模拟,无误后下载到实验板上运行,观察效果。 5、通过硬件仿真的方式调试程序。分析LED_Init、main这2个函数中每一行代码的作用。 6、修改程序使得灯改变一次状态的时间间隔为0、02、0、01、0、1、0、3、0、5、1、2秒。 7、修改程序使得灯闪动的方向反向。 8、修改循环亮灯的程序,使每次亮灯的起始位置依次下移。 选做进阶版 1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个灯 全亮代表黄灯。模拟交通信号灯运行(绿灯10秒,红灯20秒, 绿到红过渡时黄灯3秒) 2、将自己的学号编码用LED灯效果展示出来。 实验原理:

电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。 A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。 实验过程及结果描述: 按实验内容的步骤一步一步的来。重点描述实验内容的6、7、8还有选修进阶的1、2、 要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为0、02秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。通过参数的改变可以瞧到灯状态改变的时延相应的改变了。 改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则就是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。 实验结果:灯的移动方向改变。每次循环完一次之后通过改变赋给初

单片机流水灯实验报告

单片机流水灯实验报告 电子信息工程学系实验报告 课程名称:单片机原理及接口 实验项目名称:实验2 流水灯实验时间: xx-10-21 班级:电信092 姓名:蔡松亮学号: 910706247 一、实验目的: 进一步熟悉keil仿真软件、proteus仿真软件的使用。了解并熟悉单片机I/O口和LED灯的电路结构,学会构建简单的流水灯电路。掌握C51中单片机I/O口的编程方法和使用I/O口进行输入输出的注意事项。 二、实验原理: MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输

出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。 以P1口为例,内部结构如下图所示: 图 P1口的位结构 作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。 I/O口的注意事项,如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O接口,单片机的四个口均可作I/O口使用;四个口在作输入口使用时,均应先对其写“1”,以避免误读;P0口作I/O 口使 用时应外接10K的上拉电阻,其它口则可不必;P2可某几根线作地址使用时,剩下的线不能作I/O口线使用;P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。

嵌入式课程设计流水灯

嵌入式课程设计流水灯-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

流水灯编程 实验目的: 掌握GPIO端口的基本控制方法 掌握硬件电路仿真方法。 实验内容: 1.复习流水灯的工作原理。 2.按教材上节的内容或实验指导书节的内容创建好项目,生成可执行文件。 3.阅读LED示例程序代码。 4.软件模拟,无误后下载到实验板上运行,观察效果。 5.通过硬件仿真的方式调试程序。分析LED_Init、main这2个函数中每一行代码的作用。 6.修改程序使得灯改变一次状态的时间间隔为、、、、、1、2秒。 7.修改程序使得灯闪动的方向反向。 8.修改循环亮灯的程序,使每次亮灯的起始位置依次下移。 选做进阶版 1.用左边4个灯闪烁代表绿灯,右边4个灯闪烁代表红灯,8个 灯全亮代表黄灯。模拟交通信号灯运行(绿灯10秒,红灯20秒,绿到红过渡时黄灯3秒) 2.将自己的学号编码用LED灯效果展示出来。 实验原理:

电路中有L0,L1,L2,L3,L4,L5,L6,L7共八个发光二极管,当引脚LED_SEL输入为1,对于A、B、C、D、E、F、G、H引脚,只要输入为1,则点亮相连接的发光二极管。 A~H引脚连接STM32F108VB芯片的PE8~PE15,程序初始化时,对其进行初始设置。引脚LED_SEL为1时,发光二极管才工作,否则右边的数码管工作。注意,LED_SEL连接于PB3,该引脚具有复用功能,在默认状态下,该引脚的IO不可用,需对AFIO_MAPR寄存器进行设置,设置其为IO可用。 实验过程及结果描述: 按实验内容的步骤一步一步的来。重点描述实验内容的6、7、8还有选修进阶的1、2. 要实现改变灯状态的时间间隔,只需改变delay_ms这函数的里面的参数即可,例如时间间隔改为秒就将参数改为20,1秒就将参数改为1000,(delay_ms()函数里面参数的单位为ms)其它以此类推。通过参数的改变可以看到灯状态改变的时延相应的改变了。 改变灯的闪动方向则将light左移或者右移位数的值赋给light,例如循环一次左移一位,则light=light<<1,右移则是light=light>>1;这里又涉及到当左移(右移)到最左(右)一位时,再次亮灯时的起始位置设置的问题,这里就可以设置当左移(右移)到最左(最右),设置一个判断语句当左移(右移)到左(右)端点时,将初始值赋给题目要求的位置即可。

嵌入式流水灯c语言代码

流水灯实验 1.实验内容 使用GPIO口控制8个LED流水灯显示。 2.实验步骤 ①启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程LedDisp_C。 ②在user组里编写主程序代码main.c。 ③选用DebugInRam生成目标,然后编译链接工程。 ④将EasyARM教学实验开发平台上的P1.[18:25]管脚对应与LED[1:8]跳线短接。 ⑤选择Project->Debug,启动AXD进行JTAG仿真调试。 3.实验参考程序 程序清单错误!文档中没有指定样式的文字。-1 GPIO输出控制实验2的参考程序 #include "config.h" /* LED8~LED1 8个LED分别由P1.25~P1.18控制*/ const uint32 LEDS8=(0XFF<<18); //p1[25:18]控制LED8~LED1低电平点亮 /******************************************************************** 函数DelayNS() 进行长软件延时 *********************************************************************/ void DelayNS(uint32 dly) { uint32 i; for(;dly>0;dly--) for(i=0;i<50000;i++); } const uint32 LED_TBL[]={ 0X00,0XFF, //全部熄灭后,点亮 0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80, //逐次逐个点亮 0X01,0X03,0X07,0X0F,0X1F,0X3F,0X7F,0XFF, //逐次逐个叠加 0XFF,0X7F,0X3F,0X1F,0X0F,0X07,0X03,0X01, //逐次逐个递减 0X81,0X42,0X24,0X18,0X18,0X24,0X42,0X81, //两个靠拢后分开 0X81,0XC3,0XE7,0XFF,0XFF,0XE7,0XC3,0X81 //两边叠加后递减 }; int main (void) { uint8 i; PINSEL2=PINSEL2&(~0X08); //p1[25:16]链接GPIO IO1DIR=LEDS8; //设置为LED输出口 while(1) { for(i=0;i<42;i++) { IO1SET=~((LED_TBL[i])<<18); DelayNS(20);

嵌入式流水灯实验

实验三GPIO输出控制实验 一、实验目的 熟悉LPC2000系列ARM7微控制器的GPIO输入控制。 二、实验设备 ●硬件:PC机一台 LPC2131教学实验开发平台一套 ●软件:Windows 98/XP/2000系统,ADS1.2集成开发环境。 三、实验内容 1. P0.7管脚控制EasyARM教学实验开发平台上的蜂鸣器报警。 2. GPIO 输出实验-流水灯实验 实验预习要求: LPC2000 GPIO管脚的设置和控制。 四、实验原理 1.GPIO 输出实验,蜂鸣器控制 在EasyARM2131 开发板上,接有一个蜂鸣器,由P0.7 控制,通过跳线JP11 选择连接。蜂鸣器控制电路如所示。 图3-1 蜂鸣器控制电路 如果跳线JP11 选择蜂鸣器,当P0.7 输出低电平时,蜂鸣器鸣叫,当P0.7 输出高电平则停止鸣叫。程序设置PINSEL0 使P0.7 连接GPIO,并通过IO0DIR将其设置为输出状态,然后通过IO0CLR和IO0SET清零和置位P0.7 口,控制蜂鸣器,流程图见图3-2。

图3-2 蜂鸣器控制实验流程图 2.GPIO 输出实验-流水灯实验 单路LED 控制 EasyARM2131 开发板上有8 个独立的LED,分别由8 个GPIO口控制,现在使用其中一路进行 实验,使用的电路如图3-3所示。 图3-3 单路LED 电路图 当跳线JP12 连接LED1 时,P1.18 采用灌电流方式驱动LED1,当P1.18 输出低电平时,LED1 点亮,当P1.18 输出高电平时,LED1 熄灭。实验程序首先设置管脚连接GPIO,接着设置P1.18 口为输出模式,然后通过IO1CLR和IO1SET控制P1.18,驱动LED1 的亮灭。 GPIO 输出实验-流水灯实验 EasyARM2131 开发板上的8 路LED(LED8~LED1)分别可选择P1[25:18]进行控制,电路如图3-4 所示。

嵌入式花样流水灯的设计

设计工作量要求: 1.完成硬件电路设计; 2.完成软件设计; 3.完成系统仿真; 4.完成实物制作;(作2 5.编写设计说明书。 摘要 随着社会的发展,嵌入式在未来的应用会越来越广泛。随着物联网的时代到来,电器将会与互联网,移动电话成为一体。本次设计以基与嵌入式的简单的流水灯的设计。通过这次的课程设计,使我们基本了解了嵌入式的方法以及培养我们对嵌入式编程的兴趣,与此同时,我们还可以回顾一下C 的编程和汇编编程的基础,为将来在嵌入式的学习和工作中做好准备! 关键字 流水灯,嵌入式,C 编程; 1.2 S3C6410及实验箱介绍

2 系统总体设计 2.1开发环境 1、建立vmware虚拟机 2、使用vmware安装ubuntu 3、安装vmware-tools 4、windows和Ubuntu之间共享文件夹的设置 在虚拟机中,我们可以在/mnt/hgfs/6410目录下访问到我们共享文件夹的内容。如图1所示。 图1 5、安装交叉编译工具 可以通过键入arm-linux-gcc --version)查看一下arm-linux-gcc是否可用。如图2所示。 图2 6、配置网络和tftp 要使网络进行通信和文件传输必须使宿主机和目的主机是相同的网段。这里设置宿主机主机的IP 地址:192.168.1.13 ;目的主机的IP地址:192.168.1.11 ;检查网络是否通,进入终端使用ping命令启动终端窗口。如图3所示。 手动设置PC主机、Linux虚拟机以及实验箱上的Ip地址在同一网段,使它们之间能够相互ping通。 1、设置主机PC的IP。

WIN+r键,进入运行,输入cmd,进入终端查看主机Ip地址,输入ipconfig,如图:

左右来回循环的流水灯实验报告

左右来回循环的流水灯实验报告

青 岛 科 技 大 学 微机原理与接口技术综合课程设计(报告) 题 目 __________________________________ 指导教师__________________________ 学生姓名__________________________ 学生学号__________________________ _______________________________院(部)____________________________专业________________班 ______年 ___月 ___日 直流电机控制综合实验 周艳平 宋雪英 0908610211 信息科学技术学院 计算机科学与技术0961 2012 12 27

摘要 0 1、单片机概述 0 2、仿真软件介绍 (1) 3、需求分析 (2) 一、课程设计目的 (3) 二、课程设计要求 (3) 三、实验内容 (3) 1、设计任务与要求 (3) 2、系统分析 (4) 1).硬件电路设计(画出原理图、接线图) (5) 2)软件框图 (8) 3、用keil 建项目流程 (10) 4、程序清单 (11) 4、系统调试 (14) 四、设计总结(结论) (15) 1

摘要 近年来,随着电子技术和微型计算机的发展,单片机的档次不断提高,起应用领域也在不断的扩大,已在工业控制、尖端科学、智能仪器仪表、日用家电、汽车电子系统、办公自动化设备、个人信息终端及通信产品中得到广泛的应用、成为现代电子系统中最重要的智能化的核心部件。而AT89C51就是其中一种,它是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMO8位微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。本课程设计介绍一种LED小灯控制系统的设计方法,以单片机作为主控核心,与按键、排阻、电阻、电容等较少的辅助硬件电路相结合,利用软件实现对LED灯进行控制。能够通过按键控制8个LED小灯从左到右依次点亮。关键字:单片机、LED流水灯 1、单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微 型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有

嵌入式系统与单片机 流水灯 实验报告

中南大学 嵌入式系统与单片机 实验报告 学生姓名 学号 专业班级 指导教师 学院信息科学与工程学院完成时间2012年5月

[实验名称] 单片机流水灯。 [实验目的] 进一步熟悉keil仿真软件、伟福仿真器和实验板的使用。了解并熟悉实验板上单片机I/O口和LED灯的电路结构,掌握C51中单片机I/O口的编程方法,掌握顺序控制程序的简单编程。 [实验原理] MCS-51系列单片机有四组8位并行I/O口,记作P0、P1、P2和P3。每组I/O口内部都有8位数据输入缓冲器、8位数据输出锁存器及数据输出驱动等电路。四组并行I/O端口即可以按字节操作,又可以按位操作。当系统没有扩展外部器件时,I/O端口用作双向输入输出口;当系统作外部扩展时,使用P0、P2口作系统地址和数据总线、P3口有第二功能,与MCS-51的内部功能器件配合使用。 图P1口的位结构 本实验用到的P1口内部结构如图3-1所示。作输出时:输出0时,将0输出到内部总线上,在写锁存器信号控制下写入锁存器,锁存器的反向输出端输出1,下面的场效应管导通,输出引脚成低电平。输出1时,下面的场效应管截止,上面的上拉电阻使输出为1。作输入时:P1端口引脚信号通过一个输入三态缓冲器接入内部总线,再读引脚信号控制下,引脚电平出现在内部总线上。为了能读到真实的引脚信号,下面的场效应管必须截止,即锁存器的内容必须是1。为了能正确读取引脚信号,锁存器必须先写1。通过C51程序的编写,可以使I/O口的每根引脚在不同的时间输出不同的0、1信号,从而控制外部的设备。 [实验步骤] 1.keil的使用: 新建项目--选择单片机型号--建C语言程序--添加到项目--设置项目--编译加载--选择仿真板

流水灯实验报告

实验二:流水灯 一.实验目的: 通过这个实验进一步了解,熟悉和掌握CPLD/FPGA开发软件的使用方法及V erilog HDL的编程方法;学习简单的时序电路的设计和硬件测试。 二.实验原理和内容: 原理:在LED1~LED8引脚上周期性地输出流水数据,如原来输出的数据是 11111100则表示点亮LED1和LED2。流水一次后,输出数据应该为 11111000,而此时则应点亮LED1~LED3。 内容:建立可控制LED流水灯的简单硬件电路,要求在实验箱上实现LED4~LED1,LED5~LED8的花样流水的显示。 三.实验步骤: 1.启动Quartus II建立一个空白工程,然后命名为led_water.qpf。 2.新建V erilog HDL源程序文件led_water.v,输入程序代码并保存,然后进行综合 编译。若再编译过程中发现错误,则找出并更正错误,直到编译成功为止。 3.选择目标器件并设置引脚,器件选用Altera公司的Cyclone系列的EP1C6Q240C8 芯片。将led[7]~led[0]和clk的引脚设置好。 4.将led_water.v设置为顶层文件。对该工程进行全程编译处理,若在编译过程中发 现错误,找到错误改正,直到编译成功。 5.最后将程序下载到FPGA器件中,在实验箱上观察led灯的变化。 四.实验数据和结果: module led_water(clk,led); input clk; output[7:0] led; reg[7:0] led; reg[31:0] count; reg clk_out; always @(posedge clk) begin if(count==32'd2*******) begin count<=0;clk_out<=~clk_out;end else count<=count+1;

嵌入式实验报告(电子表流水灯设计)

山西大学 计算机组装与维护论文 题目电子表设计 学院计算机与信息技术学院 专业软件工程 指导教师李月香 学生姓名曹艳艳 学号 2008242001 日期 2010-12-10

电子表设计 内容提要:LCD 电视是 Liquid Crystal Display 的简称,是液晶显示屏的全称:它包括了TFT,UFB,TFD,STN等类型的液晶显示屏。 LCD 的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状水晶分子改变方向,将光线折射出来产生画面。 1888年奥地利植物学家发现了一种白浊有粘性的液体,后来,德国物理学家发现了这种白浊物质具有多种弯曲性质,认为这种物质是流动性结晶的一种,由此而取名为Liquid Crystal即液晶LCD显示器是智能仪器仪表中最常用的显示器件。近年来一些单片机内部也集成了LCD控制级驱动电路,更方便了单片机在嵌入式系统中的应用,特别是微功耗智能化仪器仪表上的应用。 关键词:LCD 工作原理应用发展 参考文献: 1.《嵌入式系统应用基础》。 2. 百度百科。 一、实验目的 1.熟练掌握单片机控制系统硬件电路的设计、测试;单片机监控程序的编写、调试及运行。 2.学习使用单片机设计出简单的应用系统。 二、实验设备 1.PC计算机; 2.NEC全系列微控制器(单片机)开发工具EM/EZ-1系统; 3.实验系统。 三、实验内容及要求 1.设计方案 本次使用主要使用了LCD,做了一个电子表。 主函数显示电子表。 P3.0按键中断用来测温度并在LCD上显示。 P4.0按键中断用来进入更改时间的中断。 P4.1按键中断用来进入设置闹钟的中断。 P4.2用来在进入更改时间中断和设置闹钟中断时进行小时的设置。 P4.3用来在进入更改时间中断和设置闹钟中断时进行分钟的十位设置。

嵌入式实验报告

《嵌入式系统导论》实验报告 学院: 学号: 姓名: 上海工程技术大学 电子电气工程学院

实验一GPIO(按键和LED)实验 一、实验要求 1 、掌握基于STM32F103微控制器的嵌入式系统、仿真器和开发用PC机之间的连接方法,能够搭建基于STM32F103微控制器的嵌入式系统交叉开发环境。 2 、熟悉常用的嵌入式开发工具KEIL MDK或IAR EWARM的操作环境和基本功能(包括编辑、编译、链接、调试和下载等),学会创建、配置和管理STM32工程,掌握嵌入式程序的基本调试方法,学会使用逻辑分析仪窗口和外设窗口等信息窗口调试嵌入式程序。 3 、理解LED和按键的构件原理,学会设计它们与微控制器间的接口电路 4 、掌握STM32F103微控制器GPIO的工作原理,熟悉STM32的GPIO库函数 5 、学会使用STM32的GPIO库函数在KEIL MDK或IAR EWARM下开发基于LED和按键的简单嵌入式应用程序 二、实验环境 1 、硬件: ALIENTEK STM32F103嵌入式开发板 2 、软件: KEIL MDK或IAR EW ARM 三、实验内容 1 、流水灯实验一: 在KEIL MDK或IAR EW ARM 中建立STM32工程,并使用GPIO库函数和延时循环设计基于无限循环架构的嵌入式应用程序,使开发板上的红色LED以一定周期闪烁。 采用软件仿真的方式调试程序,通过“Logic Analyzer”,观察程序模拟运行时连接红色LED的引脚PA8上的输出波形。 采用硬件下载的方式调试程序,观察程序下载硬件运行时红色LED的闪烁情况。 2 、按键控制LED实验: 在KEIL MDK或IAR EW ARM 中建立STM32工程,并使用GPIO库函数设计基于无限循环架构的嵌入式应用程序,实现以下功能:当按键KEY0按下时,目标板上红色LED 点亮;当按键KEY0释放时,目标板上红色LED熄灭。 采用软件仿真的方式调试程序,通过“Logic Analyzer”和“Peripherals→GPIOC”,观察程序模拟运行时连接红色LED的引脚PA8和连接按键KEY0的PC5上的输出波形。 采用硬件下载的方式调试程序,观察程序下载硬件运行时按键KEY0按下和释放时红色LED的点亮和熄灭情况。 四、硬件设计 1 、发光二极管(红色LED)、按键(KEY0)与嵌入式微控制器(STM32F103)的接口电路

STM32实验-GPIO输出-流水灯实验报告

3. 实验环境 WindouwslO Keil uVision5 课程实验报告 学院: ___________________ 专业: ______________ 2018年10月18日

4. 实验方法和步骤(含设计) 上。 (1 )实验硬件连接图 四个led灯如图连接到GPIO的6~9引脚(2)软件分析 使用到的GPIO端口需配置为输出模式,推挽(PP)模式输出,I0 口速度为50MHz (3 )实验步骤 ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。 ②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。 ③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。 (4)原函数 1 itinclude "led.h" 2 B/* 3 ( 1 )紺始牝GF IOC 的口 4 (2)定义延时蓟数 s — 6 void LEDInit(void) 7 0( 8 GPIOInitTypeDef GPIOInitStructurp; 9 RCC_APB2PeriphC 1 ockCmd(RCC_APB2P e riph_GPIOC, EWWLEJi 使隘P匚正时禅IS GPI0_ln 1 tStrut t urt.GFI0_Pin - GPI0_Pin_&\GPI0_Pin_7^GPI0_Pin_fl[GP 10_Pin_9; "PC飞濟口配匡 11 GPIOIni 稚冃辎出 12 GP Z0 I nitstrueture. GPIC^Speed - GPIO_Speed_56*Xz; //IO □谨复为50rKz

嵌入式系统实验一:流水灯以及并口编程

嵌入式系统 课程实验报告 题目:并口输出、输入应用及编程实验学生姓名 学生学号 专业班级 完成日期

一、实验题目 并口输出、输入应用及编程实验。 二、实验目的 ●回顾与掌握Keil与“STC-B学习板”使用; ●学习和了解STC单片机并口输入输出(按键、数码管)原理和应用; ●理解动态扫描、按键消抖等原理,并尝试设计一些较复杂逻辑关系的程 序,了解嵌入式系统软件特点和一般结构 三、实验内容 数码管上显示“888--888”共8位数码,其中左边3位显示按键K1按动次数,右边3位显示按键K2按动次数。 四、原理 ●数码管显示原理 1、“STC-B学习板”中的数码管是八段数码管,即比普通的数码管 多右下角一个点,每一段都可以由一个比特位控制,由于学习板上的数 码管内部发光二极管的共连接端分为共阴极接法,故当某一位位低电平 时可以点亮对应的段,也即是段选。 2、由于学习板中有8个数码管,且八个数码管共用一组8位的控制 引脚,所以当要“同时”点亮多个不同的数码管时,需要控制被显示的 数码管,也即是位选,这个由P1端口的低3位决定,即位选。 ●按键检测及消抖原理: 1、学习板上有三个用于输入的按键(Key1~Key3),所有键在没有 被按下时,输入为1(高电平),而按下的状态为0(低电平),通过检测, 对应的键的状态可以判断是否被按下。 2、由于我们的按键所用的开关是机械弹性开关,当机械触点断开、 闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就 稳定的接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬 间伴随了一连串的抖动,即对应的端口的电平会在0-1间反复跳动再达 到一个平衡的状态,若直接对电平进行判断则会产生计数上的误差,故 需要进行消抖。 3、消抖的原理比较简单,总的来说就是跳过不稳定阶段或者说判断 当前状态是否已经稳定,下面将会对两种方法进行比较,对优缺点进行 分析。

嵌入式实验1 流水灯实验

河南机电高等专科学校《嵌入式系统开发》课程实验报告 系部:电子通信工程系 班级:电信#### 姓名: ###### 学号: #########

实验一搭建实验环境 一.实验简介 搭建嵌入式系统开发环境,建立第一个工程,流水灯实验 二.实验目的 掌握STM32开发环境,掌握从无到有的构建工程。 三.实验内容 熟悉MDK KEIL开发环境,构建基于固件库的工程,编写代码实现流水灯工程。通过ISP下载代码到实验板,查看运行结果。下载代码到目标板,查看运行结果。 四.实验设备 硬件部分:PC计算机(宿主机)、STM32实验板。 软件部分:PC机WINDOWS系统、MDK KEIL软件、ISP软件。 五.实验步骤 1.熟悉MDK KEIL开发环境 2.熟悉串口编程软件ISP 3.查看固件库结构和文件 4.建立工程目录,复制库文件 5.建立和配置工程 6.编写代码 7.编译代码 8.使用ISP下载到实验板 9.测试运行结果 10.记录实验过程,撰写实验报告 六.实验结果及测试 程序代码主要有两部分,第一部分是GPIO端口的配置,打开端口时钟,配置为推挽输出模式,并使能端口。代码如下:

void LED_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOB, GPIO_Pin_0); GPIO_SetBits(GPIOC, GPIO_Pin_4|GPIO_Pin_3); } 第二部分是主函数,主要实现LED灯的亮灭的功能。要在主函数中调用GPIO 端口的初始化 int main(void) { LED_GPIO_Config(); while (1) { LED1( ON ); Delay(0x0FFFFF); LED1( OFF ); LED2( ON ); Delay(0x0FFFFF); LED2( OFF ); LED3( ON ); Delay(0x0FFFFF); LED3( OFF ); } } 七.实验总结 这次实验让我们受益匪浅,学会了利用软件编程,完成教学任务,学得了知识,而且提高了实践能力,动手能力。使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我们受益匪浅。

STM32实验-GPIO输出-流水灯实验报告

课程实验报告 学院:专业: 2018年10月18日姓名学号 班级指导老师【 课程名称嵌入式系统原理与应用实验成 绩 实验名称GPIO输出-流水灯 1.实验目的 ) 通过一个经典的跑马灯程序,了解 STM32F1的IO口作为输出使用的方法。通过代码控制开发板上的4个 LED灯交替闪烁,实现类似跑马灯的效果。2.实验内容 工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。 3.实验环境 Windouws10 Keil uVision54.实验方法和步骤(含设计) (1)实验硬件连接图 四个led灯如图连接到GPIO的6~9引脚 上。 (2)软件分析 使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口速度为 50MHz。 { (3)实验步骤 ①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。 ②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。 ③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。(4)原函数

5.程序及测试结果6.实验分析与体会 、 如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); =GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9); 改为 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); =GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4); ; 实验日期: 2018 年 10 月 18 日成绩评定 教师签名: 年月日

单片机流水灯实验报告

单片机流水灯实验报告 姓名: 学号: 班级: 一、项目背景 当今时代的智能控制电子技术,给人们的生活带来了方便和舒适,而每到晚上五颜六色的霓虹灯则把我们的城市点缀得格外迷人,为人们生活增添了不少色彩。制作流水灯的方法有很多种,有传统的分立元件,由数字逻辑电路构成的控制系统和单片机智能控制系统等。本设计为一种简单实用的单片机花样流水灯设计与制作方案。 二、项目整体方案设计 根据时钟信号的脉冲输入,我们以改变每个LED点亮状态的保持的时间来改变LED的变换间隔时间,根据LED的循环点亮和时间间隔的改变设计成为一个直观的LED花样流水灯自动循环系统,由此思路我们就可以很容易的着手流水灯控制程序的设计。 三、硬件设计

四、软件设计 include #define uint unsigned int #define uchar unsigned char const tab[]={Oxfe,Oxfd,Oxfb,Oxef,Oxdf,Oxbf,Ox7f,Oxbf, Oxdf,Oxef,Oxf7,Oxfb,Oxfd,Oxfe,Oxff,Oxaa,0x55,0xaa,0x55,0xaa ,Ox5 5, Oxff,Oxf0,OxOf,Oxf0,OxOf,Oxff,Ox33,Oxcc,0x33,Oxcc,Ox33,Oxcc ,Oxff} void Delay1ms(unsigned int count) unsigned int ij; for(i=O;i

for(j=O;j120;j++); main (void) uchar i; while(1) for(i=O;i<35;i++) P1=tab[i]; Delay1ms(500); } 五、实验结果 六、项目总结 通过这次实验设计,锻炼我们综合运用知识,提出问题,分析问题,及解决问题的能力。我感慨颇多,在着手设计的这段日子里,我又学到了很多东西。特别是理论联系实际。

按键、led流水灯实验

实验报告 一.实验目的: 掌握ARM7嵌入式系统实验箱的使用方法;掌握LPC2148的GPIO端口使用方法;了解74HC595的控制使用方法。 二.实验原理

1.GPIO接口的用法 LPC2114/2124的P0口和P1口由两组(每组4个)寄存器控制,如表6-10所列。对于LPC2210/2212/2214,P2口的寄存器起始地址0xE002 8020,P3口的寄存器起始地址0xE002 8030,各寄存器的功能与P0和P1 的寄存器是一致的。 ①GPIO引脚值寄存器(IOnPIN, n=0、1、2、3) 读取该寄存器可以了解到GPIO引脚当前的电平状态。 写该寄存器会将值保存到输出寄存器,可用于I/O测试。该特性在应用中几乎毫无用处,原因是不可能对该寄存器中单个字节执行写操作。 ②GPIO方向寄存器(IOnDIR, n=0、1、2、3) 当引脚配置为GPIO模式时,可使用该寄存器控制引脚的方向。比如某引脚用作输出功能,IODIR寄存器的相应位必须设置为1。 ③GPIO输出置位寄存器(IOnSET, n=0、1、2、3) 当引脚配置为GPIO输出模式时,可使用该寄存器控制引脚输出高电平。写入1使对应引脚输出高电平;写入0无效。如果一个引脚被配置为输入或第二功能,写IOSET无效。读IOSET寄存器返回GPIO输出寄存器的值。该值由前一次对IOSET和IOCLR(或前面提到的IOPIN)的写操作决定。该值不反映任何外部环境对引脚的影响。 ④GPIO输出清零寄存器(IOnCLR, n=0、1、2、3) 当引脚配置位GPIO输出模式时,可使用该寄存器从引脚输出低电平。写入1使对应引脚输出低电平,并清零IOSET寄存器中相对应的位;写入0无效。如果一个引脚被配置为输入或第二功能,写IOCLR无效。 2.74HC595的用法 74HC595是8位串行输入,输出或者并行输出移位寄存器,具有高阻关断状态三态。 特点:①8位串行输入② 8位串行或并行输出③存储状态寄存器,三种状态④输出寄存器可以直接清除⑤100MHz的移位频率⑥输出能力具备并行输出,总线驱动;串行输出;标准中等规模集成电路 三.实验内容 学习使用ARM7嵌入式系统实验箱点亮LED灯,自已编程实现流水灯的闪烁;学习使用按键输入对单个LED的电平控制,自行编程实现按键对单个LED的边沿控制,自行编程实现单个按键对LED流水灯的速度控制。 四.实验步骤 1.连接好实验箱,将按键与所需端口相连 2.打开IAR软件新建workspace命名为LSLED,新建.C文件命名为LSLED.C 3.设置options,完成后右键添加LSLED.C 4.写上实验程序,点击make查看有无错误 5.确认无误后,点击Download and Debug将实验程序烧到实验箱上 6.点击go运行,出现所需结果 五.实验程序 #include #define uint8 unsigned char #define uint16 unsigned int #define uint32 unsigned long int #define H_CS 0x01<<20 #define H_MOSI 0x01<<19 #define H_CLK 0x01<<17 #define KEY1 0x01<<13 #define KEY2 0x01<<14 const uint8 led[7]={0x10,0x20,0x40,0x80,0x40,0x20,0x10};

相关文档
相关文档 最新文档