《PIC单片机》
课程设计
学生姓名:
学
号:
专业班级:
指导教师:
二○○二 年 五 月 四 日
目
录
1、课程设计目的............................................................. 错误!未定义书签。
2、课程设计题目描述和要求......................................... 错误!未定义书签。
3、课程设计报告内容..................................................... 错误!未定义书签。
4、实验验证...............................................................................................6
5、总结....................................................................................................... 8
6、参考资料...............................................................................................8
1、课程设计目的
如今单片机在生活中应用非常广泛,许多电子产品、自动控制中都有举足轻
重的地位。PIC16 系列单片机技术成熟,功能齐全,能够满足大多数场合的需求。
通过本次课设的硬件设计,软件编写及调试,能够综合应用单片机的大多数模块,
提高编程开发能力,进一步掌握 PIC 单片机的应用方法,为以后单片机的开发奠
定基础。
2、课程设计题目描述和要求
根据硬件电路原理图与 PCB 板实际线路,设计一个具有功能完善、有一定工
作量及难度的 PIC 单片机应用设计,运用 C 语言编程,并能在 protues 仿真界面
及实际电路中运行、调试。
根据要求,本次课设定位于基于 PIC16F887 单片机的数字电子钟设计。以单
片机为控制核心,通过与外围设备:YB1602LCD 模块、独立按键、DS1307 时钟芯
片、TC74 温度传感器、蜂鸣器及基本晶振、复位电路构成多功能的数字电子钟。
本系统通过 LCD 与按键实现人机友好界面,通过按键修改当前时钟基数,通过蜂
鸣器实现整点报时功能,硬件设备简单低耗,功能较完善。
3、课程设计报告内容
3.1 设计方案
本次课程设计作品为数字电子时钟,运用 DS1307 作为时钟计数来源,TC74
温度传感器采集当前环境温度,在单片机控制下让 LCD 显示当前时间与实时温
度。通过 3 个独立按键来实现人机对话,可以改变当前时钟年、月、日、星期、
小时、分钟、秒等具体时间,运用蜂鸣器进行整点报时,整个设计具有较完善的
功能。系统结构框图如下:
按键
输入
时钟芯片
温度传感器
通信
PIC16F887
单片机控制
LCD 显示
蜂鸣器
报时
3.2 硬件电路及说明
3.2.1 LCD 模块原理图如下:
该模块与单片机 D 口相连接,运用 4 位传送数据与指令,节省 I/O 口空间。
10K 可调电阻用来调节字符显示亮度。仿真图中背光接口不能设置,实际电路图
中有。
3.2.2 温度传感器 TC74 与时钟芯片 DS1307
TC74 与 DA1307 通过与 PIC 单片机 I2C 模块通信来传送数据,单片机通过传
送不同地址来辨别与哪个芯片通信。DS1307 芯片的地址为 0B1101000X,最低位为
0 表示写,为 1 表示读。TC74 地址有两个,仿真地址为 0b1001101,实物硬件电
路地址为 0x1001000。DS1307 的 OUT 引脚可设置输出方波,通过与 LED 相连,可
用来辨别时钟芯片是否工作,外接 32.768KHz 高精度晶振,产生 1s 的时钟基准。
同时,3 号引脚接备用电池,使得时钟芯片在单片机掉电是能正常计时,当单片
机正常工作时,时间仍然准确。通信接口必须接 2 个 4.7K 上拉电阻才能正常通
信。
3.2.3 按键接口电路
下拉电阻防止过电流。单片机 B 口内部弱上拉使能,外部不接上拉电阻,节
省元件。
3.2.4 蜂鸣器电路
用三极管放大来驱动蜂鸣器,减小 I/O 输出电流,有利保护单片机。基极接
1K 电阻来限流保护,防止 RC1 为高电平时输出电流太大,烧毁三极管,当 RC1
为高电平时蜂鸣器响。
3.3 软件设计及相关说明
3.3.1 软件设计思路
1、单片机、LCD 显示模块、DS1307 模块的初始化
2、主函数中,通过判断功能键标志位来决定程序走向,语句为
While(SET==0)、while(SET>=1)
若功能键标志位为 0,则读取 DS1307 及 TC74 数据,并显示,这是不
显示光标,同时检测是否为整点,当时间为整点时,蜂鸣器报时。
若功能键标志位为 1,则执行修改时钟程序,让 LCD 显示时显示光标,
表示正在执行修改,有利于人机界面的合理化。令 CH=1,让 DS1307 停止工作,
当退出修改时让 CH=0,时钟芯片开始工作。
3、当功能键按下,同时启动定时器,定时时间到,产生中断,中断计数变
量加一,当变量的值达到预定值时,强制 SET=0,退出修改模式,防止认为不小
心按下功能键,是系统的功能更加人性化。按下功能键时,位选键与增加键才能
作用,则位选键与增加键的相关程序应放在 while(SET>=1)程序中。
3.3.2 软件设计结构图
开始
单片机、LCD、
DS1307 初始化
SET=0
SET!=0
按下
功能键
推出修改
修改时间
写入时钟芯片
读取时间
并显示
整点
蜂鸣器响
3.3.2 相关程序说明
主函数格式:
while(1)
{
while(SET==0)
{
}
读取时钟芯片在数组中的程序;
显示时间数据程序;
蜂鸣器相关程序;
while(SET>=1)
{
}
}
调用位选键与修改键的相关程序;
4、实验验证
时钟、温度正常显示模式界面
按下功能键的界面
按下位选键后可修改月份,修改为 9 月份后的界面
当第一次按下 SET 键后,显示模式为显示光标并且光标闪烁。按下位选键可选着
修改的时间,按下“加”键盘,可对年、月、日,、小时、分钟、秒进行修改,
且修改后的值为新的计数值起点。当进行修改时,停止对时钟芯片与温度传感器
进行读操作,故 LCD 显示的值为修改值。当第二次按下 SET 键时,表示要退出修
改模式,进入正常计时模式,不显示光标。在修改模式中,若连续 10s 没有按下
键盘,则系统自动退出修改模式,有利于防止意外按下功能键,提高系统的可靠
性与人性化。整个系统的操作结果符合设计要求,功能完善。
5、总结
本次课程设计锻炼了我自学能力,同时也提高我综合运用能力,经过查阅芯
片资料,参考书本内容,独立完成了数字电子时钟的设计,功能达到预期的效果。
在本次设计中,程序的调试是我最大的收获,没有那个程序能一下子就成功,只
有经过不断的调试,查找出错误的原因,才是编程能力的实际体现。同时程序结
构的安排也是影响程序运行的一个很重要的因素。最后,我还从此次设计中明白,
程序是靠一步一步写出来的,只有动手写才能真正理解程序,光看资料不动手是
写不出好的程序,也不可能完成任务。
参考书目:
[1]江和,《PIC16 系类单片机 C 程序设计与 PROTUES 仿真》 ,北京航空航天大学
出版社,2010.6
[2]江和、鲍光海,《PIC 单片机课程设计指导书》 ,2012.3