福州大学课程设计格式.docx

上传人:b****5 文档编号:6595376 上传时间:2023-01-08 格式:DOCX 页数:9 大小:162.34KB
下载 相关 举报
福州大学课程设计格式.docx_第1页
第1页 / 共9页
福州大学课程设计格式.docx_第2页
第2页 / 共9页
福州大学课程设计格式.docx_第3页
第3页 / 共9页
福州大学课程设计格式.docx_第4页
第4页 / 共9页
福州大学课程设计格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

福州大学课程设计格式.docx

《福州大学课程设计格式.docx》由会员分享,可在线阅读,更多相关《福州大学课程设计格式.docx(9页珍藏版)》请在冰豆网上搜索。

福州大学课程设计格式.docx

福州大学课程设计格式

福州大学课程设计格式

 

《PIC单片机》

课程设计

 

学生姓名:

邱荣华

学号:

011100225

专业班级:

电气工程与自动化2011级2班

指导教师:

江和

 

2014年6月13日

2.3protues仿真图的绘制:

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

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

2.4最小系统

最小系统包括16F887单片机、复位模块、4M外部晶振、排针等部件组成如下最基本电路,其中芯片供电的引脚略去。

本课设板所用的单片机为PIC16F887,是877A的升级,其主要参数与887A类似。

2.5LCD显示模块

如图所示,为了节省I/O口,采用4位接线法,RD口的低四位和LCD的高4位连接,RD7用于背光显示(RD7=1),RD4、RD5、RD6用于读写和使能控制.上电后要延时15ms后,才能进行初始。

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

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

 

2.6时钟和温度模块

选用始终芯片DS1307、温度芯片TC74,皆通过IIC和单片机通信,时钟芯片带备用3V电池,电阻RA4和RA5设置为数字电阻。

DS1307是实时时钟芯片,它提供秒、分、时、日、月、、年和星期等数据,并能自动计算闰年至2100年。

通常时钟芯片是要接备用电池,当主电源掉电时,备用电源为DS1307提供维持电源,此电源只供DS1307使用,此时时钟仍正常运行,时钟晶振是典型的32.768kHz。

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

voidIIC_CSH()

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

voidwrite_DS1307(charaddr,chardata)

voidREAD_DS1307(charaddr,charn)

从时钟芯片读出的是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;

}

}

}

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

相关程序:

voidGregorianDay(void)

{

intleapsToDate;

intday1;

intMonthOffset[]={0,31,59,90,120,151,181,212,243,273,304,334};

if(year==0)

{if(month<=2)

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、noidentifierindeclaration等错误。

处理:

此类错误一般是由于大括号、封号漏写或者多写,也可能是在中文环境下的符号。

仔细检查出错程序位置附近,检查封号、大括号的数量和格式。

2、出现functiondeclaredimplicitint、undefinedidentifier"N"等错误。

处理:

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

3.2烧写程序及硬件调试

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

出现的问题:

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

解决办法:

TC74仿真和实物的地址不一样,只需把地址1001101改为1001000

2.按键调整时光标没有和仿真一样闪动

解决办法:

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

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

解决办法:

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

4心得体会

通过本次的课程设计任务,我掌握学会了MPLABIDE,PROTUES仿真软件的使用基础。

单片机是现在科技研究的潮流,各种电子产品都可以见到单片机的身影。

而本课设正是帮助我把课堂上所学习到的理论,运用到了实际中,是我受益匪浅。

在此次课程设计初期,本来想拷贝一份程序过来进行修改,经过一些挣扎后,最后还是决定通过自己编写。

对于一个单片机初学者,对于课堂所学的知识还只有个模糊的认识,再加之课程设计在课程结束一段时间才进行选题,一些编程知识有些淡忘,所以只好重新复习了课本。

在编写过程中遇到了不少问题,就之前提到的配置位问题,由于疏漏,配置位设置错误,导致做了6个小时的无用功在查程序。

或者是因为大大小小的失误,都耗费了很多的时间。

这也让我明白了,作为一个工科学生,做事要严谨认真,虽然都是小问题,但恰恰是细节的问题决定一件事情的最终走向。

随着编程的继续,我的查错能力也慢慢有了提升。

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

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1