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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

嵌入式课程设计报告具有日历功能电子时钟.docx

1、嵌入式课程设计报告具有日历功能电子时钟嵌入式系统开发课程设计专周报告题目:具有日历功能的电子时钟系别及专业:计算机工程系 计算机应用技术班级:10511学生姓名:权胜(14) 王希(05) 严家强(23)指导老师:宋国明完成时间:2012-12-24/2012-12-28课程设计(报告)、课程设计题目:具有日历功能的电子时钟、课程设计步骤及内容一、课程设计目标 1、培养综合运用知识和独立开展实践创新的能力;2、培养学生将理论知识与实际应用结合在一起;3、培养学生的自我学习能力和解决问题的能力;4、培养学生的协作意识和团队合作能力;5、培养学生的总结经验的能力。二、研究方法及手段应用1、问题解决

2、模块化,将任务分成若干模块,分模块调试和完成任务;2、查阅网上的相关素材,查阅相关论文资料,进行比较、研究;3、在独立思考的基础上,请教老师,和同组同学讨论、学习;4、反复调试、总结经验、排除差错;5、连接PC和EDUKIT-III ARM嵌入式开发实验箱,完成整个实验环境搭建;6、运用Vision4和超级终端软件进行软件编译和进行调试查看;7、使用ULINK2仿真器下载至实验箱进行观察、调试。三、课程设计预期效果1、程序启动后,蜂鸣器响三声,8位LED数码管显示初始值“0”,1秒后显示当前日期和时间,日期格式:*年*月*日,时间格式:*(星期)-*时*分*秒。PC机超级终端同时显示相关的信息

3、。2、按下“D”键,可进行日期、时间的修改、设置:有按键时,把键值显示到最右侧,后续按键时,把以前的按键左移,把当前按键值显示到最右侧数码管。设置完毕后,按“FUN”键确认,退出设置,时钟显示修改后的时间。3、显示控制和闹钟设置:按键“*”,进行数码管闪烁/不闪烁的切换。按键“A”,设置闹钟时间。时间到达后,闹铃(蜂鸣器)响,按“FUN”键,关闭闹铃。按键设置时,PC的超级终端显示相应的提示信息,同时把所按的键值,通过串口发送到超级终端显示。4、闹铃声音频率及音量控制:按下“B”键时,进入闹铃声音的设置。采集AIN2的ADC值,根据ADC的值,控制蜂鸣器的声音频率。控制PWM1的频率。(为10

4、0Hz 至1KHz,最低值和最高值可以根据实际效果调整)。并把实际调整的频率打印到超级终端,如“100Hz”。采集AIN1的ADC值,根据ADC的值,控制蜂鸣器的音量。控制PWM1的占空比。(为0% 至100%,最低值和最高值可以根据实际效果调整).并把实际调整的占空比打印到超级终端上,如“50%”。按“FUN”键结束设置。学生姓名: 权胜 王希 严家强 专业年级: 计算机应用技术10511 前 言近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、网络、工控、医疗、电子等领域发挥着越来越重要的作用。嵌入式系统无疑成为当前最热门最有发展前途的IT应用领域之一。 实时时钟(R

5、TC)器件是一种能提供日历/时钟、数据存储等功能的专用集成电路,常用作各种计算机系统的时钟信号源和参数设置存储电路。RTC具有计时准确、耗电低和体积小等特点,特别适用于在各种嵌入式系统忠记录事件发生的时间和相关信息,尤其是在通信工程、电力自动化、工业控制等自动化程度较高领域的无人职守环境。随着集成电路技术的不断发展,RTC器件的新品也不断推出。这些新品不仅具有准确的RTC,还有大容量的存储器、温度传感器和A/D数据采集通道等,已成为集RTC、数据采集和存储于一体的综合功能器件,特别适用于以微控制器为核心的嵌入式系统。 关键字:嵌入式系统、实时时钟RTC第一章系统设计第一节课题目标及总体方案随着

6、嵌入式技术的发展,我们身边充斥着各类各样的嵌入式电子产品。实时时钟(RTC)就是一种在现代电子设备中应用非常普遍,可以帮助人们实时、准确的掌握时间的器件,如手机、PDA及一些智能仪表都提供了时钟显示。我们本次课题的目标就是要基于SAMSUNG S3C2410AL-20芯片设计出一个实时时钟,编写C语言可以通过Vision4和超级终端软件调试,然后通过ULINK2仿真器下载至实验箱内进行观察。在试验箱中的LED显示灯上显示出时间和日历。另外,我们将要实现的系统分为三个模块实现,每个模块间相对独立而又相互联系。 第二节项目设计模块描述及流程图1.模块描述:我先进行了整个系统的规划,将整个系统分为两

7、大模块:第一,主函数模块;第二,功能实现模块(进行时间和闹钟的设定,以及其他一些显示功能);第三,闹钟功能实现模块。 2.总体设计流程图:3、功能设计流程图4、闹钟功能程序流程图一、主函数模块int i; int main(int argc,char *argv)sys_init(); /初始化系统 iic_init_8led(); /初始化8个led灯 for(i=0;i8;i+) iic_write_8led(0x70, 0x10+i,0xfc); /8个灯全0 for(i=0;i29|ucChar=0) iic_init_8led(); while(1) if(rBCDYEAR=0x99

8、) /获取系统日期及时间 g_nYear = 0x1999; else g_nYear = 0x2000 + rBCDYEAR; g_nMonth = rBCDMON; g_nWeekday = rBCDDAY; g_nDate = rBCDDATE; g_nHour = rBCDHOUR; g_nMin = rBCDMIN; g_nSec = rBCDSEC; if(g_nSec!=nTmp) / 相同时间不显示 节约资源 nTmp = g_nSec; break; 3、*键功能实现 if(st2=1) /按*键执行闪烁 for(a=0;a8;a+) iic_write_8led(0x70,

9、0x10+a,0x00); /8个灯熄灭 delay(1000);/延时1s display_Time(); /再显示 else display_Time();/未按下不变 4、按键判断函数void display(void) if(ucChar=0x01) /判断是否按下0键 uart_printf(n按键0,数码管显示时间:n); rtc_display1();/显示时间函数 else if(ucChar=0x02) /判断是否按下1键 uart_printf(n按键1,数码管显示日期:n); rtc_display2();/显示日期函数 else if(ucChar=0x14) /判断是

10、否按下D键 uart_printf(n按下键D,进入日期设置,请先输入日期(格式 年年年年月月日日)。输入完成后按fun键确认。n); setDate();/设置时间函数 else if(ucChar=0x1c) /判断是否按下*键 if(st3=1) /若按下*键,数码管闪烁显示 uart_printf(n按下键*,数码管停止闪烁显示。n); st3=0; ss(); /调用闪烁/不闪烁切换 else /再次按下*键,数码管停止闪烁 uart_printf(n按下键*,数码管闪烁显示。n); st3=1; ss(); else if(ucChar=0x11) /判断是否按下A键 uart_p

11、rintf(n按下键A,设置闹钟。请输入闹钟时间,按fun键确认。n); isAlam=1;/已设置了闹钟 alam_jiao();/调用闹铃函数 else if(st1=1) /判断当前是否显示时间,调用显示时间函数 rtc_display1(); else if(st1=2) /判断当前是否显示日期,调用显示日期函数 rtc_display2(); 5、时间及日期设置函数void setDate(void) int i,u; ucChar=0; for(u=0;u8;u+) iic_write_8led(0x70,0x10+u,0x00); /灯灭 i=0; while(1) iic_in

12、it_8led(); while(g_nKeyPress-) keyboard_init(); g_nKeyPress = 0;/按键值置0 while(g_nKeyPress = 0);/空循环,等待有键按下 iic_read_keybd(0x70, 0x1, &ucChar); if(i=8|i=17) /判断日期和时间输入完成 while(1) while(g_nKeyPress-) keyboard_init(); g_nKeyPress=0; while(g_nKeyPress=0); iic_read_keybd(0x70, 0x1, &ucChar); ucChar=key_se

13、t(ucChar); if(ucChar=0xff) /按下FUN键确认 if(i=8) uart_printf(n完成日期设置,继续设置时间(格式 星期-时时分分秒秒)n); else uart_printf(n完成时间设置。n); i+; break; if(i=9|i=18)/输入超出,跳出程序 break; if(ucChar != 0)/判断是否有键按下,并对应LED灯8位按位显示 ucChar= key_set(ucChar); switch(i) case 0: iic_write_8led(0x70, 0x10+4, numucChar); g_nYear=ucChar*409

14、6; /设置年 i+; break; case 1: iic_write_8led(0x70, 0x10+5, numg_nYear/4096); iic_write_8led(0x70, 0x10+4, numucChar); g_nYear=g_nYear+ucChar*256; i+; break; case 2: iic_write_8led(0x70, 0x10+6, numg_nYear/4096); iic_write_8led(0x70, 0x10+5, numg_nYear/256%16); iic_write_8led(0x70, 0x10+4, numucChar); g

15、_nYear=g_nYear+ucChar*16; i+; break; case 3: iic_write_8led(0x70, 0x10+7, numg_nYear/4096); iic_write_8led(0x70, 0x10+6, numg_nYear/256%16); iic_write_8led(0x70, 0x10+5, numg_nYear/16%16); iic_write_8led(0x70, 0x10+4, numucChar); g_nYear=g_nYear+ucChar; i+; break; case 4: iic_write_8led(0x70, 0x10+0

16、, numg_nYear/4096); iic_write_8led(0x70, 0x10+7, numg_nYear/256%16); iic_write_8led(0x70, 0x10+6, numg_nYear/16%16); iic_write_8led(0x70, 0x10+5, numg_nYear%4096%256%16); iic_write_8led(0x70, 0x10+4, numucChar); g_nMonth=ucChar*16;/设置月 i+; break; case 5: iic_write_8led(0x70, 0x10+1, numg_nYear/4096)

17、; iic_write_8led(0x70, 0x10+0, numg_nYear/256%16); iic_write_8led(0x70, 0x10+7, numg_nYear/16%16); iic_write_8led(0x70, 0x10+6, numg_nYear%4096%256%16); iic_write_8led(0x70, 0x10+5, numg_nMonth/16); iic_write_8led(0x70, 0x10+4, numucChar); g_nMonth= g_nMonth+ucChar; i+; break; case 6: iic_write_8led

18、(0x70, 0x10+2, numg_nYear/4096); iic_write_8led(0x70, 0x10+1, numg_nYear/256%16); iic_write_8led(0x70, 0x10+0, numg_nYear/16%16); iic_write_8led(0x70, 0x10+7, numg_nYear%4096%256%16); iic_write_8led(0x70, 0x10+6, numg_nMonth/16); iic_write_8led(0x70, 0x10+5, numg_nMonth%16); iic_write_8led(0x70, 0x1

19、0+4, numucChar); g_nDate=ucChar*16;/设置日 i+; break; case 7: iic_write_8led(0x70, 0x10+3, numg_nYear/4096); iic_write_8led(0x70, 0x10+2, numg_nYear/256%16); iic_write_8led(0x70, 0x10+1, numg_nYear/16%16); iic_write_8led(0x70, 0x10+0, numg_nYear%4096%256%16); iic_write_8led(0x70, 0x10+7, numg_nMonth/16

20、); iic_write_8led(0x70, 0x10+6, numg_nMonth%16); iic_write_8led(0x70, 0x10+5, numg_nDate/16); iic_write_8led(0x70, 0x10+4, numucChar); g_nDate=g_nDate+ucChar; i+; break; case 9: for(u=0;u8;u+) iic_write_8led(0x70,0x10+u,0x00);/8个灯灭 i+; break; case 10: iic_write_8led(0x70, 0x10+5, numucChar); iic_wri

21、te_8led(0x70, 0x10+4, 0x02); g_nWeekday=ucChar;/设置星期 i+; break; case 11: iic_write_8led(0x70, 0x10+6, numg_nWeekday); iic_write_8led(0x70, 0x10+5, 0x02); iic_write_8led(0x70, 0x10+4, numucChar); g_nHour=ucChar*16;/设置小时 i+; break; case 12: iic_write_8led(0x70, 0x10+7, numg_nWeekday); iic_write_8led(0

22、x70, 0x10+6, 0x02); iic_write_8led(0x70, 0x10+5, numg_nHour/16); iic_write_8led(0x70, 0x10+4, numucChar); g_nHour=g_nHour+ucChar; i+; break; case 13: iic_write_8led(0x70, 0x10+0, numg_nWeekday); iic_write_8led(0x70, 0x10+7, 0x02); iic_write_8led(0x70, 0x10+6, numg_nHour/16); iic_write_8led(0x70, 0x1

23、0+5, numg_nHour%16); iic_write_8led(0x70, 0x10+4, numucChar); g_nMin=ucChar*16;/设置分钟 i+; break; case 14: iic_write_8led(0x70, 0x10+1, numg_nWeekday); iic_write_8led(0x70, 0x10+0, 0x02); iic_write_8led(0x70, 0x10+7, numg_nHour/16); iic_write_8led(0x70, 0x10+6, numg_nHour%16); iic_write_8led(0x70, 0x1

24、0+5, numg_nMin/16); iic_write_8led(0x70, 0x10+4, numucChar); g_nMin=g_nMin+ucChar; i+; break; case 15: iic_write_8led(0x70, 0x10+2, numg_nWeekday); iic_write_8led(0x70, 0x10+1, 0x02); iic_write_8led(0x70, 0x10+0, numg_nHour/16); iic_write_8led(0x70, 0x10+7, numg_nHour%16); iic_write_8led(0x70, 0x10+

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

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