话不多说直接上文件
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载).
单片机源程序如下:
- //74HC595练习程序
- //串入并出实现16流水灯效果
- //2009.12.28
- #include"reg52.h"
- #include"intrins.h"
- #define u8 unsigned char
- #define u16 unsigned int
- sbit SCK=P2^0; //数据在上升沿进入移位寄存器
- sbit SER=P2^1; //串行数据输入端
- sbit RCK=P2^2; //上升沿时将数据输出到并行端口
- sbit gA=P0^0;
- sbit gB=P0^1;
- sbit gC=P0^2;
- sbit gD=P0^3;
- void DigDisplay(unsigned char n);
- u8 zi1[]={0x00,0x70,0x88,0x04,0x04,0x04,0x98,0x00,0x00,0x10,0x10,0x11,0x11,0x11,0x1F,0x00};
- void send_data(u8 dat0)//,u8 dat1,u8 dat2,u8 dat3) //发送数据
- {
- u8 i = 0, j = 0;
- SCK = 0; // 将SCK置为初始状态
- RCK = 0; // 将RCK置为初始状态
- for (i=0; i<8; i++)
- {
- SER = dat0 & (0x01);
- dat0 >>= 1;
- SCK = 0;
- _nop_();
- _nop_();
- _nop_();
- SCK = 1;
-
- }
- // for (i=0; i<8; i++)
- // {
- //
- // SER = dat1 & (0x01);
- // dat1 >>= 1;
- // SCK = 0;
- // _nop_();
- // _nop_();
- // _nop_();
- // SCK = 1;
- //
- // }
- // for (i=0; i<8; i++)
- // {
- // SER = dat2 & (0x01);
- // dat2 >>= 1;
- // SCK = 0;
- // _nop_();
- // _nop_();
- // _nop_();
- // SCK = 1;
- //
- // }
- // for (i=0; i<8; i++)
- // {
- //
- // SER = dat3 & (0x01);
- // dat3 >>= 1;
- // SCK = 0;
- // _nop_();
- // _nop_();
- // _nop_();
- // SCK = 1;
- //
- // }
- RCK = 0;
- _nop_();
- _nop_();
- _nop_();
- RCK = 1;
- RCK=0;
- SCK=0;
- SER=0;
-
- }
- void main()
- {
- u8 k=0;
- while(1)
- {
- for(k=0;k<16;k++)
- {
- DigDisplay(k);
- send_data(zi1[k]);//,zi2[k],zi3[k],zi4[k]);
- send_data(0x00);
- }
- }
- }
- void DigDisplay(u8 n)
- {
- switch (n) //位选,选择点亮哪个数码管
- {
- case 0:
- gA = 1; gB = 1; gC = 1,gD=1;
- break; //显示第0位
- case 1:
- gA = 0; gB = 1; gC = 1,gD=1;
- break; //显示第1位
- case 2:
- gA = 1; gB = 0; gC = 1,gD=1;
- break; //显示第2位
- case 3:
- gA = 0; gB = 0; gC = 1,gD=1;
- break; //显示第3位
- case 4:
- gA = 1; gB = 1; gC = 0,gD=1;
- break; //显示第4位
- case 5:
- gA = 0; gB = 1; gC = 0,gD=1;
- break; //显示第5位
- case 6:
- gA = 1; gB = 0; gC = 0,gD=1;
- break; //显示第6位
- case 7:
- gA = 0; gB = 0; gC = 0,gD=1;
- break; //显示第7位
- case 8:
- gA = 1; gB = 1; gC = 1,gD=0;
- break; //显示第0位
- case 9:
- gA = 0; gB = 1; gC = 1,gD=0;
- break; //显示第1位
- case 10:
- gA = 1; gB = 0; gC = 1,gD=0;
- break; //显示第2位
- case 11:
- gA = 0; gB = 0; gC = 1,gD=0;
- break; //显示第3位
- case 12:
- gA = 1; gB = 1; gC = 0,gD=0;
- break; //显示第4位
- case 13:
- gA = 0; gB = 1; gC = 0,gD=0;
- break; //显示第5位
- case 14:
- gA = 1; gB = 0; gC = 0,gD=0;
- break; //显示第6位
- case 15:
- gA = 0; gB = 0; gC = 0,gD=0;
- break; //显示第7位
- default:
- break;
-
- }
- }
复制代码
所有资料51hei提供下载:
级联.zip
(108.39 KB, 下载次数: 45)
|