标题: 单片机倒计时程序 求指导 [打印本页]

作者: ljw8023    时间: 2023-5-29 20:24
标题: 单片机倒计时程序 求指导
1. 倒计时秒表
    系统接1个按键用于启动,1个蜂鸣器用于提示计时时间到,两个数码管用于显示时间。
    功能:系统上电数码管显示60;当按键按下时,系统开始倒计时,同时数码管显示当前时间;当计时为0时,蜂鸣器响。
如果用中断函数具体该怎么弄呢?

作者: 不要黑    时间: 2023-6-13 16:30
画电路图了么?主要使用定时器中断计时和外中断相应按键
作者: lkc8210    时间: 2023-6-13 22:21
本帖最后由 lkc8210 于 2023-6-14 09:46 编辑
  1. #include "reg51.h"

  2. typedef unsigned char u8;
  3. typedef unsigned int u16;

  4. //-----------------------------------------------

  5. /* define constants */
  6. #define FOSC 11059200L

  7. #define T1MS (65536-FOSC/12/1000)   //1ms timer calculation method in 12T mode

  8. /* define SFR */
  9. sbit TEST_LED = P1^0;               //work LED, flash once per second

  10. /* define variables */
  11. u16 count;                         //1000 times counter

  12. //-----------------------------------------------

  13. /* Timer0 interrupt routine */
  14. void tm0_isr() interrupt 1
  15. {
  16.     TL0 = T1MS;                     //reload timer0 low u8
  17.     TH0 = T1MS >> 8;                //reload timer0 high u8
  18.     if (count-- == 0)               //1ms * 1000 -> 1s
  19.     {
  20.         count = 1000;               //reset counter
  21.         TEST_LED = ! TEST_LED;      //work LED flash
  22.     }
  23. }

  24. //-----------------------------------------------

  25. /* main program */
  26. void main()
  27. {
  28.     TMOD = 0x01;                    //set timer0 as mode1 (16-bit)
  29.     TL0 = T1MS;                     //initial timer0 low u8
  30.     TH0 = T1MS >> 8;                //initial timer0 high u8
  31.     TR0 = 1;                        //timer0 start running
  32.     ET0 = 1;                        //enable timer0 interrupt
  33.     EA = 1;                         //open global interrupt switch
  34.     count = 0;                      //initial counter

  35.     while (1);                      //loop
  36. }

复制代码


作者: wys91203    时间: 2023-6-14 05:43
按键后,TR0=1,启动定时器,在中断中每一秒送减初值,到0时,在中断中TR0=0, 蜂鸣=1.
作者: xianfajushi    时间: 2023-6-14 14:31
首先写好数码管驱动,设置定时器时间,其他都好办,无论是正计时还是倒计时都一样一个算法而已

1.jpg (3.84 KB, 下载次数: 24)

1.jpg

作者: xianfajushi    时间: 2023-6-14 22:59
学习单片机首先就要学好写显示驱动:数码管/LCD/点阵的驱动,这是人机交互的窗口,显示写好后其它都借助显示都容易了。
作者: xianfajushi    时间: 2023-6-15 09:06
像这种没有电路图的提问只能讲个大概而已,须知道硬件和软件结合的单片机必须是硬件和代码严格对应的,否则都是空谈。
作者: Longan.Wang    时间: 2023-6-16 15:55
这个应该不难,看看资料就会了!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1