受教了 |
本帖最后由 zl2168 于 2017-6-27 19:32 编辑 实例44 74HC595串入并出控制8/16循环灯 ![]() ![]() 先Proteus仿真一下,确认有效。 以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。 |
我专门为你做的程序。 /* AT89C52、共阳LED */ #include<reg51.h> #include<INTRINS.H> sbit SER=P2^0;//14脚 sbit RCLK=P2^2;//12脚 sbit SRCLK=P2^1;//11脚 void Delay10ms(unsigned int c) { unsigned char a,b; for(c;c>0;c--) { for(b=44;b>0;b--) { for (a=112;a>0;a--) { } } } } void HC595 (unsigned char dat) { unsigned char i; SRCLK=0; RCLK=0; for (i=0;i<8;i++) { SER=dat>>7; dat<<=1; SRCLK=1; _nop_(); _nop_(); SRCLK=0; } RCLK=1; _nop_(); _nop_(); RCLK=0; } void main(void)//主函数 { unsigned char i=0x01,j; HC595(0x00);//初始化595 HC595(0x00); for (j=0;j<8;j++) { HC595(0); HC595(i); i<<=1; Delay10ms(50); } i=0x01; for (j=0;j<8;j++) { HC595(i); HC595(0xff); i<<=1; Delay10ms(50); } while (1)//主循环 { } } |