第一范文网 - 专业文章范例文档资料分享平台

基于PIC16F887单片机的数字钟课程设计报告

来源:用户分享 时间:2025/5/25 12:34:29 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

3.4 时钟和温度模块

选用始终芯片DS1307、温度芯片TC74,皆通过IIC和单片机通信,时钟芯片带备用3V电池,电阻RA4和RA5设置为数字电阻。DS1307 是实时时钟芯片,它提供秒、分、时、日、月、、年和星期等数据,并能自动计算闰年至2100年。通常时钟芯片是要接备用电池,当主电源掉电时,备用电源为DS1307 提供维持电源,此电源只供DS1307 使用,此时时钟仍正常运行,时钟晶振是典型的32.768kHz。

3.5 闹铃模块

闹铃模块是一个简单的喇叭通过放大器、限流电阻与16F887单片机连RC1接,通过单片机CCP2模块产生PWM使喇叭响起。

5

3.6按键模块

采用普通按键实现时间和闹钟的修改、设定,MODE键实现模式切换,SET实现位置的选择,其他两个按键是加减功能。按键可以采用电平中断,此时注意按下和放开都可能产生中断,也可以采用查询方式实现。

4.软件设计及说明 4.1程序设计思路

初始化程序成功后,循环从时钟芯片、TC74里面读出数值并显示,判断时间是否为闹钟时间,同时通过查询的方式判断按键是否按下并进行相应的操作。可以通过查询的方式修改时间和闹钟,并且把闹钟的设定值显示在LCD屏幕上。

4.2主函数流程图和程序

6

N Y 判断时钟是否运行? N 写入初始化时间 初始化端口、中断设置、LCD和IIC

显示时间、温度 判断当前时间是否为闹钟时间? Y 打开闹铃

4.3 显示模块

初始化模块后,通过指令:

LCD_WRITE(LINEX+Y,COM); LCD_WRITE(STR,DAT);

实现LCD的写和显示,LINEX表示X行,Y表示X行的第Y个字符,STR代表字符的对应码值,COM表示写指令,DAT表示写数据。

4.4 时钟和温度模块

始终和温度模块的实现首先要进行正确的IIC初始化: void IIC_CSH()

时钟程序要通过编写和调用始终读写子程序实现:

void write_DS1307(char addr,char data) void READ_DS1307(char addr,char n)

从时钟芯片读出的是BCD码,需要进行转换才可以送入LCD显示。

至于温度模块是比较简单的,设置好好就只需要定时从里面读数显示即可。显示温度需要注意当其值为负数时候需要进行取补码再显示,同时显示负号。

7

4.5闹铃模块

MODE键可以进行模式切换,当M=1时是时间设置模式,当M=2时是闹钟设置模式,为了确定主函数的循环体是否需要从DS1307读写数,必须设置一个flag标志位,当M=1或0时,flag=0,执行DS1307的读和显示;否则跳过,只进行闹铃设置,确保设置闹铃时候屏幕的数不会一直变化。当sect、hourt、mint与时钟芯片匹配时候开PWM程序,按任意键退出闹钟。这段程序比较有技巧,稍不注意就会出错:

void clock()

{ if(!mod||!set||!add||!miu)

4.6按键模块

采用查询方式的按键模块,要特别注意延时消抖和按键释放检测,M作为模式切换的标志位,a作为位置确定位,add、miu实现加减。一下给出部分检测消抖程序:

if(mod==0) {

delaynms(30);//消抖 if(mod==0) {

while(!mod);//等待按键释放 M++; if(M==3)

{ M=0;flag=0;f=0;

}

} }

{delaynms(30);

if(!mod||!set||!add||!miu); }

CCP2CON=0b00000000; //关PWM模式,按任意键退出

如上程序,比较时候要先比较秒,否则无法匹配,无法输出PWM.

8

基于PIC16F887单片机的数字钟课程设计报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c7475c69kp15nd0e7n2yj9vfqx3d4pq015x2_2.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top