问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

无单片机数码管倒计时频率怎么设置

发布网友 发布时间:2023-06-02 06:15

我来回答

2个回答

热心网友 时间:2024-10-28 01:18

1月6日在任何时候,按下复位按键,倒计时将暂停工作,并且恢复倒计时当前默认值99。如果长按复位按键,在数码管会切换到第2个闪烁窗口,用来设置速度档位...

热心网友 时间:2024-10-28 01:19

首先得任务就是数码管循环显示00-59,如果没有每隔一秒的话,可以设置一个for循环来控制数码管显示时间,也可以用DeBug功能来调试出大概一秒,但是这些不怎么准确,所以要使用定时器中断来控制一秒。而00-59的值则设置一个全局变量num来存放。数码管显示的时候,直接设置十位和个位对num分别求模和求余,然后在数码管上动态显示即可。
接着就是独立按键,这里我用的是类似于矩阵按键的检测方法,首先给一个高电平,然后根据按键后返回的值来判断哪个键按下,因为这里有四个按键,写在一起容易搞混,直接写四个函数,按下按键直接进入对应函数处理,因为K0可能会按到两次,对应K1和K2有不同的功能,那么可以设置一个标志位在K1和K2函数里判别K0按下几次,选择对应的功能。
按下K0之后,进入K0函数处理,设置一个全局变量flag,首先默认为0,按下一下为1,再次按下之后,为2,而按下K0之后要调整秒数,那么数码管就得暂停,也就是定时器暂停(TR0=0;)
按下K1和K2之后,首先先判断标志位flag的值,如果为0,也就是没有按过K0,那么直接跳出函数就好,如果为1,也就是K0按下一次,可以对个位处理,K1为加,即加1,K2为减,即减1,要注意的是,当num为00或者59是减1或者加1必须处理,因为00–59,不会出现超过59的数。如果为2,也就是K0按下两次,可以对十位处理,K1为加,即加10,K2为减,即减10,要注意的是,当num为00或者59是减10或者加10必须处理,因为00–59,不会出现超过59的数。
按下K3之后,表示按键完成,数码管接着显示秒数,即定时器启动(TR0=1;)
主函数里面不断的按键检测然后数码管显示即可。
项目代码
数码管循环显示00–59
//数码管显示函数
void Showsmg(u8 shi,u8 ge){ //十位 个位
//十位
LSA=1;LSB=1;LSC=1;
P0=smgan[shi];
Delay(1);
P0=0x00;
//个位
LSA=0;LSB=1;LSC=1;
P0=smgan[ge];
Delay(1);
P0=0x00;
}
//延时函数
void Delay(u16 i) //11.0592 1ms
{
while(i--){
unsigned char i, j;

_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
//初始化定时器函数
void Init(){
t0=0;
num=0;
shi=0;
ge=0;
flag=0;
TMOD=0x01;
TH0=(65536-9174)/256; //10ms
TL0=(65536-9174)%256;
EA=1;
ET0=1;
TR0=1;
}
void main(){
Init();
while(1){
shi=num/10;
ge=num%10;
Showsmg(shi,ge);
}
}
void Timer0() interrupt 1{
TH0=(65536-9174)/256; //重置
TL0=(65536-9174)%256;
t0++;
if(t0==100){
t0=0;
num++;
if(num==60)
num=0;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
独立按键的检测
//按键检测
void KeyDown(){
GPIO_KEY=0x0f; //独立按键端口
if(GPIO_KEY!=0x0f){
Delay(10);
if(GPIO_KEY!=0x0f){
GPIO_KEY=0x0f;
switch(GPIO_KEY){
case 0x0d : Key0();break; //k0
case 0x0e : Key1(flag);break; //k1
case 0x0b : Key2(flag);break; //k2
case 0x07 : Key3();break; //k3
}
}while(GPIO_KEY!=0x0f); //松手检测
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦见关在拘留所里的人又出了交通事故,是什么意思? ...我朋友前阵子撞死了人,没有违规,当时立即报案了,现在在拘留所... 醉驾出事故,车已经给修了,现在已经进拘留所十多天了,什么时候能判... 朋友因为工地伤亡事故被拘留,现在已经25天了,赔偿金也付了10多天了... 江淮帅铃国4??加油发动机抖动冒黑烟是怎么回事? ...只换机油和格,现在5万公里了,请需要换些什么东西 诗经·国风·中谷有蓷原文、译文以及鉴赏 求解签 情缘 下签 条其啸矣。遇人之不淑矣。 解曰:孽缘遮眼 强栖双... 条其啸矣 如何将域解除? 为什么还要重新定义GPIO_KEY=0x0F。 希望能详细一些。这是在做矩形按 ... 梦见买本子的预兆 loft设计风格有何特点? loft风格装修是什么?loft风格装修的特点 loft装修需要多少钱loft装修的技巧都是有哪些 loft装修设计风格特点loft装修设计注意事项 苹果手机有对方手机号,能查看对方聊天记录吗 福建莆田渔具店 福建黄岐半岛在哪里 霞浦大京沙滩可以矶钓吗? 梦见因为捡到钱,又丢了有人追杀我没杀到我我把人家给杀了什么意思? 梦见借自己钱的人杀了人的预兆 梦见扫垃圾垃圾坑的预兆 请问 高血压 高血脂 喝决明子好还是绞股蓝啊 2010年相关法律辅导:土地确权中应把握的问题(2) 解封后之前的聊天记录还有吗 低温固化粉末涂料有哪些作用 低温后bios会复位 吴江快递哪些瘫痪了 拾人牙慧出处 C51编程,key=P0&0X0f是什么意思 为什么这里要用两个if 氨基酸怎么制得? 今天第一次听说剪掉的头发可以回收去做氨基酸,请问氨基酸是做什么的... 有咖互动面试几天有结果 东盟国和东亚国有什么区别 中国参加的区域一体化组织有哪些? 应交税费主要包括什么内容? 已婚女人梦见坐他人开的车 女生说底特律什么意思 为什么对商品的定义越明确,替代品越多呢? 初级会计师考试通过率高吗?难度怎么样? 初会通过率高吗 小满胡同在哪里 小满现象最明显的地区是哪里? 心想事成电视剧里小满胡同在哪 张掖市小满赶集地址在哪里 rainstorm可数吗 帮手翻译-这个时节,南方很多地方都下大雨甚至水浸... 体检生化项目是检查什么?