《单片机原理与应用》课程设计报告范本.docx
《《单片机原理与应用》课程设计报告范本.docx》由会员分享,可在线阅读,更多相关《《单片机原理与应用》课程设计报告范本.docx(31页珍藏版)》请在冰点文库上搜索。
《单片机原理与应用》课程设计报告范本
江西理工大学应用科学学院信息工程系
单片机原理与应用课程设计报告
设计题目:
万年历
专业:
通信
班级:
081
学号:
14号22号33号
参与人员:
肖玮曹磊陈玲
指导老师:
刘蔚
完成日期:
2011.01.03
指导老师评语:
得分:
指导教师签名:
目录
1设计任务和性能指标3
1.1设计任务3
1.2性能指标3
2设计方案3
2.1需求分析3
2.2方案论证3
3系统硬件设计4
3.1主电路原理图4
3.2显示欢迎界面4
3.3显示实时时间5
3.4显示当前温度5
3.5时间设置5
4系统软件设计6
4.1主程序流程图6
4.2计算阳历程序流程图错误!
未定义书签。
4.3时间调整程序流程图错误!
未定义书签。
4.4阳历程序流程图错误!
未定义书签。
5系统硬件设计8
5.1调试步骤8
5.2性能分析8
6心得体会错误!
未定义书签。
参考文献9
附录1系统硬件电路图9
附录2程序清单9
1设计任务和性能指标
1.1设计任务
设计一个简单的单片机电子万年历系统
(1)可以任意设定年、月、日、时、分、秒、星期;
(2)自动关联农历时间;
(3)能够任意设定报时时间;
(4)具有响铃功能;
(5)具备温度显示功能;
1.2性能指标
该系统具有走时准确,结构简单,显示更新速度快,成本低等特点。
能实现计时功能,显示年月日时分秒,星期;
还可实现公历与阴历的转换。
2设计方案
2.1需求分析
可以广泛运用于工业的实时监控以及实时数据的采集又适用于家用电器的实时显示。
2.2方案论证
2.2.1单片机芯片的选择方案和论证
采用STC89C516RD+,片内ROM全都采用FlashROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全该芯片内部存储器为64KBROM存储空间,同样具有AT89C52的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要插入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。
2.2.2显示模块选择和方案论证
采用LCD液晶显示屏,因为液晶显示屏功能强大,可显示大量文字,图形,显示多样,清晰可见。
2.2.3时钟芯片的选择和方案论证
采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒,分,时,日,周,月,年进行计数,而且精度高,8位的RAM做为数据暂存区,工作电压2..5~5.5V范围内,2.5V时耗电小于300mA
2.2.4温度传感器的选择方案与论证
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。
另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
所以采用DS18B20作为温度传感器。
3系统硬件设计
3.1主电路原理图
3.2显示欢迎界面
3.3显示实时时间
3.4显示当前温度
3.5时间设置
4系统软件设计
4.1主程序流程图
图A主程序流程图
4.2计算阳历程序流程图
图B计算阳历程序流程图
4.3时间调整程序流程图
图C时间调整程序流程图
4.4阴历程序流程图
图D阴历程序流程图
5系统硬件设计
5.1调试步骤
硬件调试
单片机应用系统的硬件调试和软件调试是分不开的,许多硬件故障在软件调试时才能发现,但通常要先排除系统中明显的硬件故障。
调试工作可以分为四步:
线路检查:
根据硬件逻辑设计图,仔细检查样机线路是否连接正确,并核对元器件的型号、规格和安装是否符合要求,必要时可用万用表检测线路通断情况。
电源调试:
样机的第一次通电测试很重要,若样机中存在电源故障,则加电后将造成器件损坏。
调试的方法有两种:
一种是断开样机稳压电源的输出端,检查空载时电源工作情况;另一种是拔下样机上的主要集成芯片,检查电源的负载能力(用假负载)。
确保电源无故障并性能符合设计要求。
通电检查:
在确保电源良好前提下,接通电源。
最好在电源与其余电路之间串接一个电流表。
若接通后电流很大,必须立即切断电源。
电源大得超出正常范围,说明电路中有短路或故障。
通电检查的主要目的是看系统是否存在短路或由元器件损坏、装配错误引起的电流异常。
检查芯片的逻辑关系是否出错:
加电后检查各芯片插座上相关引脚的电位,仔细测量相应的输入输出电平是否正常。
单片机系统大都是数字逻辑电路,使用电平检查法可首先查出逻辑设计是否正确,选用器件和连接关系是否符合要求等。
本设计特点突出,性价比高,适合于家庭挂历,有很高应用价值。
5.2性能分析
(1)可以任意设定年、月、日、时、分、秒、星期;
(2)自动关联农历时间;
(3)能够任意设定报时时间;
(4)具有响铃功能;
(5)具备温度显示功能;
6、结论与心得
制作这次课程设计一切都是从零开始,从最简单的画流程图起步,这次课程设计可以圆满完成,跟单片机课程里面的课外作业是离不开的。
这次课程设计从开始到制作成功前后经历了一个星期。
当电子万年历可以成功实现时,那种激动和喜悦只有自己可以体会。
在整个设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。
较好的完成了作品。
达到了预期的目的,在最初的设计中,发挥“三个臭皮匠,顶个诸葛亮”的作用。
不懂的地方就请教同学。
从中也知道了焊接在整个作品中的重要性,电路工程量大,不能心急,一个个慢慢来不能急于求成。
反而达到事半功倍的效果。
对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。
程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,向同学探讨,理清了思路,反而得心应手。
在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。
也练就了我们的耐心,做什么事都在有耐心。
此次设计中学到了很多很多东西,这是最重要的。
总之,此次课设使我的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高。
参考文献
51单片机应用开发案例精选王为青邱文勋编著
新编单片机原理与应用潘勇雄编著
附录1系统硬件电路图
附录2程序清单
67H(高两位年)66H(低两位年)65H(月)64H(星期);63H(日)62H(小时)61H(分)60H(秒)57H(农历月)56H(农历日);显示缓冲单元7CH~7BH(4CH~4BH)年低位,7AH~79H(4AH~49H)月;78H(48H)星期,77H~76H(47H~46H)日,75H~74H(45H~44H)时;73H72H(43H~42H)分,71H~70H(41H~40H)秒,5EH~5DH(55H~54H)农历年;5CH~5BH(53H~52H)农历月,5AH~59H(51H~50H)农历日
;闰年标志为F0,定时器T1为调整时候闪烁用。
SCLKEQUP3.2
IOEQUP3.3
RSTEQUP3.4
YEARDATA66H
MONTHDATA65H
WEEKDATA64H
DAYDATA63H
HOURDATA62H
MINTUEDATA61H
SECONDDATA60H
DS1302_ADDRDATA32H
DS1302_DATADATA31H
ORG0000H
AJMPSTART
ORG0003H
RETI
ORG000BH
RETI
ORG0013H
RETI
ORG001BH
LJMPINTT1
ORG0023H
RETI
ORG002BH
RETI
;********************************
《主程序》
;********************************
START:
SETBEA
MOVSCON,#00H;串行输出,方式0
MOVTMOD,#10H;计数器1,方式1
MOVTL1,#00H
MOVTH1,#00H
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H;允许写1302
LCALLWRITE
MOVDS1302_ADDR,#90H
MOVDS1302_DATA,#0A6H
;1302充电,充电电流1.1mA
LCALLWRITE
MAIN1:
MOVDS1302_ADDR,#8DH;READOUTYEAR
LCALLREAD
MOVYEAR,DS1302_DATA
MOVDS1302_ADDR,#8BH;READOUTWEEK
LCALLREAD
MOVWEEK,DS1302_DATA
MOVDS1302_ADDR,#89H;READOUTMONTH
LCALLREAD
MOVMONTH,DS1302_DATA
MOVDS1302_ADDR,#87H;READOUTDAY
LCALLREAD
MOVDAY,DS1302_DATA
MOVDS1302_ADDR,#85H;READOUTHOUR
LCALLREAD
MOVHOUR,DS1302_DATA
MOVDS1302_ADDR,#83H;READOUTMINTUE
LCALLREAD
MOVMINTUE,DS1302_DATA
MOVDS1302_ADDR,#81H;READOUTSECOND
LCALLREAD
MOVSECOND,DS1302_DATA
MOVR0,YEAR;年分离,送显示缓存
LCALLDIVIDE
MOV7BH,R1
MOV4BH,R1
MOV7CH,R2
MOV4CH,R2
MOV78H,WEEK
MOV48H,WEEK
MOVR0,MONTH;月分离,送显示缓存
LCALLDIVIDE
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
MOVR0,DAY;日分离,送显示缓存
LCALLDIVIDE
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
MOVR0,HOUR;小时分离,送显示缓存
LCALLDIVIDE
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
MOVR0,MINTUE;分分离,送显示缓存
LCALLDIVIDE
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
MOVR0,SECOND;秒分离,送显示缓存
LCALLDIVIDE
MOV70H,R1
MOV40H,R1
MOV71H,R2
MOV41H,R2
LCALLDISPLAY
LCALLGENGXIN;更新农历程序
JNBP1.1,SETG
JNBF0,SSS
CLRP1.3;闰月,则p1.3清0,指示灯亮
LJMPMAIN1
SSS:
SETBP1.3;非闰月,则p1.3置位,指示灯灭
LJMPMAIN1
;********************************
《公历设置程序》
;********************************
SETG:
SETBTR1
SETBET1
CLR08H
CLR09H
CLR0AH
CLR0BH
CLR0CH
CLR0DH
CLR0EH
CLR0FH
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#00H;允许写1302
LCALLWRITE
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,#80H;1302停止振荡
LCALLWRITE
GWAIT:
LCALLDISPLAY
JNBP1.1,GWAIT
SETG1:
LCALLDISPLAY
JNBP1.1,SETG2
JNBP1.2,GADDYEAR
AJMPSETG1
GADDYEAR:
MOVR7,66H;年加1
LCALLADD1
MOV66H,A
CJNEA,#51H,GADDYEAR1
MOV66H,#01H
GADDYEAR1:
MOVDS1302_ADDR,#8CH;年值送1302
MOVDS1302_DATA,66H
LCALLWRITE
MOVR0,66H
LCALLDIVIDE;年分离送显示缓冲
MOV4BH,R1
MOV7BH,R1
MOV4CH,R2
MOV7CH,R2
WAITT1:
LCALLDISPLAY
JNBP1.2,WAITT1
AJMPSETG1
SETG2:
SETB0AH;调月时闪标志
GWAIT2:
LCALLDISPLAY
JNBP1.1,GWAIT2
SETG3:
LCALLDISPLAY
JNBP1.1,SETG4
JNBP1.2,GADDMONTH
AJMPSETG3
GADDMONTH:
MOVR7,65H;月加1
LCALLADD1
MOV65H,A
CJNEA,#13H,GADDMONTH1
MOV65H,#01H
GADDMONTH1:
MOVDS1302_ADDR,#88H;月值送1302
MOVDS1302_DATA,65H
LCALLWRITE
MOVR0,65H
LCALLDIVIDE;月分离送显示缓冲
MOV79H,R1
MOV49H,R1
MOV7AH,R2
MOV4AH,R2
WAITT2:
LCALLDISPLAY
JNBP1.2,WAITT2
AJMPSETG3
SETG4:
SETB0BH;调日时闪标志
GWAIT4:
LCALLDISPLAY
JNBP1.1,GWAIT4
SETG5:
LCALLDISPLAY
JNBP1.1,SETG6
JNBP1.2,GADDDAY
AJMPSETG5
GADDDAY:
MOVR7,63H;日加1
LCALLADD1
MOV63H,A
CJNEA,#32H,GADDDAY1
MOV63H,#01H
GADDDAY1:
MOVDS1302_ADDR,#86H;日值送1302
MOVDS1302_DATA,63H
LCALLWRITE
MOVR0,63H
LCALLDIVIDE;日分离送显示缓冲
MOV76H,R1
MOV46H,R1
MOV77H,R2
MOV47H,R2
WAITT3:
LCALLDISPLAY
JNBP1.2,WAITT3
AJMPSETG5
SETG6:
SETB0CH;调星期时闪标志
GWAIT6:
LCALLDISPLAY
JNBP1.1,GWAIT6
SETG7:
LCALLDISPLAY
JNBP1.1,SETG8
JNBP1.2,GADDWEEK
AJMPSETG7
GADDWEEK:
MOVR7,64H;星期加1
LCALLADD1
MOV64H,A
CJNEA,#08H,GADDWEEK1
MOV64H,#01H
GADDWEEK1:
MOVDS1302_ADDR,#8AH;星期值送1302
MOVDS1302_DATA,64H
LCALLWRITE
MOVR0,64H
LCALLDIVIDE;星期分离送显示缓冲
MOV48H,R1
MOV78H,R1
WAITT4:
LCALLDISPLAY
JNBP1.2,WAITT4
AJMPSETG7
SETG8:
SETB0DH;调小时时闪标志
GWAIT8:
LCALLDISPLAY
JNBP1.1,GWAIT8
SETG9:
LCALLDISPLAY
JNBP1.1,SETG10
JNBP1.2,GADDHOUR
AJMPSETG9
GADDHOUR:
MOVR7,62H;小时加1
LCALLADD1
MOV62H,A
CJNEA,#24H,GADDHOUR1
MOV62H,#00H
GADDHOUR1:
MOVDS1302_ADDR,#84H;小时值送1302
MOVDS1302_DATA,62H
LCALLWRITE
MOVR0,62H
LCALLDIVIDE;小时分离送显示缓冲
MOV74H,R1
MOV44H,R1
MOV75H,R2
MOV45H,R2
WAITT5:
LCALLDISPLAY
JNBP1.2,WAITT5
AJMPSETG9
SETG10:
SETB0EH;调分时闪标志
GWAIT10:
LCALLDISPLAY
JNBP1.1,GWAIT10
SETG11:
LCALLDISPLAY
JNBP1.1,SETGOUT
JNBP1.2,GADDMINTUE
AJMPSETG11
GADDMINTUE:
MOVR7,61H;分加1
LCALLADD1
MOV61H,A
CJNEA,#60H,GADDMINTUE1
MOV61H,#00H
GADDMINTUE1:
MOVDS1302_ADDR,#82H;分值送1302
MOVDS1302_DATA,61H
LCALLWRITE
MOVR0,61H
LCALLDIVIDE;分分离送显示缓冲
MOV72H,R1
MOV42H,R1
MOV73H,R2
MOV43H,R2
WAITT6:
LCALLDISPLAY
JNBP1.2,WAITT6
AJMPSETG11
SETGOUT:
LCALLDISPLAY
JNBP1.1,SETGOUT
LCALLGENGXIN
MOVDS1302_ADDR,#80H
MOVDS1302_DATA,#00H
;1302晶振开始振荡
LCALLWRITE
MOVDS1302_ADDR,#8EH
MOVDS1302_DATA,#80H;禁止写入1302
LCALLWRITE
CLR08H
CLR09H
CLR0AH
CLR0BH
CLR0CH
CLR0D
********************************
《DS18B20温度子程序》
;********************************
CONFIG12EQU7FH
TEMPHEQU21H
TEMPLEQU20H
REG2EQU22H
REG3EQU23H
REG4EQU24H
DATEQUP0.7
TOUTOU:
LCALLCHUSHI
LCALLRDTEMP
MOVA,TEMPL
ANLA,#11110000B
MOVTEMPL,A
MOVA,TEMPH
ANLA,#00000111B
ORLA,TEMPL
SWAPA
MOV25H,A
MOVA,25H
MOVB,#64H
DIVAB
MOVA,B
MOVB,#0AH
DIVAB
SWAPA
ORLA,B
MOV10H,A
RET
CHUSHI:
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#4EH
LCALLWRITE111
MOVA,#CONFIG12
LCALLWRITE111
RET
RDTEMP:
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#44H
LCALLWRITE111
LCALLDL1MS
LCALLRESET
MOVA,#0CCH
LCALLWRITE111
MOVA,#0BEH
LCALLWRITE111
LCALLERAD111
MOVTEMPL,A
LCALLERAD111
MOVTEMPH,A
RET
RESET:
LA:
SETBDAT
MOV52H,#200
LB:
CLRDAT
DJNZ52H,LB
SETBDAT
MOV52H,#30
LC:
DJNZ52H,LC
CLRC
ORLC,DAT
JCLB
MOV58H,#80
LD:
ORLC,DAT
JCLP
DJNZ58H,LD
SJMPLA
LP:
MOV52H,#250
LF:
DJNZ52H,LF
RET
WRITE111:
MOV53H,#8
W51HA:
SETBDAT
MOV54H,#8
RRCA
CLRDAT
W52HA:
DJNZ54H,W52HA
MOVDAT,C
MOV54H,#30
W53HA:
DJNZ54H,W53HA
DJNZ53H,W51HA
SETBDAT
RET
ERAD111:
CLREA
MOV58H,#8
RD1A:
CLRDAT
MOV54H,#6
NOP
SETBDAT
RD2A:
DJNZ54H,RD2A
MOVC,DAT
RRCA
MOV55H,#30
RD3A:
DJNZ55H,RD3A
DJNZ58H,RD1A
SETBDAT
RET
********************************
《读、写DS1302子程序》
;********************************
;写1302程序WRITE:
CLRSCLK
NOP
SETBRST
NOP
MOVA,32H
MOVR4,#8
WRITE1:
RRCA;送地址给1302
NOP
NOP
CLRSCLK
NOP
NOP