嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx

上传人:b****2 文档编号:14738351 上传时间:2022-10-24 格式:DOCX 页数:11 大小:1,002.18KB
下载 相关 举报
嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx_第1页
第1页 / 共11页
嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx_第2页
第2页 / 共11页
嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx_第3页
第3页 / 共11页
嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx_第4页
第4页 / 共11页
嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx

《嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx》由会员分享,可在线阅读,更多相关《嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

嵌入式系统技术交底大全报告 哈工程 万年历文档格式.docx

时间日期设置功能,闹钟设置功能,整点报时功能

显示当日数功能,显示当月日历功能

支持触摸屏操作和小键盘输入

采用的工具法

UP-NETARM3000嵌入式开发平台

ADS1.2集成开发环境

JTAG仿真器驱动程序

超级终端通信程序

进度安排

第1天系统的初步设计

第2-5天编代码,实现系统功能

第6-7天系统的调试与完善

参考资料

[1]《基于ARM的嵌入式系统设计实验与实践教程》,清华大学出版社,2011.

[2]《嵌入式系统开发原理与实践》,清华大学出版社,2005.

[3]《ARM微处理器应用开发技术详解与实例分析》电子科技大学出版社,2007

1.题目

2.系统简介

二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的第三次革命。

使计时产品的走时日差从分级缩小到1/600万秒,从原有传统指针计时的式发展为人们日常更为熟悉的夜光数字显示式,直观明了,并增加了全自动日期、星期以及其他日常附属信息的显示功能,它更符合消费者的生活需求。

因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。

如今电子万年历飞入了寻常百姓家,挂式、台式以及带装饰画面等丰富的电子万年历数不胜数,不但满足了精准的计时需求,还将计时带上了科技时尚的味道。

ARM嵌入式技术可进行多种功能的设置,如闹钟、报时、日历查询、语音等;

并改善了很多原有英钟不能解决的问题,例如:

数字夜光显示、数据存储以及全自动温度检测等功能;

这给传统计时消费带来了新的动力,越来越多的消费者选择了电子万年历。

所以,我们这次嵌入式课程设计的题目选为电子万年历。

本数字万年历系统实现了以下功能:

1.显示年、月、日和时间,支持LED和LCD两种式显示;

2.时间显示式有两种:

文本式,图形式;

3.时钟加入背景图片,并且图片可以根据季节变化,整体界面美观;

4.能通过小键盘调节万年历的年、月、日、时、分、秒;

5.定时闹钟提醒功能和整点报时功能;

6.显示当月日历,显示当天星期功能;

7.掉电后无需重新设置时间和日期。

3.系统设计

本次设计是基于ARM微处理芯片并用ADS1.2开发完成的,该万年历能够显示年、月、日、星期、时、分、秒,还有闹钟和整点报时功能,并且可任意设定时间和日期。

显示年、月、日和时间的式均支持LED和LCD显示,时间的LCD显示式又分为两种,一种是文本式,另一种是图形式,再配上背景图片,界面非常美观。

它还支持触摸屏操作和小键盘,修改时间和日期可以通过小键盘来调节。

并且掉电后无需重新设置时间和日期。

本系统采用多任务设计。

除了系统已定义的任务外,再定义了Main_Task_Prio、Rtc_Disp_Task_Prio和LED_Display_Task_Prio三个任务,任务优先级分别为12、14和和11。

通过Main_Task_Prio任务中响应键盘和触摸屏消息,可以对时钟和闹钟进行设置。

通过Rtc_Disp_Task实现系统时钟和日历的显示和更新,并判断闹钟时间是否到达并做到达后的相应处理以及判断是否到达整点并进行整点报时。

通过LED_Display_Task_Prio实现LED对时间、日期的显示和更新。

使用多任务系统中的信号量保证多个任务同时对系统的一个资源(系统时钟)访问而不产生冲突。

3.1LED显示时间和日期

万年历启动后,按下“NumLock”按键可以切换LED显示日期或时间,其中年、月、日、时、分、秒均为2位数字,并且每两个数字之间用“-”隔开,并且其显示的时间和日期与LCD屏幕上的时间和日期保持一致,其实现函数是在任务LED_Display_Task_Prio中,任务实时获取系统当前的时间和星期存放于led_currenttime中,再根据显示时间或日期的标识符led_flag的数值来进入不同的分支以显示时间或日期,其中currenttime是一个自定义的结构体,它存放了当前时间的年、月、日、时、分、秒。

通过函数Get_Rtc(&

led_currenttime)取得当前的时间信息,并通过调用LED相关的API函数将时间显示出来,通过WriteSDIO(ZLG7289_CMD_DATA0|0)使得,第一个数码管亮,同样使用WriteSDIO(ZLG7289_CMD_DATA0|1)数码管以式0译码,第二个数码管亮,按照同样的法就可以使得其他数码管灯也亮。

最后用OSTimeDly(100)将任务挂起一段时间。

用这样的式实现LED显示时间和日期。

主要代码如下:

voidLED_Display_Task(void*Id)

{

structTimeled_currenttime;

Zlg7289_Reset();

//zlg7289复位

for(;

;

{

Get_Rtc(&

led_currenttime);

//获取当前时间

ZLG7289_ENABLE();

//使zlg7289占有同步串口

if(led_flag==0)

{//进入显示时间分支

Delay(5);

//延时

WriteSDIO(ZLG7289_CMD_DATA0|5);

//数码管以式0译码,第6个数码管亮

WriteSDIO(0x0a);

//显示-

Delay

(1);

WriteSDIO(ZLG7289_CMD_DATA0|2);

//数码管以式0译码,第3个数码管亮

WriteSDIO(ZLG7289_CMD_DATA0|7);

//数码管以式0译码,第8个数码管亮

WriteSDIO(led_currenttime.hour/16);

//显示十位

WriteSDIO(ZLG7289_CMD_DATA0|6);

//数码管以式0译码,第7个数码管亮

WriteSDIO(led_currenttime.hour%16);

//显示个位

WriteSDIO(ZLG7289_CMD_DATA0|4);

//数码管以式0译码,第5个数码管亮

WriteSDIO(led_currenttime.minute/16);

WriteSDIO(ZLG7289_CMD_DATA0|3);

//数码管以式0译码,第4个数码管亮

WriteSDIO(led_currenttime.minute%16);

WriteSDIO(ZLG7289_CMD_DATA0|1);

//数码管以式0译码,第2个数码管亮

WriteSDIO(led_currenttime.second/16);

WriteSDIO(ZLG7289_CMD_DATA0|0);

//数码管以式0译码,第1个数码管亮

WriteSDIO(led_currenttime.second%16);

}

elseif(led_flag==1)

{//进入显示日期分支

WriteSDIO(led_currenttime.year/16);

WriteSDIO(led_currenttime.year%16);

WriteSDIO(led_currenttime.month/16);

WriteSDIO(led_currenttime.month%16);

WriteSDIO(led_currenttime.day/16);

WriteSDIO(led_currenttime.day%16);

Delay

(1);

ZLG7289_DISABLE();

//zlg7289放弃同步串口控制?

OSTimeDly(200);

}

3.2LCD显示文本形式的系统时间、闹钟时间、日期和星期

LCD显示文本形式的时间和日期比较简单,时间、日期、星期和闹钟时间的显示都是用文本框显示的,并且时间要实时刷新,所以放在了Rtc_Disp_Task时钟刷新任务里面,其中时间文本框为pTimeTextCtrl,日期文本框为pDateTextCtrl,闹钟文本框为pAlarmTextCtrl,星期文本框为pWeekDayTextCtrl,只要在系统初始时,将文本框初始化,并且在Rtc_Disp_Task任务里面实时提取当前系统时间,以显示系统时间为例,获取当前系统时间的函数为Get_Rtc(&

currenttime),它把时间信息存入currenttime,然后将currenttime中的时间存入strtime,最后再用SetTextCtrlText(pTimeTextCtrl,strtime,TRUE)语句便将时间显示到系统时间文本框中,类似的其他文本框显示也是用这种式。

比较特殊的是星期的显示,需要先根据年月日计算出当前是几,然后再根据几设定显示的字符,其中计算星期的函数如下:

U8GetSysWeek(U8year,U8month,U8day)

U8y,m,d,w;

U8c=20;

y=(year>

>

4)*10+(year&

0x0f);

//bcd转dec

m=(month>

4)*10+(month&

d=(day>

4)*10+(day&

if(m<

2)

{

m+=12;

y-=1;

}

w=y+(y/4)+(c/4)+(26*(m+1)/10)+d-1-(2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

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

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