完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`这是代码部分: //**头文件的声明**// #include #include #define uint unsigned int//宏定义 //**声明子函数**// void delayms(uint); void led(); void segment7(); uint Key_Scan(); unsigned char code DIG_CODE[16]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F ,0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; ***it k1 = P3^7; uint count=0; /******************************************************************************* * 函 数 名 : main * 函数功能 : 主函数,包含用开关切换功能函数 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void main() { while(1) { if(count%2) segment7(); else led(); } } /******************************************************************************* * 函 数 名 : led * 函数功能 : led流水灯,4s完成8个LED灯的闪烁 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void led() { unsigned char LED; LED = 0x01; //即:0000 0001 低电平点亮 while (1) { P2 = LED; delayms(480); LED = LED << 1; //点亮下一个LED "<<"为左移位,右边补上0,即:0000 0001->0000 0010 if (P2 == 0x00) //当它全亮的时候,重新赋值 { LED = 0x01; // 0000 0001 } } } /******************************************************************************* * 函 数 名 : segment7 * 函数功能 : 7段数码管(cc极)的动态显示 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void segment7() { unsigned char i = 0; while(1) { for(i=0;i<16;i++) { P0=DIG_CODE; delayms(480); } } } /******************************************************************************* * 函 数 名 : Key_Scan * 函数功能 : 按键消抖,并输出键值 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ uint Key_Scan() { if (k1==0) { delayms(10); if (k1==0) { while(!k1); delayms(10); while(!k1); count++; } } return count; } /******************************************************************************* * 函 数 名 : delayms * 函数功能 : 延时函数,sec为多少,就延迟多少毫秒。 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void delayms(uint sec)//自定义的延迟函数 { uint i,j; for(i=sec;i>0;i--)//sec为多少,就延迟多少毫秒。 for(j=110;j>0;j--); } 这个是原理图 用按键不能切换LED灯和数码管,,求助。。 ` |
|
相关推荐
4个回答
|
|
你要把Key_Scan()函数放在main函数的while(1)里面,不然count的值一直都是0.
|
|
|
|
试过了,还是不行。。 |
|
|
|
那应该是你在点击按键时,程序在执行if...else...语句,没能进入key_scan函数。你可以试着按着按键保持一段时间,这样就保证程序能进入key_scan函数,就能实现你的切换功能了。如果要实现按一下马上就切换,就要改进程序了。 |
|
|
|
你的按键检测也没在主函数里面 而且程序运行以后就停在了LED里面那个while(1)里面了 你只能吧按键检测函数放到这个死循环里面才好使
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
685 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1235 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1175 浏览 0 评论
896 浏览 0 评论
944 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11864 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 06:22 , Processed in 0.630422 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号