ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:330.12KB ,
资源ID:5847487      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5847487.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

嵌入式课程设计报告.docx

1、嵌入式课程设计报告河海大学计算机与信息学院(常州)课程设计报告 题 目 嵌入式系统项目设计专业、学号 0862510129 授课班号 277704 学生姓名 严维锋 同组学生 孙维广 陶贵华 指导教师 梁瑞宇 完成时间 2011年6月 课程设计(报告)任务书(理 工 科 类)、课程设计(报告)题目: 基于LCD的电子时钟实验 、课程设计(论文)工作内容 学习LCD与ARM的LCD的控制器的接口原理,掌握内置LCD控制器驱动编写方法和RTC控制方法,在可行性分析的基础上实现以下功能: 1、编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来; 2、仿照给定图形在LCD上显示类似的时钟界面

2、; 3、动态显示当前的时间,包括:年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力;2、培养学生的编程能力、用计算机解决实际问题的能力。3、培养学生遇到问题,解决问题的能力。 二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、实验设备有L-ARM-830教学实验箱,PentiumII以上的PC机,仿真器电缆; 3、PC操作系统WIN98或WIN2000或WINXP,ARM SDT2.5或ADS1.2集成开发环境,仿真器驱动程序; 4、本实验使用实验教学系统的CPU板,在进

3、行本实验时,LCD电源开关、音频的左右声道开关、AD通道选择开关、触摸屏中断选择开关等均应处在关闭状态。三、课程设计预期效果1、完成实验环境搭建;2、分模块调试和编译;3、组合并完善程序;4、联合仿真软件运行程序;5、液晶显示器显示时钟图样,时,分,秒能指向正确的时间。学生姓名: 严维锋 专业年级: 自动化2008级 目 录前 言 3第一章 系统设计 4第一节 课题目标及总体方案 4第二节 原理框图 5第三节 程序和芯片的初始化 5第四节 构建功能模块 7第五节 main函数的局部原理分析 8第二章 实验(测试)结果及讨论 13第一节 ads1.2 软件的编译,连接和运行 13第二节 程序调试

4、 14第三章 结 论 14心得体会 15参考文献 16附 录 17源程序 17前 言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,其强大的控制能力和专业性在通讯、网络、工控、电子等领域发挥着越来越重要的作用。嵌入式系统成为当前当之无愧的最有发展前途的IT应用领域之一。 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。随着集成电

5、路技术的不断发展,RTC器件的新品也不断推出。这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。本课程设计将体现嵌入式技术的优越性。第一章 系统设计第一节 课题目标及总体方案一、设计要求 学习LCD与ARM的LCD的控制器的接口原理,掌握内置LCD控制器驱动编写方法和RTC控制方法,在可行性分析的基础上实现以下功能: 1、编写程序实现电子时钟功能,通过实验系统的LCD将时间显示出来; 2、仿照图1在LCD上显示类似的时钟界面; 图1 LCD上显示的时钟界面3、动态显示当

6、前的时间,包括:年、月、日、时、分、秒,时针,分针、秒针必须为动态实时指示当前的时间。二、设计方案基于S3C44B0X的典型嵌入式系统硬件体系结构图如图2所示,通过对S3C44B0X处理器的学习,可以利用其内部的RTC单元和LCD控制器,外接LCD模块、晶振和(后备)电源实现电子实时时钟的功能。主要实现方法为:通过电源和晶振保证处理器的正常工作和时钟来源,通过编程设定RTC单元的工作模式,实现实时时钟的功能;然后根据所要求显示的图形效果,编写程序设定LCD控制器的相应寄存器,将RTC单元和LCD控制器合理有效地结合起来;最终由LCD模块作出相应动作,完成实时时钟的显示功能。 该设计的中英文字符

7、显示方案,有效地利用了嵌入式系统自身的ROM存储容量,其最大的特点是以少量的存储容量为代价,来简单灵活地实现LCD上的字符显示。此方案可以显示所有的一、二级汉字,并且能实现汉字、英文的混合显示,从而方便地构造出良好的人机界面。所讨论的硬件平台是在S3C44BOX和液晶显示器的基础上搭建的,对于实现S3C44BOX与其它类型LCD模块的连接和应用,具有一定的参考价值。图2 S3C44B0X的典型嵌入式系统硬件体系结构第二节 原理框图 根据课题所要实现的功能,结合S3C44B0X处理器的单元结构,作出如图3所示的原理框图。 图3 原理框图 第三节 程序和芯片的初始化程序和芯片的初始化包括:LCD的

8、初始化:U16 LCD_Init(U8 Lcd_Bpp)switch(Lcd_Bpp)Case 8:rLCDCON1=(0)|(25)|(MVAL_USED7)|(0x18)|(0x110)|(CLKVAL_COLOR12);rLCDCON2=(LINEVAL)|(HOZVAL_COLOR10)|(1021);rLCDSADDR1= (0x322)1);rLCDSADDR2=M5D(U32)Video_StartBuffer +(SCR_XSIZE*LCD_YSIZE)1) | (MVAL21)|129;rLCDSADDR3= (LCD_XSIZE/2) | ( (SCR_XSIZE-LCD_

9、XSIZE)/2)9 );rREDLUT =0xfdb96420;rGREENLUT=0xfdb96420;rBLUELUT =0xfb40;rDITHMODE=0x0;rDP1_2 =0xa5a5; rDP4_7 =0xba5da65;rDP3_5 =0xa5a5f;rDP2_3 =0xd6b;rDP5_7 =0xeb7b5ed;rDP3_4 =0x7dbe;rDP4_5 =0x7ebdf;rDP6_7 =0x7fdfbfe;rDITHMODE=0x12210;rLCDCON1=(1)|(25)|(MVAL_USED7)|(0x38)|(0x310)|(CLKVAL_COLOR12);bre

10、ak;default:return 1;return 0; 中断向量的初始化:void KeyINT_Init(void) if (rINTPND & BIT_EINT4567) SPC = BIT_EINT4567; rINTMSK = (BIT_GLOBAL|BIT_EINT4567); RTC的初始化:void Rtc_Tick_Init(void) if (rINTPND & BIT_TICK) rI_ISPC = BIT_TICK; rINTMSK &= (BIT_GLOBAL | BIT_TICK); rRTCCON = 0x0; rTICINT = 1 | (17) void R

11、tc_Tick_Init0(void) if (rINTPND & BIT_TICK) rI_ISPC = BIT_TICK; rINTMSK &= (BIT_GLOBAL | BIT_TICK); rRTCCON = 0x0; rTICINT = 1 | (16); 第四节 构建功能模块LCD显示的时钟界面包括:静止不动的圆形钟面和一直在走动的时钟指针。所以需要构建两个重要的函数实现画圆和画直线。 画圆函数:该算法是通过X变量的自增,补偿1 修正正方形控制Y变量自减,找到距中心恒定距离的点,其中rs=45,X自0加1增至45。和原点坐标运算,可以在第一象限找到一点,再通过折叠对称找到其他象限

12、的三个点,通过画点函数描绘出。再画他的45度镜像就好了。画线函数:void line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned char draw)以中心的坐标为起点,使用while函数与指针最外圈的点比较,不断延长直至相等,所以事先计算出时针,分针和秒针三个同心圆最外圈点的坐标,以便带入函数。也同圆类似,要考虑不同象限点的情况,根据不同的位置带参数到画点函数中描绘。 第5节 MAIN函数的局部原理分析首先让我们先来看一下main函数的宏定义与变量定义,如下: 从上面的程序可以看出,所使用的

13、头文件主要是config.h。这个文件的内容不再详述,后面的附录会给出。 同时该程序还给出了时分秒的初始值,其字符型为i8,也即char型(在其它文件中有定义)。初始值为:hour=0,min=0,sec=0,ms=0;例如如果当前时间为6:20,十九秒,则将对应的数字修改即可。同理,年月日的初始值设定是一样的,并且字符类型也为char类型。 下面是针对字符类型的宏定义: #define I8 char #define U8 unsigned char #define I16 short #define U16 unsigned short #define I32 long #define U

14、32 unsigned long #define I16P I16 #define U16P U16 下面我们来看看对于时针,分针,秒针的坐标设定,程序如下:上述为秒针的坐标定义,SpaceXS61对应于秒针的横坐标值,SpaceYS61对应于纵坐标值。第一个点对应的是十二点的位置,即(160,30)点。因此只要设定两个指针,分别指向这两个数组的首地址,每当时间秒变化时,就将这两个指针加一,从而指向下一坐标,达到动态变化的效果。分针,时针的定义与上述定义完全一样,只不过时针定义时变量个数为十三个,具体如下定义:SpaceXH13=160,175,185,190,185,175,160,145,

15、135,130,135,145,160,SpaceYH13=50,55,65,80,95,105,110,105,95,80,65,55,50; 此外还要设定一些指针,用来指向各个数组的首地址,来方便坐标的变化,定义如下:*Placex=&SpaceXS0,*Placey=&SpaceYS0,*Placexm=&SpaceXM0,*Placeym=&SpaceYM0,*Placexh=&SpaceXH0,*Placeyh=&SpaceYH0;下面我们先来介绍此程序中用到的几个重要的函数。首先来说Set_Color()函数,这是一个设定颜色的函数,此函数的代码在其他文件中经行了编写,只要在括号中

16、输入相应的颜色就可,颜色定义如下: #define GUI_BLACK 0x000000 #define GUI_BLUE 0x0000FF #define GUI_GREEN 0x00FF00 #define GUI_CYAN 0xf0f000 #define GUI_RED 0xFF0000 #define GUI_MAGENTA 0x800080 #define GUI_BROWN 0x2020a0 #define GUI_DARKGRAY 0x404040 #define GUI_GRAY 0x808080 #define GUI_LIGHTGRAY 0xd0d0d0 #define

17、GUI_LIGHTBLUE 0xf08080 #define GUI_LIGHTGREEN 0x80f080 #define GUI_LIGHTCYAN 0x80f0f0 #define GUI_LIGHTRED 0x8080f0 #define GUI_LIGHTMAGENTA 0xf080f0 #define GUI_YELLOW 0xF0f000 #define GUI_WHITE 0xffffff 下面来说Fill_Circle (x, y, r)函数。 如下所示: void Fill_Circle (U16 x0, U16 y0, U16 r) U32 i; U32 imax = (

18、int)(int)r*707)/1000+1; U32 sqmax = (int)r*(int)r+(int)r/2; U16 x = r; LCD_DrawHLine(x0-r,y0,x0+r); for (i=1; isqmax) if (ximax) LCD_DrawHLine (x0-i+1,y0+x, x0+i-1); LCD_DrawHLine (x0-i+1,y0-x, x0+i-1); x-; LCD_DrawHLine(x0-x,y0+i, x0+x); LCD_DrawHLine(x0-x,y0-i, x0+x); 当此函数执行完以后会在液晶显示仪显示出一个实心圆,与前面的

19、setcolor函数配合可以画出特定颜色的的圆,x为横坐标,y为纵坐标,r为半径。还有一个为fillrect()函数。也即矩形填充函数,此函数可以在显示屏上显示特定大小的矩形图案,并结合颜色设定函数得出相应的颜色相应函数如下:void Fill_Rect(U16 x0, U16 y0, U16 x1, U16 y1) LCD_FillRect(x0,y0,x1,y1);既然是实时时钟,那么程序是如何实现指针的偏转的,是靠什么思路实现的。下面的程序是以秒针为例简述这其中的原理的。可以看到,程序中有擦除上一秒的程序。之所以能靠一个设定颜色的程序来将其擦出是因为,之前已经将底色设定为该指针擦除时的颜

20、色。既然该指针与底色有一样的颜色,所以观察者就看不到之前的指针了,所以就达到了擦出的目的,当显示下一秒时,只要将指针的颜色设定为与底色不同,即达到了显示的效果。同时,还要显示分针和时针。对于擦除分针和时针得原理与上面所述大同小异,这里只给出程序,不在详细讨论,程序如下: 那么是通过怎样的方式将以上时分秒的变化联系起来的呢?其实这全靠if。else。的条件判断语句,程序如下:我们可以看到其中有一个delay函数,这个函数的自变量为1200,即为delay(1200),它实现了一秒的延时,一秒以后sec加一,从而实现一秒的计时。当为60秒时,分针指向下一分钟,擦除上一分钟,也就是调用上面的三个显示

21、与擦除函数。第二章 实验(测试)结果及讨论第一节 ADS1.2 软件的编译,连接和运行 构建完整的程序:添加头文件,中断处理汇编程序段,初始化函数和主函数:void Main(void) Target_Init(); / ARMII实验系统的初始化,包括CPU板 GUI_Init(); OSInit(); Key_Mbox = OSMboxCreate(void *)0); /键盘初始 OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1STACKSIZE - 1, 5); /创建任务一 OSStart(); 编译所有的文件:第二节 程

22、序调试 连接芯片与LCD端口,运行程序,观察效果。此时LCD上将显示如图4所示的时钟界面。 图4 程序运行时LCD显示的时钟界面第三章 结 论 基于LCD的电子时钟可以准确地将动态时钟进行显示,并且能通过图像时钟形式和数字时钟多种形式表现出来,此外根据需要还可添加日历功能。在将程序烧入系统后,我们发现了两个比较严重的问题。第一个问题是我小组成员的名字出现乱码,经过我组及指导老师的细心排查,我们发现出现的原因是,字符重叠的原因。当擦除上一个名字时,我的名字没有对齐从而没有擦除干净,与下一个要显示的字符相重合,从而出现乱码。解决办法是在两个字的中间加入一个汉字宽度的空格,就可以消除此现象了。第二个

23、问题是秒针擦除不干净的问题。当秒针走向下一个位置时,它的上一个位置仍然有图形。此时背景颜色是深蓝。但是我们发现擦除时的指针确实是深蓝,为什么还会有痕迹呢?于是我组将指针颜色改成浅蓝,将背景颜色也改成浅蓝,终于痕迹不在了。到此,基本的问题已经解决,即实现了实验所设定的要求。心得体会在此次的基于LCD的电子时钟设计的过程中,我学会了把课本中的知识应用到实际操作中来,学会了通过查看其他课外资料来学习新的知识。此外,通过这一过程也提升了自己独立思考的能力。切实做到发现问题,仔细思考,团结合作,动手实践,解决问题这一系列过程。虽然这只是一次小系统设计,但通过它,我了解了课程设计的一般步骤和设计中应注意的

24、问题,受益良多。最初接收任务书,我们有些不知所措,虽然这学期学习了嵌入式系统的理论课程,但是毕竟缺少实践,还是难以着手。随后与任务相同的别组同学一起讨论,确定了初步的设计方案,也就是主体部分是基于S3C44B0X处理器的体系结构。然后就是分模块的设计。 课程设计已经结束,自己从这一过程中体会到了很多,有完成的喜悦,有停滞不前的郁闷,不管何种情况,我都提醒自己要静下心来,冷静的分析,老师在验收的时候,笑着问我请了多少外援,当时回答是一本书,现在想想有些逞强,还是有些经验丰富的同学在我不懂的时候帮助我的,不然我可能还要花些时间折腾。课程设计的过程让我懂得面对问题要勤于思考,遇到困难,要勇于面对,这

25、在任何知识的学习中都是弥足珍贵的。 参考文献【1】王勇,嵌入式系统原理与设计,浙江大学出版社,2007.【2】谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。【3】宋春荣,通用集成电路速查手册,山东科学技术出版社,1995。【4】桑楠. 嵌入式系统原理及应用开发技术,北京:北京航空航天大学出版社, 2002 附 录源程序:#include .incconfig.h#define STACKSIZE 256#define x_line 160#define y_line 80OS_STK_DATA stk;extern GUI_FONT CHINESE_FONT12;extern

26、 GUI_FONT CHINESE_FONT16;extern GUI_FONT GUI_Font8x16;OS_EVENT * Send_LCD_Sem;OS_EVENT *Key_Mbox;I8 Hour3,Min3,Sec3;I8 hour = 0, min = 0, sec = 0,ms;I8 YEA13,YEA23,MON3,DAY3;int yea1 = 20,yea2=11, mon = 6, day = 29;I8 XH03,XH13,XH23,XH33;I8 XH43,XH53;char xh0=01,xh1=62,xh2=51,xh3=01;char xh4=27,xh5=

27、28,xh6=29;/int TimeCount = 0;int SpaceXS61=160,165,170,175,180,185, 189,193,197,201,205, 206,207,208,209,210, 209,208,207,206,205, 201,197,193,189,185, 180,175,170,165,160, 155,150,145,140,135, 131,127,123,119,115, 114,113,112,111,110, 111,112,113,114,115, 119,123,127,131,135, 140,145,150,155,160, ,

28、 SpaceYS61=30,31,32,33,34, 35,39,43,47,51, 55,60,65,70,75, 80,85,90,95,100, 105,109,113,117,121, 125,126,127,128,129, 130,129,128,127,126, 125,121,117,113,109, 105,100,95,90,85, 80,75,70,65,60, 55,51,47,43,39, 35,34,33,32,31,30, SpaceXM61=160,164,168,172,176,180,183,186,189,192, 195,196,197,198,199,

29、200,199,198,197,196, 195,192,189,186,183,180,176,172,168,164, 160,156,152,148,144,140,137,134,131,128, 125,124,123,122,121,120,121,122,123,124, 125,128,131,134,137,140,144,148,152,156, 160 , SpaceYM61=40,41,42,43,44,45,48,51,54,57, 60,64,68,72,76,80,84,88,92,96, 100,103,106,109,112,115,116,117,118,119, 120,119,118,117,116,115,112,109,106,103, 100,96,92,88,84,80,76,72,68,64, 60,57,54,51,48,45,44,43,42,41, 40 , Spac

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1