利用51单片机的定时器和实验仪的数码管电路设计一个电子时钟,显示格式XX XX XX,依次为 时、分、秒。

硬件开发88
2012-12-17 · TA获得超过8675个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:590万
展开全部

给你个电路和程序,//前几天帮一个网友写,单片机定时时钟在调节功能,可以参考一下我程序

/**************************************************

*

*    6位数码管显示电子钟

*

* 功能:  按键加,按键减, 按键,启动和停止。

*

*

***************************************************/

#include "REG52.H"

           

sbit SHUG_01 = P2^0;    //数码管1

sbit SHUG_02 = P2^1;    //数码管2

sbit SHUG_03 = P2^2;    //数码管3

sbit SHUG_04 = P2^3;    //数码管4

sbit SHUG_05 = P2^4;    //数码管5

sbit SHUG_06 = P2^5;    //数码管6

 

sbit    KEY0_01 = P0^0;    //按键  启动或停止

sbit    KEY0_02 = P0^1;    //按键  加

sbit    KEY0_03 = P0^2;    //按键减

sbit    KEY0_04 = P0^3;    //按键菜单

 

#define     LED_DATA        P1      //P1数据端口

unsigned char value_temp = 0;

unsigned char value_Outk = 0;

unsigned char value_shio = 8;

unsigned char value_feno = 40;

unsigned char value_miao = 0;

 

unsigned char code   value_tab0[]={0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90}; //共阳极

unsigned char code   value_tab1[]={0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10}; //共阳极带点 

 

/*

 * 延时1ms延时子函数

**/

void Delay_1ms(unsigned int Time)

{

 unsigned int x, y;

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

  for(y = 120; y > 0; y--);

}

 

/*

 * 程序运行【启动和停止】子函数

**/

void Disp_layledketCmd(void)

{

 /***小时***/

 SHUG_01 = 1;   

 LED_DATA = value_tab0[value_shio / 10];   /*******小时的十位数显示***************/

 Delay_1ms(5);

 SHUG_01 = 0;

 SHUG_02 = 1;

 LED_DATA = value_tab1[value_shio % 10];   /*******小时的个位数显示***************/

 Delay_1ms(5);

 SHUG_02 = 0;

 

 /***分钟***/

    SHUG_03 = 1;   

 LED_DATA = value_tab0[value_feno / 10];   /*******分钟的十位数显示***************/

 Delay_1ms(5);

 SHUG_03 = 0;

 SHUG_04 = 1;

 LED_DATA = value_tab1[value_feno % 10];   /*******分钟的个位数显示***************/

 Delay_1ms(5);

 SHUG_04 = 0;

 

 /***秒钟***/

    SHUG_05 = 1;   

 LED_DATA = value_tab0[value_miao / 10];   /*******秒钟的十位数显示***************/

 Delay_1ms(5);

 SHUG_05 = 0;

 SHUG_06 = 1;

 LED_DATA = value_tab0[value_miao % 10];   /*******秒钟的个位数显示***************/

 Delay_1ms(5);

 SHUG_06 = 0;

}

 

/*

 * 定时器初始化定时50ms

**/

void Tero_Init(void)

{

 TMOD = 0x01;

 TH0 = 0x4C;

 TL0 = 0x00;

 ET0 = 1;

 TR0 = 1;

 EA = 1;

}

 

/*

 * 按键开关【启动和停止】子函数

**/

void Scan_keyoutCmd(void)

{

 if(KEY0_01 == 0)           

 {

  Delay_1ms(10);         

  if(KEY0_01 == 0)           

  {

   TR0 = ~ TR0;   

  }

  while(KEY0_01 == 0);         

 } 

 

 if(KEY0_02 == 0)           

 {

  Delay_1ms(10);           

  if(KEY0_02 == 0)           

  {

   value_miao--;   

   if(value_miao == -1)

   {

    value_feno--;

    value_miao = 59;

    if(value_feno == -1)

    {

     value_shio--;

     value_feno = 59;

     if(value_shio == -1)

     {

      value_shio = 23;

     }

    } 

   }

   while(KEY0_02 == 0);       

  }

 } 

 

 if(KEY0_03 == 0)           

 {

  Delay_1ms(10);         

  if(KEY0_03 == 0)         

  {

   value_miao++;   

   if(value_miao == 60)

   {

    value_miao = 0;

    value_feno++;

    if(value_feno == 60)

    {

     value_feno = 0;

     value_shio++; 

     if(value_shio == 24)

     {

      value_shio = 0;

     }

    } 

   }

    while(KEY0_03 == 0);          //检测松手

  }

 } 

}

 

/*

 * 函数主体

**/

int main(void)

{

 P1 = P2 = P3 = 0x00;

 Tero_Init();

 

 while(1)

 {

  Scan_keyoutCmd();

  Disp_layledketCmd();  //执行应运程序 

 } 

}

 

/*

 * 定时器中断服务程序

**/

void Tmero()interrupt 1

{

 TH0 = 0x4C;

 TL0 = 0x00;

 value_temp++;

 if(value_temp == 20)

 {

  value_temp = 0;

  value_miao++;

  if(value_miao == 60)

  {

   value_feno++;

   value_miao = 0;

   if(value_feno == 60)

   {

    value_shio++;

    value_feno = 0;

    if(value_shio == 24)

    {

     value_shio = 0;

    }

   }

 

  }

 } 

}

 

 

 

 

追问
我想要用汇编语言编的诶
stc12C01
2012-12-17 · TA获得超过242个赞
知道小有建树答主
回答量:168
采纳率:0%
帮助的人:199万
展开全部
学习单片机,最好你要去买一块实验板,各种实验都可以做。
同意 硬件开发88 的参考程序。
来自:求助得到的回答
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Kyber
2012-12-17 · 超过11用户采纳过TA的回答
知道答主
回答量:136
采纳率:0%
帮助的人:24.3万
展开全部
不会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
紫流辉漫步云端
2012-12-17
知道答主
回答量:24
采纳率:0%
帮助的人:2.6万
展开全部
想法很好啊,赶快动手!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式