用两个按键控制八灯的亮灭,一次加一或减一
仿真图
以下为原程序:
- #include <REGX52.H>
- #define LED P0 // LED 接 P0口
- typedef unsigned int u16;
- typedef unsigned char u8;
- u16 num = 0;
- sbit key_jia = P2^0; //按键加
- sbit key_jian = P2^1; //按键减
- /***** 0000 0001 0000 0011 0000 0111 0000 1111 0001 1111 0011 1111 0111 1111 1111 1111 *****/
- u8 code table[] = {0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};
- /*******************************延时********************************/
- void delay(u16 i)
- {
- while(i--);
- }
- /******************************按键**********************************/
- void key(void)
- {
- if(key_jia == 0) // 按键加
- {
- delay(1000); // 消抖
- if(key_jia == 0)
- {
- num++; // 加一
- if(num == 9)
- {
- num = 8; // 最多到7
- }
- }
- while( !key_jia ); // 检测按键加是否松开
- }
- if(key_jian == 0) //按键减
- {
- delay(1000);
- if(key_jian == 0)
- {
- if(num != 0) // 判断是否到0
- {
- num--; // 减一
- }
- else
- {
- num = 0; // 到0停
- }
- }
- while( !key_jian ); // 检测按键减是否松开
- }
- }
- /******************************main************************/
- void main(void)
- {
- LED = table[0]; // 8灯为灭
- while(1)
- {
- key(); // 按键
- LED = table[num]; // led
- }
复制代码
全部资料51hei下载地址:
按键led及仿真.zip
(56.21 KB, 下载次数: 36)
|