使用51單片機和2個74hc595做的16led流水燈程序,仿真原理圖詳見下圖:
16led流水燈的源程序:
- #include<reg52.h>
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit Sh_cp=P2^0;
- sbit Ds=P2^1;
- sbit St=P2^2;
- sbit Sh_cp1=P1^0;
- sbit Ds1 =P1^1;
- sbit St1 =P1^2;
- uchar temp;
- uchar temp1;
- void In_Data(void)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- Sh_cp=0;
- _nop_();_nop_();
- temp<<=1;Ds=CY;
- Sh_cp=1;
- _nop_();_nop_();
- Sh_cp=0;
- _nop_();_nop_();
- }
- }
- void Out_Data(void)
- {
- St=0;
- _nop_();_nop_();
- St=1; //上升沿送到鎖存器
- _nop_();_nop_();
- St=0; //鎖存顯示
- }
- void In_Data1(void)
- {
- unsigned char i;
- for(i=0;i<8;i++)
- {
- Sh_cp1=0;
- _nop_();_nop_();
- temp1<<=1;Ds1=CY;
- Sh_cp1=1;
- _nop_();_nop_();
- Sh_cp1=0;
- _nop_();_nop_();
- }
- }
- void Out_Data1(void)
- {
- St1=0;
- _nop_();_nop_();
- St1=1; //上升沿送到鎖存器
- _nop_();_nop_();
- St1=0; //鎖存顯示
- }
- void DelayMS(unsigned int ms)
- {
- unsigned char i;
- while(ms--)
- for(i=0;i<120;i++);
- }
- void main()
- {
- uchar i,j;
- while(1)
- {
- for(j=2;j>0;j--)
- { temp1=j;
- In_Data1();
- Out_Data1();
- for(i=0;i<8;i++)
- {
- temp=1<<i;
- In_Data();
- Out_Data();
- DelayMS(1000);
- }
- // DelayMS(2000);
- }
- }
- }
復制代碼
下載地址:
74HC595流水燈.rar
(40.69 KB, 下載次數: 451)
2016-9-8 22:49 上傳
點擊文件名下載附件
|