PIC16F887时钟课设

上传人:枫** 文档编号:482141647 上传时间:2023-08-10 格式:DOC 页数:13 大小:353KB
返回 下载 相关 举报
PIC16F887时钟课设_第1页
第1页 / 共13页
PIC16F887时钟课设_第2页
第2页 / 共13页
PIC16F887时钟课设_第3页
第3页 / 共13页
PIC16F887时钟课设_第4页
第4页 / 共13页
PIC16F887时钟课设_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《PIC16F887时钟课设》由会员分享,可在线阅读,更多相关《PIC16F887时钟课设(13页珍藏版)》请在金锄头文库上搜索。

1、 PIC单片机课程设计学生姓名: 学生学号: 指导教师: 鲍光海 二一三年 5月 16 日目录1.课程设计目的12.课程设计题目和要求23.课程设计报告内容23.1 硬件原理图23.2 软件原理框图53.3 功能实现74.课设中存在的问题以及解决方法85设计体会86参考文献97附录107.1 仿真原理图107.2部分程序107.2.1 秒表程序107.2.2 闹钟程序131. 课程设计目的PIC单片机课程设计是电气工程及其自动化专业及相近专业的一门重要的专业实践课,本课程设计是在PIC 单片机课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC单片机的应用方法,熟练PIC单片机的

2、C程序的编写与调试,是毕业设计前的一次重要实践,为今后走上工作岗位打下坚实的单片机应用基础。通过本次课程设计:熟悉PCB板的焊接流程,熟练运用Proteus进行原理图设计与仿真,熟练运用MPLAB和ICD2进行软件编程与调试熟练掌握PIC16F887 TC74模块(IIC接口的温度传感器)、实时时钟芯片DS1307、定时器、中断的编程方法;熟练掌握LCD YB1602A、按键模块的应用与编程设计掌握单片机应用的一般设计方法,熟悉开发一单片机应用系统的全过程,为今后从事相应的工作打下基础。学会用C语言编写一个完整的程序,掌握程序的设计方法,拓展编程思维。2.课程设计题目和要求 本次课程设计我的设

3、计题目为多功能数字钟,通过在PROTEUS仿真及在开发板上调试,功能实现。设计内容:采用DS1307芯片和单片机进行IIC通信,将时钟芯片中的数据读出来,然后送到LCD1602中去显示,然后设置秒表功能,闹钟功能,还有温度显示功能,通过按键的切换来实现各个功能。设计要求: 1) 完成PROTEUS软件仿真,烧写到开发板上,基本实现上述功能。2) 通过按键对日期、时钟和闹钟进行修改,并正确显示运行。3.课程设计报告内容3.1 硬件原理图这次课设所用到的硬件模块有PIC16F887单片机芯片,LCD1602液晶显示芯片,DS1307时钟芯片,TC74温度传感器,闹钟响铃的蜂鸣器模块和按键模块。 硬

4、件原理框图DS1307时钟芯片TC74温度传感器蜂鸣器闹钟PIC16F887单片机LCD1602液晶显示器 单片机系统:本次课设所用的单片机为16F887是16F877的升级版,主要参数与877A类似,但使用更为灵活、有的参数更加细化(如RB口的使用),较877A功能更多。单片机模块包括16F887单片机、复位模块、4MHz晶振和排针等部件。PIC16F887单片机是本次课设的核心模块,是实现与LCD1602液晶显示模块、TC74温度传感器模块、DS1307时钟模块和蜂鸣器模块等硬件连接部分进行通信的中心。LCD模块:LCD1602是字符型LCD,作为显示模块,实现显示时间、温度和秒表的功能。

5、按键模块:硬件图上为4*4矩阵键盘,通过行反转扫描法读取按键,但是本次课设中只用到S1、S5、S9和S13,因此只需将端口接地。温度和时钟模块:TC74是IIC接口的数字式温度传感器,通过IIC与单片机数据传送,在仿真时应该注意TC74的地址为0b1001101(硬件时为0b1001000),否则液晶屏不能正常显示。DS1307时钟芯片(IIC通信),可以提供年、月、日、时、分、秒和星期数据,并能自动计算闰年至2100年。时钟芯片接外接电源,主电源掉电时,备用电源供电,时钟芯片继续运行。注意IIC上拉电阻要设置位数字电阻。蜂鸣器模块:本次课设中蜂鸣器作为闹钟模块,当闹钟设置时间与时钟时间相等时

6、,RC1=1,蜂鸣器响。3.2 软件原理框图秒表暂停设置时间KEY.choose=2NYKEY.choose=1时间、闹钟模式选择设置闹钟NNYYYYN判断RB1是否为0闹钟标志是否为2秒表计时开始判断RB1是否为0判断RB3是否为0开启蜂鸣器判断RB3是否为0关闭蜂鸣器外部中断是否为0NYY开机初始化判断时钟是否运行时间初始化显示时间温度NN3.3 功能实现设置时间:按下SET,光标闪烁,通过按SET次数选择设置位,按MODE一次设置时间(两次设置闹钟)设置好后,按SET退出设置秒表模式:正常模式下按下INC进入秒表计时,再按下INC暂停,第三次按INC,重新开始,按下DEC退出秒表模式开机

7、显示时间温度设置闹钟:按下SET,光标闪烁,通过按SET次数选择设置位,按MODE两次设置闹钟时间设置好后,按SET退出设置闹钟设置时间到时,蜂鸣器开始响,预设响一分钟,需要中间关掉蜂鸣器,按MODE。4课设中存在的问题以及解决方法1、在仿真时能正常显示时间温度,但是在实物上LCD屏幕只亮但是不显示时间温度。解决方法:在程序中把TC74的地址由0b1001101改为0b10010002、按键虽然设置防抖延时,但是仍会有按下乱跳的现象。解决方法:增大延时时间。3、进入设置后,光标循环闪烁。原程序:switch(KEY.SET)case 1:LCD_WRITE(YEAR_P+3,COM); cas

8、e 2:LCD_WRITE(MONTH_P+1,COM); LCD_WRITE(0b00001111,COM);/字符闪烁解决方法:在每个case后面加break语句。4、闹钟设置完退出后,时间卡住不动。解决方法:屏蔽闹钟程序后,恢复正常。判断出是闹钟程序有问题,原程序中要年月日时分星期都相等时,蜂鸣器才会响,可能是if嵌套过多导致的问题。经修改后只比较时分,闹钟设置恢复正常。6参考文献 1江和. PIC16系列单片机C程序设计与PROTEUS仿真M. 北京:北京航空航天大学出版社,20102闫广明.PIC单片机常用模块与典型实例M.北京:机械工业出版社,2011 7附录7.1 仿真原理图7.

9、2部分程序7.2.1 秒表程序void Seconds(void)/秒表子程序LCD_WRITE(0b00000001,COM);/清屏;DELAY(2);/延时2msLCD_WRITE(LINE1+1,COM);/以下程序初始化显示样式LCD_WRITE(S,DATA);LCD_WRITE(E,DATA);LCD_WRITE(C,DATA);LCD_WRITE(O,DATA);LCD_WRITE(N,DATA);LCD_WRITE(D,DATA);LCD_WRITE(S,DATA);LCD_WRITE(:,DATA);LCD_WRITE(LINE2+4,COM);LCD_WRITE(0,DA

10、TA);LCD_WRITE(0,DATA);LCD_WRITE(0,DATA); /初始化显示样式完成while(h=1)while(g=1)/进入秒表计时Sec+;/毫秒位+1if (Sec=10)/秒位+1,毫秒位置0M+;Sec=0;if(M=60)/分位+1,秒位置0X+;M=0;Shi=Sec/10;Ge=Sec%10;BCD(M);LCD_WRITE(LINE2+4,COM);LCD_WRITE(X+0x30,DATA);LCD_WRITE(:,DATA);LCD_WRITE(SW+0x30,DATA);LCD_WRITE(GW+0x30,DATA);LCD_WRITE(:,DAT

11、A);LCD_WRITE(Shi+0x30,DATA);LCD_WRITE(Ge+0x30,DATA);DELAY(2);if(RB1=0)DELAY(30);g+;while(g=2)/秒表暂停Shi=Sec/10;Ge=Sec%10;BCD(M);LCD_WRITE(LINE2+4,COM);LCD_WRITE(X+0x30,DATA);LCD_WRITE(:,DATA);LCD_WRITE(SW+0x30,DATA);LCD_WRITE(GW+0x30,DATA);LCD_WRITE(:,DATA);LCD_WRITE(Shi+0x30,DATA);LCD_WRITE(Ge+0x30,DATA);DELAY_US(50);if(RB2=0)h+;g=0;if(RB1=0)g-;Sec=0;M=0;X=0;if(h=2)/退出秒表模式LCD_WRITE(0b00000001,COM);/清屏;DELAY(2);h=0;7.2.2 闹钟程序void clock(void)/闹钟子程序if(CLOC1=TIME1)/比较分位if(CLOC2=TIME2)/比较小时位FMQ=1;DELAY(300);FMQ=0;if(RB3=0)/停止f=0;LCD_WRITE(0b00000001,COM);1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号