嵌入式实验报告,各实验答案

合集下载

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)

嵌入式应用实验报告,实验四LCD显示实验信科10级cumt(共5篇)第一篇:嵌入式应用实验报告,实验四 LCD显示实验信科10级cumt 实验四 LCD显示实验一、LCD显示原理LCD显示器是通过给不同的液晶单元供电,控制其光线的通过与否,从而达到显示的目的。

因此,LCD的驱动控制归于对每个液晶单元通断电的控制,每个液晶单元都对应着一个电极,对其通电,便可使用光线通过(也有刚好相反的,即不通电时光线通过,通电时光线不通过)。

光源的提供方式有两种:透射式和反射式。

笔记本电脑的LCD显示屏即为透射式,屏后面有一个光源,因此外界环境可以不需要光源。

而一般微控制器上使用的LCD为反射式,需要外界提供光源,靠反射光来工作。

LCD的驱动控制–总线驱动方式: 一般带有驱动模块的LCD显示屏使用总线驱动方式,这种LCD可以方便地与各种低档单片机进行接口,如8051系列单片机。

由于LCD已经带有驱动硬件电路,因此模块给出的是总线接口,便于与单片机的总线进行接口。

驱动模块具有八位数据总线,外加一些电源接口和控制信号。

而且还自带显示缓存,只需要将要显示的内容送到显示缓存中就可以实现内容的显示。

由于只有八条数据线,因此常常通过引脚信号来实现地址与数据线复用,以达到把相应数据送到相应显示缓存的目的。

扫描器控制方式LCD显示屏没有驱动电路,需要与驱动电路配合使用。

这种LCD体积小,但需要另外的驱动芯片。

通常可以使用带有LCD驱动能力的高档MCU驱动,如ARM系列的S3C44B0。

S3C44B0中具有内置的LCD控制器,它具有将显示缓存中的图象数据传输到外部LCD驱动电路的逻辑功能。

S3C44B0中内置的LCD 控制器可支持灰度LCD和彩色LCD。

可以支持单色、4 级灰度和16 级灰度模式的灰度LCD以及256级彩色。

对于不同尺寸的LCD,具有不同数量的垂直和水平象素、数据接口的数据宽度、接口时间及刷新率,而LCD控制器可以进行编程控制相应的寄存器值,以适应不同的LCD显示板。

嵌入式实验报告,各实验答案

嵌入式实验报告,各实验答案

boot实验报告本次实验由于时间限制,共完成了三种不同的变化方式,但是课后又设计了一些其他的变化方式。

1、从左到右,再从右到左亮灯,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))#define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 1; i < =8; i++){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i > 1; i--){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}2、先从左到中,后从右到中,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 0; i <4; i++){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i >= 4; i--){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}3、从左到右,从右到左,隔一个跳#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0xff;for (i = 1; i <8; i=i+2){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}for (i = 7; i > 1; i=i-2){LED_CS4 = (LED_VALUE << i) -1;Delay(200);}}}课后补做:1、从左到右灯灭#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0x00;for (i = 8; i > =1; i--){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}}}2、从左到右,再从右到左灯灭,不断循环#define LED_CS4 (*((volatile unsigned char *)(0x10500000))) #define LED_VALUE (0xff)int i;void Delay(unsigned int x){unsigned int i, j, k;for (i =0; i <=x; i++)for (j = 0; j <0xff; j++)for (k = 0; k <0xff; k++);}void dummyOs(void){while (1){LED_CS4 = 0x00;for (i = 8; i >= 1; i--){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}for (i = 1; i <7; i++){LED_CS4 = (LED_VALUE >> i) +1;Delay(200);}}}实验总结:数码管显示实验报告实验目的1.在实验一引导程序的基础上进一步了解ARM体系结构和编程方法;2.掌握外设访问的方法;3.理解8段数码管的显示原理实验内容1 显示同组的两位同学的四位学号2032 2033;2 显示一组大于九的四位十六进制数字,如abcd。

嵌入式系统试验报告

嵌入式系统试验报告

嵌入式系统实验报告学院:计算机科学与工程姓名:___________学号:_______________专业:_______________指导老师:______________完成日期:______________实验一:流水灯案例、8位数码管动态扫描案例一、实验目的1.1 进一步熟悉Keil C51集成开发环境调试功能的使用;1.2 学会自己编写程序,进行编译和仿真测试;1.3 利用开发板下载hex 文件后验证功能。

二、实验原理2.1 :实验原理图030B 〜I ।卜RSI I ™Hi 」 口 UICDR Hr hJJK RR 18q U I. 海水灯电浒周LhE U_EEM^Li > > 第 X > k >n - » =白 L a £0EBS2.2:工作原理2.2.1:流水灯电路中有LO,1,L2,L3,4,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,该引脚具有复用功能,在默认状态下,该引脚的I0不可用,需对AFIO_ MAPR寄存器进行设置,设置其为10可用。

2.2.2: 8位数码管数码管中的A~G、DP段分别连接到电路图中的A~G、H线上,当某段上有一-定的电压差值时,便会点亮该段。

当£3输入为1,也就是LED_ 5£1输入为0时,根据SELO〜SEL2的值确定选中的数码管,即位选,再根据A~H引脚的高低电平,点亮对应段,即段选。

三、实验结果3.1:流水灯对于给出的流水灯案例,下载HEX文件后,在开发板上可观察到L0-L7从左至右依次点亮,间隔300ms。

嵌入式系统 实验报告

嵌入式系统 实验报告

使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131

《嵌入式系统》实验报告指导书(含答案).

《嵌入式系统》实验报告指导书(含答案).

实验一熟悉嵌入式LINUX开发环境1、实验目的熟悉UP-TECHPXA270-S的开发环境。

学会WINDOWS环境与嵌入式Linu环境共享资源的基本方法。

2、实验内容学习UP-TECHPXA270-S系统的使用、XP和虚拟机之间传送文件方法以及UP-TECHPXA270-S和虚拟机之间共享目录的建立方法。

3、预备知识了解UP-TECHPXA270-S的基本结构和配置,Linux基本知识。

4、实验设备硬件:UP-TECHPXA270-S开发板、PC机(内存500M以上)。

软件:PC机操作系统RADHAND LINUX 9+MIMICOM+RAM LINUX操作系统5、实验步骤(1)、在虚拟机下练习Linux常用命令。

(注意以下操作只能在[root@BC root]#,也就是root文件夹下运行,不然会导致系统不能启动)a. 学习命令通过“man ***”和“*** --help”得到的命令使用方法。

b.学习并掌握如下命令:ls,cd ,pwd,cat,more,less,mkdir, rmdir ,rm,mv,cp,tar,ifconfig(2)、XP与虚拟机之间传送文件(Samba服务器建立、网络设置、文件传送);(3)、了解系统资源和连线;(4)、开发板与虚拟机之间共享目录建立(设置NFS、开发板IP设置、目录挂载),挂载文件;(5)vi(vim)的使用(6)输入qt,启动桌面,按CTRL+C退出6、实验报告要求(1)、XP和虚拟机之间传送文件步骤;虚拟机共享XP文件:选择虚拟机设置,设置要共享的文件启动Linux进入/mnt/hgfs即可看到共享文件夹服务器设置——samba服务器(设置需要共享的目录)XP共享虚拟机文件:服务器设置——samba服务器(设置需要共享的目录)确保网络的PING通(即在同一局域网):1.虚拟机的192.168.1.234(RH9)2.XP的为192.168.1.1253.在XP 下点击开始-》运行(\\192.168.1.234)4.用户名bc密码123456以上实现了Linux虚拟机(RH9)和XP的文件的共享(2)、开发板与虚拟机之间建立共享目录以及文件挂载步骤;1.服务器设置——nfs服务器(设置需要共享的目录)2.设置开发板的ip地址:ifconfig eth0 192.168.1.53.在实验箱终端里输入mount -t nfs -o nolock 192.168.1.234:/up-techpxa270/exp /mnt/nfs4./mnt/nfs即为共享目录(3)、请画出虚拟机、PC机和ARM实验箱之间的硬件连接图;(4)、在Linux中怎样配置网络;系统设置->网络,在新的选项卡中(5)、实验中遇到的问题与解决过程。

嵌入式实习报告(共5篇)

嵌入式实习报告(共5篇)

嵌入式实习报告(共5篇)第一篇:嵌入式实习报告一、嵌入式系统开发与应用概述在今日,嵌入式ARM 技术已经成为了一门比较热门的学科,无论是在电子类的什么领域,你都可以看到嵌入式ARM 的影子。

如果你还停留在单片机级别的学习,那么实际上你已经落下时代脚步了,ARM 嵌入式技术正以几何的倍数高速发展,它几乎渗透到了几乎你所想到的领域。

本章节就是将你领入ARM 的学习大门,开始嵌入式开发之旅。

以嵌入式计算机为技术核心的嵌入式系统是继网络技术之后,又一个IT领域新的技术发展方向。

由于嵌入式系统具有体积小、性能强、功耗低、可靠性高以及面向行业具体应用等突出特征,目前已经广泛地应用于军事国防、消费电子、信息家电、网络通信、工业控制等各个领域。

嵌入式的广泛应用可以说是无所不在。

嵌入式微处理器技术的基础是通用计算机技术。

现在许多嵌入式处理器也是从早期的PC 机的应用发展演化过来的,如早期PC 诸如TRS-80、Apple II 和所用的Z80 和6502 处理器,至今仍为低端的嵌入式应用。

在应用中,嵌入式微处理器具有体积小、重量轻、成本低、可靠性高的优点。

嵌入式处理器目前主要有Am186/88、386EX、SC-400、Power PC、68000、MIPS、ARM 等系列。

在早期实际的嵌入式应用中,芯片选择时往往以某一种微处理器内核为核心,在芯片内部集成必要的ROM/EPROM/Flash/EEPROM、SRAM、接口总线及总线控制逻辑、定时/计数器、WatchDog、I/O、串行口、脉宽调制输出、A/D、D/A 等各种必要的功能和外设。

二、实习设备硬件:Embest EduKit-IV实验平台、ULINK2仿真器套件、PC机软件:μVision IDE for ARM集成开发环境、Windows 98/2000/NT/XP三、实习目的1.初步掌握液晶屏的使用及其电路设计方法;掌握S3C2410X处理器的LCD控制器的使用;掌握通过任务调用的方法把液晶显示函数添加到uC/OS-II中;通过实验掌握液晶显示文本及图形的方法与程序设计。

嵌入式实验报告数码管显示实验

嵌入式实验报告数码管显示实验

实验报告课程名称嵌入式系统编程实践实验仪器清华同方辰源嵌入式系统实验箱实验名称实验四:数码管显示实验系别__计算机学院_专业 _班级/学号学生姓名实验日期 2013年10月11日成绩___________________指导教师实验四:数码管显示实验一、实验问题回答(1)如何设置功能3,4中的循环速度?答:利用系统SysTick Handler中断,控制循环速度void SysTick_Handler (void){Event = 1;}(2)若是想实现类似实验(三)通过键盘动态控制循环速度,考虑一下应该如何设计?答:SysTickPeriodSet(SysCtlClockGet() / X)//设置x的大小就可以控制循环的速度。

void Reset_Counter_Speed(int x){SysTickIntDisable();SysTickDisable();SysTickPeriodSet(SysCtlClockGet() / x);// 设置x,控制计数频率,值与频率成正比SysTickEnable();SysTickIntEnable();},达到预期的效果。

二、实验目的和效果(效果即是否达到实验目的,达到的程度如何)学习、了解和掌握数码管工作原理和使用方法实验结果及检查(1)默认在在OLED屏幕上分行显示自己的学号、姓名、项目序号、时间,如“2010011001”、“zhangsan”、“work4”、“2012-11-”(2)首先在屏幕上显示四个功能选单,通过键盘A-F键选择不同功能,选择后屏幕显示相关功能提示,接受键盘输入的数字键0-9并在数码管上显示。

如:开始显示:“please choose the function:”“A: …”“B: …”“C: …”“D: …”按下“A”键后,显示”now you choose function A”(3)按下键盘后,根据不同功能在数码管上显示按键字符。

嵌入式 图形-实验报告

嵌入式 图形-实验报告

图形用户接口一、实验目的(1)了解嵌入式系统图形界面的基本编程方法(2)学习图形库的制作二、实验原理(一)Frame Buffer显示屏的整个显示区域,在系统内会有一段存储空间与之对应。

通过改变该存储空间的内容达到改变显示信息的目的。

该存储空间被称为Frame Buffer,或显存。

显示屏上的每一点都与Frame Buffer里的某一位置对应。

所以,解决显示屏的显示问题,首先要解决的是Frame Buffer的大小以及屏上的每一像素与Frame Buffer的映射关系。

影响空间大小的因素:由于Frame Buffer空间的计算大小是以屏幕的大小和显示模式决定的,所以显示模式(单色或彩色)、显示屏的性能、显示的需要均会影响Frame Buffer空间的大小。

另外显示屏还有单屏幕、双屏幕两种工作模式:单屏幕模式代表屏幕的显示范围是整个屏幕,只需一个Frame Buffer和一个通道;双屏幕模式则将整个屏幕划分为两个部分,这两个部分各自有Frame Buffer,且他们的地址无需连续,并同时具有两个各自独立的通道将Frame Buffer的数据传送到显示屏。

显示操作及映射连续性:由于Frame Buffer通常就是从内存空间分配所得,并且他是有连续的字节空间组成,屏幕的显示操作通常是从左到右逐点像素扫描,从上到下逐行扫描,直到扫描到右下角,然后再折返到左上角。

又由于Frame Buffer里的数据是按地址递增的顺序被提取,所以屏幕上相邻的两像素被映射到Frame Buffer里是连续的,并且屏幕最左上角的像素对应Frame Buffer的第一空间单元,屏幕最右下角则对应最后一个单元空间。

(二)Frame Buffer 与色彩计算机反映自然界的颜色是通过RGB(Red-Green-Blue)值来表示的。

如果要在屏幕某点显示某种颜色,则必须给出相应的RBG值。

Frame Buffer是由所有像素的RGB值或RGB值的部分位所组成,本系统使用的16位/像素的模式下,Frame Buffer里的每个单元16位,每个单元代表一个像素的RGB值,如下图D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 R R R R R G G G G G G B B B B B有了以上的分析,就可以用下面的计算公式FrameBufferSize=Width * Height * Bitperpixel/8计算Frame Buffer的大小(以字节为单位)。

嵌入式实验报告

嵌入式实验报告

实验一二进制数相加AREA BcdAdd, CODE, READONL YENTRYstart ldr r0, =0x19345678 ;程序开始ldr r1, =0x49678901 ;将两个十六进制数分别送到r0,r1bl bcda ;程序跳转到bcdastop b stop ;程序结束bcda mov r8,r0 ;将r0中的数值送到r8中mov r9,r1 ;将r1中的数值送到r9中mov r0,#0 ;将r0置为0mov r4,#0 ;将r4置为0mov r7,#8 ;r7置为8,作为循环次数loop and r2,r8,#0xf ;取r8中的最低位存放到r2中and r3,r9,#0xf ;取r9中的最低位存放到r3中add r4,r4,r2add r4,r4,r3 ;将最低位相加之后的结果存到r4cmp r4,#0xa ;将结果与10进行比较addcs r4,r4,#6 ;若结果不小于10,则将结果加6mov r8,r8,lsr #4mov r9,r9,lsr #4 ;将r8,r9中的数右移4位mov r0,r0,lsr #4 ;将r0中的数右移四位orr r0,r0,r4,lsl #28 ;将r4中的数左移28位后存入r0mov r4,r4,lsr #4 ;将r4中的数右移4位,留下进位subs r7,r7,#1 ;循环次数减一bne loop ;跳出循环mov pc,lr实验结果:先取出最低位,做加法,结果若不小于10,则将结果修改位十进制(加6),并将进位存入r4的最低位。

一次循环结束后,循环计数r7减1。

下一次循环中,将做加法的两个数的次低位相加,并与低位的进位进行运算,依次循环下去,最终相加所得的结果存在r0中。

实验二数据块的复制AREA Block, CODE, READONLYnum EQU 17 ;定义num为17ENTRYstart LDR r0, =src ;将源地址存到r0LDR r1, =dst ;将目的地址存到r1MOV r2, #num ;将17存到r2blockc MOVS r3,r2, LSR #3 ;将r2中的17除以8后存入r3 BEQ cpw ;少于8个字节程序跳转到cpwSTMFD sp!, {r4-r11} ;保存工作寄存器Octcopy LDMIA r0!, {r4-r11} ;从r0保存的源地址取出8个字节放到r4-r11中STMIA r1!, {r4-r11} ;将r4-r11中的数据设置到目的地址SUBS r3, r3, #1 ;计数r3减1BNE octcopy ;r3不为0,继续拷贝LDMFD sp!, {r4-r11} ;恢复工作寄存器cpw ANDS r2, r2, #7 ;最多拷贝7个字BEQ stop ;拷贝完,跳转到stop wordcopy LDR r3, [r0], #4 ;从不到8个字的数据块中取出1个字存入r3中STR r3, [r1], #4 ;将r3中数据设置到目的地址SUBS r2, r2, #1 ;判断剩余的字是否拷贝完成BNE wordcopy ;r2不为0,继续拷贝stop B stop ;死循环,程序停止AREA BlockData, DA TA, READWRITE ;定义源地址数据和目标地址src DCD 1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4dst DCD 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0将源数据块中的数据除以8后,将整字个数存入r3中,通过Octcopy将整字拷贝到目的地址中。

嵌入式实验报告

嵌入式实验报告

一.实验题目:实现图象的透明和使用EVC实现小人动画效果。

具体内容:编写evc程序,使得下图其背景为透明色,并实现动画效果。

在模拟器上运行后,并能在板子端执行。

二实验目的:1.实现并掌握在evc下编写运行程序。

2. 能够使程序在嵌入式系统中完整执行。

3.会使用离屏技术实现小人动画效果。

4.实现位图上某种颜色的透明显示。

三.实验设计及步骤:3.1设计原理:原图粉色+灰度白将其变成:白色+灰度白假设粉色是1010,那么与0101异或就会得白色。

而任何一种颜色和黑色1111异或都会得到它本身。

那么用粉色的反色和黑色异或:绿色+黑色绿色:来源于与粉色取反色灰度白反色为灰度黑绿色与白色与为绿色灰度黑与黑色与为黑色这样就可以使原图变成透明色了。

由函数MaskDC.BitBlt(x,y,cx,cy,&SrcDC,0,0,SRCCOPY);得到的一个黑白图像,除透明色为白色外,其他均为黑色。

如下图:再由函数TransDC.BitBlt(x,y,cx,cy,&SrcDC,0,0,SRCINVERT);将白色与原图(SrcDC)进行异或(SRCINVERT)操作。

得到的是原图的反色即绿+灰度(黑)在TransDC中是原图的反色。

再由函数TransDC.BitBlt(x,y,cx,cy,&MaskDC,0,0,SRCAND);原图的反色与黑白图进行与操作白色与绿色=绿色黑色与灰度(黑)=灰度(黑)绿色+灰度(黑)为现在TransDC的色彩,如下图:由函数TransDC.BitBlt(x,y,cx,cy,&SrcDC,0,0,SRCINVERT);原图色与TransDC中图色进行异或操作粉色+灰度(白)绿色+黑色白色+灰度(白)如图得到结果:•在上述基础上,就上述位图,将背景色设置为RGB(255,0255).此背景色也可以作为透明色来处理。

该位图由四个小人组成(如图),将这个四个小人连续播放就可以产生动画效果。

实验1-嵌入式Linux基础 答案

实验1-嵌入式Linux基础 答案
$ cd..
$ rm–rf test
(17)综合:根据各人学号or姓名,为自己新建一个工作目录,并利用pwd命令查看自己的工作目录,并记录如下:
工作目录是(请填写):
系统信息类命令:
(1)利用date命令显示系统当前时间
$ date
(2)利用free命令显示内存的使用情况
$ free
(3)利用df命令显示系统的硬盘分区及使用状况
$ cd..
$ tarzcvf test.tar.gz test
(12)将test.tar.gz改名为backup.tar.gz,并把文件backup.tar.gz移动到test目录下;显示当前目录下的文件和目录列表,确认移动成功。
$ mv test.进入test目录,显示目录中的文件列表;把文件backup.tar.gz解包
}
hello2.h
void test2(void);
makefile
CC=gcc
CFLAGS=
OBJS=hello1.o hello2.o
all: hello
hello: $(OBJS)
$(CC) $(CFLAGS) $^-o $@
hello1.o: hello1.c
$(CC) $(CFLAGS)–c $<-o $@
hello1.c
#include <stdio.h>
int main(){
printf(“Hello world!\n”);
test2();
return 1;
}
hello2.c
#include <stdio.h>
#include“hello2.h”
void test2(void){

【免费下载】嵌入式实验报告各实验答案

【免费下载】嵌入式实验报告各实验答案
for (j = 0; j <0xff; j++) for (k = 0; k <0xff; k++);
}
void dummyOs(void) {
while (1) {
LED_CS4 = 0xff;
for (i = 1; i < =8; i++) {
LED_CS4 = (LED_VALUE << i) -1; Delay(200); } for (i = 7; i > 1; i--) { LED_CS4 = (LED_VALUE << i) -1; Delay(200); } }
}
2、先从左到中,后从右到中,不断循环
#define LED_CS4 (*((volatile unsigned char *)(0x10500000)))
#define LED_VALUE (0xff)
int i;
void Delay(unsigned int x) {
unsigned int i, j, k; for (i =0; i <=x; i++)
}
3、从左到右,从右到左,隔一个跳
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

嵌入式系统实验报告

嵌入式系统实验报告

嵌入式系统实验报告学号:姓名:班级:13电子信息工程指导老师:苏州大学电子信息学院2016年12月实验一:一个灯的闪烁1、实验要求实现PF6-10端口所连接的任意一个LED灯点亮2、电路原理图图1 LED灯硬件连接图3、软件分析RCC_Configuration(); /* 配置系统时钟*/GPIO_Configuration(); /* 配置GPIO IO口初始化*/for(;;){GPIOF->ODR = 0xfcff; /* PF8=0 --> 点亮D3 */Delay(1000000);GPIOF->ODR = 0xffff; /* PF8=1 --> 熄灭D3 */Delay(1000000);4、实验现象通过对GPIOF8的操作,可以使LED3闪烁5、实验总结这是第一次使用STM32开发板,主要内容是对IO端口进行配置,点亮与IO端口相连接的LED灯,闪烁周期为2S。

通过本实验对STM32开发板的硬件原理有了初步了解。

实验二:流水灯1、实验要求实现PF6-10端口所连接的5个LED灯顺次亮灭2、电路原理图图1 流水灯硬件连接图3、软件分析int main(void){RCC_Configuration();/* 配置系统时钟*/GPIO_Configuration();/* 配置GPIO IO 口初始化*/for(;;){GPIOF->ODR = 0xffbf;/* PF6=0 --> 点亮LED1 */Delay(5000000);GPIOF->ODR = 0xff7f;/* PF7=0 --> 点亮LED2 */Delay(5000000);GPIOF->ODR = 0xfeff;/* PF8=0 --> 点亮LED3 */Delay(5000000);GPIOF->ODR = 0xfdff;/* PF9=0 --> 点亮LED4 */Delay(5000000);GPIOF->ODR = 0xfbff;/* PF10=0 --> 点亮LED5 */ }}4、实验现象LED1~LED5依次点亮,亮灭的时间间隔都为1S。

嵌入式系统开发实验报告

嵌入式系统开发实验报告
3. 使用命令行工具管理模拟器
4. 操作Android模拟器
5. 使用运行(Run)模式运行
三、实验设备:
1. PC计算机
2. JDK安装包
3. Eclipse安装包
4. Android SDK安装包
5. ADT插件
四、实验内容
初步了解android project建立过程以及如何运行模拟器,对android的运行原理进行简单了解;
实验时间:2015.10.8指导教师:时振涛
实验二:Activity生命周期程序设计
一、实验目的和要求
使学生深入了解Android组件的生命周期中各状态的变化关系。通过程序设计,掌握Activity的三种生命周期:全生命周期、可视生命周期和活动生命周期;每种生命周期中包含的不同的事件回调函数,以及它们的作用和调用顺序,深入理解Activity的生命周期过程。
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("TAG", "Main-onRestart");
}
}
2.SecondActivity.java
package com.sunwei.study;
public class SecondActivity extends AppCompatActivity {
android:theme="@style/AppTheme">
<activity
android:name="com.example.activity_demo.MainActivity"
android:label="@string/app_name">

嵌入式系统实验报告1

嵌入式系统实验报告1

LINUX操作实验报告一实验要求:1、程序设计思想要阐述清楚;2、要有流程图和源代码及注释;3、要有仿真结果及说明。

【实验一】内容与目的:编写fork/vfork的测试程序,验证二者的区别1、程序设计思想fork/vfork为进程创建操作,为实现以上目的,可以在程序中设置等待,根据打印输出信息,验证父进程与子进程在执行顺序上的差别;在父进程中设置测试使用变量,分别在子进程中对变量进行修改,并打印输出,可以观察子进程对变量的修改是否会影响父进程中变量的取值,进而可以观察父进程与子进程是否数据空间及堆、栈等。

2、流程图、源代码及注释Fork01a程序代码及注释如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示两个参数初始值printf("The original values:global=%d,var=%d\n",global,var);if((pid=fork())<0) //如果进程号小于0,显示出错{printf("for error\n");}else if(pid==0) //如果处于子进程,显示所处进程,并修改各变量{sleep(10); //(设置等待时间:S)global++;var++;printf("In child process\n");}else //如果处于父进程,显示所处进程和各变量{sleep(5);printf("In parent process\n");}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);exit(0);}运行结果:若变换等待时间如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示两个参数初始值printf("The original values:global=%d,var=%d\n",global,var);if((pid=fork())<0) //如果进程号小于0,显示出错{printf("for error\n");}else if(pid==0) //如果处于子进程,显示所处进程,并修改各变量{sleep(5); //(设置等待时间:S)global++;}else //如果处于父进程,显示所处进程和各变量{sleep(10);printf("In parent process\n");}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);exit(0);}Fork01b程序代码及注释如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示各参数值printf("The original values:global=%d,var=%d\n",global,var);if((pid=vfork())<0) //如果进程号小于0,报错{printf("vfork error\n");}else if(pid==0) //如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回{sleep(3);global++;var++;printf("In child process\n");printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("child process ended\n");} //如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回else{sleep(1);printf("In parent process\n");global++;var++;}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("parent process ended\n");exit(0);}运行结果如下:若变换等待时间如下:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<sys/types.h>int global=1; //设定参数初始值int main(void){int var=2;pid_t pid; //显示各参数值printf("The original values:global=%d,var=%d\n",global,var);if((pid=vfork())<0) //如果进程号小于0,报错{printf("vfork error\n");}else if(pid==0) //如果处于子进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回{global++;var++;printf("In child process\n");printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("child process ended\n");_exit(0);} //如果处于父进程,设定等待时间,修改各参数值,显示进程状态和参数值,返回else{sleep(3;printf("In parent process\n");global++;var++;}printf("pid=%d,global=%d,var=%d\n",getpid(),global,var);printf("parent process ended\n");exit(0);}运行结果如下:3、仿真结果及说明由fork01a和fork01b的两个等待时间情况下的打印结果可以看出,fork对于子进程与父进程执行的先后顺序没有要求,且在父进程先于子进程退出以后,程序无法正常退出,而vfork要求先执行子进程,后执行父进程。

嵌入式实验报告(答案)

嵌入式实验报告(答案)

实验报告ARM嵌入式系统原理及应用开发目录实验一 ARM汇编指令实验1 (1)实验二 ARM汇编指令实验2 (4)实验三汇编与C语言的相互调用实验 (8)实验一ARM汇编指令实验1一、实验目的1.初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器;2.通过实验掌握简单ARM汇编指令的使用方法。

二.实验设备1.硬件:PC机;2.软件:Embest IDE 2004集成开发环境。

Windows98/2000/NT/XP。

三.实验内容1.熟悉开发环境的使用,并使用LDR/STR和MOV等指令访问寄存器或存储单元。

2.使用ADD/SUB/LSL/LSR/AND/ORR等指令,完成基本数学/逻辑运算。

四.实验原理ARM处理器共有37个寄存器:31个通用寄存器,包括程序计数器(PC),这些寄存器都是32位;6个状态寄存器,这些寄存器也是32位,但只使用了其中的12位。

1.ARM通用寄存器通用寄存器(R0~R15)可分为3类,即不分组寄存器R0~R7.分组寄存器R8~R14.程序计数器R15。

2.存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。

字节0~3存放第一个字,字节4~7存放第2个字,以此类推。

ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。

3.GNU基础知识Embest IDE集成了GNU汇编器as、编译器gcc和链接器ld。

因此,编写程序要符合CNU的语法和规则。

关于as.gcc和ld的具体使用,请参照Embest IDE 所带的电子文档ProgRef.chm。

五.实验操作步骤1. 实验A(1)新建工程:先建一个文件夹如:H:\ test1。

然后运行ADS1.2集成开发环境,选择File→New 菜单项,弹出一个对话框,然后出来图1.1新建工程类型选择对话框,选择project,在“Project name”中输入工程文件名”test1”,点击确定,同时创建一个与工程名相同的工作区。

《嵌入式系统》实验报告zq

《嵌入式系统》实验报告zq

班级:试验台:第行列学号:姓名:实验一ARM 指令实验一、实验目的1、了解ADS 1.2集成开发环境的使用方法。

2. 掌握ARM数据处理指令的使用方法;3.了解ARM指令灵活的第2个操作数。

二、实验设备1. 硬件:PC机1台。

2.软件:1)Windows 98/2000/XP操作系统;2)ADS 1.2集成开发环境。

三、实验内容1. 使用MOV和MVN指令访问ARM通用寄存器;2.使用ADD、SUB、AND、ORR、CMP、TST等指令完成数据加减运算及逻辑运算。

四、实验预习要求1、仔细阅读实验附带文档“ARM指令参考资料”或其它相关资料。

2、仔细阅读实验附带文档“ADS集成开发环境及JTAG仿真器应用.pdf”或其它ADS相关资料,了解ADS工程编辑和AXD调试的内容。

(本实验使用软件仿真)五、实验步骤1、新建一个你的专用目录。

在F:\新建一个目录,作为今后你的嵌入式实验的专用目录,比如:张伟的目录名为zw。

2、建立工程。

启动ADS1.2 IDE集成开发环境,即“CodeWarrior for ARM Developer Suite”。

点击【File】菜单,选择【New…】即弹出New对话框。

使用ARM Executable Image 工程模板建立一个工程,名称为ADS,目录为F:\zw(步骤1建的目录)。

3、建立文件,添加到工程中。

选择【File】->【New…】建立一个新的文件TEST1.S,设置直接添加到项目中。

输入如程序代码,并保存,此时在工程窗口中可以看到TEST1.S文件。

4、设置文本编辑器支持中文(不是必须的步骤)选择【Edit】->【Perferences…】,在Font选项设置字体是Fixedsys,Script是CHINESE_GB2312。

5、编译连接工程。

选择【Edit】->【DebugRel Settings…】,在DebugRel Settings对话框的左边选择ARM Linker项,设置链接地址。

嵌入式实验报告

嵌入式实验报告

实验模块一说明:该模块分为3个子实验,每个实验均为设计性实验,实验设计的内容由简到繁,系统功能在前序实验基础上逐渐增加。

实验一实验目的:掌握输出设备程序控制的原理实验设备:TCP-I实验箱,文祥500台式电脑实验内容:采用8086与8255组成系统,8个发光二极管为输出,编程实现控制8个发光二极管一盏灯循环点亮。

实验步骤:1、将输出端口引脚与LED相连2、编程实现对8个LED的输出控制将实验箱中的8255片选信号连接到218H~21FH,将8255的4个寄存器地址(A、B、C端口及控制字寄存器端口)设置为218H~21BH。

将8255的端口A的8个引脚:PA0~PA7与8个LED对应相连,然后打开实验箱电源,最后编程对8个LED进行显示控制。

程序如下:程序清单:CODE SEGMENTASSUME CS:CODESTART:MOV DX,21BHMOV AL,80HOUT DX,AL;工作方式初始化MOV DX,218HMOV AL,0FEH;设置输出数据,即显示模式MOV CX,80;设置循环次数XH:OUT DX,ALROL AL,1CALL DELAY;调用延迟程序LOOP XHMOV AH,4CHINT 21H;返回dosDELAY PROC;延迟子程序PUSH CXMOV BX,2000A0:MOV CX,3000A1:LOOP A1DEC BXJNZ A0POP CXRETDELAY ENDPCODE ENDSEND START实验总结:主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。

此项为实验成绩评定的重要依据。

实验二实验目的:掌握输出设备程序控制的原理的基础上进一步掌握输入设备与输出设备协同控制的原理。

实验设备:TCP-I实验箱,文祥500台式电脑实验内容:采用8086与8255组成系统,8个发光二极管为输出,开关为输入。

编程实现控制8个发光二极管一盏灯循环点亮,并用开关控制显示状态的暂停。

合工大嵌入式系统实验报告

合工大嵌入式系统实验报告

计算机与信息学院《嵌入式系统》实验报告学生姓名:学号:专业班级:2014 年 6 月20 日实验一(1):熟悉Linux 开发环境一、实验目的熟悉Linux 开发环境,学会基于Mini6410 的Linux 开发环境的配置和使用。

使用Linux 的arm-linux-gcc 编译,minicom串口方式下载调试二、实验内容本次实验使用Fedora 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。

创建一个新目录,并在其中编写hello.c 和Makefile 文件。

学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。

下载已经编译好的文件到目标开发板上运行。

三、实验设备及工具(包括软件调试工具)硬件:Mini6410嵌入式实验平台、PC机Pentium 500以上, 硬盘10G以上。

软件:PC机操作系统Fedora9+MINICOM+ARM-LINUX 开发环境四、实验步骤1 、建立工作目录[root@zxt smile]# mkdir hello[root@zxt smile]# cd hello2 、编写程序源代码在 Linux 下的文本编辑器有许多,常用的是 vi 和 Xwindow 界面下的 gedit 等,开发过程中推荐使用 vi。

Kdevelope、anjuta 软件的界面与 vc6.0 类似,使用它们对于熟悉 windows 环境下开发的用户更容易上手。

实际的 hello.c 源代码较简单,如下:#include <stdio.h>main() {printf(“hello world \n”);}我们可以是用下面的命令来编写 hello.c 的源代码,进入 hello 目录使用 vi 命令来编辑代码:[root@zxt hello]# vi hello.c按“i”或者“a”进入编辑模式,将上面的代码录入进去,完成后按 Esc 键进入命令状态,再用命令“:wq”保存并退出。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
break;
case 0x05://key-press 8
kbd_buff=0x008F;
LED_CS3 = kbd_buff;
LED_CS2 = 0x8F8F;
LED_CS4 = 0xEF;
break;
case 0x10://key-press 9
kbd_buff=0x8F18;
LED_CS2 = kbd_buff;
#define LED_CS4(*((volatile unsigned char *)(0x10500000)))
#define LED_VALUE (0xff)
int i;
void Delay(unsigned int x)
{
unsigned int i, j, k;
for (i =0; i <=x; i++)
LED_CS4 = 0x7F;
break;
case 0x02://key-press 2
kbd_buff=0x248F;
LED_CS2 = kbd_buff;
LED_CS3 = 0x8F8F;
LED_CS4 = 0xBF;
break;
case 0x04://key-press 3
kbd_buff=0x8F30;
int i;
void Delay(unsigned int x)
{
unsigned int i, j, k;
for (i =0; i <=x; i++)
for (j = 0; j <0xff; j++)
for (k = 0; k <0xff; k++);
}
void dummyOs(void)
{
while (1)
3.掌握键盘输入的编程方法
实验要求:
1.对所有16个按键进行编码,如使用一位数字[0-F,也可以用两位]
2.当按键后,在七段数码管上显示对应的键盘编码。
3.在跑码灯上显示相应二进制数。
实验代码:
#include <stdio.h>
#include "register_variant.h"
#define LED_CS2(*((volatile unsigned short int *)(0x10300000)))//LED1 and LED2
LED_CS2 = 0x0308; //A b
LED_CS3 = 0x0646; //C E
LED_CS4 = (LED_VALUE << i) -1;
if(i <= 8) i++;
else i = 0;
Delay(200);
}
}
实验总结:
键盘实验实验报告
实验目的:
1.了解直入键盘与矩阵键盘的原理
2.了解键盘寄存器的功能
#define LED_CS3(*((volatile unsigned short int *)(0x10400000)))//LED3 and LED4
#define LED_CS4(*((volatile unsigned char *)(0x10500000)))
#define LED_VALUE (0xff)
char m = 0, n = 0;
unsigned short int kbd_buff;
m = KPDK_VALUE ;
n = KAPS_VALUE ;
switch (m)
{
case 0x40://key-press 1
kbd_buff=0x8F79;
LED_CS2 = kbd_buff;
LED_CS3 = 0x8F8F;
for (i =0; i <=x; i++)
for (j = 0; j <0xff; j++)
for (k = 0; k <0xff; k++);
}
void dummyOs(void)
{
while (1)
{
LED_CS4 = 0x00;
for (i = 8; i >=1; i--)
{
LED_CS4 = (LED_VALUE >> i) +1;
{
LED_CS4 = 0xff;
for (i = 1; i <8; i=i+2)
{
LED_CS4 = (LED_VALUE << i) -1;
Delay(200);
}
for (i = 7; i > 1; i=i-2)
{
LED_CS4 = (LED_VALUE << i) -1;
Delay(200);
LED_CS3 = 0x8F8F;
LED_CS4 = 0x6F;
break;
case 0x11://key-press 10
kbd_buff=0x088F;
LED_CS2 = kbd_buff;
LED_CS3 = 0x8F8F;
LED_CS4 = 0xAF;
for (i =0; i <=x; i++)
for (j = 0; j <0xff; j++)
for (k = 0; k <0xff; k++);
}
void dummyOs(void)
{
while (1)
{
LED_CS4 = 0x00;
for (i = 8; i >=1; i--)
{
LED_CS4 = (LED_VALUE >> i) +1;
LED_CS3 = 0x2430; //3 2
LED_CS4 = (LED_VALUE << i) -1;
if(i <= 8) i++;
else i = 0;
Delay(200);
LED_CS2 = 0x4024; //2 0
LED_CS3 = 0x3030; //3 3
LED_CS4 = (LED_VALUE << i) -1;
if(i <= 8) i++;
else i = 0;
Delay(200);
LED_CS2 = 0x0308; //A b
LED_CS3 = 0x0646; //C E
LED_CS4 = (LED_VALUE << i) -1;
if(i <= 8) i++;
else i = 0;
Delay(200);
#define LED_CS3(*((volatile unsigned short int *)(0x10400000)))//LED3 and LED4
#define KPDK_VALUE(*((volatileunsigned char *)(0x41500008)))//Direct Keypad
LED_CS3 = kbd_buff;
LED_CS2 = 0x8F8F;
LED_CS4 = 0x3F;
break;
case 0x20://key-press 4
kbd_buff=0x198F;
LED_CS3 = kbd_buff;
LED_CS2 = 0x8F8F;
LED_CS4 = 0xDF;
break;
int i;
void Delay(unsigned int x)
{
unsigned int i, j, k;
for (i =0; i <=x; i++)
for (j = 0; j <0xff; j++)
for (k = 0; k <0xff; k++);
}
void dummyOs(void)
{
while (1)
default: kbd_buff=0x8F8F; break;
}
switch (n)
{
case 0x00://key-press 5
kbd_buff=0x8F12;
LED_CS2 = kbd_buff;
LED_CS3 = 0x8F8F;
LED_CS4 = 0x5F;
break;
case 0x01://key-press 6
boot实验报告
本次实验由于时间限制,共完成了三种不同的变化方式,但是课后又设计了一些其他的变化方式。
1、从左到右,再从右到左亮灯,不断循环
#define LED_CS4(*((volatile unsigned char *)(0x10500000)))
#define LED_VALUE (0xff)
{
LED_CS2 = 0x8f8f; //0 0
LED_CS3 = 0x8f8f; //0 0
while(1)
{
//Delay(100);
LED_CS2 = 0x4024; //2 0
LED_CS3 = 0x2430; //3 2
LED_CS4 = (LED_VALUE << i) -1;
if(i <= 8) i++;
Delay(200);
}
}
}
2、从左到右,再从右到左灯灭,不断循环
#define LED_CS4(*((volatile unsigned char *)(0x10500000)))
#define LED_VALUE (0xff)
相关文档
最新文档