单片机课程设计说明书
湖南科技大学潇湘学院
课 程 设 计
课程设计名称: 《单片机接口技术》课程设计 学 生 姓 名:
学 院:
专业及班级:
学 号:
指导教师:
2016 年 12 月 16 日
课 程 设 计 任 务 书
一、设计目的:
在学习和了解单片机原理和接口技术的基础上,使学生理论与实践相结合,深入了解89C51单片机在工程常见领域的相关应用,提高学生将单片机、控制技术和电子、机械、通讯等多学科的综合应用能力和实际动手能力。
二、学生提交设计期限:
在本学期2016年12月12日至2016年12月20日完成,设计必须学生本人交指导老师评阅,指导教师将组织部分学生答辩。
三、本设计参考材料:
《单片机实验与课程设计 Proteus仿真版》 《单片机课程设计指导》
《单片机原理与应用 实验实训和课程设计》 《单片机项目式教程 基于Proteus虚拟仿真技术》
网上视频及实验例程资料。
四、设计题目的选定:
参考设计题目附后页,任选一题。
五、设计要求:
1、 查阅相关资料;
2、 提出整体系统设计方案;
3、 设计单片机系统电路;
4、 设计单片机系统程序;
5、 利用Proteus软件进行仿真检测。
六、设计成果及处理说明书主要章节:
1. 设计成果(包括说明书、电路原理图、程序);
2. 设计说明书格式及主要章节:
a. 封面(参照学院规定标准);
b. 设计任务书(包括选定设计题目与要求);
c. 目录
d. 说明书正文;(主要章节包括:系统总体方案分析及确定;单片机硬件电路和程序详细介绍;仿真运行与结果分析等)
e. 设计总结及体会;
f. 参考文献
七、设计所得学分及成绩评定:
本设计单独算学分及成绩:占1个学分。
考核与评分主要分四个方面:
1. 学生平时出勤及工作态度;
2. 单片机电路原理图和程序设计正确;
3. 说明书、软件编写规范、仿真分析结果及独立工作能力;
4. 答辩成绩。
八、设计进度与答疑:
1、 确定设计题目及查阅资料,并确定方案:12.12~12. 13日;
2、 单片机硬件设计及编程 12.14~12.16日;
3、 运行调试检测与修改,撰写课程设计报告:12.17~12.18日;
4、 提交设计报告,学生答辩:12.19~12.20日。
学生签名: 指导老师签名:
学 号:
日 期: 日 期:
目录
一、设计目的...............................................................1
二、设计内容与要求.....................................................1
三、程序设计...............................................................1
四、程序流程图.............................................................1
五、程序代码 .............................................................2
六、程序及硬件系统调试情况 ...................................3
七、设计总结与体会.....................................................4
八、参考文献.................................................................5
闪烁灯
一.设计目的
课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要环节。通过课程设计,熟悉和掌握微机系统的硬件设计的方法、原理、设计步骤。熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤。不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。
二.设计内容与要求
某单片机系统控制要求为:
1 正常情况下,8个LED常亮;
2 按下按钮K1时,第1个和第8个LED闪烁,闪烁间隔时间为1s;
3 按下按钮K2时,8个LED闪烁,闪烁时间间隔时间为2s;
4 LED由单片机P0端口控制。
三.程序设计
首先将P0和P1端口全部设置为高电平,在判断按钮K1是否按下,如果按钮K1按下,则与P0.0和P0.7连接的LED都点亮。如果按钮K1未按下,在判断按钮K2是否按下;如果按钮K2按下,则与P0端口链接的8个LED闪烁,否则8个LED常亮。
四.程序流程图
五.程序代码
#include
#define uint unsigned int #define uchar unsigned char sbit k1=P1^0;
sbit k2=P1^1;
sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4=P0^3;
sbit D5=P0^4;
sbit D6=P0^5;
sbit D7=P0^6;
sbit D8=P0^7;
void delay(void)
{
uchar i,j,k;
for(i=10;i>0;i--) {for(j=200;j>0;j--)
{for(k=230;k>0;k--);}} }
void main(void)
}
P0=0xFF;
P1=0xFF;
while(1)
{
If(k1==0)
{
D1=0;D2=1;D3=1;D4=1; D8=0;D5=1;D6=1;D7=1; }
else if(k2==0)
{
P0=~P0;
delay();
}
else
{P0=0x00;}
}
}
六.程序及硬件系统调试情况
五.程序代码
#include
#define uint unsigned int
#define uchar unsigned char
sbit k1=P1^0;
sbit k2=P1^1;
sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4=P0^3;
sbit D5=P0^4;
sbit D6=P0^5;
sbit D7=P0^6;
sbit D8=P0^7;
void delay(void)
{
uchar i,j,k;
for(i=10;i>0;i--)
{for(j=200;j>0;j--)
{for(k=230;k>0;k--);}}
}
void main(void)
}
P0=0xFF;
P1=0xFF;
while(1)
{
If(k1==0)
{
D1=0;D2=1;D3=1;D4=1;
D8=0;D5=1;D6=1;D7=1;
}
else if(k2==0)
{
P0=~P0;
delay();
}
else
{P0=0x00;}
}
}
六.程序及硬件系统调试情况
在运行时要检查一下是否有语句错误,当我们第一次检查时一个中括号反了,改正后就能正常运行。
七.设计总结与体会
在做本次课程设计的过程中,我感触最深的当属查阅大量的设计资料了。为了让自己的设计更加完善,查阅这方面的设计资料是十分必要的,同时也是必不可少的。我们是在做单片机课程设计,但我们不是艺术家,他们可以抛开实际尽情在幻想的世界里翱翔,而我们一切都要有据可依,有理可寻,不切实际的构想永远只能是构想,永远无法升级为设计。
其次,在这次课程设计中,我们运用到了以前所学的专业课知识,如:汇编语言、模拟和数字电路知识等。虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。在这次课程设计中,清晰的分析过程也起到很大的作用。在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。设计过程,好比是我们人类成长的历程,常有一些不如意,但毕竟这是第一次做,难免会遇到各种各样的问题。在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们通过查阅大量有关资料,并在同学间互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次课程设计我也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。这也激发了我今后努力学习的兴趣,我想这将对我以后的学习产生积极的影响
八.参考文献
《单片机实验与课程设计 Proteus仿真版》 《单片机课程设计指导》 《单片机原理与应用 实验实训和课程设计》
《单片机项目式教程 基于Proteus虚拟仿真技术》
网上视频及实验例程资料。