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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

嵌入式课程设计 编程闹钟 广西大学Word格式文档下载.docx

1、三、 LCD及触摸屏此次设计采用的是电阻屏ILI9341液晶触摸屏。整个程序是基于触摸屏上不同的坐标来写的,触摸屏的分辨率是240*320。LCD主要用来设定一些固定的参数比如范围,还有字符和字符背景颜色等常规设置。加入了对时钟部分指针显示的指针部分的角度消除等一些问题。四、 程序图片处理首先确认实用的该图片的分辨率应该是多少,这一点非常重要,否则在LCD上就是图片乱码。确认之后将图片先修改成规定的分辨率,再根据Image2Lcd软件得到相应的程序代码,添加到Fonts.c中。三、 软件设计流程图 五、结论与感想这次课设我选择的题目是可编程电子闹钟,一开始觉得这个题目挺容易的,认为它类似于VB

2、这种可视化编程,但是可随着设计的深入,越发的感到力不从心。还好最终经过大量的查阅资料完成了题目的要求。既是对自己专业知识的实践补充,也是一次对ARM开发板的全新认识。首先是对课设的前期准备不充分,首先针对课设要求进行逐条分析。此题目要求显示实时时间,这个要求可以用RTC和RCC(系统时间)来完成。它所有的操作都要基于面板,也就是触摸屏操作。所以对触摸屏必须有一个清醒的认识,触摸屏的型号是ILI9341,分辨率是240*320(这个尤为重要),它设置开始点必须设置结束点和其他型号在这点上有重大区分。这些是必须在写程序之前都要得到的准确参数,但是由于第一次接触这种开发板,刚开始一头雾水,什么图片放

3、进去都是乱码,文字也是横的。下一次再设计时这些就成为了宝贵的经验。其次是对于程序的书写和理解还有很多的问题。此次题目的重点是写一个闹钟程序,个人认为首先要搞懂程序的逻辑,闹钟是以7天为一个循环,程序什么时候确认它停是一个很关键的问题。开发板提供的光盘上有一个综合程序,里面有包含闹钟的一部分程序,有一定的参考价值。但是由于对程序认识的浅薄,看了几天都没有得出它的完整逻辑。随后去图书馆查看STM32和ARM的有关书籍才逐渐懂得一些,并且了解到一些程序的书写格式。这些知识相信在我以后的设计中会非常受用的。最后我想对此次课设做一个总结,ARM开发板是一款非常实用的学习STM32的开发板。运用液晶屏上的

4、坐标加上不同的程序可以设计许多的应用,不单单是闹钟一种。通过这次课程设计也让我体会到51单片机和STM32的许多不同之处,相比于51,STM32确实有一些实用的改进。当我再一次拿到题目时可以考虑的做法也不仅仅局限于51一种,对我明年的毕业设计也是一种很大帮助。 附件:闹钟程序(逻辑部分)/显示主界面void Display_Allarm_Main(void) u8 i=0; LCD_Clear_Display(Vertical_LCD,BLACK);/清屏 LCD_Display_Window(Vertical_LCD,0,0,240,29,DARKGREEN); LCD_Display_Nu

5、m_Chinese_Char_Number_16_16(Vertical_LCD,10,6,创建闹钟,4,:,NO_Number,WHITE,RED,Fill_OFF); LCD_Display_Window(Vertical_LCD,195,14,18,2,WHITE); LCD_Display_Window(Vertical_LCD,203,6,2,18,WHITE); LCD_Display_Window(Vertical_LCD,0,29,240,2,BLUE); for(i=1;i=Display_Allarm_Num;i+) Display_Allarm_Interface(i);

6、 void Add_Allarm(void) Interface_Type=Add_Allarm_Type; Display_Set_Allarm_Interface();/添加闹钟界面 if(Success_Set=1)/表示成功添加 Set_Allarm_Hour=Set_Allarm_Hour_Temp; Set_Allarm_Min=Set_Allarm_Min_Temp; /把当前设置的一周中星期几闹铃的值更新到数组中去 for(i=0;7; Set_Allarm_Weeki=Set_Allarm_Week_Tempi; Set_Allarm_Loop=Set_Allarm_Loop

7、_Temp; Display_Allarm_Num+;/显示的闹钟数量增加一个 All_Allarm_HourDisplay_Allarm_Num-1=Set_Allarm_Hour;/把当前设置的闹钟的小时值更新到所有闹钟时间的数组中对应位置 All_Allarm_MinDisplay_Allarm_Num-1=Set_Allarm_Min;/把当前设置的闹钟的分值更新到所有闹钟时间分钟的数组中对应位置 All_Allarm_WeekDisplay_Allarm_Num-1i=Set_Allarm_Weeki; /更新当前设置的闹钟的重复与否参数写入数组中 All_Allarm_LoopDi

8、splay_Allarm_Num-1=Set_Allarm_Loop; /由于成功添加了闹钟之后默认这个闹钟是打开的,因此需要更新所有闹钟状态的数组值,针对那种不重复的数组如果全部都闹过了以后自动将这个闹钟关闭了,再次开启这个闹钟又会开始闹铃 /当然在打开设置里面打开了的话就会将每天的已经闹过闹铃数组清0 All_Allarm_STADisplay_Allarm_Num-1=1; /针对有效的闹钟进行查询,当天最接近报警时间的值,作为准备闹铃的时间 Find_Nearest_Time_Allarm();/ /更新主界面/ Display_Allarm_Main(); Success_Set=0

9、; / else/表示没有成功添加闹钟/ / /编辑闹钟void Set_Allarm(void) Interface_Type=Set_Allarm_Type;/设置闹钟界面 if(Success_Set=1)/表示成功设置闹钟 All_Allarm_HourSet_Allarm_Number-1=Set_Allarm_Hour; All_Allarm_MinSet_Allarm_Number-1=Set_Allarm_Min; All_Allarm_WeekSet_Allarm_Number-1i=Set_Allarm_Weeki; if(All_Allarm_STASet_Allarm_

10、Number-1=1) if(All_Allarm_WeekSet_Allarm_Number-1calendar.week=1)/编辑闹钟的话如果当天有闹钟已经闹了编辑过后又要让他重新可以闹 Already_AllarmSet_Allarm_Number-1calendar.week=0; All_Allarm_LoopSet_Allarm_Number-1=Set_Allarm_Loop;void Delete_Allarm_Funtion(void) u8 j=0; u8 Temp=0; /当前删除的闹钟编号之后的闹钟全部清0 for(j=0;jDisplay_Allarm_Num;j+

11、) Already_Allarmji=0; Display_Allarm_Num-; Temp=Delete_Allarm_Number; for(Delete_Allarm_Number=Temp;Delete_Allarm_Number(Set_Allarm_Hour*60+Set_Allarm_Min) Already_AllarmDelete_Allarm_Number-1i=1; else if(i Already_AllarmDisplay_Allarm_Num-1i=1; else if(i else if(i=calendar.week)/由于打开和关闭了闹钟要重新搜索出距离当

12、前时间最近的闹钟/针对有效的闹钟进行查询,当天最接近报警时间的值,作为准备闹铃的时间void Find_Nearest_Time_Allarm(void) RTC_Get(); Prepare_Allarm_Time=2000;/将准备闹铃的时间设置为最大值 if(All_Allarm_STAi=1)/查询到当前闹钟是打开 for(j=0; if(j! Already_Allarmij=1;(All_Allarm_Houri*60+All_Allarm_Mini) Already_Allarmij=1; if(j else if(j=calendar.week) if(All_Allarm_Weekicalendar.week=1)/查询当前星期是否对应有闹钟 if(Already_Allarmicalendar.week!=1)/表示查询到这个闹钟今天还没闹过,并且今天是有闹钟的 if(All_Allarm_Houri*60+All_Allarm_HouriPrepare_Allarm_Time)/取出最接近当前时间的报警时间值 Prepare_Allarm_Time=All_Allarm_Houri*60+All_Allarm_Mini; Allarm_Number=i;

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

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