课程设计单片机99秒马表设计.docx

上传人:b****5 文档编号:4445116 上传时间:2022-12-01 格式:DOCX 页数:10 大小:175.93KB
下载 相关 举报
课程设计单片机99秒马表设计.docx_第1页
第1页 / 共10页
课程设计单片机99秒马表设计.docx_第2页
第2页 / 共10页
课程设计单片机99秒马表设计.docx_第3页
第3页 / 共10页
课程设计单片机99秒马表设计.docx_第4页
第4页 / 共10页
课程设计单片机99秒马表设计.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

课程设计单片机99秒马表设计.docx

《课程设计单片机99秒马表设计.docx》由会员分享,可在线阅读,更多相关《课程设计单片机99秒马表设计.docx(10页珍藏版)》请在冰豆网上搜索。

课程设计单片机99秒马表设计.docx

课程设计单片机99秒马表设计

一、设计目的及要求

1.1设计目的

本设计主要是应用Proteus软件和嵌入式C语言编程工具结合单片机原理及应用、微机原理与接口技术等专业课程,强化和巩固专业理论基础,掌握Proteus仿真的技巧和嵌入式C语言编程工具,提高单片机开发能力,并为嵌入式开发打下基础。

1.2设计要求

99秒马表设计

(1)开始时,显示“00”,第1次按下SP1后就开始计时。

(2)第2次按SP1后,计时停止。

(3)第3次按SP1后,计时归零。

二、硬件电路设计

2.1芯片简介

本设计选择采用AT89C51单片机为核心。

AT89C51提供以下标准功能:

4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。

同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。

空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。

掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。

2.2总体设计思路

系统板上硬件连线

(1)把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:

P0.0/AD0对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。

(2)把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:

P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。

(3)把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;

总体设计思路图

2.3单元电路设计

本设计主要分为时钟电路模块,复位电路模块,显示模块和控制模块。

设计方案如下

2.3.1时钟模块

 

图2.3时钟电路如上图所示

89C51单片机的时钟信号通常用内部振荡方法得到,在引脚XTAL1和XTAL2外接晶体振荡器(简称晶振)或陶瓷谐振器,就构成了内部振荡方法。

由于单片机内部有一个高增益反相放大器,当外接晶振后就构成了自激振荡器并产生振荡时钟脉冲。

晶振通常选择6MHz、12MHz、24MHz。

本设计采用12MHz晶振。

图中电容C1、C2起到稳固振荡频率、快速起振的作用。

电容值一般为5—30pF。

本设计选用33pF电容。

2.3.2复位电路模块

图2.4复位电路

复位操作完成电路的初始化,使单片机从一种确定的状态开始运行。

由上图可知,控制模块实际上就是单片机的最小系统。

本设计采用常用的上电且开关复位电路。

上电后,由于电容的充电,使RST持续一段高电平时间。

当单片机已在运行中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。

此处C3电容取10uF,R2=K。

 

2.3.3控制模块

图2.5控制电路

2.3.4显示模块

显示部分电路设计如下图

图2.6显示模块电路图

 

三、软件设计

3.1程序设计思路(流程图)

主程序框图

 

T0中断服务程序框图

3.2源程序

#include

unsignedcharcodedispcode[]=

{0x3f,0x06,0x5b,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,0x00};

unsignedcharsecond;

unsignedcharkeycnt;

unsignedinttcnt;

voidmain(void)

{

unsignedchari,j;

TMOD=0x02;

ET0=1;

EA=1;

second=0;

P0=dispcode[second/10];

P2=dispcode[second%10];

while

(1)

{

if(P3_5==0)

{

for(i=20;i>0;i--)

for(j=248;j>0;j--);

if(P3_5==0)

{

keycnt++;

switch(keycnt)

{

case1:

TH0=0x06;

TL0=0x06;

TR0=1;

break;

case2:

TR0=0;

break;

case3:

keycnt=0;

second=0;

P0=dispcode[second/10];

P2=dispcode[second%10];

break;

}

while(P3_5==0);

}

}

}

}

voidt0(void)interrupt1using0

{

tcnt++;

if(tcnt==400)

{

tcnt=0;

second++;

if(second==100)

{

second=0;

}

P0=dispcode[second/10];

P2=dispcode[second%10];

}

}

四、仿真调试

总体仿真电路图如下图所示

图4.1整体仿真原理图

4.1keil简介

KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势。

因而易学易用。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组合在一起。

运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。

 

4.2keil与protues联调与仿真实现

双击图标进入KeiluVision2编程环境,输入程序。

返回桌面双击图标进入PROTEUS仿真环境。

点击左上角选项P后根据设计的电路图调出所需元件画好硬件原理图如图4.1所示。

然后按照4.1节所写步骤设置keil和proteus的工作环境。

实现keil和proteus的连调。

4.3仿真结果

五、总结

本次课程设计的题目是99秒马表设计。

经过本组同学的共同努力,终于调试成功。

课程设计是培养学生综合运用所学知识,发现实际问题、提出实际问题、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际学习能力、动手能力的具体训练和考察过程。

在此次设计过程中,在学习新知识的同时,把在课程中学到的理论知识运用到实际作品设计、操作中更进一步地熟悉了单片机芯片的结构及掌握了其工作原理和具体的使用方法与相关元器件的参数计算方法、使用方法了解了电路的开发和制作及课程设计报告的编写。

加深了对相关理论知识及专业知识的掌握度,增强自身的动手能力,锻炼及提高了理解问题、分析问题、解决问题的能力,更深刻的体会到了理论联系实际的重要性。

最后我们组通过此次单片机课程设计不仅仅将我们一学期在单片机课程上的所学很好的应用到了实际设计中,更是将理论知识应用到了实践中。

这才是真正的学习:

讲知识与实践有机的结合。

也十分感谢老师为我们提供了这次单片机课程设计的机会。

我们也通过此次课程设计,更清晰更实际的接触到了单片机。

 

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

当前位置:首页 > 考试认证 > 其它考试

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

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