![]() |
受教了 |
本帖最后由 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)//主循環 { } } |