完善资料让更多小伙伴认识你,还能领取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)里面了 你只能吧按键检测函数放到这个死循环里面才好使
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
135 浏览 0 评论
为什么用FatFS在SD卡创建文件,在单片机上读写正常,用读卡器插到电脑上就什么都没有
1485 浏览 0 评论
1368 浏览 2 评论
《DNK210使用指南 -CanMV版 V1.0》第九章 打印输出实验
567 浏览 0 评论
stm32f407+ksz8863rlli概率性ping不通
1277 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11393 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-10-4 06:45 , Processed in 0.575129 second(s), Total 48, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号