話不多說直接上文件
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載).
0.png (12.98 KB, 下載次數: 71)
下載附件
2019-7-24 13:52 上傳
單片機源程序如下:
- //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)
2019-7-24 09:12 上傳
點擊文件名下載附件
仿真及代碼 下載積分: 黑幣 -5
|