《单片机课程设计报告_6.docx》由会员分享,可在线阅读,更多相关《单片机课程设计报告_6.docx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机课程设计报告(单片机技术与应用)课程设计报告题目:单片机小系统电子钟的设计院系:信息科学与技术系专业班级:电子信息工程0901班学生姓名:王海毅学号:指导老师:陈青2012年6月11日至2021年6月25日华中科技大学武昌分校制2.课程设计题目描绘和要求(1)3.课程设计报告内容(3)3.1课题设计方案及基本原理(3)3.2硬件电路介绍(4)3.3软件设计(4)3.4调试经过(4)3.5碰到的问题及解决方法(4)4.实验总结(5)参考资料(5)附录1硬件实物图(7)附录2源程序清单(7)1.课程设计的目的1单片机系统的整体设计流程。2能够正确安装和焊接硬件电路板。3单片机系统的硬件、软件
2、调试方法及相关工具的使用。4各种常见元器件的选择及使用。2.课程设计题目描绘和要求题目描绘:电子钟的设计制作要求:用80C51/52单片机编程控制显示的电子钟。1要有8位LED显示器,分别显示“年号:月份:日期/“时:分:秒:毫秒先显示年份再显示日期。2能够设置四个输入按键,功能分别是“移位,“数字+,“数字-,“存储,即“SHIFT,“NUM+,“NUM-,“SAVE。3显示经过:实验板通电开机后,8位LED显示器显示“时:分:秒。按下“SHIFT后第一位数字闪动,继续按下“SHIFT后面数字闪动移位。再按“NUM+数字增加,按“NUM-数字减少,按“SAVE储存修改结果。4能够正确安装和焊
3、接硬件电路板。拿到元器件后,用万用表对电子元器件进行参数测量、检查。焊接时,要焊点饱满、光洁,无虚焊、漏焊、错焊。5熟悉单片机系统的工作原理及调测方法。软硬件安装调测完成后根据系统的工作原理、经过、测试数据及碰到的问题与处理情况、体会等完成课设报告。3.课程设计报告内容3.1课题设计方案及基本原理通过对单片机AT89C52软件编程来控制硬件使数码管显示年份与时间,并且能够通过按键来控制时间及年份的修改。基本原理:单片机AT89C52P0.0P0.3来判定按键能否按下,当按键按下时,P0.0P0.3为低电平,单片机程序对应为00H。通过P1,0P1.3控制4511的4个输入端,进行译码输出,45
4、11的输出端7段段码送数码管显示。P1.4P1.7控制4028的4个输入端进行位选输出9个状态,然后经过两个2003进行驱动让数码管能按按键要求显示。3.2硬件电路介绍CD4028是BCD码410译码器,它由4个缓冲输入端口、译码逻辑门和10个缓冲器组成。加至四个输入端口A0A3的一个BCD码在十个十进制译码器输出十个相应的顺序脉冲,输出为高电平有效。同样,若A30,加在输出口具有高驱动能力,以在高输出应用中加强直流和动态性能。BCD十进制译码器4028的引脚图如上页原理图中所示。3.3软件设计基本思路:1动态扫描显示LED电路程序:设立8个内部RAM显示缓冲区,将要显示的数据的BCD码送显示
5、缓冲区,程序只需要将显示缓冲区的BCD码,送相应的端口即可。动态扫描显示例如:将40H-48H为“时:分:秒:毫秒显示区将49H-4FH为“年:月:日显示区2动态扫描键盘程序:循环扫描有无按键,有:判定是何按键,转入相应子程序处理。无:返回主程序执行。3定时器设置与时间处理的程序:此段为该程序段的关键所在,它决定时间的准确性,和进位的正确性。定时器计数可用中断方式,可以以用软件查询方式进行。定时器中断定时方式的准确度高。采用软件延时方式要注意每条指令的机器周期的准确计算,否则会造成时间的不准。4各项功能键的子程序模块:移位子程序:按下“SHIFT后左边第一位数字闪动,继续按下“SHIFT后面数
6、字闪动移位。程序中可设置第二显示缓冲区,将移到要闪动的数字位设为不显示黑“0FFH/00H,程序只需要将两组显示缓冲区的BCD码,分时间间隔发送出去,就会产生数字闪动效果。数字+/-:将要显示的数据缓冲区的内容取出加一/减一,注意每个位都有本人的位限制,如“时的位最大数23,“分、秒最大数59,“月最大数12,“日最大数31。两位数一起调整比拟方便。还要注意的是计数后二/十进制之间的转换问题。“存储:即将修改好的数值存储到显示缓冲区,并返回,进入主程序运行。软件设计流程图:3.4调试经过1根据实验原理图焊接电路,然后进行硬件调试,用万用表点对点测量,看电路能否焊接好。十分是芯片的引脚,看能否连
7、通,如:AT89C52芯片的18脚与信号连通的话,用示波器测量18脚时就会出现比拟标准的正弦波。对按键进行测试时,假如按键没有按下,测量按键两端就会有大概5V的电压,假如按键两端没有电压,讲明按键已经按下,按下后其已经接地。2然后进行软件编程,对其进行功能仿真,仿真时要对仿真器进行设置,不然会出现超出地址范围的错误。然后进行断点设置,观察运行状态,看外部寄存器中20H2AH中单元的变化,看能否到达要求,编程时注意对于在后面将发生变化的寄存器单元要进行清零操作,不然会影响后面的结果,对于加操作后要进行十进制调整,并且DAA的指令只对寄存器A操作。3将编写好的程序用烧录器烧录到AT89C52芯片中
8、,然后再安装到硬件电路板上,判定按键0能否按下否是初始化显示时间显示日期判定按键1能否按下否毫秒闪烁再次按下按键1判定40H的内容判定40H的内容为0为1为1为0秒闪烁再一次按下按键1分闪烁再一次按下按键1时闪烁按下按键4判定按键1能否按下是日闪烁再次按下按键1月闪烁再一次按下按键1年闪烁退出调整并保存按键2、3为加、减调整否接通512V的电源后会先显示时间,按键切换以后将显示日期,再切换后毫秒会闪烁通过+按键可对其进行加操作,按键进行减操作。依次进行时间的修改,按保存后,再切换将进行从日到年对日期修改。3.5碰到的问题及解决方法1当我把程序下载到AT89C52芯片中,然后再安装到硬件电路板上
9、,接通512V的电源后,我发现LED数码管只要左边一半是亮的,我编的程序是让所有LED数码管都亮。解决方法:我用别人的硬件试了一下我的芯片所有LED数码管都亮了,这肯定是我的硬件电路的问题,我找教师帮助,教师先用万用表检查控制显示的CD4028芯片能否接通,发现是好的,然后用示波器检查AT89C52左边引脚的波形,发现左边第三个引脚没有波形,其次又发现CD4028芯片有一个引脚也没波形,教师断定是我的CD4028芯片坏了,最后教师给我换了一个CD4028芯片,再测试后就好了。2编译后指令超出地址范围。解决方法:能够采用接力的方式先转到中间再转到所要转的地方,灵敏运用指令就会解决一些问题。3按键
10、不是很灵敏,按的太快没反响,或者按键反响太快了按一下跳好几下。解决方法:按键延时时间太长或太短了,将延时时间调整到1020毫秒,就能够解决了。4.实验总结对单片机AT89C52芯片内部构造以及各引脚功能有了进一步的了解,对硬件的焊接愈加熟练,能基本做到不拖焊、虚焊,并且一次成功。第一次接触这么长程序的编写,思路开场很模糊,很多子程序不知道放哪里比拟好,有时主程序也很模糊,通过参考别人的程序有了一定的思维,再根据本人的想法对别人的程序进行了一定的修改,就变为本人的东西,通过这次编写,我了解到思维逻辑性要在把握程序的基础之上,这样才能做到有序,有条理。编写程序思路是很重要的,首先理清思路,画出程序
11、流程图,根据流程图,一步步用指令实现。参考资料1陈青.单片计算机原理课程设计指导书.华中科技大学武昌分校2021.1.82姜志海.单片微机原理及应用.北京:电子工业出版社.2005.3李群芳.肖看.单片机原理、接口及应用.北京:清华大学出版社.2005.附录1硬件实物图ORG0000HAJMPMAIN1ORG001BHAJMPT1INTORG0030HMAIN1:MOVSP,#70H;初始化CLRACLR20H.1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBEASETBET1SETBTR1MOV31H,#00HMOV32H,#58HMOV33H,#58HMOV3
12、4H,#23HMOV35H,#27HMOV36H,#02HMOV37H,#12HMOV38H,#20HMOV40H,#0;标志位MOVR0,#31HMOVR1,#32HLOPA:JNB20H.1,NEXT1CLR20H.1MOVA,#1ADDA,31H;到10毫秒DAAMOV31H,ACJNEA,#100H,NEXT1MOV31H,#0MOVA,#1ADDA,32H;到一秒DAAMOV32H,ACJNEA,#60H,NEXT1MOV32H,#0MOVA,#1ADDA,33H;到一分DAAMOV33H,ACJNEA,#60H,NEXT1MOV33H,#0MOVA,#1ADDA,34H;到一时DA
13、AMOV34H,ACJNEA,#24H,NEXT1MOV34H,#0MOVA,#1ADDA,35H;到一天DAAMOV35H,ALCALLTIAO_TIANMOV35H,#01HMOVA,#1ADDA,36H;到一月DAAMOV36H,ACJNEA,#13H,NEXT1MOV36H,#01HMOVA,#1;到一年ADDA,37HDAAMOV37H,ACJNEA,#100H,NEXT1MOV37H,#00HMOVA,#1ADDA,38HDAAMOV38H,ACJNEA,#100H,NEXT1MOV38H,#00HRET;-切换时间和年-NEXT1:JBP0.0,LOPB;判定能否切换JNBP0.
14、0,$MOVA,R0CJNEA,#35H,LOPCMOVR0,#31HMOVR1,#32HLJMPLOPBLOPC:MOVR0,#35HMOVR1,#36HLOPB:LCALLDISPJBP0.1,LOP0;判定按键进入调整JNBP0.1,$LCALLLOP1;设置时间和日期LOP0:LJMPLOPA;-调时间和日期-LOP1:JBP0.1,LOP2;判定能否退出调整JNBP0.1,$RETLOP2:JBP0.4,LOP3;判定能否移位JNBP0.4,$INC40H;指针加一MOVA,40HCJNEA,#04H,LOP3;没有到最前两位MOV40H,#0LOP3:MOVA,40H;判定是哪一位调整CJNEA,#0,N_HAO_HUO_RIJBP0.2,LUOA;进入加调整JNBP0.2,$MOVA,R0;调毫秒或者天数CJNEA,#31H,AOP1;加毫秒