C51单片机毕业设计电子钟

  • 格式:doc
  • 大小:324.00 KB
  • 文档页数:7

SIPIVT 《C51控制技术》毕业设计

第1页(共7页)

概 述

单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。

C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可靠性,便于改进和扩展,从而研制出规模更大、性能更完备的系统。因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。

本课程的目的是学习运用C语言开发单片机应用系统软件。为将来从事单片机应用系统的开发打下坚实的基础。

一、题目

电子钟

二、课程设计目的

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

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

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

三、课程设计系统环境

(1)ADEK5196ET;

(2)AEDK机电实验平台;

(3)Keil c51软件调试环境;

四、课程设计要求 SIPIVT 《C51控制技术》毕业设计

第2页(共7页) (1)掌握ADEK5196实验开发系统中的实验模块原理;

(2)综合运用实验模块,用C51开发设计具有一定功能的单片机控制系统,进行软、硬件设计及调试;

(3)写出完整的设计任务书:课题的名称、系统的功能、硬件原理图、软件框图、程序清单、参考资料;

五、系统功能说明

利用8279键盘显示接口电路。使用8279可实现对键盘/显示器的自动扫描,以减轻CPU负担,其具有显示稳定、程序简单、不会出现误动作等特点。

电子钟的格式为:XX XX XX,由左向右分别为:时、分、秒。完成显示由秒01一直加1至59,再恢复为00;分加1,由00至01,一直加1至59,再恢复00;时加1,时由00加至23之后秒、分、时全部清清零。该钟使用T1作50ms的定时中断。

六、原理图

七、程序框图 SIPIVT 《C51控制技术》毕业设计

第3页(共7页) 开始设置初始常数8279初始化设定定时器常数开中断到1秒?显示时间清标志Y N 主程序开始延时设置工作方式设置键盘扫描速度清零结束 8279初始化

SIPIVT 《C51控制技术》毕业设计

第4页(共7页) T1中断到1秒?flag置为0xffss=59ss置为0mm=59mm置为0hh=23hh置为0ss加1mm加1hh加1T1定时50ms结束 NYYNYNYNT1中断程序

SIPIVT 《C51控制技术》毕业设计

第5页(共7页) 入口显示小时低位显示小时高位显示分低位显示分高位显示秒低位显示秒高位返回显示子程序入口设定显示位置查显示常数表显示数据返回

八、源程序

#include

#define u8279z(*(char data)(oxf900))

#define u8279d(*(char data)(oxf800)

unsigned char table[30]=

{0x3f,0x06,0x5b,0x4f,0x66,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x80,0x70,0x38,0x6d,0x31,0x73,0x0e};

unsigned char idata diss[8]_at_0x30;

unsigned char idata hh,mm,ss,flag;

unsigned char idata aa,bb;

void delay(int n)

{ SIPIVT 《C51控制技术》毕业设计

第6页(共7页) int I,j;

for(I=0;I

for(I=0;j<300;j++);

}

void init8279()

{

delay(20);

u8279z=0x00;

u8279z=0x38;

u8279z=0xd1;

delay(20);

}

void initimer()

{

TMOD=0x10;

TH1=0x4d;

TL1=0x00;

TR1=1;

ET1=1;

EA=1;

}

void display()

{

unsigned char idata I;

diss[0]=hh/10&(0x0f);

diss[1]=hh%10&(0x0f);

diss[2]=0x00;

diss[3]=mm/10&(0x0f);

diss[4]=mm%10&(0x0f);

diss[5]=0x00;

diss[6]=ss/10&(0x0f);

diss[7]=ss%10&(0x0f);

for(I=0;I<8;I++)

{

u8279z=0x90+I;

u8279d=table[diss[I]];

}

}

main()

{ SIPIVT 《C51控制技术》毕业设计

第7页(共7页) P1=0;aa=0x14;hh=0x00;

mm=0x00;ss=0x00;flag=0xff;

init8279();initimer();

for(;;)

{

if(flag==0xff)

{

dispay();

flag=0;

}

}

}

void timer1(void) interrupt 3

{

while((aa--)==0)

{

P1=~P1;

flag=0xff;

if(ss==59)

{

ss=0;

if(mm=59)

{

mm=0;

if(hh==23) hh=0;

else hh=hh+1;

}

else mm=mm+1;

}

else ss=ss+1;

aa=0x14;

}

TH1=0x4b;

TL1=0x00;

}

九、参考资料

《C51控制技术》

十、运用软件

Word、Prtel99、Visio Trial、Keil C51 V6.0