单片机实训报告_数字时钟

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实训报告

——数字时钟

成员:

金龙:2

王利伟:6

许林鹏: 9

春波:0

袁增莘:1

指导老师:翡

12电气自动化一班

2013.12.23—12.29

目录

一、设计目的 (2)

二、设计要求 (2)

2.1显示要求 (2)

2.2校准要求 (2)

2.3选型要求 (2)

三、硬件设计 (3)

3.1L E D电路图 (3)

3.2电路图分析 (4)

3.3键盘功能 (4)

四、程序设计 (5)

4.1程序流程图 (5)

4.2程序 (6)

课题:数字时钟

一、设计目的:

通过实训周学会制作数码管显示时、分、秒的数字可调时钟,近一步熟练掌握编程语言的应用。

二、设计要求:

2.1显示要求:

时钟要求用8位数码管显示,以数字形式显示时、分、秒的时间。且从右端始八位数码管依次显示①秒个位②秒十位③横杠“—”④分个位⑤分十位⑥横杠“—”⑦时个位⑧时十位

2.2校准要求:

时钟要求计时准确,同时要求有校准时间的电路,且以按键校准。

2.3选型要求:

设计单片机选型以STC89C51RC-RD+系列为基础

三、硬件设计:

3.1、LED电路图

3.2电路图分析

本次课题是利用51单片机进行设计。

Led灯是由低电平点亮的,led位的选择是由单片机中的p2口控制的。

*键盘是采用独立式按键:

K1是p3.0;K2是p3.1;

K3是p3.2:K4是p3.3;

3.3键盘功能

K1, 是对时钟调整或调整后进行确定的选择键。

K2,是对选中位置后对其进行加。

K3,是对选中位置后对其进行减。

K4,是进行时分秒的选择位的操作。

四、程序设计

4.1程序流程图

#include

unsigned char shig , shish , fensh ,feng ,miaosh ,miaog;

unsigned char shi, fen ,miao,k=0,n=0;

sbit k1=P3^0; sbit k2=P3^1; sbit k3=P3^2; sbit k4=P3^3;

unsigned char code

table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x

77,0x7c,0x39,0x5e,0x79,0x71};

void tt0( ) interrupt 1 { TH0=15536/256;

TL0=15536%256;

n=n+1;

if(n==20)

{ n=0;

miao=miao+1;

if(miao==60)

{ miao=0;

fen=fen+1;

if(fen==60)

{ fen=0;

shi=shi+1;

if(shi==24)

{ shi=0;

}

}

}

}

}

void delay(int ms)

{ int i,j;

for(i=0;i

for(j=0;j<110;j++);

}

void display()

{ shish=shi/10; shig=shi%10;

fensh=fen/10; feng=fen%10;

miaosh=miao/10; miaog=miao%10;

P0=0; P2=0; P0=table[shish]; delay(1);

P0=0; P2=1; P0=table[shig]; delay(1);

P0=0; P2=2; P0=0x40; delay(1);

P0=0; P2=3; P0=table[fensh]; delay(1);

P0=0; P2=4; P0=table[feng]; delay(1);

P0=0; P2=5; P0=0x40; delay(1);

P0=0; P2=6; P0=table[miaosh]; delay(1);

P0=0; P2=7; P0=table[miaog]; delay(1); }

void displaysh(char w)

{ k=k+1; if(k==101)k=0;

shish=shi/10; shig=shi%10;

fensh=fen/10; feng=fen%10;

miaosh=miao/10; miaog=miao%10;

if(w!=2||k<=50)

{ P0=0; P2=0; P0=table[shish] ; delay(1);

P0=0; P2=1; P0=table[shig]; delay(1);

}

P0=0; P2=2; P0=0x40; delay(1);

if(w!=1||k<=50)

{ P0=0; P2=3; P0=table[fensh]; delay(1);

P0=0; P2=4; P0=table[feng]; delay(1);

}

P0=0; P2=5; P0=0x40; delay(1);

if(w!=0||k<=50)

{ P0=0; P2=6; P0=table[miaosh]; delay(1);

P0=0; P2=7; P0=table[miaog]; delay(1);

}

}

void main()

{ char shan=0,flage=0;

TMOD=0X01; TH0=15536/256; TL0=15536%256;

IP=0; IE=0X82; TR0=1;

while(1)

{ while(flage==0)

{ display();

相关文档
最新文档