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

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

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

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

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

    嵌入式零碎开发之杨若古兰创作课程设计专周陈述课程设计(陈述)I、课程设计题目:具有日历功能的电子时钟题目:具有日历功能的电子时钟系别及专业:计算机工程系 计算机利用技术班级:10511先生姓名:权胜(14)王希(05)严家强(23)完成时间:2012-12-24/2012-12-28皿、课程设计步调及内容一、课程设计目标1、培养综合应用常识和独立开展实践创新的能力;2、培养先生将理论常识与实际利用结合在一路;3、培养先生的自我进修能力和解决成绩的能力;4、培养先生的协作认识和团队合作能力;5、培养先生的总结经验的能力.二、研讨方法及手段利用1、成绩解决模块化,将任务分成若干模块,分模块调试和完成任务;2、查阅网上的相干素材,查阅相干论文材料,进行比较、研讨;3、在独立思考的基础上,请教老师,和同组同学讨论、进修;4、反复调试、总结经验、排除错误;5、连接PC和EDUKIT-III ARM 嵌入式开发实验箱,完成全部实验 环境搭建;6、应用Vision4和超等终端软件进行软件编译和进行调试检查;7、使用ULINK2仿真器下载至实验箱进行观察、调试.三、课程设计预期后果1、程序启动后,蜂鸣器响三声,8位LED 数码管显示初始值“0”,1秒后显示当前日期和时间,日期格式:*年*月*日,时间格式:* (礼拜)-*时*分*秒.PC机超等终端同时显示相干 的信息.2、按下“D”键,可进行日期、时间的点窜、设置:有按键时,把 键值显示到最右边,后续按键时,把之前的按键左移,把当前按键值显示到最右边数码管.设置终了后,按“FUN”键确认,退出 设置,时钟显示点窜后的时间.3、显示控制和闹钟设置:按键“*”,进行数码管闪烁/不闪烁的切换.按键“A”,设置闹钟时间.时间到达后,闹铃(蜂鸣器)响,按 “FUN ”键,关闭闹铃.按键设置时,PC的超等终端显示响应的提示信息,同时把所按的 键值,通过串口发送到超等终端显示.4、闹铃声音频率及音量控制:按下“B”键时,进入闹铃声音的设置.收集AIN2的ADC值,根据ADC的值,控制蜂鸣器的声音频率. 控制PWM1的频率.(为100Hz至1KHz,最低值和最高值可以才艮据 实际后果调整).并把实际调整的频率打印到超等终端,如“100Hz”.收集AIN1的ADC值,根据 ADC的值,控制蜂鸣器的音量.控制 PWM1的占空比.(为0%至100%,最低值和最高值可以根据实际后 果调整).并把实际调整的占空比打印到超等终端上,如“50%”.按“FUN”键结束设置.先生姓名:权胜王希严家强专业年级:计算机利用技术 10511目录近年来,随着计算机技术及集成电路技术的发展,嵌入式技术日渐普及,在通讯、收 集、工控、医疗、电子等领域发挥着愈来愈主要的感化.嵌入式零碎无疑成为当前最热门最 有发展前途的IT利用领域之一.实时时钟(RTC )器件是一种能提供日历/时钟、数据存储等功能的公用集成电路,经常使用 作各种计算机零碎的时钟旌旗灯号源和参数设置存储电路.RTC具有计时精确、耗电低和体 积小等特点,特别适用于在各种嵌入式零碎忠记录事件发生的时间和相干信息,特别是在通 信工程、电力主动化、工业控制等主动化程度较高领域的无人职守环境.随着集成电路技术 的不竭发展,RTC器件的新品也不竭推出.这些新品不但具有精确的RTC,还有大容量的存储 器、温度传感器和A/D数据收集通道等,已成为集RTC、数据收集和存储于一体的综合功能 器件,特别适用于以微控制器为核心的嵌入式零碎.关键字:嵌入式零碎、实时时钟RTC第一章零碎设计第一节课题目标及整体方案随着嵌入式技术的发展,我们身边充斥着各类各样的嵌入式电子产品.实时时钟(RTC)就 是一种在古代电子设备中利用非常普遍,可以帮忙人们实时、精确的把握时间的器件,如手 机、PDA及一些智能仪表都提供了时钟显示.我们本次课题的目标就是要基于SAMSUNG S3C2410AL-20芯片设计出一个实时时钟,编 写C说话可以通过uVision4和超等终端软件调试,然后通过ULINK2仿真器下载至实验箱 内进行观察.在试验箱中的LED显示灯上显示出时间和日历.另外,我们将要实现的零碎分为 三个模块实现,每个模块间绝对独立而又彼此联系.第二节项目设计模块描述及流程图1. 模块描述:我进步前辈行了全部零碎的规划,将全部零碎分为两大模块:第一,主函数 模块;第二,功能实现模块(进行时间和闹钟的设定,和其他一些显示功能);第三,闹钟 功能实现模块.2. 整体设计流程图:3、功能设计流程图4、闹钟功能程序流程图一、主函数模块int i;int main(int argc,char *argv) sys_init();/初始化零碎iic_init_8led();/初始化 8 个 led 灯 for(i=0;i<8;i+) iic_write_8led(0x70, 0x10+i,0xfc);/8 个灯全 0 for(i=0;i<3;i+) jiao();/调用发声函数 delay(5000);uart_printf("欢迎使器具有日历功能的电子时钟n请根据提示按键操纵n0键:显示时钟 n1键:显示日期nA键:设置闹钟nD键:设置日期时间n*键:数码管闪烁/不闪烁的切 换n");rtc_init(); 实时时钟初始化rtc_display1(); 显示时间while(1)rtc_init();display();二、功能实现模块1、8个LED灯的按位对应显示程序void display_Time(void)/对应到 8 个 LED 灯按位显示iic_init_8led();/显示时间iic_write_8led(0x70, 0x10+0, numg_nHour%16);iic_write_8led(0x70, 0x10+1, numg_nHour/16);iic_write_8led(0x70, 0x10+2, 0x02);iic_write_8led(0x70, 0x10+3, numg_nWeekday);iic_write_8led(0x70, 0x10+4, numg_nSec%16);iic_write_8led(0x70, 0x10+5, numg_nSec/16);iic_write_8led(0x70, 0x10+6, numg_nMin%16);iic_write_8led(0x70, 0x10+7, numg_nMin/16);void display_data(void)iic_init_8led();/显示日期iic_write_8led(0x70, 0x10+0, numg_nYear%4096%256%16);/取个位iic_write_8led(0x70, 0x10+1, numg_nYear/16%16);/取十位iic_write_8led(0x70, 0x10+2, numg_nYear/256%16);/取百位iic_write_8led(0x70,0x10+3,numg_nYear/4096);/取千位iic_write_8led(0x70,0x10+4,numg_nDate%16);iic_write_8led(0x70,0x10+5,numg_nDate/16);iic_write_8led(0x70,0x10+6,numg_nMonth%16);iic_write_8led(0x70,0x10+7,numg_nMonth/16);)2、获取零碎时间void rtc_display1(void)int a;INT32T nTmp;rRTCCON = 0x01;ucChar=0;st1=1; /代表正在显示时钟st1二2代表正在显示日期while(ucChar>29|ucChar<=0) iic_init_8led();while(1) if(rBCDYEAR=0x99) 获取零碎日期及时间 g_nYear = 0x1999; elseg_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;a<8;a+)iic_write_8led(0x70,0x10+a,0x00); /8 个灯熄灭delay(1000);/延时 1sdisplay_Time();/再显示elsedisplay_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) /判断是否按下 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_printf("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;u<8;u+)iic_write_8led(0x70,0x10+u,0x00); /灯灭i=0;while(1)iic_init_8led();while(g_nKeyPress-)keyboard_init();g_nKeyPress = 0;/按键值置 0while(g_nKeyPress = 0);/空轮回,等待有键按下iic_read_keybd(0x70, 0x1, &ucChar);if(i=8|i=17)/判断日期和时间输入完成while(g_nKeyPress-) keyboard_init();g_nKeyPress=0;while(g_nKeyPress=0);iic_read_keybd(0x70, 0x1, &ucChar);ucChar=key_set(ucChar);if(ucChar=0xff) /按下 FUN 键确认:(jeqgoniunu:(9l%9l/e9/kuFujnu:(91%9G乙/JC9人uFiunu-(960*/巳9人uFiunu:p 9seo Woq:+!f Jeqgon+Je9xu-S-Je9xu-S t+Olxo '9+0 lx。'9+0 lx。7+0 Lx0:(jeqgoniunu:(91%9G乙/JC9人uFiunu-(960*/巳9人uFiunu:(jeqgoniunu-(960*/巳9人uFiunu'02/0冲9|8一S! JmF! !'02/0冲9|8一S! JmF! !'02/0冲9|8一S! JmF! !'02/0冲9|8一S! JmF! !:£ 9SB0Woq:+!:9 l*ei|0on+e9 人 LT3 二e。人 LT3 '*+0 Lx0 40Zx0) P91 厂S!小一。I I '9+0 ixo 'oxo)P9|8S! JmF! ! '9+0 lx。'OZXO)P9|8S! JmF! !:乙 9seoWoq:+!?9G乙*eq0on+e9人 LT3二e。人 LT3 t+Olxo '9+0 lx。'02/0冲9|8一S! JmF! !'02/0冲9|8一S! JmF! !:i 9seoW9q:+!960l7*qoon-je9AU-Sr»/-(JeMOoniunu t+oix。40Zx0) ps 189! JM-°! !:0 9seo (!)U°1!MS t (jeqgon) q.9S-A9>| -jeqgon 少智砂避砂8均QTI函移音避掰单虽晋堀保7/(0二i叫。方)!fyewq也静甲泌'甲卸Y嶙/ (8l=! I |6=!)J!:+!_ (:("uu“)户U!cTpen9S|9:(“u (把把好好MM-好1* ¥斜)'慝更晦目塑者u“)户uveTpen (8=!)J!iic_write_8led(0x70, 0x10+0, 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);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(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, 0x10+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);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;u<8;u+)iic_write_8led(0x70,0x10+u,0x00);/8 个灯灭i+;break;case 10:iic_write_8led(0x70, 0x10+5, numucChar);iic_write_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(0x70, 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, 0x10+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, 0x10+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+6, numg_nMin/16);iic_write_8led(0x70, 0x10+5, numg_nMin%16);iic_write_8led(0x70, 0x10+4, numucChar);g_nSec=ucChar*16;/设置秒钟i+;break;case 16:iic_write_8led(0x70, 0x10+3, numg_nWeekday);iic_write_8led(0x70, 0x10+2, 0x02);iic_write_8led(0x70, 0x10+1, numg_nHour/16);iic_write_8led(0x70, 0x10+0, numg_nHour%16);iic_write_8led(0x70, 0x10+7, numg_nMin/16);iic_write_8led(0x70, 0x10+6, numg_nMin%16);iic_write_8led(0x70, 0x10+5, numg_nSec/16);iic_write_8led(0x70, 0x10+4, numucChar);g_nSec=g_nSec+ucChar;i+;break;case 18:rRTCCON 二 rRTCCON & (0xf)| 0x1;/ No reset, Merge BCD counters, 1/32768,RTC Control enablerBCDYEAR 二 rBCDYEAR & (0xff) | g_nYear;rBCDMON 二 rBCDMON & (0x1f) | g_nMonth;rBCDDAY 二 rBCDDAY & (0x7)| g_nWeekday; rBCDDATE =rBCDDATE & (0x3f) | g_nDate;rBCDHOUR 二rBCDHOUR&(0x3f)|g_nHour;rBCDMIN 二rBCDMIN&(0x7f)|g_nMin;rBCDSEC 二rBCDSEC&(0x7f)|g_nSec;rRTCCON = 0x0;rtc_display1(); /显示时间函数break;6、闪烁/不闪烁切换函数void ss(void)if(st3=0)/ 若按下*键if(st1=1)/判断当前是否显示时间,调用显示时间函数st2=0;rtc_display1();else if(st1=2)/判断当前是否显示日期,调用显示日期函数st2=0;rtc_display2();else/未按下键,再次判断显示日期还是时间,再进行调用当前显示函数if(st1=1)st2=1;rtc_display1();else if(st1=2)st2=1;rtc_display2();7、发声函数void jiao() int u;rGPFCON=0x5500;rGPFUP=0;rGPBCON 二 rGPBCON & 0xFFFFFC|1;rGPBDAT &= 0xFFFFFE;rGPFDAT=0;/初始化蜂鸣器设置for(u=0;u<100000;u+);rGPFDAT=0xF0;for(u=0;u<100000;u+);delay(5000);/延时 5srGPBDAT |= 1;delay(5000);rGPFCON = 0x55aa;8、键值对应到键盘函数UINT8T key_set(UINT8T ucChar)switch(ucChar)case 1:case 2:case 3:case 4:case 5:ucChar-=1; break;case 9:case 10:case 11:case 12: case 13 ucChar-=4; break;case 17: case 18: case 19: case 20: case 21: ucChar-=7; break; case 25: ucChar = 0xF; break; case 26: ucChar = '+' break; case 27:ucChar='-'break;case 28:ucChar='*'break;case 29:ucChar=0xFF; break;default:ucChar=0; return ucChar; 9、间断函数 void _irq rtc_int0_int(void) ClearPending(BIT_EINT0); rRTCRST =(1<<3) | 3; than 30 g_nSecvoid _irq rtc_int(void) /到达设定闹钟时间,触发间断 int i;ClearPending(BIT_RTC);f_nIsRtcInt = 1;void _irq rtc_tick(void) ClearPending(BIT_TICK); f_unTickCount+;三、闹钟功能实现模块1、A键设置闹钟功能实现if(isAlam=1)/按下A键设置闹钟/在超等终端上显示已设定的闹钟为-uart_printf(" %x:%x:%x%s,%x/%x/%x 已 设 定 闹钟 %x:%x:%x,%x/%x/%xr ",g_nHour,g_nMin,g_nSec,dayg_nWeekday,g_nMonth,g_nDate,g _nYear,rALMHOUR,rALMMIN,rALMSEC,rALMYEAR,rALMMON,rALMDATE); if(f_nIsRtcInt=1)/判断到了设定的闹钟 f_nIsRtcInt=0; 到了闹钟时间久置为初始值 isAlam=0;/将设置的闹钟置0 (已设置闹钟) uart_printf("n 闹钟叫 了,请按 FUN 键停止.n");naoz(); /调用闹钟函数else/未按下A键就不变uart_printf(" %x:%x:%x %s,%x/%x/%xr ",g_nHour,g_nMin,g_nSec,dayg_nWeekday,g_nM onth,g_nDate,g_nYear);keyboard_init();/接受键盘的输入,而且将值放在ucCharg_nKeyPress = 0;iic_read_keybd(0x70, 0x1, &ucChar);display();/按键判断函数rRTCCON = 0x0;/ No reset, Merge BCD counters, 1/32768, RTC Control disable(forpower consumption)void naoz(void)/ 闹钟函数int i;while(1)/闹钟响后,按FUN键停止while(g_nKeyPress-)keyboard_init();/接受键盘的输入,而且将值放在ucCharg_nKeyPress=0;iic_read_keybd(0x70, 0x1, &ucChar);ucChar=key_set(ucChar);if(ucChar=0xff)/按下 FUN 键ucChar=0;/给按键值置0uart_printf("n 闹钟已停止.n");return;iic_init_8led();for(i=0;i<8;i+)iic_write_8led(0x70,0x10+i,0x00); /8 个 LED 灯全灭display_Time();/调用零碎时间显示jiao();/调用发声函数2、闹钟设置函数void alam(void)int i,u;ucChar=0;for(u=0;u<8;u+)iic_write_8led(0x70,0x10+u,0x00);/8 个 LED 灯全灭i=0;while(1)iic_init_8led();while(g_nKeyPress-)keyboard_init();g_nKeyPress = 0;/接受键盘的输入,而且将值放在ucChar while(g_nKeyPress = 0);iic_read_keybd(0x70, 0x1, &ucChar);if(i=6)/判断时间输入是否完成

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开