数字电子钟课程设计基于ARM的简易电子闹钟设计_第1页
数字电子钟课程设计基于ARM的简易电子闹钟设计_第2页
数字电子钟课程设计基于ARM的简易电子闹钟设计_第3页
数字电子钟课程设计基于ARM的简易电子闹钟设计_第4页
数字电子钟课程设计基于ARM的简易电子闹钟设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计课程名称 嵌入式课程设计题目名称基于ARM的简易电子闹钟设计专业班级 11级电子信息本科2班学生姓名学 号指导教师二一四年六月八日目 录蚌埠学院课程设计任务书- 1 -分工协作说明(以列表形式具体说明每个人所做的工作)- 4 -蚌埠学院计算机科学与技术系本科课程设计成绩评定表- 5 -摘要- 6 -第一章 时钟设计- 7 -1.1 课题目标- 7 -1.2 程序和芯片初始化- 7 -1.3 构建功能模块- 8 -1.4 实现信息的传递- 10 -第二章 实验结果讨论- 11 -2.1 软件的编译,连接和运行- 11 -2.2 protues 7.4仿真软件调试- 12 -第三章 结 论

2、- 13 -心得体会- 14 -参考文献- 15 -附 录- 16 -成品展示- 16 -源程序- 17 -蚌埠学院课程设计任务书计算机科学与技术系2011级电子信息科学与技术2班学生姓名朱明羽学 号51102022009课题名称基于ARM芯片的电子钟设计一、 课程设计的主要内容与要求(任务及背景、着重培养的能力、成果形式) (1)随着科技的发展,嵌入式系统广泛应用于工业控制和商业管理领域,在多媒体手机、袖珍电脑、掌上电脑、车载导航器等方面的应用,更是极大地促进了嵌入式技术深入到生活和工作各个方面。(2)嵌入式系统主要由嵌入式处理器、相关支撑硬件及嵌入式软件系统组成;本文介绍基于ARM7的嵌入

3、式微处理器S3C44BOX和LCD显示器的电子时钟的设计。(3)本课程设计设计一种基于ARM7的嵌入式微处理器S3C44B0X和LCD显示器的电子时钟,实现电子时钟的功能,并在LCD上显示类似的时钟界面;动态显示当前的时间,包括:年、月、日、时、分、秒,时针。二、课程设计的基本要求1、收集、整理与课程设计有关领域的信息资料; 2、完成本课程设计方案和结构框图的设计; 3、完成本课程设计电路原理图设计。4、完成本课程设计程序流程图和汇编语言源程序设计5、完成软件和硬件系统的调试,功能指标达到技术要求;6、程序清单和图样资料;7、作品及照片;8、形成符合学校规定的课程设计书面文档;二、设计(论文)

4、需要的工作条件软件环境:ADS1.2,Protel等软件硬件环境:计算机、电子元件(电阻,电容集成芯片等),Led显示灯、电路板,S3C44B0X等。三、应收集的资料及主要参考文献1王勇嵌入式系统原理与设计M杭州:浙江大学大学出版社,20072耿辉等S3C44B0X的LCD显示解决方案 中国科技论文在线,2007. 3SAMSUNG公司. S3C44B0X数据手册. ,2006. 4EL-ARM-830 实验系统的资源介绍,2000.5林志琦等ARM微控制器与液晶屏接口的研究J长春大学学报,2010,20(2):7174.6周立功单片机公司. ADS集成开发环境及EasyJTAG仿真器应用,2

5、005.四、进度计划及指导安排2014年4月30日:下发任务书,相关资料准备和查阅相关文献。2014年5月5日- 19日:开展课程设计研究与指导工作,并撰写论文。2014年5月21日:修改设计成果、论文初步完成。2014年6月2日前:完善课程设计成果,设计论文第二、三稿修订。2014年6月16日: 毕业设计成果完成,毕业论文定稿,并打印4本纸质版交指导教师。期间主要指导学生8次:2014年4月、2014年5月、2014年6月。任务书审定日期:2014年4月28日指导教师(签字)任务书批准日期:2014年4月30日 教研室主任(签字)任务书下达日期:2014年4月30日 学 生 (签字)分工协作

6、说明(以列表形式具体说明每个人所做的工作)课题名称学生姓名学 号所做工作简易电子闹钟的设计汪荣誉51102022030程序编程、搜集相关资料、软件调试张先明51102022001程序编程、搜集相关资料、软件调试张万双51102022004程序编程、搜集相关资料、软件调试章小羞51102022012程序编程、实验记录、搜集相关资料王成龙51102022017程序编程、实验记录、试验箱的采购、搜集相关资料汲志鹏51102022026程序编程、搜集相关资料、实验拍照人员陈伟强51102022006仿真图设计、搜集相关资料、实物仿真王相51102022010仿真图设计、搜集相关资料、实物仿真朱明羽51

7、102022009仿真图设计、搜集相关资料、实物仿真李小刚51102022028仿真图设计、搜集相关资料、实物仿真张家军51102022025仿真图设计、搜集相关资料、实物仿真蚌埠学院计算机科学与技术系本科课程设计成绩评定表项目权重分值具体要求得分文献阅读与调查论证0.20100能独立查阅文献和从事其它调研;有收集、加工各种信息的能力设计质量0.30100设计合理、功能齐备,程序运行正常,实验数据准确可靠;有较强的实际动手能力论文撰写质量0.20100设计说明书完全符合规范化要求,用A4复印纸打印成文学习态度0.20100学习态度认真,科学作风严谨,严格按要求开展各项工作,按期完成任务学术水平

8、与创新0.10100设计有创意,有一定的学术水平或实用价值总分评语:等级: 指导教师:年月日摘要 实时时钟(RTC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。随着集成电路技术的不断发展,RTC器件的新品也不断推出。这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用

9、于以微控制器为核心的嵌入式系统。第一章 时钟设计1.1 课题目标 利用ARM 7芯片和LCD显示器,通过C语言编译,完成实时时钟(RTC)的显示。1.2 程序和芯片初始化 程序中包括:Lcd的初始化:中断向量的初始化:RTC的初始化:1.3 构建功能模块Lcd显示的时钟界面包括:静止不动的圆形钟面和一直在走动的时钟指针。所以需要构建两个重要的函数实现画圆和画直线。以下为画圆函数:该算法是通过X变量的自增,补偿1 修正正方形控制Y变量自减,找到距中心恒定距离的点,其中rs=45,X自0加1增至45。和原点坐标运算,可以在第一象限找到一点,再通过折叠对称找到其他象限的三个点,通过画点函数描绘出。再

10、画他的45度镜像就好了。画线函数:void line(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2,unsigned char draw)以中心的坐标为起点,使用while函数与指针最外圈的点比较,不断延长直至相等,所以事先计算出时针,分针和秒针三个同心圆最外圈点的坐标,以便带入函数。也同圆类似,要考虑不同象限点的情况,根据不同的位置带参数到画点函数中描绘。1.4 实现信息的传递画点函数:数据传递函数:与通用可编程输入输出口(General Programable Input Output)相连,把计算的数据传递

11、给Lcd显示。第二章 实验结果讨论2.1 软件的编译,连接和运行 构建完整的程序:添加头文件,中断处理汇编程序段,初始化函数和主函数:编译器提示:成功生成所需Hex文件,将得到的Hex文件导入仿真芯片中,观察实时时钟。2.2protues 7.4仿真软件调试 为Lpc 2104 芯片选择Hex文件路径:连接芯片与LCD端口,运行程序,观察效果。显示如下时钟界面: 动态显示当前的时间,包括:年、月、日、时、分、秒,时针、分针和秒针为动态实时指示当前的时间。第三章 结 论综合效果图:以上为protues部分设计的,ads程序见附录。心得体会回顾起此次课程设计,至今我仍感慨颇多,从理论到实践,我学到

12、很多很多的东西,不仅巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的内容。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才是真正的知识,才能提高自己的实际动手能力和独立思考的能力。在设计的过程遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,通过这次课程设计,把以前所学过的知识重新温故,巩固了所学的知识。参考文献1 谢自美,电子线路设计、实验、测试,华中理工大学出版社,2003。2 宋春荣,通用集成电路速查手册,山东科学技术出版社,

13、1995。3 Arnold Berger,嵌入式系统设计,吕骏 译, 北京:电子工业出版社, 20024 桑楠. 嵌入式系统原理及应用开发技术,北京:北京航空航天大学出版社, 2002 附 录成品展示源程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1=P10; sbit key2=P11;sbit key3=P12;sbit key4=P13;sbit lcden=P22; sbit lcdrs=P20;sbit lcdrw=P21;sbit jdq=P23;sbit l

14、ed=P24; sbit sound=P25;int a,b,i,min,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,ahourge,ahourshi,sec,secshi,secge;/unsigned char code x=0xFF,0xC7,0x83,0x01,0x00,0x00,0x00,0x01,0x03,0x07,0x0F,0x1F,0x3F,0x7F,0xFF,0xFF;/unsigned char code z=0xFF,0xE3,0xC1,0x80,0x00,0x00,0x00,0x80,0xC0,0

15、xE0,0xF0,0xF8,0xFC,0x7F,0xFF,0xFF;uchar code table1='0','1','2','3','4','5','6','7','8','9'uchar code table2="Time:00:00:00 "uchar code Alarm_1="Alarm:00:00 "uchar code nul=" "uchar num1,num

16、2;bit flag=0;void delay(unsigned int xms)/延时程序uint i,j; for(i=xms;i>0;i-) for(j=124;j>0;j-);void write_com(uchar com) /LCD命令控制,写指令函数delay(5) ;lcdrs=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_data(uchar date) /LCD数据控制,写数据函数delay(5);lcdrs=1;P0=date;delay(5);lcden=1;delay(5);lcden=0;vo

17、id time()/设置时间函数 while(1)if(key1=0) delay(10);if(key1=0)if(hour=23) /"时"设置hour=0;elsehour+;hourge=hour%10;hourshi=hour/10;write_com(0x0f);delay(2);write_com(0x80+6);write_data(table1hourge); /"时"个位写入LCD第二行第6位delay(5);write_com(0x80+5);delay(2);write_data(table1hourshi); /"时&

18、quot;十位写入LCD第二行第5位while(!key1);/delay(1);if(key2=0) delay(10);if(key2=0)if(min=59)/"分"设置min=0;elsemin+;minge=min%10;minshi=min/10;write_com(0x0f);write_com(0x80+9);write_data(table1minge); /"分"个位写入LCD第二行第9位delay(1);write_com(0x80+8);write_data(table1minshi); /"分"十位写入LCD

19、第二行第8位delay(1);while(!key2); if(key3=0) delay(10);if(key3=0)write_com(0x0c); /整体显示,关光标,不闪烁TR1=1; /定时计数器1启动while(!key3);break; /key3松开时,显示时间"时""分"位均已设置完毕 void alarm()/设置闹钟时间函数 while(1)if(key1=0) delay(10);if(key1=0)if(ahour=23)/闹钟"时"设置ahour=0;elseahour+;ahourge=ahour%10;

20、ahourshi=ahour/10;write_com(0x0f);/delay(2);write_com(0x80+0x40+8);write_data(':');write_com(0x80+0x40+7);write_data(table1ahourge);delay(1);write_com(0x80+0x40+6);/delay(2);write_data(table1ahourshi);delay(1);while(!key1);if(key2=0) /闹钟"分"设置 delay(10);if(key2=0)if(amin=59)amin=0;e

21、lseamin+;aminge=amin%10;aminshi=amin/10;write_com(0x0f);/delay(2);write_com(0x80+0x40+10);write_data(table1aminge);delay(1);write_com(0x80+0x40+9);/delay(2);write_data(table1aminshi);delay(1);while(!key2); if(key3=0) flag=flag; delay(10);if(key3=0)write_com(0x0c);write_com(0x80+0x40);for(i=0;i<11

22、;i+)write_data(nuli);while(!key3);break; /设置结束,此时LCD第二行无数据显示,只有第一行有时间显示 void keyscan()/键盘扫描 if(key1=0) delay(10);if(key1=0)while(!key1); /key1键松开后执行下一行程序time(); /调用time()函数,即时间设置 else if(key2=0) delay(10);if(key2=0)while(!key2)ahourge=ahour%10;ahourshi=ahour/10;write_com(0x80+0x40+7);write_data(tabl

23、e1ahourge);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi);aminge=amin%10;aminshi=amin/10;write_com(0x80+0x40+10);write_data(table1aminge);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_1i); /显示闹钟设置的时间wr

24、ite_com(0x80+0x40);for(i=0;i<11;i+)write_data(nuli); /key2松开后,LCD只有第一行显示时间,闹钟设置时间不显示 else if(key3=0) delay(10);if(key3=0)while(!key3); /表示闹钟时间设置退出 ahourge=ahour%10;ahourshi=ahour/10;write_com(0x80+0x40+7);write_data(table1ahourge);delay(5);write_com(0x80+0x40+6);delay(2);write_data(table1ahourshi

25、);aminge=amin%10;aminshi=amin/10;write_com(0x80+0x40+10);write_data(table1aminge);delay(5);write_com(0x80+0x40+9);delay(2);write_data(table1aminshi);write_com(0x80+0x40);for(i=0;i<11;+i)write_data(Alarm_1i);/显示闹钟设置时间alarm(); /调用闹钟时间设置函数 else if(key4=0)/以下进行闹铃开关的设置 delay(5);if(key4=0) while(!key4)

26、;a=a+1;if(a%2=0) /闹钟"on"for(b=0;b<6;b+)sound=sound; /蜂鸣器发出3次"哗"的响声delay(200);sound=1;else if(a%2=1) /闹钟"off"sound=0; /蜂鸣器发出1次"哗"的响声delay(300);sound=1;delay(300); sound=1; void lcd_init() /LCD初始化函数lcden=0;lcdrw=0;write_com(0x38); /设置8位格式,2行,5×7write_com

27、(0x0c); /整体显示,关光标,不闪烁write_com(0x06); /设定输入方式,增量不转移write_com(0x01); /清除屏幕显示delay(2);write_com(0x80);for(i=0;i<16;i+)write_data(table2i); /写入显示时间数据delay(1);void judge()if(sec=60)min+;sec=0;if(min=60)hour+;min=0;if(hour=24)hour=0;void init()/AT89C51初始化函数key1=1;key2=1;key3=1;key4=1;sec=0;a=0;sound=1;amin=-1; /四个按键均未按下,闹钟时间"分"的初值为1(防止仿真图刚启动时,就达到闹钟时间,蜂鸣器发出响声)/led=1;TMOD=0x10; /定时计数器T1、T2均工作在方式1TH1=0x3C;TL1=0xB0; /计数初值为15536EA=1;ET1=1;TR1=1; /定时计数器T1启动void equa()if(ami

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论