完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
# include "reg52.h" # define u16 unsigned int typedef unsigned char u8; ***it k1 = P3^1; // 位定义 k1 ***it k2 = P3^0; // 位定义 k2 ***it k3 = P3^2; // 位定义 k3 ***it k4 = P3^3; // 位定义 k4 ***it beep = P1^5; // 定义P1^5为蜂鸣器 ***it a = P2^2; // ***it b = P2^3; ***it c = P2^4; u8 h,m; u8 code n[]={0x79,0x3e,0x3f,0x38}; // 显示L o v # define smg P0 // 宏定义 数码管 u8 p=0, q=0; void delay(u16 i) // 延时函数 { while (i--); } void love() // 数码管显示LOVE { u8 i=100; while (i--) // 该循环可以跳出 即可执行其下程序 { for(h=0;h<=7;h+=2) { switch (h) // 位选,选择点亮的数码管, { case 0: a=0;b=0;c=0;break; //显示第0位 case 2: a=0;b=1;c=0;break; // 2 case 4: a=0;b=0;c=1;break; // 4 case 6: a=0;b=1;c=1;break; // 6 } m=h/2; smg=n[m]; // 发送段码 delay(100); } } } void sound() // 蜂鸣器响 { u8 i=100; while (i--) // 只要不是死循环(while(1))即可 { beep=~beep; delay(500); } } void key() // 判断哪个开关按下 { if (k1==0) // 开 { delay(1000); // 消抖 if (k1==0) { q=1; } while (!k1); } if (k2==0) // 关 { delay(1000); // 消抖 if (k2==0) { q=0; } while (!k2); } if (k3==0) // 开 { delay(1000); // 消抖 if (k3==0) { p=1; } while (!k3); } if (k4==0) // 关 { delay(1000); // 消抖 if (k4==0) { p=0; } while (!k4); } } void main() { while (1) { key(); if (q == 1) // 数码管显示LOVE { love(); } else // 关闭数码管 { smg=0x00; } key(); if (p == 1) // 打开蜂鸣器 { sound(); } else // 关闭蜂鸣器 { beep = 1; } } }
|
|
相关推荐
2个回答
|
|
使用定时器来控制蜂鸣器的开启和关闭
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
776 浏览 0 评论
2265 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2124 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1682 浏览 0 评论
2786 浏览 3 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5518 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-19 17:14 , Processed in 0.543922 second(s), Total 64, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号