用74HC595和74LS247驱动四位数码管 | 您所在的位置:网站首页 › 74ls148数码管 › 用74HC595和74LS247驱动四位数码管 |
1 74HC595芯片 74HC595是一个8位串行输入、并行输出的移位寄存器
管脚如下:
2 74LS247芯片 74ls247是4线——七段译码器/驱动器 管脚如下:
其中, A,B,C,D为译码地址输入端; a~g为段输出(低电平有效)
3 四位数码管
针脚定义: 1-4:位选 a-h:段选 3 原理图 注:该原理图只说明各针脚连接关系,未画出其它器件。
由图可见,对于共阳数码管,位选编码如下表: 位 1 2 3 4 编码 0xe0H 0xd0H 0xb0H 0x70H 注:表中编码将段选信号假设为0. 由于控制信号是由单片机等微处理器串行输入到74HC595,所以根据74LS247译码器编码对段选信号也编码如下: 数字 0 1 2 3 4 5 6 7 8 9 编码 0x00H 0x01H 0x02H 0x03H 0x04H 0x05H 0x06H 0x07H 0x08H 0x09H 注:表中编码将位选信号假设为0. 4 程序代码 unsigned char LED_0F[] = //共阳 {// 0 1 2 3 4 5 6 7 8 9 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09 };
unsigned char LED[4]; //用于LED的4位显示缓存 int SCLK = 2; int RCLK = 3; int DIO = 4; //这里定义了那三个脚 void setup () { pinMode(SCLK,OUTPUT); pinMode(RCLK,OUTPUT); pinMode(DIO,OUTPUT); //让三个脚都是输出状态 } void loop() { LED[0]=1; LED[1]=2; LED[2]=3; LED[3]=4; while(1) { LED4_Display (); }
}
void LED4_Display (void) { unsigned char *led_table; // 查表指针 unsigned char i; unsigned char j; //显示第1位 led_table = LED_0F + LED[0]; i = *led_table; j=i|0xe0; LED_OUT(j); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); delay(1000); //显示第2位 led_table = LED_0F + LED[1]; i = *led_table; j=i|0xd0; LED_OUT(j); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); delay(1000); //显示第3位 led_table = LED_0F + LED[2]; i = *led_table; j=i|0xb0; LED_OUT(j); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); delay(1000); //显示第4位 led_table = LED_0F + LED[3]; i = *led_table; j=i|0x70; LED_OUT(j); digitalWrite(RCLK,LOW); digitalWrite(RCLK,HIGH); delay(1000); }
void LED_OUT(unsigned char X) { unsigned char i; for(i=8;i>=1;i--) { if (X&0x80) { digitalWrite(DIO,HIGH); } else { digitalWrite(DIO,LOW); } X |
CopyRight 2018-2019 实验室设备网 版权所有 |