单片机课程设计--数字钟

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

单片机课程设计--数字钟

一、设计目的及意义

(1)巩固、加深和扩大51系列单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;

(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;

(3)对课题设计方案的分析、选择、比较、熟悉用51单片机做系统开发、研制的过程,软硬件设计的方法、容及步骤

二、原理图设计中简要说明设计目的

(1)功能:24小时制时间显示,可随时进行时间校对调整,整点报时及闹钟功能。

(2)原理图中所使用的元器件功能在图中的作用

1.主要元件AT89C51

P3.2 /INT0(外部中断0)

定时器/计数器0溢出中断

2.LED及按键开关

用于时间的显示和设定

(3)各器件的工作过程及顺序

计时状态,AT89C51通过P1口持续向LED发送信号,使LED扫描显示刚前时分秒,当出现定时器/计数器0溢出中断时,时间加多1秒,AT89C51从P1口向LED输出新的时间;

只按住SET UP键时,进入外部中断0,时间计数停止,通过点击按键H,M,S对时分秒进行调整,新的时间值送给了计时程序,松开SET UP键退出中断,回到计时状态;

按住SET UP键和ALARM键时,进入外部中断0,时间计数停止,通过点击按键H,M对时分进行闹钟定时,AT89C51记忆时分值,退出时先松开SET UP键再松开ALARM;

闹铃:当时间值和设定闹铃值一样时,进行闹铃一分钟。

(3)流程图

(4)程序清单

#include

#define uint unsigned int

#define uchar unsigned char sbit wela1=P2^0;

sbit wela2=P2^1;

sbit wela3=P2^2;

sbit wela4=P2^3;

sbit wela5=P2^4;

sbit wela6=P2^5;

sbit dp= P1^7;

sbit c0= P0^0;

sbit c1= P0^1;

sbit c2= P0^2;

sbit c3= P0^3;

sbit c4= P0^4;

sbit c5= P0^5;

sbit kai= P3^2;

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e};

void display(void);

void delay(uint);

uint num=0,num1=0,num2=0,num3=0;

uint shi,ge,shi1,ge1,shi2,ge2;uint shi1t,ge1t,shi2t,ge2t; void delay(uint x)

{

uint i,j;

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

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

}

void main()

{

TMOD=0x11;

TH0 =(65536-50000)/256;

TL0 =(65536-50000)%256;

EA =1; //开总中断

EX0 =1; //开外部中断0

IT0 =0; //外部中段0设为电平触发

ET0 =1; //T0溢出中断充许

TR0 =1; //启动部定时器

IT1=0; //外部中段1设为边沿触发

while(1)

{

display();

}

}

void display(void) //扫描显示{

wela5=1;

P1=table[shi];

delay(5);

wela5=0;

wela6=1;

P1=table[ge];

delay(5);

wela6=0;

wela3=1;

P1=table[shi1];

delay(5);

wela3=0;

wela4=1;

P1=table[ge1];

dp=0;

delay(5);

wela4=0;

wela1=1;

P1=table[shi2];

delay(5);

wela1=0;

wela2=1;

P1=table[ge2];

dp=0;

delay(5);

wela2=0;

}

void int0()interrupt 0 // 时间调整功能,外部中断0,与闹钟功能,按住SET UP进入,松开退出

{

while(kai==0)

{

c3=1; //关闭闹铃

display();

if(c0==1)//秒

{

ge++;delay(10);

if(ge==10)

{

ge=0;shi++;

if(shi==6){shi=0;}

}

while(c0)

display();

}

if(c1==1)//分

{ge1++;delay(10);

if(ge1==10)

{

ge1=0;shi1++;

if(shi1==6){shi1=0;}

}

while(c1)

相关文档
最新文档