版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、河河海海大大学学计计算算机机及及信信息息工工程程学学院院(常常州州) 课课程程设设计计报报告告 题题 目目 基基于于lcd 的的电电子子时时钟钟设设计计 专专业业、学学号号 授授课课班班号号 学学生生姓姓名名 指指导导教教师师 完完成成时时间间 课程设计(报告)任务书课程设计(报告)任务书 (理(理 工工 科科 类)类) 、课程设计(报告)题目: 基基于于lcd的的电电子子时时钟钟设设计计 、课程设计(论文)工作内容 一、课程设计目标一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力; 2、掌握嵌入式系统设计基本原理、培养嵌入式系统设计能力; 二、研究方法及手段应用二、研究方法及手
2、段应用 1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务; 2、使用实验箱上的 s3c44box 芯片系统和 lcd 作为硬件基础; 3、使用 ads1.2 及 h-jtag 对源程序进行编译、仿真、调试,下载到芯片中实 现 lcd 电子时钟功能。 3、课程设计预期效果课程设计预期效果 1、完成实验环境搭建:学习 lcd 与 arm 的 lcd 的控制器的接口原理;掌握 内置 lcd 控制器驱动编写方法; 2、设计完成电子时钟源程序; 3、源程序编译、调试通过,下载到实验箱中,实现电子时钟功能,并在 lcd 上显示类似的时钟界面,动态显示当前的时间,包括:年、月、日、时、分、 秒
3、,时针,分针、秒针必须为动态实时指示当前的时间。 学生姓名: 专业年级: 目目 录录 前前 言言.2 2 第一章第一章 系统设计系统设计.3 3 第一节 课题目标及总体方案 .3 第二节 硬件平台简介 .3 一、 s3c44b0x 简介.3 二、s3c44b0x 与 lcd 连接.5 第二节 软件系统设计 .5 一、c/os-ii 系统模块设计.5 二、lcd 初始化模块设计.5 三、 时钟应用系统模块设计 .5 第二章第二章 实验结果及讨论实验结果及讨论.7 7 第一节 ads1.2 集成开发环境简介 .7 第二节 调试结果与分析 .9 第三章第三章 结结 论论.1010 心得体会心得体会.
4、1111 参考文献参考文献.1212 附附 录录.1313 源程序 .13 前前 言言 随着科技的发展,嵌入式系统广泛应用于工业控制和商业管理领域,在多 媒体手机、袖珍电脑、掌上电脑、车载导航器等方面的应用,更是极大地促进 了嵌入式技术深入到生活和工作各个方面。嵌入式系统主要由嵌入式处理器、 相关支撑硬件及嵌入式软件系统组成;本文介绍基于 arm7 的嵌入式微处理器 s3c44box 和 lcd 显示器的电子时钟的设计,实现电子时钟的功能,并在 lcd 上显示类似的时钟界面;动态显示当前的时间,包括:年、月、日、时、 分、秒,时针。 第一章第一章 系统设计系统设计 第一节第一节 课题目标及总体
5、方案课题目标及总体方案 本课程设计设计一种基于 arm7 的嵌入式微处理器 s3c44b0x 和 lcd 显 示器的电子时钟,实现电子时钟的功能,并在 lcd 上显示类似的时钟界面;动 态显示当前的时间,包括:年、月、日、时、分、秒,时针。 本课程设计主要为软件设计,硬件部分使用 el-arm-830 教学实验箱上的 s3c44b0x 和 lcd 模块。软件部分使用 ads1.2 及 h-jtag 对源程序进行编译、 仿真、调试,下载。软件设计采用模块化设计方法,分为 c/os-ii 系统模块、 lcd 初始化模块、时钟应用系统模块等,其中,时钟系统应用模块包括时钟计 时模块、时钟显示模块等。
6、各模块之间功能独立,协同完成本课程设计的全部 功能。系统设计框图如图 1。 图 1 系统设计框图 第二节第二节 硬件平台简介硬件平台简介 一、一、 s3c44b0x 简介简介 s3c44b0x lcd 硬件部分 c/os-ii 系统模块 lcd 初始化模块 时钟应用系统模块 时钟计时模块 时钟显示模块 软件件部分 s3c44b0x 微处理器是三星公司研发的基于 arm7tdmi 核的高性能嵌入 式处理器,为手持设备和一般类型应用提供了高性价比和高性能的微控制器解 决方案。由于其高性价比以及内嵌了多种接口,在手持设备和消费类电子中得 到了广泛的应用。为了降低成本,s3c44b0x 提供了丰富的内
7、置部件,包括: 8kb cache、内部 sram、lcd 控制器、带自动握手协议的 2 通道 uart、4 通道 dma、系统管理器(片选逻辑,fp/edo/sdram 控制器) 、带有 pwm 功 能的 5 通道定时器,i/o 端口,rtc,8 通道 10 位 adc,iic-bus 接口,iis- bus 接口,同步 sio 接口和 pll 倍频器。 s3c44b0x 采用了 arm7tdmi 内核,0.25um 工艺的 cmos 标准宏单元 和存储编译器。它的低功耗和出色的全静态设计特别适用于对成本和功耗敏感 的应用。同样 s3c44b0x 还采用了一种新的总线结构,即 sambaii
8、(三星 arm cpu 嵌入式微处理器总线结构) 。 s3c44b0x 的特性是它的 cpu 核,是由 arm 公司设计的 16/32 位 arm7tdmi risc 处理器(主频 66mhz) 。arm7tdmi 体系结构的特点是它 集成了 thumb 代码压缩器,片上的 ice 断点调试支持,和一个 32 位的硬件乘 法器。 s3c44b0x 内置 lcd 控制器可以支持规格为每像素 2 位 (4 级灰度) 或每像素 4 位(16 级灰度)的黑白 lcd。也可以支持每像素 8 位(256 级颜 色)的彩色 lcd 屏。lcd 控制器可以通过编程支持不同 lcd 屏的要求,例如 行和列像素数
9、,数据总线宽度,接口时序等。 基于 s3c44b0x 的典型嵌入式系统硬件体系结构如图 2 所示。 图 2 s3c44b0x 硬件体系结构图 键盘 sdram 系统内存 lcd 显示屏 基于 arm 的 嵌入式微处理器 s3c44b0x usb 接口 rs-232 接口 jtag 接口 adc dac flash bios 电源 复位 晶振 二、二、s3c44b0x 与与 lcd 连接连接 本课程设计使用的 el-arm-830 教学实验箱包含有一块 5.7 寸,256 色, 320x240 像素的 lcd 显示屏,s3c44b0x 内置了 lcd 控制器,控制 lcd。 s3c44b0x 与
10、 lcd 连接示意图如图 3。 图 3 s3c44b0x 与 lcd 连接示意图 第二节第二节 软件系统设计软件系统设计 一、一、c/os-ii 系统模块设计系统模块设计 本模块的主要功能是将 c/os-ii 系统移植到 s3c44b0x 上,作为调用 硬件各项功能的基础,同时也完成 s3c44b0x 的功能本模块主要涉及到 c/os-ii 在 arm 上的移植,不属于本课程设计讨论的范畴,故不再赘述。 二、二、lcd 初始化模块设计初始化模块设计 本模块的主要功能完成 lcd 的初始化,加载 lcd 驱动程序,使 lcd 与 s3c44b0x 实现对接,完成显示功能。本模块我们使用了实验箱现
11、有的相关程 序。故不再赘述。 3、时钟应用系统模块设计时钟应用系统模块设计 本模块是电子时钟功能实现的主要模块,也是本次课程设计的核心模块, 本模块实现的功能主要有:时间计时,钟面时间显示,数字时间显示。 s3c44b0x lcd 控制器 lcd 5.7 寸,256 色, 320*240 其中,时间计时功能和在 lcd 上显示数字钟显示功能较易实现,之前的单 片机课程设计和 hdl 课程设计均有所涉及。计时使用 s3c44b0x 内部时钟脉 冲和分频实现,在 lcd 上显示数字钟显示使用 lcd 数字显示功能实现。 在 lcd 上实现钟面显示功能较为复杂,主要包括以下过程: 1、给秒针、分针各
12、设定 60 个坐标(包括 x 坐标和 y 坐标) ,表示 60 秒和 60 分,给时针设定 12 个坐标(包括 x 坐标和 y 坐标) ; 2、设定钟面显示初值并完成初值与时针、分针、秒针的坐标的映射,更改 初值可以完成时间的设定; 3、使用画线函数完成秒针、分针、时针显示,主要功能是擦除上一秒(分、 时)的轨迹和显示这一秒(分、时) 。 4、使用画点函数完成钟面基本构造,即钟面与 12 个整点时间点。 除此之外,需要在整个移植后的系统中初始化堆栈并设定任务,通过任务 完成时钟的各项功能。 第二章第二章 实验结果及讨论实验结果及讨论 第一节第一节 ads1.2 集成开发环境简介集成开发环境简介
13、 ads 集成开发环境是 arm 公司推出的 arm 核微控制器集成开发工具, 英文全称为 arm developer suite,成熟版本为 ads1.2。ads1.2 支持 arm10 之前的所有 arm 系列微控制器,支持软件调试及 jtag 硬件仿真调试,支持 汇编、c、c+源程序,具有编译效率高、系统库功能强等特点,可以在 windows98、 windows xp、windows2000 以及 redhat linux 上运行。 ads 1.2 使用 codewarrior ide 集成开发环境,并集成了 arm 汇编器、 arm 的 c/c+编译器、thumb 的 c/c+编译器
14、、arm 连接器,包含工程管理 器、代码生成接口、语法敏感(对关键字以不同颜色显示)编辑器、源文件和类 浏览器等等。codewarrior ide 主窗口如图 4 所示。 图 4 codewarrior 开发环境 axd 调试器为 arm 扩展调试器(即 arm extended debugger),包括 adw/adu 的所有特性,支持硬件仿真和软件仿真(armulator)。axd 能够装 载映像文件到目标内存,具有单步、全速和断点等调试功能,可以观察变量、 寄存器和内存的数据等等。axd 调试器主窗口如图 5 所示。 图 5 codewarrior 开发环境 本课程设计在 ads1.2
15、集成开发环境内编写源程序并进行编译,调试,然 后利用 h-jtag 下载到芯片中进行片上调试,h-jtag 连接完成后如图 6 所示。 图 6 h-jtag 连接成功示意图 第第 2 节节 调试结果与分析调试结果与分析 通过编译调试下载到实验箱的 s3c44b0x 芯片中进行调试,lcd 显示结果 如图 7 所示。 图 7 lcd 调试结果显示 屏幕右上角显示出学号姓名和作品信息; 屏幕中间显示的是钟面,有时针、分针和秒针,显示实时时间; 屏幕下方显示的是数字时钟,显示时分秒(与钟面时间相对应)和年月日。 完成系统设计要求的各项功能。 第三章第三章 结结 论论 本课程设计属于嵌入式系统项目设计
16、,利用 el-arm-830 教学实验箱上的 嵌入式微处理器 s3c44b0x 和 lcd 模块,使用 c 语言编程,结合 ads1.2 对源 程序进行编译、连接和运行,使用 h-jtag 下载,设计完成了基于 lcd 的电子 时钟,实现如下功能: 1、lcd 显示“钟面”样式,时针、分针、秒针显示实时时间; 2、lcd 显示“数字钟”样式,动态显示年、月、日、时、分、秒; 3、显示时间可以修改并保持“钟面”与“数字钟”时间保持一致; 4、lcd 左上角动态显示小组成员姓名、学号及选题信息。 本课程设计完成选题要求,但是有如下方面有待改进: 1、 “钟面”现实不够精确,分针和时针只设定了 60
17、 个坐标位置,分针和时 针走动不均匀; 2、数字钟部分尚未考虑到“大月”和“小月”以及“平年”和“闰年”的 日期问题,所有月份均设定为 30 天; 3、时间修改麻烦,需要对源程序中设定的初值进行修改,无法通过键盘对 时间进行修改; 4、未调用 s4c44b0x 内部实时时钟(rtc)模块,不能显示出精确的内部 实时时间。 上述问题我们会在今后的学习和实践中予以改善,我们将继续学习嵌入式 系统原理和设计,继续学习 lcd 显示技术,为将来的毕业设计打好基础。 心得体会心得体会 本次课程设计是嵌入式系统项目设计,是在本学期我们学完了嵌入式系统 课程以后相应的课程设计。因为课时的安排,嵌入式系统只有
18、 2 个学分,在有 限的课时内我们掌握的知识也是相当有限的,我们对嵌入式系统的硬件和软件 的基本原理、基本特点,嵌入式系统设计的基本方法有了一个初步的了解掌握。 这些知识对于我们完成本次课程设计是远远不够的。我们自己查找了许多关于 s3c44b0x 和 lcd 的资料和文献作为课程设计的知识储备,同时也参考了去年 学长学姐完成的课题,取人之长、补己之短。经过我们的努力,在老师同学的 帮助下,我们顺利完成了课程设计,对嵌入式系统的硬件、软件有了更为深入 的了解,也深入掌握了嵌入式系统设计的基本方法,达到了预期的目的。 本次课程设计首先要感谢奚吉老师,对我们的课程设计给予了充分的关怀 和帮助;然后
19、要感谢我的搭档范娟,我们一起完成了本次课程设计。 参考文献参考文献 1王勇嵌入式系统原理与设计m 杭州:浙江大学大学出版社,2007 2耿辉等s3c44b0x 的 lcd 显示解决方案 中国科技论文在线,2007. 3samsung 公司. s3c44b0x 数据手册. ,2006. 4el-arm-830 实验系统的资源介绍,2000. 5林志琦等arm 微控制器与液晶屏接口的研究j 长春大学学报, 2010,20(2):7174. 6周立功单片机公司. ads 集成开发环境及 easyjtag 仿真器应用,2005. 附附 录录 源程序源程序 #include .incconfig.h #
20、definestacksize 256 #define x_line 160 #define y_line 80 os_stk_data stk; extern gui_font gui_font8x16; os_event * send_d7light_sem; os_event * send_lcd_sem; os_event *key_mbox; i8 hour3,min3,sec3; i8 hour = 15%12, min = 20, sec = 40; i8 yea13,yea23,mon3,day3; int yea1 = 20,yea2=11, mon = 6, day = 2
21、3; 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, , spaceys61=30,31,32,33,34,
22、 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,1 86,189,192,195,196,197,198,199,200,199,198, 197,196,195,1
23、92,189,186,183,180,176,172,16 8,164,160,156,152,148,144,140,137,134,131,1 28,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,5 7, 60,64,68,72,76,80,84,88,92,96,100,103,106,10 9,112,115,116,117,118,119,120,119,118,117,1 16,1
24、15,112,109,106,103,100,96,92,88,84,80,7 6,72,68,64,60,57,54,51,48,45,44,43,42,41,4, spacexh13=160,175,185,190,185,175,160,1 45,135,130,135,145,160, spaceyh13=50,55,65,80,95,105,110,105,9 5,80,65,55,50, *placex= void show(i8 s) if(s%5=0) set_color(gui_yellow); set_font( disp_string (0862310104,10,30)
25、; set_font( disp_string (0862310121,10,10); else if(s%5=1) set_color(gui_yellow); set_font( disp_string (guxin ,10,10); set_font( disp_string (fanjuan ,10,30); else if(s%5=2) set_color(gui_yellow); set_font( disp_string(0862310104,10,30); set_font( disp_string(0862310121,10,10); else if(s%5=3) set_c
26、olor(gui_yellow); set_font( disp_string (fanjuan ,10,30); set_font( disp_string (guxin ,10,10); else if(s%5=4) set_color(gui_yellow); set_font( disp_string (s3c44box ,10,10); set_font( disp_string (lcd clock ,10,30); void shows() show(sec); set_color(gui_gray); /擦除上一秒 draw_line(x_line,y_line,*placex
27、,*placey); placex=placex+1; placey=placey+1; set_color(gui_yellow); /显示下一秒的 draw_line(x_line,y_line,*placex,*placey); set_color(gui_red); /显示下一分的 drawline(x_line,y_line,*placexm,*placeym); set_color(gui_green); /显示下一时的 draw_line(x_line,y_line,*placexh,*placeyh); if(placex= placey= void showm() set_c
28、olor(gui_green); set_color(gui_red); set_color(gui_yellow); set_color(gui_gray); /擦除上一分的 drawline(x_line,y_line,*placexm,*placeym); placexm=placexm+1; placeym=placeym+1; set_color(gui_red); /显示下一分的 drawline(x_line,y_line,*placexm,*placeym); set_color(gui_green);/显示下一时的 draw_line(x_line,y_line,*place
29、xh,*placeyh); if(placexm= placeym= void showh() set_color(gui_yellow); set_color(gui_green); set_color(gui_red); set_color(gui_gray); /擦除上一时的 drawline(x_line,y_line,*placexh,*placeyh); placexh=placexh+1; placeyh=placeyh+1; set_color(gui_green);/显示下一时的 drawline(x_line,y_line,*placexh,*placeyh); if(pl
30、acexh= placeyh= void shouw_cricle() / 整 点 set_color(gui_yellow); fill_circle (160, 30,2); / 12 点 (x,y,r) fill_circle (135, 35,2); / 11 点 (x,y,r) fill_circle (115, 55,2); / 10 点 (x,y,r) fill_circle (110, 80,2); / 9 点 (x,y,r) fill_circle (115, 105,2); / 8 点 (x,y,r) fill_circle (135, 125,2); / 7 点 (x,y
31、,r) fill_circle (160, 130,2); / 6 点 (x,y,r) fill_circle (185, 125,2); / 5 点 (x,y,r) fill_circle (205, 105,2); / 4 点 (x,y,r) fill_circle (210, 80,2); / 3 点 (x,y,r) fill_circle (205, 55,2); / 2 点(x,y,r) fill_circle (185, 35,2); / 1 点(x,y,r) void show_ht() set_color(gui_gray); fill_circle (160,80,54);
32、void changeform(char time,char time) time0 = time / 10 + 48; time1 = time % 10 + 48; time2 = 0; void display_time(char x,char y) changeform(hour, hour); changeform(min, min); changeform(sec, sec); changeform(mon, mon); changeform(day, day); changeform(yea1, yea1); changeform(yea2, yea2); disp_string
33、 (hour,x,160); disp_string (:,x + 16,160); disp_string (min,x + 24,160); disp_string (:,x + 40,160); disp_string (sec,x + 48,160); disp_string (yea1,x , 180); disp_string (yea2,x +16,180); disp_string (-,x + 32,180); disp_string (mon,x + 40,180); disp_string (-,x + 56,180); disp_string (day,x + 64,180); void show_color() set_color( gui_blue ); fill_rect(0,0,319,239); set_color(gui_blue); set_bkcolor (gui_blue); fill_rect(0,0,319,2); fill_rect(0,0,2,239); fill_rect(0,237,319,239); fill_rect(317,0,319,239); /*分配各任务的堆栈容量*/ os_stk stack_task_1stacksize;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《电磁学电磁场》课件
- 《奥美品牌管理价值》课件
- 2024届山西省大同市云州区高三上学期期末考试历史试题(解析版)
- 单位管理制度集合大全人力资源管理十篇
- 单位管理制度集粹汇编【职员管理】十篇
- 单位管理制度汇编大合集【职员管理篇】
- 单位管理制度合并汇编【人力资源管理篇】
- 单位管理制度范例汇编人力资源管理篇
- 单位管理制度呈现汇编员工管理篇
- 单位管理制度呈现大全人力资源管理篇十篇
- 新译林版英语五年级上册期末词汇复习
- 《中医妇科学》教材
- 护理评估量表及注意事项
- 提升极端天气背景下的城市政府韧性治理能力
- 服务营销学教案
- 护理查房 小儿支气管肺炎
- 相关方安全管理培训
- 2023年中国雪茄烟行业现状深度研究与未来投资预测报告
- 皮带输送机巡检规程
- 辽宁省大连市沙河口区2022-2023学年七年级上学期期末语文试题(含答案)
- 心肺循环课件
评论
0/150
提交评论