51/AVR单片机技术驿站!  <在线翻译>     便利工具    特色网址   无弹窗、无插件的绿色站点...  英才招聘   学历查询  喜欢>>收藏我站 

当前位置:首页 > 课题设计文章 > 详细内容
用C语言8051单片机机电子钟程序设计
发布时间:2009/6/2  阅读次数:1369  字体大小: 【】 【】【

作者:佚名     来源:网络

概   述
       单片机具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。
C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。C语言来编写目标系统软件,会大大缩短开发周期,且明显地增加软件的可靠性,便于改进和扩展,从而研制出规模更大、性能更完备的系统。因此,用C语言进行8051单片机程序设计是单片机开发与应用的必然趋势。
       本课程的目的是学习运用C语言开发单片机应用系统软件。为将来从事单片机应用系统的开发打下坚实的基础。

  

一、题目
电子钟

二、课程设计目的
(1)巩固、加深和扩大单片机应用的知识面,提高综合及灵活运用所学知识解决工业控制的能力;
(2)培养针对课题需要,选择和查阅有关手册、图表及文献资料的自学能力,提高组成系统、编程、调试的动手能力;
(3)过对课题设计方案的分析、选择、比较、熟悉单片机用系统开发、研制的过程,软硬件设计的方法、内容及步骤。

三、课程设计系统环境
(1)ADEK5196ET;
(2)AEDK机电实验平台;
(3)Keil c51软件调试环境;

四、课程设计要求
(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的定时中断。

六、原理图

七、程序框图

八、源程序
#include<reg51.h>

#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)
   {
int I,j;
     for(I=0;I<n;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()
   {
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


  

我要评论
  • 匿名发表
  • [添加到收藏夹]
  • 发表评论:(匿名发表无需登录,已登录用户可直接发表。) 登录状态:未登录
最新评论
所有评论[0]
    暂无已审核评论!

网站导航 管理登陆 ┊ 免责声明 问题反馈  友链说明
本站部分内容来自网络共享资源,如有冒犯您的权利请来信告之删除或纠正!
不得对本站进行复制、盗链或镜像,转载内容须获得同意或授权;欢迎友情链接、站务合作!

    我要报警 Alexa
 mcusy_cn#126.com (请把#改成@) 交流:522422171
本站学习交流群:138..158(高级群1-)、77930286(高级群2)、61804809(群3)
Copyright© MCUSY All Rights Reserved
本站网警备案号: WZ36040002485
  ICP备案证书号:粤ICP备09034963号