欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    嵌入式系统项目设计课程设计报告基于LCD的电子时钟.doc

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

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

    嵌入式系统项目设计课程设计报告基于LCD的电子时钟.doc

    河海大学计算机及信息工程学院课程设计报告 题 目 嵌入式系统项目设计 专业、学号 xxxxxxxxxxx 学生姓名 xxxxx 指导教师 xxxxxxx 完成时间 2012/5/31 课程设计(报告)任务书(理 工 科 类)、课程设计(报告)题目:基于LCD的电子时钟、课程设计(论文)工作内容一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力;2、培养学生的编程能力、用计算机解决实际问题的能力。3、将课上学习到的东西在课设中运用于实践,加深认识和理解。二、研究方法及手段应用1、将任务分成若干模块,查阅相关论文资料,分模块调试和完成任务;2、使用ads1.2编译汇编语言和C语言,连接生成Hex文件。3、联合protues 7.4 仿真,选用arm7 lpc2104 芯片,导入Hex文件,实现模拟电 子时钟。三、课程设计预期效果1、完成实验环境搭建;2、分模块调试和编译;3、组合并完善程序。4、联合仿真软件运行程序。目 录前 言 3第一章 系统设计 4第一节 课题目标及总体方案.4 第二节 程序和芯片的初化.5 第三节 构建功能模块.6 第四节 实现信息的传递.7 第二章 实验(测试)结果及讨论.8第三章 结论10心得体会11参考文献 12附 录 13 源程序13 前 言通常我们常用的LCD显示模块,有两种,一是带有驱动电路的LCD显示模块,一是不带驱动电路的LCD显示屏。大部分ARM处理器中都集成了LCD的控制器,所以,针对ARM芯片,一般不使用带驱动电路的LCD显示模块。近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。随着集成电路技术的不断发展,RTC器件的新品也不断推出。这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。第一章 系统设计第一节 课题目标及总体方案本实验是基于ARM处理器而设计的实时时钟,综合性较强,涉及到RTC外部中断,C语言编程等知识。需使用到中断,涉及对外部中断进行初始化,其中有规定优先级,中断触发方式,中断地址分配。采用液晶模块LCD显示实时时间,同样要对它进行初始化,包括检查总线忙与闲,传送地址,传送数据及显示函数的编程。第二节 程序和芯片的初始化主函数:void Main(void) Target_Init(); /系统初始化/ GUI_Init(); /图形初始化 OSInit();/操作系统初始化 OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1STACKSIZE - 1, 5); /创建任务 第三节 构建功能模块Lcd显示的时钟界面包括:静止不动的圆形钟面和一直在走动的时钟指针。所以需要构建两个重要的函数实现画圆和画直线。以下为点函数: 画线:填充圆: 第四节 实现信息的传递时分秒的变换函数:第二章 实验(测试)结果及讨论 构建完整的程序:添加头文件,中断处理汇编程序段,初始化函数和主函数: 编译所有的文件:第三章 结 论综合效果图:本实验成功实现了电子时钟的显示,撇除了操作系统,独立实现。本实验程序中还存在一定误差,不过通过中断可以实行改进。本实验未用到ARM自带的实时时钟,而是使用看门狗定时计数,所以无法实现类似万年历的实验方案,可以进一步研究改进。心得体会回顾整个课程设计过程,感慨颇多,从理论到实践,我学到很多东西,不仅巩固了以前所学过的理论知识,而且学到了很多在书本上学不到的东西。也更深刻得明白ARM的应用领域,我们可以运用ARM技术来做些什么。通过本次课设,增强了动手实践能力,也懂得了,光学习理论知识是远远不够的,必须把它运用到实际中去,充分发挥所学知识的作用。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。参考文献1 谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。2 宋春荣,通用集成电路速查手册,山东科学技术出版社,1995。3 Arnold Berger,嵌入式系统设计,吕骏 译, 北京:电子工业出版社, 20024 桑楠. 嵌入式系统原理及应用开发技术,北京:北京航空航天大学出版社, 2002 附 录一、源程序:#include ".incconfig.h"#defineSTACKSIZE256#define x_line 110#define y_line 80OS_STK_DATA stk;extern GUI_FONT CHINESE_FONT12;extern GUI_FONT CHINESE_FONT16;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 = 12, min =00, sec =00,ms;I8 YEA13,YEA23,MON3,DAY3;int yea1 = 20,yea2=12, mon =05, day = 15;I8 XH03,XH13,XH23,XH33;I8 XH43,XH53,XH63,XH73;int SpaceXS61=110,115,120,125,130,135,139,143,147,151,155,156,157,158,159,160,159,158,157,156,155,151,147,143,139,135,130,125,120,115,110,105,100,95,90,85,81,77,73,69,65,64,63,62,61,60,61,62,63,64,65,69,73,77,81,85,90,95,100,105,110, , 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=110,114,118,122,126,130,133,136,139,142, 145,146,147,148,149,150,149,148,147,146, 145,142,139,136,133,130,126,122,118,114, 110,106,102,98,94,90,87,84,81,78, 75,74,73,72,71,70,71,72,73,74, 75,78,81,84,87,90,94,98,102,106, 110 , 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 , SpaceXH13=110,125,135,140,135,125,110,95,85,80,85,95,110, SpaceYH13=50,55,65,80,95,105,110,105,95,80,65,55,50, *Placex=&SpaceXS0,*Placey=&SpaceYS0,*Placexm=&SpaceXM0,*Placeym=&SpaceYM0, *Placexh=&SpaceXH12,*Placeyh=&SpaceYH12; /键盘驱动void show() Set_Color(GUI_WHITE); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"姓名:吴楠"CN_end,47,170); Set_Color(GUI_WHITE); Set_Font(&GUI_Font8x16); Set_Color(GUI_WHITE); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"学号:"CN_end,143,170); Set_Color(GUI_WHITE); Set_Font(&GUI_Font8x16); Set_Color(GUI_WHITE); Set_Font (&GUI_Font8x16); Disp_String ("0962310328",191,170); Set_Color(GUI_WHITE); Set_Font(&GUI_Font8x16); Set_Color(GUI_GREEN); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"姓名:黄振"CN_end,47,190); Set_Color(GUI_GREEN); Set_Font(&GUI_Font8x16); Set_Color(GUI_GREEN); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"学号:"CN_end,143,190); Set_Color(GUI_GREEN); Set_Font(&GUI_Font8x16); Set_Color(GUI_GREEN); Set_Font (&GUI_Font8x16); Disp_String ("0962301127",191,190); Set_Color(GUI_GREEN); Set_Font(&GUI_Font8x16); Set_Color(GUI_YELLOW); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"姓名:康雄"CN_end,47,210); Set_Color(GUI_YELLOW); Set_Font(&GUI_Font8x16); Set_Color(GUI_YELLOW); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"学号:"CN_end,143,210); Set_Color(GUI_YELLOW); Set_Font(&GUI_Font8x16); Set_Color(GUI_YELLOW); Set_Font (&GUI_Font8x16); Disp_String ("0962310126",191,210); Set_Color(GUI_YELLOW); Set_Font(&GUI_Font8x16); Set_Color(GUI_BLUE); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"专业:通信工程"CN_end,82,150); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); Set_Color(GUI_BLUE); Set_Font (&CHINESE_FONT16); Disp_String (CN_start"嵌入式课程设计"CN_end,105,5); Set_Color(GUI_BLUE); Set_Font(&GUI_Font8x16); void Shows() show(); Set_Color(GUI_GRAY); /擦除上一秒的 Draw_Line(x_line,y_line,*Placex,*Placey); Placex=Placex+1; Placey=Placey+1; Set_Color(GUI_YELLOW); /显示下一秒的 Draw_Line(x_line,y_line,*Placex,*Placey); Set_Color(GUI_RED); /显示下一分的 Draw_Line(x_line,y_line,*Placexm,*Placeym); Set_Color(GUI_GREEN); /显示下一时的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placex=&SpaceXS60&&Placey=&SpaceYS60) Placex=&SpaceXS0; Placey=&SpaceYS0; void Showm() Set_Color(GUI_GRAY); /擦除上一分的 Draw_Line(x_line,y_line,*Placexm,*Placeym); Placexm=Placexm+1; Placeym=Placeym+1; Set_Color(GUI_RED); /显示下一分的 Draw_Line(x_line,y_line,*Placexm,*Placeym); Set_Color(GUI_GREEN); /显示下一时的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placexm=&SpaceXM60&&Placeym=&SpaceYM60) Placexm=&SpaceXM0; Placeym=&SpaceYM0; void Showh() Set_Color(GUI_GRAY); /擦除上一时的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); Placexh=Placexh+1; Placeyh=Placeyh+1; Set_Color(GUI_GREEN); /显示下一时的 Draw_Line(x_line,y_line,*Placexh,*Placeyh); if(Placexh=&SpaceXH12&&Placeyh=&SpaceYH12) Placexh=&SpaceXH0; Placeyh=&SpaceYH0; void Shouw_Cricle() / 整 点Set_Color(GUI_GREEN); Fill_Circle (110, 30,2); / 12点 Fill_Circle (85, 35,2); / 11 点 Fill_Circle (65, 55,2); / 10 点 Fill_Circle (60, 80,2); / 9 点 Fill_Circle (65, 105,2); / 8 点 Fill_Circle (85, 125,2); / 7 点 Fill_Circle (110, 130,2); / 6 点 Fill_Circle (135, 125,2); / 5 点 Fill_Circle (155, 105,2); / 4 点 Fill_Circle (160, 80,2); / 3 点 Fill_Circle (155, 55,2); / 2点 Fill_Circle (135, 35,2); / 1点 void Show_ht()Set_Color(GUI_GRAY); Fill_Circle (110,80,54);void Delay(int time);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 (Hour,x+70,100); Disp_String (":",x + 86,100); Disp_String (Min,x + 94,100); Disp_String (":",x + 110,100); Disp_String (Sec,x + 118,100); Set_Color(GUI_BLACK); Disp_String (Sec,x + 134,100); Disp_String (Sec,x + 150,100); Set_Color(GUI_GREEN); Disp_String (YEA1,x +70 , 120); Disp_String (YEA2,x +86,120); Disp_String (",",x + 102,120); Disp_String (MON,x + 110,120); Disp_String (",",x + 126,120); Disp_String (DAY,x + 134,120); Set_Color(GUI_BLACK); Disp_String (DAY,x + 150,120); void Show_Color()Set_Color( GUI_WHITE ); Fill_Rect(0,0,319,239); Set_Color(GUI_YELLOW); Set_Font (&CHINESE_FONT16);/* 分配各任务的堆栈容量 */OS_STK Stack_Task_1STACKSIZE;OS_STK Stack_Task_2STACKSIZE*3;/*- 函数名称 : Task_1(void *pdata)- 函数说明 : GUI任务,优先级为9- 输入参数 : pdata- 输出参数 : 无*/void Task_1(void *pdata) for(;) /*全屏颜色设计*/ /*时 钟 位 置*/ Show_Color(); Show_ht(); /*点 的 坐 标*/ Shouw_Cricle(); /*设定背景颜色API*/ Set_Color(GUI_YELLOW); /显示 Draw_Line(x_line,y_line,*Placex,*Placey); Display_Time(106, 160);/时间 do Delay(1200); sec+; Shows(); if (sec >= 60) sec = 0; min+; Showm(); if (min >= 60) min = 0; hour+; Showh(); if (hour >= 23) hour = 0; day+; if(day >=31) day = 1; mon+; if(mon >= 12) mon = 1; yea1+; Display_Time(106, 160);/时间 日期while(1);/*/*主 函 数*/*/void Main(void) Target_Init(); /系统初始化/ GUI_Init(); /图形初始化 OSInit();/操作系统初始化 OSTaskCreate(Task_1, (void *)0, (OS_STK *)&Stack_Task_1STACKSIZE - 1, 5); /创建任务

    注意事项

    本文(嵌入式系统项目设计课程设计报告基于LCD的电子时钟.doc)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开