福州大学课程设计格式

《PIC 单片机》 课程设计

学生姓名: 邱荣华 学 号: 011100225 专业班级: 电气工程与自动化2011级2班 指导教师: 江和

2014年6月13日

1. 课程设计题目和要求

课程设计的性质和目的

《PIC 单片机课程设计》是电气工程及其自动化专业及相近专业的一门重要的专业实践课,本课程在《PIC 单片机》课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC 单片机的应用方法,熟练PIC 单片机的C 程序的编写与调试,是毕业设计前的一次重要的实践,为今后走上工作岗位打下坚实的单片机应用基础。

要达到的目标:

1. 熟悉MPLAB IDE和PROTUES 的使用。

2. 熟练掌握PIC16F887单片机的编程技巧,加深对理论教学内容的理解与掌握。 3. 通过自主选题、编程、调试到完成任务,从而提高分析和解决问题的能力,培养自主创新能力。 1.2课程设计内容和要求

设计一个具有完整功能、有一定工作量与一定难度的单片机应用线路,并绘制能用于仿真的proteus 线路图,编制相应的单片机c 语言,分别在proteus 仿真界面和实物板上调试运行正确。最后用实物进行运行演示,并写出符合规范的课程设计报告。

2. 设计方案

2.1利用PIC16F887单片机设计一个万年历,通过IIC 通信将DS1307时钟芯片中的时间用LCD 液晶屏显示。同时,该设计还兼具温度显示功能,可以通过键盘设置当前时间、日期。 2.2 硬件框图:

根据所要实现的预期功能,硬件必须要有最小系统模块、LCD 显示模块、时钟模块、温度模块、按键模块等

2.3 protues仿真图的绘制:

初步了解此次课程设计所用的开发板,并根据所选课题,进一步了解该课题

用到的相应模块。在protues

中找到相信模块中的元件,绘制好仿真图。

2.4最小系统

最小系统包括16F887单片机、复位模块、4M 外部晶振、排针等部件组成如下最基本电路,其中芯片供电的引脚略去。本课设板所用的单片机为PIC16F887,是877A 的升级,其主要参数与887A 类似。

2.5 LCD显示模块

如图所示,为了节省I/O口,采用4位接线法,RD 口的低四位和LCD 的高4

位连接,RD7用于背光显示(RD7=1),RD4、RD5、RD6用于读写和使能控制. 上电

后要延时15ms 后,才能进行初始。

编写LCD 初始化程序、写4位数据/命令子程序、写8位数据/命令子程序、显示整行子程序、读LCD 子程序、忙时检测子程序。

定义常数字符数组,在开机后显示”qiuronghua 011100225” 等字样

2.6 时钟和温度模块

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

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

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

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

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

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

2.7按键模块

采用普通按键实现时间的修改、设定,mod 键进入时间设置,time_set实现位置(秒、分、时,日,月,年)的选择,其他两个按键是加减功能。

部分检测消抖程序:

if(mod==0) {

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

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

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

}

} }

由于星期几和日期有对应关系,所以只需要调整日期,就可改变星期几。 相关程序:

void GregorianDay(void) {

int leapsToDate; int day1;

int MonthOffset[]= { 0,31,59,90,120,151,181,212,243,273,304,334 }; if(year==0) {if(month

day1 = MonthOffset[month - 1] + day; else

day1= MonthOffset[month - 1] + day+1; } else

{leapsToDate = year / 4 ; if((year % 4 == 0) && (month > 2)) day1=1; else day1=0;

day1 += year*365 + leapsToDate+1+ MonthOffset[month - 1] + day; }

}

week = (day1+5) % 7;

write_DS1307(3, dec_bcd(week)); //转换为BCD 码后,将秒写入芯

2.8程序流程图

3调试

程序编译成功后,选择调试工具为protues 仿真,观察仿真结果并根据仿真中出现的问题对程序进行进一步的修改。 调试成功后出现的效果:

3.1仿真调试出现的问题

1、程序出现类似 ";" expected、no identifier in declaration等错误。

处理:此类错误一般是由于大括号、封号漏写或者多写,也可能是在中文环境下的符号。仔细检查出错程序位置附近,检查封号、大括号的数量和格式。 2、出现function declared implicit int、undefined identifier "N"等错误。

处理:函数未声明、变量为定义所引起的错误,在相应的地方添加函数声明,变量定义。

3.2烧写程序及硬件调试

将程序烧写至picket3烧写器中,进行硬件调试。

出现的问题:

1. 无法显示时间和温度,IIC 通信停止。

解决办法:TC74仿真和实物的地址不一样,只需把地址1001101改为1001000 2. 按键调整时光标没有和仿真一样闪动

解决办法:由于程序刷新太快,人眼无法分辨,所以只需在按键后面加50ms 的延时即可。

3. 不能掉电保护,每次脱机或者复位都会进行时钟初始化

解决办法:DS1307初始化前先进行判断秒的最高位是否为1,为1则进行初始化

4心得体会

通过本次的课程设计任务,我掌握学会了MPLAB IDE,PROTUES仿真软件的使用基础。单片机是现在科技研究的潮流,各种电子产品都可以见到单片机的身影。而本课设正是帮助我把课堂上所学习到的理论,运用到了实际中,是我受益匪浅。 在此次课程设计初期,本来想拷贝一份程序过来进行修改,经过一些挣扎后,最后还是决定通过自己编写。对于一个单片机初学者,对于课堂所学的知识还只有个模糊的认识,再加之课程设计在课程结束一段时间才进行选题,一些编程知识有些淡忘,所以只好重新复习了课本。在编写过程中遇到了不少问题,就之前提到的配置位问题,由于疏漏,配置位设置错误,导致做了6个小时的无用功在查程序。或者是因为大大小小的失误,都耗费了很多的时间。这也让我明白了,作为一个工科学生,做事要严谨认真,虽然都是小问题,但恰恰是细节的问题决定一件事情的最终走向。随着编程的继续,我的查错能力也慢慢有了提升。

总之,本次课程设计让我受益匪浅,让我战胜自己的惰性,提高了分析解决问题的能力,也提高了自己的逻辑能力,当然,更关键的是让我明白,不注意细节性问题会付出很大的代价。

《PIC 单片机》 课程设计

学生姓名: 邱荣华 学 号: 011100225 专业班级: 电气工程与自动化2011级2班 指导教师: 江和

2014年6月13日

1. 课程设计题目和要求

课程设计的性质和目的

《PIC 单片机课程设计》是电气工程及其自动化专业及相近专业的一门重要的专业实践课,本课程在《PIC 单片机》课程的基础上,通过硬件设计与软件编程与调试的实践,进一步掌握PIC 单片机的应用方法,熟练PIC 单片机的C 程序的编写与调试,是毕业设计前的一次重要的实践,为今后走上工作岗位打下坚实的单片机应用基础。

要达到的目标:

1. 熟悉MPLAB IDE和PROTUES 的使用。

2. 熟练掌握PIC16F887单片机的编程技巧,加深对理论教学内容的理解与掌握。 3. 通过自主选题、编程、调试到完成任务,从而提高分析和解决问题的能力,培养自主创新能力。 1.2课程设计内容和要求

设计一个具有完整功能、有一定工作量与一定难度的单片机应用线路,并绘制能用于仿真的proteus 线路图,编制相应的单片机c 语言,分别在proteus 仿真界面和实物板上调试运行正确。最后用实物进行运行演示,并写出符合规范的课程设计报告。

2. 设计方案

2.1利用PIC16F887单片机设计一个万年历,通过IIC 通信将DS1307时钟芯片中的时间用LCD 液晶屏显示。同时,该设计还兼具温度显示功能,可以通过键盘设置当前时间、日期。 2.2 硬件框图:

根据所要实现的预期功能,硬件必须要有最小系统模块、LCD 显示模块、时钟模块、温度模块、按键模块等

2.3 protues仿真图的绘制:

初步了解此次课程设计所用的开发板,并根据所选课题,进一步了解该课题

用到的相应模块。在protues

中找到相信模块中的元件,绘制好仿真图。

2.4最小系统

最小系统包括16F887单片机、复位模块、4M 外部晶振、排针等部件组成如下最基本电路,其中芯片供电的引脚略去。本课设板所用的单片机为PIC16F887,是877A 的升级,其主要参数与887A 类似。

2.5 LCD显示模块

如图所示,为了节省I/O口,采用4位接线法,RD 口的低四位和LCD 的高4

位连接,RD7用于背光显示(RD7=1),RD4、RD5、RD6用于读写和使能控制. 上电

后要延时15ms 后,才能进行初始。

编写LCD 初始化程序、写4位数据/命令子程序、写8位数据/命令子程序、显示整行子程序、读LCD 子程序、忙时检测子程序。

定义常数字符数组,在开机后显示”qiuronghua 011100225” 等字样

2.6 时钟和温度模块

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

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

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

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

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

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

2.7按键模块

采用普通按键实现时间的修改、设定,mod 键进入时间设置,time_set实现位置(秒、分、时,日,月,年)的选择,其他两个按键是加减功能。

部分检测消抖程序:

if(mod==0) {

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

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

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

}

} }

由于星期几和日期有对应关系,所以只需要调整日期,就可改变星期几。 相关程序:

void GregorianDay(void) {

int leapsToDate; int day1;

int MonthOffset[]= { 0,31,59,90,120,151,181,212,243,273,304,334 }; if(year==0) {if(month

day1 = MonthOffset[month - 1] + day; else

day1= MonthOffset[month - 1] + day+1; } else

{leapsToDate = year / 4 ; if((year % 4 == 0) && (month > 2)) day1=1; else day1=0;

day1 += year*365 + leapsToDate+1+ MonthOffset[month - 1] + day; }

}

week = (day1+5) % 7;

write_DS1307(3, dec_bcd(week)); //转换为BCD 码后,将秒写入芯

2.8程序流程图

3调试

程序编译成功后,选择调试工具为protues 仿真,观察仿真结果并根据仿真中出现的问题对程序进行进一步的修改。 调试成功后出现的效果:

3.1仿真调试出现的问题

1、程序出现类似 ";" expected、no identifier in declaration等错误。

处理:此类错误一般是由于大括号、封号漏写或者多写,也可能是在中文环境下的符号。仔细检查出错程序位置附近,检查封号、大括号的数量和格式。 2、出现function declared implicit int、undefined identifier "N"等错误。

处理:函数未声明、变量为定义所引起的错误,在相应的地方添加函数声明,变量定义。

3.2烧写程序及硬件调试

将程序烧写至picket3烧写器中,进行硬件调试。

出现的问题:

1. 无法显示时间和温度,IIC 通信停止。

解决办法:TC74仿真和实物的地址不一样,只需把地址1001101改为1001000 2. 按键调整时光标没有和仿真一样闪动

解决办法:由于程序刷新太快,人眼无法分辨,所以只需在按键后面加50ms 的延时即可。

3. 不能掉电保护,每次脱机或者复位都会进行时钟初始化

解决办法:DS1307初始化前先进行判断秒的最高位是否为1,为1则进行初始化

4心得体会

通过本次的课程设计任务,我掌握学会了MPLAB IDE,PROTUES仿真软件的使用基础。单片机是现在科技研究的潮流,各种电子产品都可以见到单片机的身影。而本课设正是帮助我把课堂上所学习到的理论,运用到了实际中,是我受益匪浅。 在此次课程设计初期,本来想拷贝一份程序过来进行修改,经过一些挣扎后,最后还是决定通过自己编写。对于一个单片机初学者,对于课堂所学的知识还只有个模糊的认识,再加之课程设计在课程结束一段时间才进行选题,一些编程知识有些淡忘,所以只好重新复习了课本。在编写过程中遇到了不少问题,就之前提到的配置位问题,由于疏漏,配置位设置错误,导致做了6个小时的无用功在查程序。或者是因为大大小小的失误,都耗费了很多的时间。这也让我明白了,作为一个工科学生,做事要严谨认真,虽然都是小问题,但恰恰是细节的问题决定一件事情的最终走向。随着编程的继续,我的查错能力也慢慢有了提升。

总之,本次课程设计让我受益匪浅,让我战胜自己的惰性,提高了分析解决问题的能力,也提高了自己的逻辑能力,当然,更关键的是让我明白,不注意细节性问题会付出很大的代价。


相关内容

  • 大学生课程设计与综合实训报告格式
  • A n h u i Vo c a t i o n a l & Te c h n i c a l C o l l e g e o f I n d u s t r y & Tr a d e课程设计综合实训报告×××(题目,二号黑体居中)计算机技术系 所在系院: 专业班级: 2011 级计 ...

  • ★课程设计说明书的撰写要求和统一书写格式2012
  • 课程设计说明书的撰写要求和统一书写格式 --热动09级 武汉理工大学<汽车发动机设计>课程设计说明书 ★课程设计说明书的撰写要求 撰写说明书是课程设计的一个重要内容,每位学生必须按要求认真撰写课程设计说明书,未完成课程设计说明书的学生不得参加课程设计的考核和成绩评定. 课程设计说明书要按 ...

  • 2.课程设计报告撰写规范
  • 江西理工大学应用科学学院信息工程系 课程设计规范 (试行) 信息工程系 二○一○年六月 第1章 内容要求 第1章 内容要求 课程设计报告由以下几个部分组成组成,依次为: I.统一的封面,封面之后为课设评分表及答辩记录表: II.摘要: III.目录: IV.课程设计总结报告正文: V.总结(本课题核 ...

  • 02-电力系统自动低频减负荷装置设计(2)
  • 辽 宁 工 业 大 学 电力系统自动化 课程设计(论文) 题目:电力系统自动低频减负荷装置设计(2) 院(系): 电气工程学院 专业班级: 电气xxx 学 号: xxx 学生姓名: 指导教师: 起止时间:2015.11.30- 12.11 辽 宁 工 业 大 学 课 程 设 计 说 明 书 (论文) ...

  • 中南大学网页设计课程设计报告
  • 中南大学 本科生课程设计(实践)任务书.设计报告 (大学计算机基础) 题 目 可爱的安庆,美丽的太湖 学生姓名 戴恒洋 指导教师 李小兰 学 院 公共管理学院 社会学 专业班级 1201班 学生学号 4301120126 计算机基础教学实验中心 年 月 日 网页课程设计报告 网页制作-我的家乡 1. ...

  • 暨南大学课程论文模版
  • 暨 南 大 学 本科生课程论文 论文题目: 学 院: 学 系: 专 业: 课程名称: 学生姓名: 学 号: 指导教师: 年 月 日 职场"不败玫瑰"的秘密-- 试析女性职业经理人的核心竞争力 [摘 要] [关键词] /*关键词是供检索用的主题词条,应采用能覆盖论文主要内容的通用技 ...

  • 会计电算化课程教学大纲
  • <会计电算化>课程教学大纲 课程名称:会计电算化 课程类型:专业核心课程 学 分:3 先修课程:基础会计.计算机应用 适用专业:会计电算化.财务管理.会计 总学时:64 理论学时:32 实验(上机)学时:32 课程代码:1630301 一.课程性质.目的和任务 (一)课程性质 <会 ...

  • [测量程序设计]课程教学大纲格式
  • 测绘工程专业 课程教学大纲 [课程名称]测量程序设计 [课程编码]A [课程类别]专业必修课 [课 时]56学时 [学 分]3.0学分 [课程性质.目标和要求] 课程性质:<测绘程序设计>是测绘工程专业本科选修的一门的专业基础课, 是测绘与程序设计理论联系实际的重要环节,在培养学生严谨的 ...

  • 2015级本科新生大学英语.计算机分级考试要求
  • 中国药科大学大学英语分层次教学要求 根据教育部<大学英语课程教学要求>,大学英语教学重点在于培养学生的英语综合应用能力,特别是听说能力,使其在今后学习.工作和社会交往中能用英语有效地进行交际,同时增强学生自主学习能力,提高综合文化素养,以适应我国社会发展和国际交流的需要. 一般要求: 1 ...