flash网站制作软件,自己做的网站用在博客上,国内房地产设计网站建设,wordpress php speedy一、前言 显示床位号使用到4位数码管#xff0c;为了节约单片IO口#xff0c;使用TM1637来驱动数码管。
二、TM1637驱动芯片简介 三、电路设计#xff0c;使用矩阵按键来模拟每个床位的呼叫按钮 四、编写51单片机代码
void delay_ms(u16 n)
{u8 i;while(n--){i 111;while…一、前言 显示床位号使用到4位数码管为了节约单片IO口使用TM1637来驱动数码管。
二、TM1637驱动芯片简介 三、电路设计使用矩阵按键来模拟每个床位的呼叫按钮 四、编写51单片机代码
void delay_ms(u16 n)
{u8 i;while(n--){i 111;while(i--);}
}u8 key_scan()
{u8 keyH, keyL, line, row;KEY0xF0;if(KEY!0xF0){delay_ms(10); //消抖延时if(KEY!0xF0){keyHKEY0xF0;KEY0x0F;keyLKEY0x0F;switch(keyH){case 0x70: line1;break;case 0xB0: line2;break;case 0xD0: line3;break;case 0xE0: line4;break;}switch(keyL){case 0x07: row1;break;case 0x0B: row2;break;case 0x0D: row3;break;case 0x0E: row4;break;}while(KEY!0x0F);return (line-1)*4row;}}return 0xFF;
}code unsigned char tab[]
{0x3F,/*0*/0x06,/*1*/0x5B,/*2*/0x4F,/*3*/0x66,/*4*/0x6D,/*5*/0x7D,/*6*/0x07,/*7*/0x7F,/*8*/0x6F,/*9*/0x77,/*10 A*/0x7C,/*11 b*/0x58,/*12 c*/0x5E,/*13 d*/0x79,/*14 E*/0x71,/*15 F*/0x76,/*16 H*/0x38,/*17 L*/0x54,/*18 n*/0x73,/*19 P*/0x3E,/*20 U*/0x00,/*21 黑屏*/
};// TM1637串行数据线
sbit CLK P2^0;
sbit DIO P2^1;// LED灯
sbit LED P3^0;void delay_us(unsigned int i)
{for (; i 0; i--)_nop_();
}// TM1637开始信号
void TM1637_Start()
{CLK 1;DIO 1;delay_us(2);DIO 0;
}// TM1637结束信号
void TM1637_Stop()
{CLK 0;DIO 0;delay_us(2);CLK 1;delay_us(2);DIO 1;
}void TM1637_ACK(void)
{CLK 0;DIO 1;while(DIO 1);CLK 1;
}// 向TM1637写数据
void TM1637_Write(unsigned char DATA)
{unsigned char i;for (i 0; i 8; i){CLK 0;if (DATA 0x01){DIO 1;}else{DIO 0;}DATA DATA 1;CLK 1;delay_us(2);}
}void TM1637_Display(u8 index)
{TM1637_Start();TM1637_Write(0x40); // 命令TM1637_ACK();TM1637_Stop();TM1637_Start();TM1637_Write(0xC0); // 地址TM1637_ACK(); TM1637_Write(0x3F); // 数据1TM1637_ACK();TM1637_Write(0x3F); // 数据2TM1637_ACK();TM1637_Write(0x3F); // 数据3TM1637_ACK();TM1637_Write(0x3F); // 数据4TM1637_ACK();TM1637_Write(0x3F); // 数据5TM1637_ACK();TM1637_Write(index); // 数据6TM1637_ACK();TM1637_Stop();TM1637_Start();TM1637_Write(0x89); // 亮度命令TM1637_ACK();TM1637_Stop();
}void main()
{u8 num;LED LED_ON;TM1637_Display(tab[0]);while(1){num key_scan();if(num!0xFF){TM1637_Display(tab[num]);}}
}
五、电路仿真运行效果
六、完整Proteus仿真电路图和51单片机源码下载
链接https://pan.baidu.com/s/1TojZnTWu3sGl8oGfjc2dhw?pwdga5p 提取码ga5p