版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
boot实验报告本次实验由于时间限制,共完成了三种不同的变化方式,但是课后又设计了一些其他的变化方式。1、从左到右,再从右到左亮灯,不断循环#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)inti;voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(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、先从左到中,后从右到中,不断循环#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)inti;voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(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、从左到右,从右到左,隔一个跳#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)inti;voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(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、从左到右灯灭#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)inti;voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(void){ while(1) { LED_CS4=0x00; for(i=8;i>=1;i--) { LED_CS4=(LED_VALUE>>i)+1; Delay(200); } } }2、从左到右,再从右到左灯灭,不断循环#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)inti;voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}voiddummyOs(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); } } }实验总结:数码管显示实验报告实验目的在实验一引导程序的基础上进一步了解ARM体系结构和编程方法;掌握外设访问的方法;理解8段数码管的显示原理实验内容1显示同组的两位同学的四位学号20322033;2显示一组大于九的四位十六进制数字,如abcd。3使跑码灯从左到右顺序亮。实验代码#include<stdio.h>#include"register_variant.h"#defineLED_CS2 (*((volatileunsignedshortint*)(0x10300000))) //LED1andLED2#defineLED_CS3 (*((volatileunsignedshortint*)(0x10400000))) //LED3andLED4#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineLED_VALUE(0xff)voidDelay(unsignedintx){ unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++);}inti=0;voiddummyOs(void){ LED_CS2=0x8f8f;//00 LED_CS3=0x8f8f;//00 while(1) { //Delay(100); LED_CS2=0x4024;//20 LED_CS3=0x2430;//32 LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); LED_CS2=0x4024;//20 LED_CS3=0x3030;//33 LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); LED_CS2=0x4024;//20 LED_CS3=0x2430;//32 LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); LED_CS2=0x4024;//20 LED_CS3=0x3030;//33 LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); LED_CS2=0x0308;//Ab LED_CS3=0x0646;//CE LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); LED_CS2=0x0308;//Ab LED_CS3=0x0646;//CE LED_CS4=(LED_VALUE<<i)-1; if(i<=8)i++; elsei=0; Delay(200); }}实验总结:键盘实验实验报告实验目的:了解直入键盘与矩阵键盘的原理了解键盘寄存器的功能掌握键盘输入的编程方法实验要求:对所有16个按键进行编码,如使用一位数字[0-F,也可以用两位]当按键后,在七段数码管上显示对应的键盘编码。在跑码灯上显示相应二进制数。实验代码:#include<stdio.h>#include"register_variant.h"#defineLED_CS2(*((volatileunsignedshortint*)(0x10300000)))//LED1andLED2#defineLED_CS3(*((volatileunsignedshortint*)(0x10400000)))//LED3andLED4#defineKPDK_VALUE(*((volatileunsignedchar*)(0x41500008)))//DirectKeypad#defineKAPS_VALUE(*((volatileunsignedchar*)(0x41500020))) #defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))voidbutton_statusFetch(void){ charm=0,n=0; unsignedshortintkbd_buff; m=KPDK_VALUE; n=KAPS_VALUE; switch(m) { case0x40: //key-press1 kbd_buff=0x8F79; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x7F; break; case0x02: //key-press2 kbd_buff=0x248F; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0xBF; break; case0x04: //key-press3 kbd_buff=0x8F30; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0x3F; break; case0x20: //key-press4 kbd_buff=0x198F; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0xDF; break; default:kbd_buff=0x8F8F;break; } switch(n) { case0x00: //key-press5 kbd_buff=0x8F12; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x5F; break; case0x01: //key-press6 kbd_buff=0x028F; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x9F; break; case0x02: //key-press7 kbd_buff=0x8F78; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0x1F; break; case0x05: //key-press8 kbd_buff=0x008F; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0xEF; break; case0x10: //key-press9 kbd_buff=0x8F18; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x6F; break; case0x11: //key-press10 kbd_buff=0x088F; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0xAF; break; case0x12: //key-press11 kbd_buff=0x8F03; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0x2F; break; case0x15: //key-press12 kbd_buff=0x468F; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0xCF; break; case0x20: //key-press13 kbd_buff=0x8F21; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x4F; break; case0x21: //key-press14 kbd_buff=0x068F; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x8F; break; case0x22: //key-press15 kbd_buff=0x8F0E; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0x0F; break; case0x25: //key-press16 kbd_buff=0x408F; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0xF7; break; default:kbd_buff=0x8F8F;break; } }voiddummyOs(void){ intled_sharp; inttemp=~0; LED_CS2=temp; LED_CS3=temp; while(1) { led_sharp=ledShareInterval; for(;led_sharp>0;led_sharp--) { button_statusFetch(); } }}实验总结:中断实验报告实验目的;理解中断向量表的结构理解中断处理的过程学习编写中断处理程序的方法实验内容:基本内容:修改源程序,通过中断方式响应按键,当1-16键按下时,数码管显示0-F。设计主程序,使8个LED以一定的时间间隔从右到左依次点亮,循环显示;(实验一的内容)编写中断服务程序,达到如下效果:以中断形式驱动按键,当有键按下时,在七段数码管上,显示对应的16个键盘编码值0-9a-f(实验二、三的内容),然后回到主程序。实验代码:Interrupt.c中#include<stdio.h>#defineLED_CS2 (*((volatileunsignedshortint*)(0x10300000))) //LED1andLED2#defineLED_CS3 (*((volatileunsignedshortint*)(0x10400000))) //LED3andLED4#defineLED_CS4 (*((volatileunsignedchar*)(0x10500000)))#defineKPDK_VALUE (*((volatileunsignedchar*)(0x41500008))) //DirectKeypad#defineKPAS_VALUE (*((volatileunsignedchar*)(0x41500020))) //MatrixKeypad#defineLED_VALUE(0xff) voidDelay(unsignedintx) { unsignedinti,j,k; for(i=0;i<=x;i++) for(j=0;j<0xff;j++) for(k=0;k<0xff;k++); }voidIRQ_Function(void){ chari,j; unsignedshortintkbd_buff; i=KPDK_VALUE; j=KPAS_VALUE; switch(i) { case0x40: //key-press1 kbd_buff=0x408f; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0x7F; break; case0x02: //key-press2 kbd_buff=0x798f; LED_CS2=kbd_buff; LED_CS3=0x8F8F; LED_CS4=0xBF; break; case0x04: //key-press3 kbd_buff=0x248f; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0x3F; break; case0x20: //key-press4 kbd_buff=0x8F30; LED_CS3=kbd_buff; LED_CS2=0x8F8F; LED_CS4=0xDF; break; default: switch(j) { case0x00: //key-press5 LED_CS2=0x198f; LED_CS3=0x8f8f; LED_CS4=0x5F; break; case0x01: //key-press6 LED_CS2=0x128f; LED_CS3=0x8f8f; LED_CS4=0x9F; break; case0x02: //key-press7 LED_CS2=0x028f; LED_CS3=0x8f8f; LED_CS4=0x1F; break; case0x05: //key-press8 LED_CS2=0x788f; LED_CS3=0x8f8f; LED_CS4=0xEF; break; case0x10: //key-press9 LED_CS2=0x008f; LED_CS3=0x8f8f; LED_CS4=0x6F; break; case0x11: //key-press10 LED_CS2=0x108f; LED_CS3=0x8f8f; LED_CS4=0xAF; break; case0x12: //key-press11 LED_CS2=0x088f; LED_CS3=0x8f8f; LED_CS4=0x2F; break; case0x15: //key-press12 LED_CS2=0x038f; LED_CS3=0x8f8f; LED_CS4=0xCF; break; case0x20: //key-press13 LED_CS2=0x468f; LED_CS3=0x8f8f; LED_CS4=0x4F; break; case0x21: //key-press14 LED_CS2=0x218f; LED_CS3=0x8f8f; LED_CS4=0x8F; break; case0x22: //key-press15 LED_CS2=0x068f; LED_CS3=0x8f8f; LED_CS4=0x0F; break; case0x25: //key-press16 LED_CS2=0x0e8f; LED_CS3=0x8f8f; LED_CS4=0xF7; break; } } Delay(200);}voiddummyOs(void){ unsignedshortinttemp=0x8F8F; LED_CS2=temp; LED_CS3=temp; while(1) { inti=0; LED_CS4=0xff; for(i=7;i>=0;i--) { LED_CS4=(LED_VALUE<<i)-1; Delay(100); } } } Handler_IRQ.s中 IMPORT IRQ_Function IMPORT ICMR EXPORT IRQ_Handler AREAIRQ_Handler,CODE,READONLY ;**************************** SUB LR, LR, #0x4 STMFDSP!,{R0-R12,LR} BL IRQ_Function LDR R0,=0x41500000 LDRR1,[R0]//加入这两句代码 LDMFDSP!,{R0-R12,PC}^ ;******************************* END实验总结:linux环境PXA270端口驱动详解实验目的1、了解PXA270微处理器GPIO的功能2、熟悉PXA270微处理器GPIO驱动程序的编写方法3、掌握驱动程序的加载过程和方法二、实验内容1、编译数码管显示模块驱动程序和测试程序;2、将程序下载到270板目标平台的内核中3、加载驱动模块4、执行测试程序5、修改应用程序,显示自己的末4位学号。三、实验步骤此实验需要在第八、第九和第十一个实验的基础上才能完成,即270试验箱所需的状态包括bootloader、kernel和文件系统。1、按ppt所给的实验步骤操作:之后,将Makefile文件里的前三行内容改为:CC=/opt/xscalev1/bin/arm-linux-gccINCLUDEDIR=/XSBase270/kernel/linux-2.4.21-51Board_EDR/includeCFLAGS=-D__KERNEL__-DMODULE-Wall-O2执行makeclean执行make打开minicom,重启270,可以看到51Boardlogin:以root登陆,传输文件XSB_EDR_8SEG.o和XSB_EDR_8SEG_test传输完后创建设备节点,加载驱动模块:[root@51Board~]#mknod/dev/xsb_edr_8segc611[root@51Board~]#insmodXSB_EDR_8SEG.o四个数码管按顺序显示:00001111...99991234234534562、修改应用程序,显示自己的末四位学号:打开XSB_EDR_8SEG_test.c文件,因为机房没装visualc++,所以以写字板的打开方式打开,并修改其内容如下:/************************************************-------------editbyhubiying&huoyuting----------------------------------------2011.10.20------------------------*************************************************/#include<stdio.h>#include<fcntl.h>#include<linux/kernel.h>#include<unistd.h>typedefunsignedcharu8;#defineI2C_DEV "/dev/xsb_edr_8seg"#defineNUM_00x3f#defineNUM_10x06#defineNUM_20x5b#defineNUM_3~0x30#defineNUM_4~0x19#defineNUM_5~0x12#defineNUM_6~0x2#defineNUM_7~0x78#defineNUM_8~0x0#defineNUM_9~0x10//charnumber[]={NUM_0,NUM_1,NUM_2,NUM_3,NUM_4,NUM_5,NUM_6,NUM_7,NUM_8,//NUM_9};charnumber1[]={NUM_2,NUM_0,NUM_3,NUM_2};//2032charnumber2[]={NUM_2,NUM_0,NUM_3,NUM_3};//2033//*********以下两个函数完成老师预先设定的显示功能**********voidappear_same(intfd){chari,j,base=0;for(j=0,base=0;j<=9;j++,base++) /*设置j为从0到9故能循环9次,而每次中所用的base没有变化,故每次输出中四个数一致,但次与次间,base加1,故没显示一次,中间因调用sleep停顿一会儿后显示的四个数比上一次大1。*/ {for(i=1;i<=6;i++) ioctl(fd,i,number+base); //调用ioctl函数,使7段数码管输出设定数字 sleep(1); }} //该函数完成使7段数码管输出四个相同的数,//并从0到9变化,中间设置了停顿voidappear_roll(intfd){chari,j,base=0;for(j=0,base=0;j<=9;j++,base++) {for(i=1;i<=6;i++) ioctl(fd,i,number+(base+i-1)%10); /*base每次加1,故每次调用ioctl时,base+i-1的余数增加1,即每次显示的起始数加1第一次从1开始显示1234,第二次从2开始显示2345…*/ sleep(1); }} //该函数实现了显示从1到6的循环滚动输出:1234,2345,3456i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 手机支架设计
- 弘扬宪法精神 建设法治校园
- 模拟急救科普讲解
- 耳鼻喉头颈外科咽喉炎药物治疗规范
- 托班毕业平面设计方案
- 毕业设计摄影创作全流程解析
- 室内设计材料工艺
- 高淇设计模式
- 放射科胸部X线摄影技术培训细则
- 下一代互联网环境下文件传输协议的服务质量研究
- 如何阐述自己的观点 高中语文统编版必修下册第一单元写作课课件
- 农村环保培训课件讲解
- 人工智能原理与方法智慧树知到课后章节答案2023年下哈尔滨工程大学
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 走进舞蹈艺术-首都师范大学中国大学mooc课后章节答案期末考试题库2023年
- 小型挖掘机工况介绍
- 饲料原料知识和品控
- GB/T 7582-2004声学听阈与年龄关系的统计分布
- GB/T 4937.3-2012半导体器件机械和气候试验方法第3部分:外部目检
- GB/T 37356-2019色漆和清漆涂层目视评定的光照条件和方法
- GB/T 29128-2012船舶固定式气体灭火系统通用要求
评论
0/150
提交评论