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

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

  这个是用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;i8;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)

1 2

关键词: 单片机 可调时钟 Proteus

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版