福州大学PIC课程设计报告 数字钟.docx
- 文档编号:2991254
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:16
- 大小:349.72KB
福州大学PIC课程设计报告 数字钟.docx
《福州大学PIC课程设计报告 数字钟.docx》由会员分享,可在线阅读,更多相关《福州大学PIC课程设计报告 数字钟.docx(16页珍藏版)》请在冰豆网上搜索。
福州大学PIC课程设计报告数字钟
《PIC单片机》
课程设计
学生姓名:
学号:
指导教师:
鲍光海
2014年6月26日
目录
1.课程设计题目描述和功能……………………………………………1
2.课程设计所用硬件……………………………………………………1
3.课程设计所用软件……………………………………………………6
4.课程设计所得结果……………………………………………………13
5.课程设计心得体会……………………………………………………14
6.参考书目………………………………………………………………15
1、课程设计题目描述和功能
⏹题目:
利用单片机PIC16F887设计数字钟
⏹设计原理:
利用单片机的IIC通信功能,将时钟芯片DS1307中的时间,和TC74芯片中的温度,用LCD液晶屏显示,并可以通过按键来修改时间和切换数字钟的功能模式。
⏹设计所能实现功能:
1 显示年、月、日、星期、时、分、秒并且可通过按键进行修改。
2 显示当前温度。
3 可设置重要日期并倒计天数。
2、课程设计所用硬件
TC74温度传感器
PIC16F887
LCD
按键
DS1307时钟芯片
①单片机PIC16F887:
a.硬件原理图:
b.硬件介绍:
本课设板所用的单片机为PIC16F887,是877A的升级,其主要参数与877A类似,但使用更为灵活、有的参数更为细化(如异步通信的波特率为双字节),而价格比877A更低。
887的程序存储器、通用RAM、EEPROM与877A完全相同。
但个别参数不同。
PIC16F887单片机是本次课设的核心模块,是实现与LCD显示模块、TC74温度传感器模块、DS1307时钟模块和按键模块等硬件连接部分进行通信的中心。
②LCD
a.硬件原理图:
b.硬件介绍:
LCD模块型号为YB1602A,每行显示16个字符,共2行,为了节省单片机的I/O口,采用4位数据线接线方式,将D4~D7分别与RD0~RD3相连,RD7用于背光显示,上电后要延时20ms,才能进行初始化。
③按键
a.硬件原理图:
b.硬件介绍:
4个按键用于修改时间和切换数字钟工作模式,分别为设置(SET)、加(ADD)、减(DEC),切换屏幕(COU)。
接到RB0~RB3,采用电平变化中断。
按下SET时,依次闪烁年、月、日、星期、时、分、秒。
按下COU时,屏幕切换为倒计时界面。
通过加(ADD)、减(DEC)按键修改时间。
④TC74:
a.硬件原理图:
b.硬件介绍:
TC74芯片用于提供温度数据,时钟线SCL和数据线SDA通过IIC接口RC3和RC4与单片机通信。
再在LCD上显示温度值。
⑤DS1307时钟芯片
a.硬件原理图:
b.硬件介绍:
DS1307是低功耗、IIC接口、日历和时钟数据,按BCD码存取的时钟/日历芯片。
它提供秒、分、小时、星期、日期、月和年等时钟日历数据。
时钟芯片DS1307用于提供时间数据,时钟线SCL和数据线SDA通过IIC接口RC3和RC4与单片机通信。
时钟芯片的SQW输出1Hz脉冲,输出到RA4,控制修改时间时的闪烁频率。
3、课程设计所用软件
⏹整体软件流程图
⏹部分程序:
●倒计时所用程序:
intdiff(void)
{
inti;
intdiff=0;
constintmonth[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
MA=(AAAA[5]>>4);
MA=MA*10;
MA=MA+(AAAA[5]&0X0F);
MB=(BBBB[5]>>4);
MB=MB*10;
MB=MB+(BBBB[5]&0X0F);
DA=(AAAA[4]>>4);
DA=DA*10;
DA=DA+(AAAA[4]&0X0F);
DB=(BBBB[4]>>4);
DB=DB*10;
DB=DB+(BBBB[4]&0X0F);
YA=(AAAA[6]>>4);
YA=YA*10;
YA=YA+(AAAA[6]&0X0F);
YB=(BBBB[6]>>4);
YB=YB*10;
YB=YB+(BBBB[6]&0X0F);
if(AAAA[6]==BBBB[6])
{
if(AAAA[5]==BBBB[5])
{
diff=DB-DA;
}
else
{
for(i=MA+1;i { diff+=month[i]; } diff+=month[MA]-DA+DB; if(leapyear(AAAA)) if(AAAA[5]<=2&&BBBB[5]>2) diff++; } } else { for(i=YA+1;i { if(leapyear(i)) diff+=366; else diff+=365; } for(i=MA+1;i<=12;i++)//date1距离年末多少天 { diff+=month[i]; } diff+=month[MA]-DA; if(MA<=2) if(leapyear(YA)) diff++; for(i=1;i { diff+=month[i]; } diff+=DB; if(MB>2) if(leapyear(YB)) diff++; } returndiff; } intleapyear(char*year) { GW=(year[6]>>4); GW=GW*10; GW=GW+(year[6]&0X0F); GW=GW%4; if(GW==1) return1; else return0; } ●闪烁程序: //闪烁年 voidyear(void) {if(RA4==1) {LCD_WRITE(LINE1,COM); LCD_WRITE('2',DATA); LCD_WRITE('0',DATA); LCD_WRITE(((AAAA[6]&0xF0)>>4)+0x30,DATA); LCD_WRITE((AAAA[6]&0x0F)+0x30,DATA); } else {LCD_WRITE(LINE1,COM); LCD_WRITE('',DATA); LCD_WRITE('',DATA); LCD_WRITE('',DATA); LCD_WRITE('',DATA); } } ●加法日期校正: //日校正 if(X==3) {AAAA[4]+=1;//X=3,日期自动加1 if((AAAA[4]&0x0F)>9) {AAAA[4]=AAAA[4]&0xF0; AAAA[4]=AAAA[4]+0x10;//日期的低4位大于9时,低4位清零高4位进1位 } if((AAAA[5]==1)|(AAAA[5]==3)|(AAAA[5]==5)|(AAAA[5]==7)|(AAAA[5]==8)|(AAAA[5]==0x10)|(AAAA[5]==0x12)) { if(AAAA[4]>0x31) { AAAA[4]=0x01;//日期大于0x31,则改为0x01 } } if((AAAA[5]==2)) { GW=(AAAA[6]>>4); GW=GW*10; GW=GW+(AAAA[6]&0X0F); GW=GW%4; NOP(); if(GW==0) { if(AAAA[4]>0x29) { AAAA[4]=0x01;//日期大于0x29,则改为0x01 } } else { if(AAAA[4]>0x28) { AAAA[4]=0x01;//日期大于0x28,则改为0x01 } } } else { if(AAAA[4]>0x30) { AAAA[4]=0x01;//日期大于0x30,则改为0x01 } } 4、课程设计所得结果 开机显示欢迎页面 开机欢迎页面延时1后,自动跳转到正常显示时间、温度界面 按COU按键切换到倒计时界面 5、课程设计心得体会 通过这两周周的课程设计,收获颇多: 首先,加深了我对单片机PIC16F887A的理解,提高了编程能力,分析问题和解决问题的能力,还有熟练操作PROTEUS、MAPLAB的能力。 同时我发现设计中仅仅靠电脑仿真是远远不够的,实际烧写中可以发现许多仿真中不能发现的问题,例如按键的抖动和LCD的清屏显示乱码等。 同时很感谢老师上课和课程设计过程中对我们的耐心指导。 虽然老师的要求相对其他大学老师来说可能较为严格,但是我觉得这样还是很有必要的。 PIC这一门课也许是我大学中学习的最认真的一门课了。 我感觉学的很扎实,真正学到了了将来工作中可以用到的知识和技术。 在此向鲍老师再次表示感谢! 6、参考书目: [1]《PIC16系列单片机C程序设计与PROTEUS仿真》,江和,北京航空航天大学出版社,2010 [2]《福州大学PIC单片机课程设计指导书》江和,2012年8月 [3]DS1307时钟芯片简要说明江河2011年9月
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 福州大学PIC课程设计报告 数字钟 福州大学 PIC 课程设计 报告 数字