标题:
单片机倒计时程序 求指导
[打印本页]
作者:
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 编辑
#include "reg51.h"
typedef unsigned char u8;
typedef unsigned int u16;
//-----------------------------------------------
/* define constants */
#define FOSC 11059200L
#define T1MS (65536-FOSC/12/1000) //1ms timer calculation method in 12T mode
/* define SFR */
sbit TEST_LED = P1^0; //work LED, flash once per second
/* define variables */
u16 count; //1000 times counter
//-----------------------------------------------
/* Timer0 interrupt routine */
void tm0_isr() interrupt 1
{
TL0 = T1MS; //reload timer0 low u8
TH0 = T1MS >> 8; //reload timer0 high u8
if (count-- == 0) //1ms * 1000 -> 1s
{
count = 1000; //reset counter
TEST_LED = ! TEST_LED; //work LED flash
}
}
//-----------------------------------------------
/* main program */
void main()
{
TMOD = 0x01; //set timer0 as mode1 (16-bit)
TL0 = T1MS; //initial timer0 low u8
TH0 = T1MS >> 8; //initial timer0 high u8
TR0 = 1; //timer0 start running
ET0 = 1; //enable timer0 interrupt
EA = 1; //open global interrupt switch
count = 0; //initial counter
while (1); //loop
}
复制代码
作者:
wys91203
时间:
2023-6-14 05:43
按键后,TR0=1,启动定时器,在中断中每一秒送减初值,到0时,在中断中TR0=0, 蜂鸣=1.
作者:
xianfajushi
时间:
2023-6-14 14:31
首先写好数码管驱动,设置定时器时间,其他都好办,无论是正计时还是倒计时都一样一个算法而已
1.jpg
(3.84 KB, 下载次数: 24)
下载附件
2023-6-15 02:46 上传
作者:
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