简易秒表设计唐巧玲
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本科学生设计性实验报告
学号:姓名:
学院:**学院专业、班级:
实验课程名称:简易秒表设计
教师:** 老师
开课学期:2013 至2014 学年第二学期填报时间:2014 年 6 月18 日
一、摘要
单片机自70年代问世以来得到蓬勃发展,目前单片机功能正日渐完善:单片机集成越来越多资源,内部存储资源日益丰富,用户不需要扩充资源就可以完成项目开发,不仅是开发简单,产品小巧美观,同时抗干扰能力加强,系统也更加稳定,使得它更加适合工业控制领域,具有更加广阔的市场前景;提供在线编程能力,加速了产品的开发进程,为企业产品上市赢得宝贵时间。此外单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。单片机的设计目标主要是增强“控制”能力,满足实时控制的需要。
本文的主要内容是掌握各种单片机的结构、接口、片上外设的特点,并利用自行制作的单片机是最小系统,完成一个简单应用(简易秒表)的设计与软件及硬件设计制作,让读者掌握数字单片机最小系统的设计及单片机系统的应用方法。
关键字:AT89C51;数码管;设计制作;
二、引言
当前社会信息化建设在各地蓬勃发展,作为信息发布的终端显示设备,LED 显示屏已经广泛应用于工作和生活的各个方面,主要用于显示文字、图像、动画等。LED显示屏的应用涉及社会的许多领域,主要包括:金融证券、体育场馆、
道路交通、邮政电信、商场购物中心等服务领域的业务宣传及信息显示。LED 是发光二极管的简称(Light Emitting Diode)。由于它具有亮度高、响应速度快、低电压、功耗小、耐震动、寿命长等优点,使其成为室内外信息显示终端的主要发光器件,由于亮度高、画面清晰、色彩鲜艳,使它在公众多媒体显示领域一枝独秀,因此市场空间巨大。LED显示屏的发展可分为以下几个阶段:第一阶段为1990年到1995年,主要是单色和16级双色图文屏。用于显示文字和简单图片,主要用在车站、金融证券、银行、邮局等公共场所,作为公共信息显示工具。第二阶段是1995年到1999年,出现了64级、256级灰度的双基色视频屏。视频控制技术、图像处理技术、光纤通信技术等的应用将LED显示屏提升到了一个新的台阶。LED显示屏控制专用大规模集成电路芯片也在此时由国内企业进行了深入的研发工作,使用红、绿、蓝三原色LED生产的全彩色显示屏被广泛应用,大量进入体育场馆、会展中心、广场等公共场所,从而将国内的大屏幕带入全彩时代。
三、设计思想
该设计采用89C51单片机制作,P1口控制显示十位和各位,采用共阴极的方法,编写程序通过89C51的并口给单个七段数码管对应引脚提供相应电平,就可以显示内容了,需要注意的是因各段的发光二极管额定电流很小,所以需要限流保护数码管。
四、设计内容
根据生活中秒表的设计结构,可以得到如下整体的外围电路:
五、运用Keil 编写程序
由构思的程序编写框图以及真值表和单片机知识的如下的程序,其中单片机接口P1.0到P1.6分别数码管的g,f,e,d,c,b,a。
//程序 //功能:00~59简易秒表程序
#include
unsigned char msec,sec; //定义msec为50ms计数变量,sec为秒变量sbit S1=P3^5;
sbit S2=P3^3;
sbit S3=P3^2;
void delay(unsigned char i); //延时函数
//函数名:T0_INT //函数功能:定时器0中断函数,定时50ms到,自动
执行该函数,判断是否中断20次
//形式参数:无
//返回值:无
void T0_INT(void) interrupt 1 //定时器0中断类型号为1
{
TH0=0x3c; //50ms定时初值 TH0=(65536-50000)/256;
TL0=0xb0; //TL0=(65536-50000)%256;
msec++; //中断次数增1
if(msec==20) //中断次数到20次吗?
{
msec=0; //是,1秒计时到,50ms计数单元清零
sec++; //秒单元加1
if(sec==60) //到60秒吗?
{
sec=0; //是,秒单元清零
}
}
}
void main() //主函数
{
unsigned char led[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//定义数字
0~9字型显示码
//unsigned char temp;
TMOD=0x01; //定时器0工作方式1
TH0=0x3c; //50ms定时初值//50ms定时初值 TH0=(65536-50000)/256;
TL0=0xb0; //TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器T0中断
P3=0xff; //P3口做输入
while(1)
{
P2=0x01; //选中P2.0控制的数码管
P1=led[sec%10]; //显示秒个位
delay(10);
P2=0x02; //选中P2.1控制的数码管
P1=led[sec/10]; //显示秒十位
delay(10);
//temp=~P3; //读入P3口引脚状态并取反
//temp=temp&0x2c;//屏蔽掉无关位,保留三位按键状态00x0xx00 //if(temp==0) //判断有无按键按下
//{
//if(temp==0x04) //按下停止键
if(S3==0) //按下停止键