




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软 件 学 院课程设计报告书课程名称 嵌入式系统 设计题目 作息时间控制器 专业班级 学 号 姓 名 指导教师 2015年06月1 设计时间12 设计目的13 设计任务14 设计内容14.1 总体方案设计14.1.1 需求规定24.1.2核心部件选型24.1.3系统开发环境34.2硬件设计34.2.1硬件开发环境简介34.2.2硬件模块1设计44.2.3硬件模块2设计54.2.4硬件模块3设计64.3软件设计74.3.1软件开发环境介绍74.3.2主程序设计及流程图74.3.3中断程序设计及流程图124.3.4软件模块1设计144.3.5软件模块2设计154.3.6软件模块3设计165总结17
2、参考文献181 设计时间2015年6月15日2015年6月20日2 设计目的嵌入式系统课程设计是软件工程专业(嵌入式软件方向)学生的专业实践课程,是学习嵌入式系统课程后必要的实践教学环节。课程设计是检验学生是否掌握相关专业课程知识的重要手段,以学生为主体充分调动学生的积极性和创造性,重视学生实际动手能力的培养。通过本次课程设计使学生加深理解、巩固课堂教学和平时实验内容,使学生初步具备基于Android、Linux、C和ARM汇编应用开发的系统分析、系统设计、系统实现与测试的实际能力,强化学生的知识实践意识、提高动手能力,发挥学生的想象力和创新能力,从而培养工程应用型人才。 3 设计任务作息时间
3、控制器(嵌入式系统) 设计要求: (1)以我校作息时间为蓝本,控制蜂鸣器模拟上下课打铃;(2)作息时间可以程序调整,每到时间点蜂鸣器发声;(3)若自动打铃功能有故障,应具有手动打铃功能,即按下键盘启动铃声; (4)没有开发板的同学使用实验室开发板。 4 设计内容本次嵌入式课程设计的设计内容由教师统一分配题目学生自己选题来进行嵌入式课程设计。本次设计题目为作息时间控制器,模拟学校的上课、下课打铃来实现作息时间的控制。4.1 总体方案设计通过对设计题目和设计要求的初步了解进行分析,对整个系统的大体实现过程有一定的掌握。首先,对系统的功能要求和实现进行分析。然后是核心部件的炫选材,以及软件平台的搭建
4、。4.1.1 需求规定本次设计的作息时间控制器主要是针对学生上课前和课间休息时进行打铃提醒而设计。对于作息时间控制的功能要求有显示作息时间,并且在到达设定好的作息时间时进行打铃。打铃的时间是可以通过程序改写,打铃的情况有上课前的预备铃、上课铃、课间短暂休息铃和下课铃。不仅要求在规定的时间点进行打铃还可以手动打铃,当按下按钮后就会响铃。为了提高系统的性能需要对打铃和显示作息时间差进行分析,显示时间的准确性也要尽量提高,而且这样才能满足正常的作息时间控制。为了完善整个作息时间控制器对时间的准确性的要求,添加一些调节时间的功能,对时间的时分秒均有对应的按键进行增加数值和减小数值,从而实现可调的响铃时
5、钟。4.1.2核心部件选型根据需求的规定可知需要对时间的准确捕获并进行显示,并且到达规定的时间还可以响铃,也可以手动响铃。通过对这些功能的分析可以使用带有实时时钟芯片的单片机,选用的开发板为LY-51S,单片机的芯片为STC90C516RD+,该开发板集成很多芯片包括实时时钟芯片DS1302、蜂鸣器、共阴极数码管。LY-51S开发板属于独立模块结构,不受硬件连接的限制,自由度高,可以通过更改硬件的连接来实现强大的整体功能。开发板的各个模块都是独立的模块,使用时需要用杜邦线连接需要的模块,原理和结构比较简单。STC90C516RD+系列单片机是宏晶科技推出的新一代的超强抗干扰高速低耗的单片机,指
6、令代码完全兼容传统的8051单片机,12时钟/机器周期和6时钟/机器周期可任意选择,内部集成MAX810专用复位电路,时钟频率在12MHz以下时,复位脚可直接接地。DS1302实时时钟芯片,该芯片集成在开发板上是一块独立的模块,在使用时需要将控制引脚与实时时钟的三个引脚对应相连来获取信号和写入信号。DS1302芯片由美国DALLAS公司推出的具有涓细电流充电能力的低功耗实时时钟电路DS1302的结构、工作原理及其在实时显示时间中的应用。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多
7、个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。4.1.3系统开发环境在对系统进行开发过程中用到的开发环境主要是keil公司的集成开发环境(IDE)keil C51和串口调试软件STC-ISP-V483。在网上下载keil uVision4(C51版)软件和STC-ISP-V483,安装在自己的电脑上。首先,在keil uVision4中新建个工程Project->new uVision Pro
8、ject,输入工程和文件的位置,并选择CPU的型号,由于使用的是STC90C516RD+芯片,所以CPU可选择相近的单片机芯片如AT89C52,然后新建一个文件并编写程序代码,保存的时候需要将文件的后缀填到文件名的后面。在工程文件中添加程序源代码文件进行编译并生成单片机可执行的文件Hex文件。然后利用串口调试软件通过USB线将Hex文件烧写到单片机中,需要注意单片机的芯片类型和串口是否对应和烧写程序时是否为冷上电。4.2硬件设计4.2.1硬件开发环境简介LY-51S开发板集成大量模块,功能强大执行效率和稳定性都比较高,每个模块都是独立的,互不干扰。开发板上主要集成USB转串口芯片PL2303,
9、驱动支持最新win7系统,只要1根USB线就可以实现供电、下载、通讯功能,尤其现在笔记本USB口较少,这种连接方式就能最大限度节省USB端口;8个LED,4种颜色,可以完成单片机最基础学习部分,为练习编写流水灯、跑马灯提供方便;1个大尺寸共阳数码管,为学者练习数码管显示原理提供条件;8位共阴数码管,2个74HC573锁存,静态显示与动态扫描,分别控制段锁存和位锁存;红绿双色8x8点阵,3个HC595芯片驱动,点阵可以拔插,工业LED屏通常使用HC595做信号传输,这个芯片的控制与级联对开发很重要;串行信号转并行信号芯片74HC164,通过串口或者模拟串口信号输入,输出8位并口信号,多用于单片机
10、本身端口不够使用的情况;反向器CD4069,可以做信号组合试验;EEPROM存储器24C02,IIC总线接口,带有程序保护接口;DS1302时钟芯片,32768Hz时钟源晶振,三线总线接口,带有备用电源CR1220纽扣电池;MAX232串口电平转换,连接2路串口,DB9公口和母口,与板载USB转串口,可以形成3种串口外接方式,方便多种连线驳接;RS485芯片,对485硬件控制原理留有输入信号、控制信号和输出信号端口图1 硬件平台实物表面丝印图4.2.2硬件模块1设计对于实时时钟芯片DS1302的设计首先要对它的电路图及原理有一定的了解,然后要对实时时钟的操作引脚要有清晰的认识,即读取时间、写入
11、时间、重置时间等。DS1302芯片有8个引脚,引脚1是VCC2,提供主电源,与外部供电;引脚2、3是X1、X2,为芯片提供振荡源,外接32768HZ晶振,能够准确的反应时间的变化;引脚4是GND,接地线;引脚5是RST,为复位或片选线,低电平有效;引脚6是I/O输入输出接口,是双向的传输串行数据的输入输出接口;引脚7是SCLK,即串行时钟输入端;引脚8是VCC1,是实时时钟的备用电池,当VCC2不提供电源时,VCC1会提供一段时间的电源。对实时时钟的控制主要通过STC90C516RD+的P1.4、P1.5、P1.6引脚来分别控制DS1302芯片的SCLK、I/O、RST引脚,具体的电路图如图2
12、所示。图2 实时时钟DS1302芯片4.2.3硬件模块2设计系统的数码管模块的设计,该模块主要用于显示从实时时钟读取出来的时间,选用了两个共阴极数码管74HC573,利用段锁存和位锁存来控制数码管的显示。段锁存可以控制8个数码管每个数码管亮的数值是多少,而位锁存则控制那个数码管可以亮。由STC90C516RD+的P0口为段锁存传递数据,P0口与J3相连提供数据。在使用数码管显示数字之前需要将J50添加跳帽,让数码管使能,然后将STC90C516RD+的P2.2、P2.3引脚与段锁存和位锁存相连接,控制数码管的显示。具体连接电路图如图3所示。图3 数码管模块设计4.2.4硬件模块3设计喇叭模块的
13、设计在于什么时候给喇叭信号让喇叭响铃,还有设置大概的响铃持续时间。喇叭的硬件结构比较简单,喇叭由U22模块的ULN2003的引脚1来控制,在J51调帽接好的情况下,利用杜邦线将单片机引脚连接J42的引脚7便可以通过单片机来发送信号让喇叭发出铃声,具体连接如图4所示。图4 喇叭的硬件电路图4.3软件设计4.3.1软件开发环境介绍软件开发环境主要用到的是keil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision
14、)将这些部分组合在一起。支持8051微控制器的PK51专业开发工具,支持所有的8051系列的芯片,包括经典设备以及具有IP核的设备。4.3.2主程序设计及流程图在主程序中首先要对实时时钟和定时器进行初始化,利用函数为系统初始化一个初始时间。然后进入一个主循环中,进行不断地循环,主循环中有两个判断部分,一个是不断的扫描独立按键,当有那个按键被按下后就会响应对应的操作,另一个部分是判断是在可以读取实时时钟的时间时,调用读取时间的函数读取芯片的时间,把读取的时间放到一个数组中,然后判断当前的时间是否和自己设定的作息时间是否一致,一致时便会执行响铃操作。主程序如下:int main (void)uns
15、igned char num; Init_Timer0();Ds1302_Init();Ds1302_Write_Time();while (1) num=KeyScan(); switch(num) case 1:time_buf14+;if(time_buf14=24)time_buf14=0; Ds1302_Write_Time();break; case 2:time_buf14-;if(time_buf14=255)time_buf14=23; Ds1302_Write_Time();break; case 3:time_buf15+;if(time_buf15=60)time_bu
16、f15=0; Ds1302_Write_Time();break;case 4:time_buf15-;if(time_buf15=255)time_buf15=59; Ds1302_Write_Time();break; case 5:time_buf16+;if(time_buf16=60)time_buf16=0; Ds1302_Write_Time();break;case 6:time_buf16-;if(time_buf16=255)time_buf16=59; Ds1302_Write_Time();break;case 7:while(i-)DelayMs(1);SPEAKER
17、=!SPEAKER;i=500;break;case 8:while(i-)DelayMs(1);SPEAKER=!SPEAKER;i=500;break;default:break; if(ReadTimeFlag=1) ReadTimeFlag=0; Ds1302_Read_Time(); TempData0=dofly_DuanMatime_buf14/10; TempData1=dofly_DuanMatime_buf14%10; TempData3=dofly_DuanMatime_buf15/10; TempData4=dofly_DuanMatime_buf15%10; Temp
18、Data6=dofly_DuanMatime_buf16/10; TempData7=dofly_DuanMatime_buf16%10;while(1)TempData2=0x40; TempData5=0x40;DelayMs(100);TempData2=0x00; TempData5=0x00;DelayMs(100);break; if(TempData0=0x3f)&&(TempData1=0x07)&&(TempData3=0x6d)&&(TempData4=0x6d)&&(TempData6=0x3f)&&
19、amp;(TempData7=0x3f) /07-55-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x3f)&&(TempData1=0x7f)&&(TempData3=0x3f)&&(TempData4=0x3f)|(TempData3=0x66)&&(TempData4=0x6d)|(TempData3=0x6d)&&(TempData4=0x3f)&&(TempData6=0x3f)&&(T
20、empData7=0x3f) /08-00-00、08-45-00、08-50-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x3f)&&(TempData1=0x6f)&&(TempData3=0x4f)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f)|(TempData3=0x6d)&&(TempData4=0x6d)&&(TempDa
21、ta6=0x3f)&&(TempData7=0x3f) /09-35-00、09-55-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x3f)&&(TempData3=0x66)&&(TempData4=0x3f)&&(TempData6=0x3f)&&(TempData7=0x3f)|(TempData3=0x66)&&(TempData4=0x6d)&
22、&(TempData6=0x3f)&&(TempData7=0x3f) /10-40-00、10-45-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x06)&&(TempData3=0x4f)&&(TempData4=0x3f)&&(TempData6=0x3f)&&(TempData7=0x3f) /11-30-00响铃 while(i-) DelayMs(1); S
23、PEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x4f)&&(TempData3=0x6d)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f) /13-55-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x66)&&(TempData3=0x3
24、f)&&(TempData4=0x3f)&&(TempData6=0x3f)&&(TempData7=0x3f) /14-00-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x66)&&(TempData3=0x66)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f)|(TempData3=
25、0x6d)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f) /14-45-00、14-50-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x6d)&&(TempData3=0x4f)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f)
26、|(TempData3=0x6d)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f) /15-35-00、15-55-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x7d)&&(TempData3=0x66)&&(TempData4=0x3f)&&(TempData6=0x3f)&&(Tem
27、pData7=0x3f)|(TempData3=0x66)&&(TempData4=0x6d)&&(TempData6=0x3f)&&(TempData7=0x3f) /16-40-00、16-45-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; if(TempData0=0x06)&&(TempData1=0x07)&&(TempData3=0x4f)&&(TempData4=0x3f)&&(TempData6=0x3f)&a
28、mp;&(TempData7=0x3f) /17-30-00响铃 while(i-) DelayMs(1); SPEAKER=!SPEAKER; i=500; 主程序的程序流程图如图5所示。图5 主程序的程序流程图4.3.3中断程序设计及流程图在程序设计中应用到了定时器中断,来实现每隔一段时间就让读取时间的读标志位为1,并调用显示时间的函数将读取的时间显示在数码管上。定时器使用的是定时器0,使用模式1,16位定时器,使用的中断是中断1。定时器的时间为2ms,然后进行显示时间,并每过100ms将读取时间的都标志位置1。中断处理子程序如下:void Timer0_isr(void) interrupt 1 static unsigned int num; TH0=(65536-2000)/256; TL0=(65536-2000)%256; Display(0,8); num+; if(num=50) num=0; ReadTimeFlag=1;中断处理子程序的程序流程图如图6所示。图6 定时器中断处理子程序4.3.4软件模块1设计实时时钟模块的设计需要对实时时钟写入时间和读取时间进行详细设计。对实时时钟的操作需要对地址操作,在没有写保护的情况下,当产生一个高电平时可以给地址初始化,向地址写入数据,每写一个数据后地址会增加,当写完后则停止,否则一直
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新希望教育2025年中考生物试题命题比赛模拟试卷(11)含解析
- 邢台学院《诊断基本检查一般检查》2023-2024学年第一学期期末试卷
- 老年ERCP患者麻醉管理
- 广东省东莞市信义校2024届中考押题数学预测卷含解析
- 2024-2025新职工入场安全培训考试试题答案考点提分
- 2025公司主要负责人安全培训考试试题B卷
- 2025年企业员工岗前安全培训考试试题完整参考答案
- 2024-2025公司项目部管理人员安全培训考试试题黄金题型
- 2025年公司安全培训考试试题及参考答案(综合题)
- 2025年公司项目负责人安全培训考试试题带答案(黄金题型)
- 科技论文写作课件(原创)
- 小学书法粤教版 五年级下册 集字练习
- 外研版(一起)二年级英语下册全册教案教学设计版
- 农村建房安全合同书参考
- 施工电梯租赁合同及安全协议
- 安徽省【小升初】小升初数学试卷试题附答案(有难度)
- 青岛农业大学毕业实习鉴定表
- 广汽设计cs000t zn00z016车身密封条
- 2019第五版新版PFMEA 注塑实例
- (完整word版)计算机社团活动记录
- 车辆租赁管理办法
评论
0/150
提交评论