欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统实验报告(共44页).docx

    • 资源ID:13549419       资源大小:79.57KB        全文页数:44页
    • 资源格式: DOCX        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统实验报告(共44页).docx

    精选优质文档-倾情为你奉上嵌入式系统实验报告姓名: 努尔买买提·吐孙 学号: 班级:计算机科学与技术非师范121班实验一 LCD控制一、 实验目的1、 初步掌握液晶显示屏的使用及其电路设计方法。2、 掌握S3C44B0X处理器的LCD控制器的使用。3、 通过实验掌握液晶显示文本和图形的方法以及程序设计方法。二、 实验内容学习LCD显示器的基本原理,理解其驱动的控制方法。掌握S3C44B0X处理器的基本原理和方法,并编程实现:1、 画出多个矩形框2、 显示ASCII字符3、 显示汉字字符三、 实验流程图开始 初始化LCD12864画坐标函数hua_zuobiao(voic)TLC2543读数据子函数LCD1602的更新显示延时子函数确定每个电压值对应的坐标点亮确定的值清屏结束四、 实验核心代码#include "44b.h"#include"uhal.h"#include "option.h"#include"def.h"#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting extern U32 LCDBuffer240320;int main(void)int i,j,k;U32 jcolor;ARMTargetInit();/开发版初始化LCD_Init();/LCD初始化 for (k=10;k<200;k+) LCDBufferk10=0xe0; for (k=10;k<200;k+) LCDBufferk100=0xe0; for (j=10;j<100;j+) LCDBuffer10j=0xe0; for (j=10;j<100;j+) LCDBuffer200j=0xe0; LCD_Refresh() ; while(1);return 0;实验二 键盘控制实验一、 实验目的1、 学习键盘及LED驱动原理。2、 掌握ZLG7289芯片的使用方法。二、实验内容通过ZLG7289芯片驱动17键的键盘和8个共阴极LED,将按键值在LED上面显示出来。三、 实验流程图开启zlg72891、定义ZLG7289 寄存器(zlg7289.h)发送复位命令WriteSDIO(ZLG7289_CD_RST)关闭zlg7289延时2、定义键值读取函数开始 是否有键按下 否 从zlg7289读取键值延时 是键值是否有效 否通过键盘映射表得到按键值 是 3、编写主函数,将键值在数码管上显示延时初始化 Zlg7289复位键值>9? 否键值读取发送十位数 是 只显示个位显示十、个位延时开启zlg7289 发送个位数关闭zlg7289四、实验核心代码:#include"uhal.h"#include"keyboard.h"#include"zlg7289.h"#include"44b.h"#include"myuart.h"#include"LCD320.h"#pragma import(_use_no_semihosting_swi) extern int Zlg7289SIOBand;extern int Zlg7289SIOCtrl;int main(void)U32 key;ARMTargetInit();/开发版初始化Uart_Printf("nArm Target Init OK."); Zlg7289_Reset();/zlg7289复位 ARMTargetInit();/开发版初始化LCD_Init();LCD_ChangeMode(DspTxtMode);/转换LCD显示模式为文本显示模式LCD_Cls();/文本模式下清屏命令while(1) key=GetKey();/得到按键值Delay(7000);switch(key)case(0):LCD_printf("NUMn ");Uart_Printf("nNUMn");break;case(1):LCD_printf("/n ");Uart_Printf("n1n");break;case(2):LCD_printf("*n ");Uart_Printf("n2n");break;case(3):LCD_printf("-n ");Uart_Printf("n3n");break;case(4):LCD_printf("7n ");Uart_Printf("n4n");break;case(5):LCD_printf("8n ");Uart_Printf("n5n");break;case(6):LCD_printf("9n ");Uart_Printf("n6n");break;case(7):LCD_printf("+n ");Uart_Printf("n7n");break;case(8):LCD_printf("4n ");Uart_Printf("n8n");break;case(9):LCD_printf("5n ");Uart_Printf("n9n");break;case(10):LCD_printf("6n ");Uart_Printf("nNUM LOCKn");break;case(11):LCD_printf("1n ");Uart_Printf("n/n");break;case(12):LCD_printf("2n ");Uart_Printf("n*n");break;case(13):LCD_printf("3n ");Uart_Printf("n-n");break;case(14):LCD_printf("Entern");Uart_Printf("nEntern");break;case(15):LCD_printf("0n ");Uart_Printf("n+n");break;case(16):LCD_printf("Dlen ");Uart_Printf("nDlen");break;ZLG7289_ENABLE();/使zlg7289占有同步串口Delay(5);/延时 WriteSDIO(ZLG7289_CMD_DATA0|0);/数码管以方式0译码,第一个数码管亮/WriteSDIO(key);/显示个位Delay(1);/延时*/if(key>=4&&key<16)switch(key)case(4):WriteSDIO(7);Delay(1);break;case(5):WriteSDIO(8);Delay(1);break;case(6):WriteSDIO(9);Delay(1);break;case(8):WriteSDIO(4);Delay(1);break;case(9):WriteSDIO(5);Delay(1);break;case(10):WriteSDIO(6);Delay(1);break;case(11):WriteSDIO(1);Delay(1);break;case(12):WriteSDIO(2);Delay(1);break;case(13):WriteSDIO(3);Delay(1);break;case(15):WriteSDIO(0);Delay(1);break;ZLG7289_DISABLE();/zlg7289放弃同步串口控制权return 0;五、实验体会在本次实验,熟悉了键盘以及LED的驱动原理。键盘的闭合键,通常采用两种方法,即行扫描法和行反转法获取键值。同时还了解了ZLG7289芯片的特点和基本使用方法。实验三 A/D接口实验一、 实验目的1、 熟悉ARM本身自带的八路十位A/D控制器及相应寄存器。2、 编程实现ARM系统的A/D功能,掌握带有A/D的CPU编程实现A/D功能的主要方法。二、 实验内容学习A/D和LCD接口原理,了解实现A/D和LCD系统对于系统的软件和硬件要求。阅读ARM芯片文档,掌握ARM的A/D和LCD相关寄存器的功能,熟悉ARM系统硬件的A/D和LCD相关接口。利用外部模拟信号编程实现ARM循环采集全部前4路通道,并且在LCD上动态显示曲线。每个通道以不同颜色的画笔绘制曲线。三、实验流程图1、获取转换结果函数启动延时通道延时转换结束? 否返回转换结果是 四、实验核心代码#include "44b.h"#include"uhal.h"#include "option.h"#include"def.h"#include"myuart.h"#include"LCD320.h"extern U32 LCDBuffer240320;#pragma import(_use_no_semihosting_swi) #define ADCCON_FLAG0x40#define ADCCON_SLEEP0x20#define ADCCON_ADIN0(0x0<<2)#define ADCCON_ADIN1(0x1<<2)#define ADCCON_ADIN2(0x2<<2)#define ADCCON_ADIN3(0x3<<2)#define ADCCON_ADIN4(0x4<<2)#define ADCCON_ADIN5(0x5<<2)#define ADCCON_ADIN6(0x6<<2)#define ADCCON_ADIN7(0x7<<2)#define ADCCON_READ_START0x2#define ADCCON_ENABLE_START0x1void init_ADdevice()/初始化rADCPSR=20;rADCCON=ADCCON_SLEEP;int GetADresult(int channel)rADCCON=(channel<<2)|ADCCON_ENABLE_START;Delay(10);while(!(rADCCON&ADCCON_FLAG);/转换结束return rADCDAT;/返回采样值int main(void)U32 jcolor;U32 jcolor1;U32 jcolor2;U32 jcolor3;int mid;int fs;int i,j,k,s,t;int pre4;float d;ARMTargetInit();/开发版初始化init_ADdevice();Uart_Printf("n");LCD_Init(); jcolor = 0x0000e0e0; jcolor1 = 0xe0; jcolor2 = 0x00e0e0e0; jcolor3 = 0x0000e000; t = 320; while(1)if(t = 320)/采样03路A/D值t = 0;for(k=0;k<240;k+)for(j=0;j<320;j+) LCDBufferkj=0x;/背景黑色 for(i=0;i<1;i+) d=GetADresult(i)*2.5/1023;s=(int)(d*15); fs=55*(i+1)-s; LCDBufferfst=jcolor;/线条颜色 if(t!=0) mid=(prei+fs)/2; for(k=prei;k<mid;k+) LCDBufferkt-1=jcolor; for(k=mid;k<fs;k+) LCDBufferkt=jcolor; for(k=mid;k<prei;k+) LCDBufferkt-1=jcolor; for(k=fs;k<mid;k+) LCDBufferkt=jcolor; prei=fs; for(i=1;i<2;i+) d=GetADresult(i)*2.5/1023; s=(int)(d*15); fs=55*(i+1)-s; LCDBufferfst=jcolor1;/线条颜色 if(t!=0) mid=(prei+fs)/2; for(k=prei;k<mid;k+) LCDBufferkt-1=jcolor1; for(k=mid;k<fs;k+) LCDBufferkt=jcolor1; for(k=mid;k<prei;k+) LCDBufferkt-1=jcolor1; for(k=fs;k<mid;k+) LCDBufferkt=jcolor1; prei=fs; for(i=2;i<3;i+) d=GetADresult(i)*2.5/1023; s=(int)(d*15); fs=55*(i+1)-s; LCDBufferfst=jcolor2;/线条颜色 if(t!=0) mid=(prei+fs)/2; for(k=prei;k<mid;k+) LCDBufferkt-1=jcolor2; for(k=mid;k<fs;k+) LCDBufferkt=jcolor2; for(k=mid;k<prei;k+) LCDBufferkt-1=jcolor2; for(k=fs;k<mid;k+) LCDBufferkt=jcolor2; prei=fs; for(i=3;i<4;i+) d=GetADresult(i)*2.5/1023; s=(int)(d*15); fs=55*(i+1)-s; LCDBufferfst=jcolor3;/线条颜色 if(t!=0) mid=(prei+fs)/2; for(k=prei;k<mid;k+) LCDBufferkt-1=jcolor3; for(k=mid;k<fs;k+) LCDBufferkt=jcolor3; for(k=mid;k<prei;k+) LCDBufferkt-1=jcolor3; for(k=fs;k<mid;k+) LCDBufferkt=jcolor3; prei=fs; LCD_Refresh(); t+; Uart_Printf("r");return 0;实验四 触摸屏驱动实验一、 实验目的1、 了解触摸屏基本概念及原理。2、 理解触摸屏与LCD的密切配合。3、 编程实现对触摸屏的控制。二、 实验内容结合液晶显示控制实验,编写程序获取用户输入的4个坐标位置,并在液晶上画出由用户输入的坐标组成的矩形。三、 实验流程图1、读取触摸点x轴电压值2、读取触摸点坐标 3、判断触摸动作四、实验核心代码#include "44b.h"#include "LCD320.h"#include "tchScr.h"#include "maro.h"#define ADS7843_CMD_X(ADS7843_CTRL_START|ADS7843_GET_X|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD)/采样x轴电压值,数据为12位,参考电压输入模式为差分模式,允许省电模式#define ADS7843_CMD_Y(ADS7843_CTRL_START|ADS7843_GET_Y|ADS7843_CTRL_12MODE|ADS7843_CTRL_DFR|ADS7843_CTRL_ENPWD) extern U32 LCDBuffer240320; IntT chScr_Xmax=1876,TchScr_Xmin=269,TchScr_Ymax=229,TchScr_Ymin=1725;/触摸屏返回电压值范围void TchScr_GetScrXY(int *x, int *y, U8 bCal)/获得触摸点坐标unsigned int temp;rPDATF&=ADS7843_PIN_CS;/打开ADS7843SendSIOData(ADS7843_CMD_X);/发送读取x电压值控制字SendSIOData(0);/等待8个时钟节拍,因为完成一转换需要16个时钟temp=ReadSIOData();/读取采样值高8位SendSIOData(ADS7843_CMD_X);temp<<=8;temp|=ReadSIOData();/读取低8位并与以前高8位组成16位数据*x=(temp>>4);/去掉低4位,保留12位有效数据SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_X);temp<<=8;temp|=ReadSIOData();*x+=(temp>>4);SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_X);temp<<=8;temp|=ReadSIOData();*x+=(temp>>4);SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_Y);temp<<=8;temp|=ReadSIOData();*x+=(temp>>4);*x>>=2;/采样4次取平均值/读取y电压值SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_Y);temp<<=8;temp|=ReadSIOData();*y=(temp>>4);SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_Y);temp<<=8;temp|=ReadSIOData();*y+=(temp>>4);SendSIOData(0);temp=ReadSIOData();SendSIOData(ADS7843_CMD_Y);temp<<=8;temp|=ReadSIOData();*y+=(temp>>4);SendSIOData(0);temp=ReadSIOData();SendSIOData(0);temp<<=8;temp|=ReadSIOData();*y+=(temp>>4);*y>>=2;rPDATF|=ADS7843_PIN_CS;/关闭ADS7843if(bCal)/对采样结果进行转换*x=(*x-TchScr_Xmin)*LCDWIDTH/(TchScr_Xmax-TchScr_Xmin);*y=(*y-TchScr_Ymin)*LCDHEIGHT/(TchScr_Ymax-TchScr_Ymin);U32 TchScr_GetOSXY(int *x, int *y)/获得触摸点坐标并返回触摸动作static U32 mode=0;static int oldx,oldy;int i,j;for(;)if(mode!=TCHSCR_ACTION_DOWN) && (mode!=TCHSCR_ACTION_MOVE)if(!TCHSCR_IsPenNotDown)/有触摸动作TchScr_GetScrXY(x, y,TRUE);/得到触摸点坐标for(i=0;i<40;i+)if(TCHSCR_IsPenNotDown)/抬起break;Delay(100);if(i<40)/在规定的双击时间之内抬起,检测是不是及时按下for(i=0;i<60;i+)if(!TCHSCR_IsPenNotDown) if (i<10) i=60;break;/如果单击后很短时间内按下,不视为双击mode=TCHSCR_ACTION_DBCLICK;for(j=0;j<40;j+) Delay(100);/检测到双击后延时,防止拖尾 break; Delay(100);if(i=60)/没有在规定的时间内按下mode=TCHSCR_ACTION_CLICK;else/没有在规定的时间内抬起mode=TCHSCR_ACTION_DOWN; break;elseif(TCHSCR_IsPenNotDown)/抬起mode=TCHSCR_ACTION_UP;*x=oldx;*y=oldy;return mode;elseTchScr_GetScrXY(x, y,TRUE);if(ABS(oldx-*x)>4 |ABS( oldy-*y)>4)/有移动动作mode=TCHSCR_ACTION_MOVE;break;Delay(50);oldx=*x;oldy=*y;return mode;void print_line(int x1,int y1,int x2,int y2)int i,j,k;double k1;k1=(y2-y1)*1.0/(x2-x1);Uart_Printf("x1=%d,y1=%d,x2=%d,y2=%d %lfn",x1,y1,x2,y2,k1);for(i=x1;i<=x2;i+)j=k1*(i-x1)+y1+0.5;Uart_Printf("i=%d,j=%dn",i,j);LCDBufferij=0x0000e000;for(i=x1;i>=x2;i-)j=k1*(i-x1)+y1+0.5;Uart_Printf("i=%d,j=%dn",i,j);LCDBufferij=0x0000e000;for(i=y1;i<=y2;i+)j=1.0/k1*(i-y1)+x1+0.5;Uart_Printf("i=%d,j=%dn",i,j);LCDBufferji=0x0000e000;for(i=y1;i>=y2;i-)j=1.0/k1*(i-y1)+x1+0.5;Uart_Printf("i=%d,j=%dn",i,j);LCDBufferji=0x0000e000;void TchScr_Test()U32 mode;int x,y;int i,j;int a4,b4;LCD_Init();Uart_Printf("nplease touch the screenn");for(i=0;i<4;i+)mode=TchScr_GetOSXY(&x, &y);switch(mode)case TCHSCR_ACTION_CLICK:Uart_Printf("Action=click:x=%d,ty=%dn",x,y);ai=x;bi=y;Uart_Printf("x=%d,y=%dn",ai,bi);break;case TCHSCR_ACTION_DBCLICK:Uart_Printf("Action=double click:x=%d,ty=%dn",x,y);ai=x;bi=y;Uart_Printf("x=%d,y=%dn",ai,bi);break;case TCHSCR_ACTION_DOWN:Uart_Printf("Action=down:x=%d,ty=%dn",x,y);ai=x; bi=y;Uart_Printf("x=%d,y=%dn",ai,bi);break;case TCHSCR_ACTION_UP:Uart_Printf("Action=up:x=%d,ty=%dn",x,y);ai=x; bi=y;Uart_Printf("x=%d,y=%dn",ai,bi);break;case TCHSCR_ACTION_MOVE:Uart_Printf("Action=move:x=%d,ty=%dn",x,y);ai=x; bi=y;Uart_Printf("x=%d,y=%dn",ai,bi);break;Delay(1000);for(i=0;i<4;i+)print_line(ai,bi,a(i+1)%4,b(i+1)%4);LCD_Refresh() ;Uart_Printf("x=%d,y=%dn",ai,bi);五、实验体会本次实验,解释了触摸屏基本概念及原理,触摸屏与LCD的配合。同时也使我们学会了对触摸屏的控制。实验五 uCOS-II在ARM微处理器上的移植及编译一、 实验目的1、 了解uCOS-II内核的主要结构。2、 掌握将uCOS-II内核移植到ARM7处理器上的基本方法。二、 实验内容1、 将uCOS-II内核移植到ARM7处理器上。2、 编写两个简单任务,在超级终端上观察两个任务的切换。三、实验流程图上电复位主板硬件系统初始化配置IO口初始化Timer操作系统初始化初始化外设初始化SPI键盘扫描初始化RS232创建任务LCD显示操作系统启动nRF24L01收发四、实验核心代码#include".ucos-iiincludes.h" /* uC/OS interface */#include <string.h>#include"uhal.h"#include"LCD320.h"#pragma import(_use_no_semihosting_swi) / ensure no functions that use semihosting /*任务定义*/OS_STK SYS_Task_StackSTACKSIZE= 0, ; /system task刷新任务堆栈#define SYS_Task_Prio1void SYS_Task(void *Id);OS_STK Task1_StackSTACKSIZE=0, ; void Task1(void *Id);#define Task1_Prio 14OS_STK Task2_StackSTACKSIZE= 0, ; void Task2(void *Id); #define Task2_Prio 13OS_STK Task3_StackSTACKSIZE= 0, ; void Task3(void *Id); #define Task3_Prio 12int main(void)ARMTargetInit();LCD_Init() ;LCD_ChangeMode(DspTxtMode);LCD_Cls(); / do target (uHAL based ARM system) initialisation /OSInit(); OSTaskCreate(SYS_Task, (void *)0, (OS_STK *)&SYS_Task_StackSTACKSIZE-1, SYS_Task_Prio);OSTaskCreate(Task3, (void *)0, (OS_STK *)&Task3_StackSTACKSIZE-1, Task3_Prio);OSTaskCreate(Task2, (void *)0, (OS_STK *)&Task2_StackSTACKSIZE-1, Task2_Prio);OSTaskCreate(Task1, (void *)0, (OS_STK *)&Task1_StackSTACKSIZE-1, Task1_Prio);OSStart();

    注意事项

    本文(嵌入式系统实验报告(共44页).docx)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开