单片机原理及应用课程设计报告.docx
- 文档编号:24073749
- 上传时间:2023-05-24
- 格式:DOCX
- 页数:23
- 大小:200.13KB
单片机原理及应用课程设计报告.docx
《单片机原理及应用课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课程设计报告.docx(23页珍藏版)》请在冰豆网上搜索。
单片机原理及应用课程设计报告
《单片机原理及应用》
课程设计报告
专业:
班级:
姓名:
指导教师:
二0一二年十二月二十五日
单片机原理及应用课程设计任务书
一、设计题目:
答辩倒计时器
二、设计目的
1、巩固和加深单片机原理课程知识的理解和运用。
2、进一步提高学生单片机应用系统的设计能力。
3、培养学生综合分析问题、发现问题和解决问题的能力。
三、设计要求
设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。
总体要求如下:
1、方案论证,确定总体电路原理图。
2、元器件选择,设计PCB图(或用万能电路实验板搭线)。
3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。
4、安装调试,实现倒计时器的基本功能。
四、可提供的主要电子元器件
1、AT89S51;7407;(均为DIP封装)
2、LED(4位一体共阴);按键;电阻排;三极管;蜂鸣器
3、石英晶振6M;30pF;0.1uF;10uF电容;电阻若干。
五、实践步骤
1、收集相关资料,完成电路原理图和应用程序流程图。
2、编写汇编语言(或C语言)源程序。
3、根据所设计的原理图,完成电路板的制作安装(可用万能板)。
4、硬件软件综合调试,并完善其设计功能。
六、实践标准
完成电路制作安装,完成程序设计并调试通过,实现其设计要求和功能,装配工艺美观,电路运行稳定、可靠。
七、设计报告总结
1、写出设计方案(包括方案对比,方案确定),给出完整的电路原理图和设计程序流程图。
2、对所设计方案的实现进行全面分析。
3、编程调试方法和程序清单。
4、安装调试过程,出现的各种现象,总结经验和体会。
5、进一步完善的设想。
目录
一、设计题目:
答辩倒计时器1
二、设计目的1
三、设计要求1
四、元器件清单及所用仪器设备1
五、实践步骤3
六、实践标准3
七、设计报告总结3
1、写出设计方案3
3、编程调试方法7
4、安装调试过程,出现的各种现象7
5、总结经验和体会8
6、进一步完善的设想9
参考书目:
9
附录A:
仿真电路原理图10
附录B:
源代码11
1、设计题目:
答辩倒计时器
二、设计目的
1、巩固和加深单片机原理课程知识的理解和运用。
2、进一步提高学生单片机应用系统的设计能力。
3、培养学生综合分析问题、发现问题和解决问题的能力。
三、设计要求
设计一个答辩倒计时器,用2位数码管显示剩余分钟,2位数码管显示剩余秒,复位后显示10.00表示设定10分钟,并可加减修改,按开始/取消按钮开始倒计时,再次按开始/取消按钮则复位,时间到则蜂鸣音提示。
总体要求如下:
1、方案论证,确定总体电路原理图。
2、元器件选择,设计PCB图(或用万能电路实验板搭线)。
3、绘制程序流程图,编写汇编语言源程序(或C语言源程序)。
4、安装调试,实现倒计时器的基本功能。
四、元器件清单及所用仪器设备
表1设备清单
设备名称
单组数量
数量
功能
数字万用表
可共用
1台
5V直流稳压电源
可用实验箱代、可共用
1台
ISP下载线
可共用
4根
计算机
单片机实验室均可用
40台
装Keil开发软件和ISP51下载软件
表2工具清单
工具名称
单组数量
镊子
1把
电铬铁
1支
铬铁架
1个
吸锡枪
1把
斜口钳
1把
表3元器件清单
元器件名称
规格/型号
单组数量
金属膜电阻
1K、1/4W
1
金属膜电阻
10K、1/4W
5
电阻排
200Ω*8(SIP9)
1
瓷片电容
30pF
2
独石电容
0.1μF/63V
3
电解电容
10μF/16V
2
蜂鸣器
Φ10,直流5V
1
三极管
9013
1
石英晶振
6MHz(矮封装)
1
集成电路
AT89S51DIP40
1
7407DIP14
1
IC插座
40PINDIP
1
14PINDIP
1
数码管
4位一体、红光、共阴极0.5”
1
接插件
IDC10(与ISP下载线接口)DC3-10P
1套
按键
国产欧姆龙轻触按键
3
万能电路板
17cm*22cm
1块
导线
0.3mm2单股导线
4m
焊锡丝
1.0mm
2m
松香
五、实践步骤
1、根据实验要求,完成电路原理图和应用程序流程图。
(见图1和图3)
2、C语言源程序。
(见附录B)
3、根据所设计的原理图,完成电路板的焊接,在进行测试。
4、硬件软件综合调试,如果不能实行,在分析哪里出了问题,纠正问题在去测试,直到测试完成,完善其设计功能。
六、实践标准
1、完成电路的制作,排版与焊接,并进行测量是否能正常的运行;
2、完成程序的设计,并进行程序调试是否出现错误;
3、硬件与软件结合进行调试看是否能达到课程设计目的;
4、最后实现其设计要求和功能,装配工艺美观,电路运行稳定、可靠。
七、设计报告总结
1、写出设计方案
A、设计方案:
1、根据电路要求,设计硬件电路和软件程序。
(见图3)
2、对已设计出的硬件电路进行模拟仿真,确保硬件电路能正常工作。
(见附录A)
3、准备好相关电子元件,制作硬件电路。
(见图2)
4、将软件程序下载到已经制作好的硬件电路中调试,实现设计要求。
B、电路原理图
图1原理图
图2电路版式图
(一)
图2电路版式图
(二)
C硬件流程图
图3硬件流程图
D、设计程序流程图
判断
NO
YES
图4程序流程图
2、对所设计方案的实现进行全面分析
A、该硬件电路的核心部分为一块AT89S51单片机,对电路进行各方面控制和计算。
用一个4位一体的8段共阴数码显示,用7407作为缓冲级,提高输出电路驱动能力,使数码管能正常显示。
用一个9013三极管驱动蜂鸣器,当电路上电和计时时间到时响一秒提示时间到。
用一个6M石英晶振和2个30pF的电容为AT89S51芯片提供时钟频率,2个30pF电容主要是为了方便晶振起振。
K1、K2、K3、3个开关分别用于加时间、减时间、复位和开始。
用若干电阻作为上拉电阻,增大电路输出电流。
B、软件程序全部采用C语言编写。
3、编程调试方法
编程与调试是C语言和KeilC软件相结合的。
C语言是一种C语言是国际上广泛流行的、很有发展前途的计算机高级语言。
它适合作为系统描述语言,即可用来编写系统软件,也可用来编写应用软件。
Keill软件是一种目前用得比较广泛的一款单片机编程软件,它支持c和汇编的编译,并可生成HEX文件,还可进行代码的软硬件仿真软件。
4、安装调试过程,出现的各种现象
硬件:
焊接中易出现虚焊,假焊和多点连接导致短路等故障;
焊接中粗心,导致某些点未焊接直接调试;
软件:
1、数码管有一位不显示。
主要原因:
有一位输出I/O接错(P2.7)。
2、按键未设有防抖功能导致按下一次出现多次按下结果;
3、定时程序,没有考虑到主函数的运行时间引起定时不是很准,稍有延时;
4、延时函数用法不当,数码管有重影;
5、总结经验和体会
在这次课程设计中,我们运用到了以前所学的专业课知识,如:
CAD制图、汇编语言、模拟和数字电路知识等。
虽然过去从未独立应用过它们,但在学习的过程中带着问题去学我发现效率很高,这是我做这次课程设计的又一收获。
另外,这次课程设计让我感到了团队合作的重要性。
在团队中,我们互帮互助,对整个课程设计来说,这是至关重要的,缺少每一个人都会对我们的设计产生影响,组长邹威从课题的确定,元器件的分类,电路的焊接等各个方面都尽心尽责,花的心思。
还有要感谢指导老师在我们遇到困难时,给予我们的建议与鼓励。
最后,要做好一个课程设计,就必须做到:
在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;要有一个清晰的思路和一个完整的的软件流程图;在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便;在设计课程过程中遇到问题是很正常德,但我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题。
从选题到定稿,从理论到实践,在接近两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂一些元器件的使用方法,对单片机C语言掌握得不好……
课程设计结束了,但是从中学到的知识会让我受益终身。
发现、提出、分析、解决问题和实践能力的提高都会受益于我在以后的学习、工作和生活中。
。
6、进一步完善的设想
A、新增一段程序,对硬件的按键进行防抖,使计时器计时更加的精确;
B、对于硬件的导线线路,尽量在线路比较短的地方不使用导线,使用焊锡进行导通,这样就会比较的美观;
C、硬件元器件的排版要进行比较的规律,尽量做到导线排版的时候不会出现重叠的现象;
D、计算每一条语句的时间,提高执行的定时器的精度。
参考书目:
[1]赵伟军,《Protel99se教程》,北京,人民邮电出版社,1996年
[2]楼然苗,李光飞.单片机课程设计指导[M].北京:
北京航空航天大学出版社,2007年
[3]杨居义.单片机课程设计指导(实例教程)[M].北京:
清华大学出版社,2010年
[4]李华.MCS-51系列单片机实用接口技术[M].北京:
北京航空航天大学出版社,1993年
[5]唐华光,《电子技术基础》,高等教育出版社,北京,2006年
[6]谭浩强,《C程序设计教程》,北京,清华大学出版社,2007年
附录A:
仿真电路原理图
附录B:
源代码
#include
#defineuintunsignedint
#defineucharunsignedchar
ucharcodeWEIMA[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f};
ucharnum1;
voidBELL();
voidDelay(uintz);
voidDisplay(uintM1,uintM2,uintS3,uintS4);
voidjishi(uintminute1,uintminute2,uintsecond1,uintsecond2);
intminute1,minute2,second1,second2,save1,save2,save3,save4;
sbitBUZZER=P1^0;//定义P1.0为喇叭驱动端
sbitt1=P3^5;//定时器T1
uintt=0;
voidmain()
{
uintf,w;
num1=0;
BUZZER=0;
P2=0x00;
Delay(228);
minute1=1;
minute2=second1=second2=0;
while
(1)
{
EA=1;//开总中断
TCON=0x05;
if(t==15)
{
EX0=1;//开外部中断0
EX1=1;
}
elset=t+1;
t1=1;
f=0;
if(t1==0)
{
num1=0;
save1=minute1;
save2=minute2;
save3=second1;
save4=second2;
t1=1;
w=1;
}
while(w)
{
TMOD=0x01;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
ET0=1;
TR0=1;
if(num1==10)
{
EX0=0;//关外部中断
EX1=0;
num1=0;
if((second2==0)&&(second1==0)&&(minute2==0))
{
minute1=minute1-1;
minute2=10;
minute2=minute2-1;
second1=6;
second1=second1-1;
second2=10;
}
second2=second2-1;
if((minute1==0)&&(minute2==0)&&(second1==0)&&(second2==0))
{
BELL();
w=0;
Delay(300);
}
}
Display(second2,second1,minute2,minute1);
if(t1==0)
{
minute1=save1;
minute2=save2;
second1=save3;
second2=save4;//复位保存
w=0;
Delay(300);
}
else
f++;
}
Display(second2,second1,minute2,minute1);
}
}
voidDisplay(uintM1,uintM2,uintS3,uintS4)
{
uinti;
for(i=0;i<4;i++)
{
if(i==0)
{
P2=0xf7;
P0=0x00;
Delay
(1);
P0=WEIMA[M1];
}
if(i==1)
{
P2=0xfb;
P0=0x00;
Delay
(1);
P0=WEIMA[M2];
}
if(i==2)
{
P2=0xfd;
P0=0x80;
Delay
(1);
P0=WEIMA[S3];
}
if(i==3)
{
P2=0xfe;
P0=0x00;
Delay
(1);
P0=WEIMA[S4];
}
Delay(4);
}
}
voidDelay(uintz)
{
intx,j;
for(x=0;x for(j=0;j<50;j++); } voidexter0()interrupt0 { if(minute2==0) { minute1=minute1-1; minute2=10; } minute2=minute2-1; if(minute1==0) { if(minute2==0) { minute1=1; minute2=0; } } EX0=0;//关外部中断 EX1=0; t=0; } voidADD()interrupt2 { minute2=minute2+1; if(minute2==10) { minute1=minute1+1; minute2=0; if(minute1==10) { minute1=0; minute2=0; } } EX0=0;//关外部中断 EX1=0; t=0; } voidtime1()interrupt1 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; num1++; } uintg=0;//定义一变量,用于控制喇叭响的时间 voiddelay_500us(void)//500us延迟函数,用于产生1KHZ信号 { unsignedchara,b; for(b=71;b>0;b--) for(a=2;a>0;a--); } voiddelay_250us(void)//250us延迟函数,用于产生2KHZ信号 { unsignedchara,b; for(b=19;b>0;b--) for(a=5;a>0;a--); } voidBELL()//报警函数 { uinta,b; a=1; b=0; while(a) { for(;b<10;b++) { P2=0x00; P0=WEIMA[0]; while(g<=200)//1KHZ响1S { delay_500us();//延迟500us BUZZER=~BUZZER; g++;//取反次数加1 } g=0;//清时间控制变量 while(g<=400)//2KHZ响1S { delay_250us();//延迟250US BUZZER=~BUZZER;//喇叭驱动位取反 g++;//取反次数加1 } g=0;//清时间控制变量 } P2=0x00; BUZZER=0; if(t1==0) { minute1=save1; minute2=save2; second1=save3; second2=save4; a=0; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 课程设计 报告