基于8051串行口和移位寄存器74LS164扩展8位输出通道的程序,循环显示0—9数字
时间: 2023-11-27 16:50:05 浏览: 121
用8255来循环显示数字(0-9)
5星 · 资源好评率100%
下面是基于8051串口和移位寄存器74LS164扩展8位输出通道的程序,循环显示0-9数字的代码:
```
#include <reg51.h>
#define DATA P1_0
#define CLK P1_1
#define LATCH P1_2
unsigned char num[10] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f};
// 数码管显示0~9的编码
void delay(unsigned int t)
{
unsigned int i;
while (t--)
{
for (i = 0; i < 120; i++);
}
}
void shiftOut(unsigned char data)
{
unsigned char i;
for (i = 0; i < 8; i++)
{
DATA = (data & 0x80) ? 1 : 0;
CLK = 1;
CLK = 0;
data <<= 1;
}
}
void display(unsigned char n)
{
LATCH = 0;
shiftOut(num[n]);
shiftOut(0x00);
LATCH = 1;
}
void main()
{
unsigned char i;
while (1)
{
for (i = 0; i < 10; i++)
{
display(i);
delay(500);
}
}
}
```
这个程序的作用是,在循环中依次显示0-9数字。这个程序使用了74LS164移位寄存器来扩展8位输出通道,可以连接数码管显示器来显示数字。在主函数中,使用了一个无限循环来不断地显示数字,在每次循环中,使用for循环依次显示0-9数字,并使用delay函数实现延迟。在display函数中,使用shiftOut函数向移位寄存器中写入数据,以便控制数码管显示器显示对应的数字。
阅读全文