这是干嘛的 void ZD_baoshi(void) { buzzer=0; delay(5); buzzer=1; bsn++; if(bsn==temp_hour) { bsn=0; baoshi=0; } }
时间: 2023-11-06 14:08:30 浏览: 41
这是一个函数,名为"ZD_baoshi",它的作用是用来控制蜂鸣器的发声,并且在发声的同时,对计数器进行计数,当计数器的值达到设定值temp_hour时,会将计数器清零,并将变量baoshi的值设为0。其中,buzzer为控制蜂鸣器发声的引脚,bsn为计数器的变量,temp_hour为设定的计数器最大值。
相关问题
void main() { init_eeprom(); P1=0xff; // delay(2000); lcd_init(); ds1302_init(); init(); led1=0; buzzer=0; delay(100); buzzer=1; init_eeprom(); while(1) { keyscan(); led=led1; if(timerOn==1) alarm(); if((fen==0)&&(miao==0)) { if(shi>12) temp_hour=shi-12; else { if(shi==0) temp_hour=12; else temp_hour=shi; } shangyimiao=miao; baoshi=1; } if(baoshi==1) { ZD_baoshi(); do keyscan(); while(shangyimiao==miao); shangyimiao=miao; } } }
这段代码是一个嵌入式系统的主函数。主要功能是实现一个时钟闹钟功能,其中使用了DS1302时钟芯片和LCD屏幕等外设。具体分析如下:
1. `init_eeprom()` 函数是初始化EEPROM存储器的函数。
2. `P1 = 0xff;` 设置P1口为输入模式,这是为了避免悬空引脚的影响。
3. `lcd_init()` 函数初始化LCD屏幕。
4. `ds1302_init()` 函数初始化DS1302时钟芯片。
5. `init()` 函数初始化其他外设,包括按键、LED和蜂鸣器等。
6. `led1 = 0; buzzer = 0; delay(100); buzzer = 1;` 控制LED和蜂鸣器的亮灭,用于开机提示。
7. `while(1)` 表示一直循环执行以下代码。
8. `keyscan()` 函数用于检测按键输入,根据按键输入进行相应的操作。
9. `led = led1;` 控制LED的亮灭,根据 `led1` 变量的值设置LED的状态。
10. `if(timerOn == 1) alarm();` 如果定时器开启,则执行 `alarm()` 函数,即闹钟响铃。
11. `if((fen == 0) && (miao == 0))` 如果当前时间是整点,则进入设置闹钟模式。
12. `if(baoshi == 1)` 如果已经设置了闹钟,则执行 `ZD_baoshi()` 函数,即闹钟到时时的提示操作。
13. `do keyscan(); while(shangyimiao == miao); shangyimiao = miao;` 在设置闹钟模式下,等待用户设置完毕。当分钟数发生变化时,说明用户已经完成了设置,退出设置模式。
翻译这段代码 void main() { init_eeprom(); //开始初始化保存的数据 P1=0xff; // delay(2000); lcd_init(); //调用液晶屏初始化子函数 ds1302_init(); //调用DS1302时钟的初始化子函数 init(); //调用定时计数器的设置子函数 led1=0; //打开LCD的背光电源 buzzer=0; //蜂鸣器长响一次 delay(100); buzzer=1; init_eeprom(); while(1) //无限循环下面的语句: { keyscan(); //调用键盘扫描子函数 led=led1; if(timerOn==1) alarm(); //闹钟输出 if((fen==0)&&(miao==0)) { if(shi>12) temp_hour=shi-12; else { if(shi==0) temp_hour=12; else temp_hour=shi; } shangyimiao=miao; baoshi=1; } if(baoshi==1) { ZD_baoshi(); do keyscan(); while(shangyimiao==miao); shangyimiao=miao; } } }
void main() {
init_eeprom(); // 初始化保存的数据
P1 = 0xff; // 延时 2000 毫秒
//delay(2000);
lcd_init(); // 调用液晶屏初始化子函数
ds1302_init(); // 调用 DS1302 时钟的初始化子函数
init(); // 调用定时计数器的设置子函数
led1 = 0; // 打开 LCD 的背光电源
buzzer = 0; // 蜂鸣器长响一次
delay(100);
buzzer = 1;
init_eeprom();
while (1) { // 无限循环下面的语句
keyscan(); // 调用键盘扫描子函数
led = led1;
if (timerOn == 1)
alarm(); // 闹钟输出
if ((fen == 0) && (miao == 0)) {
if (shi > 12)
temp_hour = shi - 12;
else {
if (shi == 0)
temp_hour = 12;
else
temp_hour = shi;
}
shangyimiao = miao;
baoshi = 1;
}
if (baoshi == 1) {
ZD_baoshi();
do keyscan();
while (shangyimiao == miao);
shangyimiao = miao;
}
}
}
以上是一段 C 语言的代码,大致功能是一个时钟程序,具体实现细节需要结合具体的硬件和外设来看。代码中主要包括以下几个部分:
1. 初始化:包括初始化 EEPROM、液晶屏、DS1302 时钟以及定时计数器等。
2. 执行循环:不断执行键盘扫描子函数,根据扫描到的键值进行操作,同时根据时间进行闹钟的输出和报时功能的实现。
在循环中,代码中还包括了一些变量和函数的调用,具体实现需要结合具体的硬件和外设来看。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![dmg](https://img-home.csdnimg.cn/images/20210720083646.png)