单片机0-99计数器 秒表报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
课程名称单片机原理及应用课程设计
学号
姓名
班级
指导老师
时间
信息工程学院
. 设计过程、步骤(可加页):
一、设计方案
利用STC90C51单片机来制作一个手动计数器,在STC90C51单片机的P3.7 管脚接一个
轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7 接一个共阳数码管,作为00-99 计
数的个位数显示,用单片机的P0.0-P0.7 接一个共阴数码管,作为00-99 计数的十位数显示;
二、工作原理
采用STC90C51单片机为中心器件,利用其定时器/计时器定时和计数的原理,结合硬件电
路如电源电路、晶振电路、复位电路、显示电路,以及一些按键电路等来设计计时器,软硬件
有机的结合起来,其中软件系统采用c语言编写程序,包括显示程序,快加程序,暂停程序等,
硬件系统利用Keil强大的功能来实现,简单且易观察。
(一)开发板上硬件连线(如图1)
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 端口上;
3.把“单片机系统”区域中的P3.7/RD 端口用导线连接到“独立式键盘”区域中的SP1端
口上。
图1 硬件电路连接图
(二)显示电路
两位数码管循环显示00~99电路
数码管只要是用于数字的显示。数码管有共阴和共阳的区分,单片机都可以进行驱动,但
是驱动的方法却不同。两位数码管循环电路是由电阻、二极管和数码管组成,电源+5V通过560
的电阻直接给数码管的7个段位供电,P0.0-P0.7对应了两个接数码管的A,B,C,D,E,F,G和小数
点位,P2.6接显示个位数的数码管的3、8引角,P2.7则接十位数的。P2.6和P2.7端口分别控
制数码管的十位和个位的供电,当相应的端口变成低电平时,驱动相应的三极管会导通,+5V
通过二极管和驱动三极管给数码管相应的位供电,这时只要P0口送出数字的显示代码,数码
管就能正常显示需要的数字。
图2 十位显示动态数码管(共阳数码管)
图3 个位显示静态数码管(共阴数码管)
.
(三)时钟电路
时钟电路的晶振频率越高,系统的时钟频率越高,单片机的运行速度也越快。晶振频率根据设计需要设为12MHz,又根据谐振性质,电路中的电容应选择为30pF左右。
图4 时钟电路
(四)复位电路
MCS-51单片机的复位是靠外部电路实现的。MCS-51单片机工作之后,只要在他的RST 引线上加载10ms以上的高点平,单片机就能有效地复位。MCS-51单片机通常采用上电自动复位和按键复位两种方式。最简单的复位电路如图5:
图5 复位电路
上电瞬间,RC电路充电,RST引线出现正脉冲,只要RST保持10ms以上的高电平,就能使单片机有效的复位。在系统中,有些外围芯片也需要复位。如果这些芯片复位端的复位电平与单片机的复位电平的要求一致,则可以将复位信号与之相连。三、软件设计
(一)主程序及流程图
图6 程序流程图
#include
#define uchar unsigned char
#define uint unsigned int //头文件
sbit K1=P3^7; //定义按键引脚
uchar i,count,keyflag;
bit keystate;
uchar CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管编码void delayMS(uint ms) //ms延时函数
{
uchar t;
开始
Count初始为0
数码管显示为00
按键识别成功
Count=count+1
Count<100
显示count数值
.
结果与分析(可以加页):
(一)调试结果
1.初始状态
图7:初始状态结果图2.开始计时后按下按键暂停
图8:中间状态图示(二)问题分析及解决措施
1.一开始时没有分清楚数码管是共阴数码管还是共阳数码管,C语言程序中默认数码管是共阴,所以两个P接口的值都是按照共阴去写的,导致数码管选段及位显有问题,后来经过老师的指点,将共阳数码管P2的接口改成了共阴。
2.用到Keil软件时,生成的文件不能烧录,与单片机的开发板连机。后来经过学习教程并和同学讨论,掌握了用Keil软件生成hex文件并被烧录程序识别的方法。
3.第一次差点出了实验结果,但结果与实验要求不符。要求99秒,但是我的结果是有两位数显,但是时间跳转得太快。后来想到可能是程序有问题,通过自己的摸索,和网络检索修改了C语言程序中的时间定时和count循环赋值。
设计体会与建议:
课程设计是培养学生综合运用所学知识,发现、提出、分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.。回顾起此次单片机课程设计,仍感慨颇多。从理论到实践,在这一个星期里,我学到很多很多的的东西,巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说不懂keil中hex文件生成方法,对单片机汇编语言掌握得不好等等。通过这次课程设计之后,一定把以前所学过的知识重新温故。
指导老师评语