51单片机之按键控制RGB灯
51单片机之按键控制RGB灯描述利用KEIL5编程使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件电路仿真图未运行电路仿真图运行程序主要是按键消抖机械按键按下有一定的抖动时间按下时需要延时一段时间再次判断。仿真软件的按键波形#include REGX52.Hsbit KEY1 P3^0; //°´¼üsbit LED_R P2^0; //ºìsbit LED_G P2^1; //ÂÌsbit LED_B P2^2; //À¶unsigned char LED_Mode 0;unsigned char Key_Flag 0;//ÑÓʱ1ms(?? 12MHz)void delay_ms(unsigned int ms){unsigned int i, j;for(i ms; i 0; i--)for(j 110; j 0; j--); // 12MHz???110? ˜ 1ms}void LED_RGB(unsigned char i){switch(i)//¿ØÖÆLEDÏÔʾÑÕÉ«{case 0: LED_R 1; LED_G 1; LED_B 1; break; //blackcase 1: LED_R 0; LED_G 1; LED_B 1; break; //redcase 2: LED_R 1; LED_G 0; LED_B 1; break; //greencase 3: LED_R 1; LED_G 1; LED_B 0; break; //bluecase 4: LED_R 0; LED_G 0; LED_B 1; break; //yellowcase 5: LED_R 0; LED_G 1; LED_B 0; break; //violetcase 6: LED_R 1; LED_G 0; LED_B 0; break; //cyancase 7: LED_R 0; LED_G 0; LED_B 0; break; //whitedefault: break;}}void Button_Trigger()//°´¼ü´¥·¢{//Åжϰ´¼ü°´ÏÂÇÒ°´¼ü±ê־λÊÇûÓд¥·¢µÄ״̬if(KEY1 0Key_Flag 0){delay_ms(10); //»úе°´¼üÏû¶¶if(KEY1 0Key_Flag 0){Key_Flag 1; //°´¼ü±ê־λÖÃ1£¬È·¶¨°´¼üÒѾ°´ÏÂLED_Mode;LED_Mode % 8;}}else if(KEY1 1Key_Flag 1)//°´¼üËÉ¿ªÇÒ°´¼ü֮ǰ°´Ï¹ý{Key_Flag 0;//°´¼ü±ê־λÖÃ0}}void main(){while(1){Button_Trigger();LED_RGB(LED_Mode);}}以上都是个人练习经验。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2464977.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!