基于单片机的秒,分,时可调时钟的设计

出处:cby981541 发布于:2012-09-06 11:05:32

  今天主要做我喜欢的单片机,这个学期才接触到了单片机,算是个微处理机,是把计算机的部分功能集成化了的。在生活中随处可见:想厨房用的电磁炉内就集成了单片机的控制,客厅挂的数字万年历也是用单片机实现的!经过了解后,我对此产生了极大的兴趣。下面简单展示一个我做的基于单片机的实验,望在这方面有研究的一起分享学习哈!

  这个是用Proteus做的硬件设计,对单片机有兴趣大概都用过吧!另外还有软件程序,如果把这个硬件比作人的外观和手脚(是的还可以控制步进电机伺服系统再用电机去控制一些操作的话就更像机器人了)。那么软件程序就好比是人的大脑。下面我也把自己编的程序展示一下吧!望高手指点:是用C语言编的。

可调时钟

  本程序要实现秒,分,时的计时,另外P1角也就是单片机的左边还有三个按钮可实现时、分、秒的调时。图上没有显示!

  主要代码:

  #include <reg51.h>

  unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,};

  unsigned char disbitcode[]={0X00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};//经38译码器片选数码管

  unsigned char disbuf[8]={0,0,0,0,0,0,0,0};//八次循环逐个片选导通并显示。

  sbit OE=P2^6;

  sbit LE=P2^7;

  sbit K1=P1^0;

  sbit K2=P1^1;

  sbit K3=P1^2;

  unsigned char second;

  unsigned char minite;

  unsigned char hour;

  unsigned int tcnt;

  void delay(unsigned int N)

  {

  while(N--);

  }

  void getbuff()

  {

  disbuf[0]=second%10;

  disbuf[1]=second/10;

  disbuf[2]=10;

  disbuf[3]=minite%10;

  disbuf[4]=minite/10;

  disbuf[5]=10;

  disbuf[6]=hour%10;

  disbuf[7]=hour/10;

  }

  void display()

  {

  unsigned char i=0;

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

  {

  LE=1;

  P3=disbitcode[i];         //经38译码器依次片选

  P0=dispcode[disbuf[i]];   //将相应值送入P0口

  OE=0;

  delay(500);

  }

  }

  void key()

  {

  if(K1==0)

  {

  delay(5000);

  if(K1==0)

  {

  second++;

  if(second==60)

  {

  second=0;

  }

  while(K1==0);

  }

  }

  if(K2==0)

  {

  delay(5000);

  if(K2==0)

  {

  minite++;

  if(minite==60)

  {

  minite=0;

  }

  while(K2==0);

  }

  }

  if(K3==0)

  {

  delay(5000);

  if(K3==0)

  {

  hour++;

  if(hour==24)

  {

  hour=0;

  }

  while(K3==0);

  }

  }

  }

  void t0() interrupt 1 using 0

  {

  tcnt++;

  if(tcnt==4000)

  {

  tcnt=0;

  second++;

  if(second==60)

  {

  second=0;

  minite++;

  if(minite==60)

  {

  minite=0;

  hour++;

  if(hour==24)

  {hour=0;}

  }

  }

  }

  }

  void main()

  {

  TMOD=0x02;

  TH0=0x06;

  TL0=0x06;

  TR0=1;

  ET0=1;

  EA=1;

  second=0;

  minite=0;

  hour=0;

  tcnt=0;

  while(1)

  {

  key();

  getbuff();

  display();

  }

  }

  经过近两个月的努力探索,还是有一点小小的成就感!确实我也做出点东西!相对现在来说是简单的事了!于是就想着做点复杂的有用的,唉!做起来真难!发现自己想做出产品来还差的远啊,之前所做的都应归为实验阶段的东西,拿不出手的啊!现在开始具体的做东西时发现之前学的东西太虚了,在高手面前甚至根本不能说自己学过更不必说会了!

  于是我觉得学东西一定要亲历亲为,不能放过一些关键细节,想想当有人问你你会什么技能的时候!你是否能底气十足的说我是个高手呢!呵呵!在学技术时,一定要自己狠一点,要学的东西弄得越透彻越好!不能对自己有宽容,不能打折扣!

关键词:基于单片机的秒,分,时可调时钟的设计单片机可调时钟精确计时

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

我司代理分销MOS管,单片机,电源IC,驱动IC,PD协议IC等,专业提供各种电子元器件!
广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站客服电话

0571-85317606

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!