《基于PIC16F887单片机数字钟课程设计报告(福州大学).doc》由会员分享,可在线阅读,更多相关《基于PIC16F887单片机数字钟课程设计报告(福州大学).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 PIC单片机课程设计 学生姓名: 刘荣灿 学 号: 011200* 专业班级: 2012级*班 指导教师: 江 和 二一四年十二月二十七日目 录1、课程设计目的12、课程设计题目描述和要求13、课程设计报告内容14、结论95、参考目录101.课程设计目的 1、PIC单片机课程设计是电气工程与自动化专业一门重要的专业实践课,通过课程设计能够进一步熟悉PIC单片机原理与应用,巩固并提高对这学期PIC单片机知识的学习和应用; 2、熟悉对PIC16F887各个模块的编程与调试,最后综合各个模块,最后综合各个模块达到提高综合实践水平的能力; 3、掌握实验板上的操作和运用,学会使用PICKIT3下载器进
2、行现场的实物的调试;2.课程设计题目描述和要求 1、利用 DS1307 时钟芯片,LCD液晶显示屏,TC74 温度传感器,蜂鸣器,按键做一个实时时钟,将时间和温度实时的显示在液晶上。编写相应的程序,最终可以在仿真软件上正常运行,可以在单片机开发板实物上也正常的运行,并且能脱机运行。 2、在时钟和温度实时显示的过程中,允许外部的按键中断,通过按键可以对时间进行修改,也可以设定闹钟时间,实现闹钟报警。 3、设计出硬件电路图,设计出软件编程方法,写出源代码,用PROTEUS进仿真在软件仿真可行后,下载到实验板上进行演示。3.课程设计报告内容运用PIC16F887芯片、DS1307时钟芯片和TC74温
3、度传感器,用C语言编程,通过ICD2烧写进芯片,在LCD液晶显示屏上实现时间显示、运行的功能和温度显示功能。液晶显示屏显示着年、月、日、时、分、秒、星期。数字钟有调整时间的功能,通过对按键的操作可以对时间进行调整以及设定闹钟。3.1系统功能说明显示屏分两行显示,第一行显示日期:年/月/日、星期,第二行显示格式为时间(时:分:秒)、温度。显示秒由00一直加到59,分钟由00加到59,小时采用24小时制,由00加到23,星期由1一直加到7,日由01一直加到31(或30、29、28),月由01一直加到12,年由2000一直加到2099,温度为。按键操作时,按键RB0按下选择要修改的部分;按键RB1按
4、下时,数字加;按键RB2按下时,数字减;按键RB3可以进入闹钟设定模式。3.2设计步骤1、按照题目要求设计仿真图;2、对数字钟各个模块进行编程;3、将程序写入芯片,用仿真图仿真;4、若仿真图可实现,则把程序下载到实验板上运行;5、根据实验板情况进行调试。3.3 硬件电路的设计3.3.1 总电路图根据所要实现的预期功能,硬件必须要有最小系统模块、LCD显示模块、时钟模块、闹铃模块、温度模块、按键模块等。根据所提供的实验板资料,可以设计如下电路(proteus图):3.3.2 单片机最小系统模块 本次课程设计的最小系统包括16F887单片机、复位模块、4M外部晶振等部件组成如上最基本电路,其中芯片
5、供电的引脚略去。本课设板所用的单片机为PIC16F887,是877A 的升级,其主要参数与887A类似,但使用更为灵活、有的参数更为细化(如异步通信的波特率为双字节),而价格比887A更低,887引脚与877A兼容。3.3.3 时钟和温度模块的设计 DS1307芯片通过SCL连接RC3,SDA连接RC4,跟887进行通信。通信过程中,先判断时钟芯片是否工作,若“秒”的最高位“CH”为1,说明时钟还未运行,则通过写程序,对时钟芯片赋初值同时使“秒”的最高位“CH”为0。时钟芯片DS1307工作后,在引脚7发出1Hz脉冲,引脚7连接一个LED灯。脉冲的输出,会使LED灯一亮一灭,可通过LED灯的亮
6、暗可判断时钟芯片DS1307是否运行。时钟芯片 DS1307: DS1307 是实时时钟芯片,它提供秒、分、时、日、月、年和星期等数据。通常时钟芯片是要接备用电池,当主电源掉电时,备用电源为DS1307 提供维持电源此电源只供DS1307 使用,此时时钟仍正常运行,时钟晶振是典型的32.768kHz。温度模块: TC74也是IIC器件,它一出厂就配有一个固定的地址,单片机通过寻址来实现对不同IIC器件的访问和操作。单片机只要有一个IIC接口,就可以实现对外围不同地址的IIC器件进行操作。TC74温度范围为40125, 在2585范围的精度为2(最大值),在025 的范围精度为3(最大值)。TC
7、74的默认的7位地址为0b1001101。TC74的读温度命令是0b00000000,在温度数据寄存器中,每单位值代表1 ,数据用二进制补码格式。3.3.4 LCD液晶显示模块 本课设所使用的字符型LCD型号为YB1602,1602型LCD显示模块具有体积小,功耗低,显示内容丰富等特点,采用4位接线法,RD口的低四位和LCD的高4位连接,RD4、RD5、RD6用于读写和使能控制.上电后要延时15ms 后,才能进行初始。3.3.5 闹钟模块的设计 通过设定闹钟时间将闹钟时间存储在CCCC数组中,当时钟时间与闹钟时间相等时启动蜂鸣器,蜂鸣器发出声响。3.3.6 按键模块按键采用普通按键,按键另一端
8、接B口,由于B口可通过程序编写为弱上拉,所以仿真图中按键不需画出上拉电阻。RB0代表时间设置,RB1代表加,RB2代表减,RB3代表闹钟设置。3.4软件编程的设计及其说明3.4.1 软件设计执行的总体流程程序流程图: 开始程序流程图对各模块的初始化,和对单片机的端口的初始化判断时钟是否工作 否时钟初始化 是 读取温度和时间寄存器值判断是否到达闹钟设定时间 是蜂鸣器响 否判断是否有闹钟设定中断 是进入闹钟设定模式,频幕静止 否判断是否有选择调时中断判断是否有选择调时中断 是 是 根据不同的中断类型,进入不同的中断子程序,对时钟进行相应的修改根据不同的中断类型,进入不同的中断子程序,对闹钟进行相应
9、的修改 结束在LCD上显示出温度和时间值 否 否3.4.2 温度传感器 TC74 程序操作/温度传感器模块宏定义#define TC74_ADD 0b1001000 /TC74的7位地址#define RTR 0b00000000 /TC74的读温度命令signed char READ_T(void) signed char R2;SEN=1; /开始条件while (SEN=1); /检测开始条件是否完成?IIC_SEND(TC74_ADD1); /送TC74地址(写)IIC_SEND(RTR); /写RTR命令(写)RSEN=1; /重新开始条件while (RSEN=1); /等待重新开
10、始条件结束IIC_SEND(TC74_ADD1)+1); /发送TC74地址(读)RCEN=1; /接收使能while (RCEN=1); /等待接收完成R2=SSPBUF; /接收数据存入R2PEN=1; /停止位while(PEN=0);return(R2);TC74的读温度的步骤如下:1) 发送启始位;2) 发送TC74的7位地址+0(写);3) 发送TC74的写命令(RTR);4) 重新开始条件;5) 发送TC74的7位地址+1(读);6) 接收使能,接收TC74的温度;7) 发送停止条件;3.4.3 闹钟模块的程序操作#define FMQ RC1/=蜂鸣器的初始化void SPEA
11、KER_CSH(void) TRISC1=0; FMQ=0;if(CCCC2=AAAA2)&(CCCC1=AAAA1)&(c=2) FMQ=1; /当设定的时间到时,蜂鸣器响else FMQ=0; 3.4.4时钟芯片 DS1307 的程序操作/=对DS1307进行初始化void DS1307_CSH() READ_DS1307(0,1); /读秒寄存器WRITE_DS1307(0x07,0x10); /SOUT输出1HZ的方波频率if(AAAA0&0x80)=0x80) /判断位秒寄存器最高位是否为1 LCD_WRITE(0b00000001,COM); /清屏WRITE_DS1307(0x0
12、7,0x10);/写控制字到LCDWRITE_DS1307(0x00,0x00);/00秒WRITE_DS1307(0x01,0x00);/00分WRITE_DS1307(0x02,0x08); /08时WRITE_DS1307(0x03,0x06);/星期6WRITE_DS1307(0x04,0x01);/01日WRITE_DS1307(0x05,0x11);/11月WRITE_DS1307(0x06,0x14);/14年3.5 设计成果 LCD显示屏第一行前面的字符显示显示日期,第一行后面的字符显示星期几;第二行前面的字符显示时间,后面的字符当前温度值。当按下RB3按键时,屏幕静止进入闹钟
13、设定模式,通过设定时间可实现闹钟提醒功能。 目标达成情况:1、单片机液晶显示屏可以实时的显示时间和温度(达到);2、当时间达到某个闹钟设定值时蜂鸣器响(达到);3、能够实现脱机运行(达到);4、可区分闰年、闰月(达到);4.结论4.1 调试问题分析用PIC16F887实验板,通过PIC3连接,进行在线调试和脱机运行,出现了一些问题,经过独立思考以及和老师同学的交流后得以解决。问题一:不能掉电保护,每次脱机或者复位都会进行时钟初始化;解决办法:DS1307初始化前用(AAAA0&0x80)=0x80先进行判断秒的最高位是否为1,为1则进行初始化;问题二:闰年、闰月识别错误;解决办法:用数组DDD
14、D先储存闰年年份,当时钟时间AAAA=DDDD时为闰年;4.2 实验所得和体会这次的数字钟是我第一次完成的课程设计,让我懂得了实践是验证理论的最好途径。通过该课程设计,进一步掌握了PIC单片机的应用,熟练PIC单片机的C程序的编写与调试,让我对于理论课上一些疑惑的地方豁然开朗,加深了对于理论课程的理解。整个课程设计下来,认识了LCD 液晶显示、TC74温度、实时时钟显示等模块的应用,懂得了对时钟芯片、温度传感器的操作方法及原理,懂得了对相应模块的简单编程。实物仿真时,学会了怎么使用PICKIT3下载器进行程序的烧写,更懂得了遇到问题是要耐心查找错误,先自己独立思考解决,如果自己不能解决要积极与同学讨论、向老师请教。数字钟的成功设计也激发了我对单片机的浓厚兴趣,积累了一定的设计经验。让我感受到了单片机的伟大之处,可以依据人的思维进行各种运算和工作,学好单片机对我们以后的工作以及日常应用都有很大的作用。这次的课程设计接近尾声,感谢江和老师的耐心指导,让我的第一次课程设计得以成功完成,让我知道如何发现问题和解决问题,为我以后更多的实践乃至工作奠定了良好基础。五:参考书目:1江和,PIC16系列单片机C程序设计与PROTEUS仿真 ,北京航空航天大学出版社,2010 2江和,福州大学PIC单片机课程设计指导书,2012年8月