作为一个初学者,很能明白初学者对程序解析不透的苦恼,所以尽量用白话文解释一下。也希望朋友们多给我传授一些语句的用法,算法一起努力。
单片机源程序如下:
- #include<ALL.H>
- u8 wei[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //定义小灯的数组
- u8 wei_duan[3]; //定义三个595
- void HC595_QUDONG() //向dat
- {
- static unsigned char i=0;
- for(i=0;i<8;i++) //选择第一个595,循环传输数据
- {
- shizhong=0; //时钟拉低
- shuju=wei_duan[2]&0x80; //为什么要&0X80因为写进595数据要从最高位开始,所以只取它的最高位
- wei_duan[2]<<=1; //取完后往左移一位,就写进去一个数据了,这样循环8次 一个字节就完成了
- shizhong=1; //数据要写进去要靠时钟的上升沿,它就像一条船要把你(数据)载过去,不然你只能在水里吹泡泡
- }
- for(i=0;i<8;i++) //选择第二个595,循环传输数据
- {
- shizhong=0;
- shuju=wei_duan[1]&0x80;
- wei_duan[1]<<=1;
- shizhong=1; //以上全部都一样
- }
- for(i=0;i<8;i++) //选择第三个595,循环传输数据
- {
- shizhong=0;
- shuju=wei_duan[0]&0x80;
- wei_duan[0]<<=1;
- shizhong=1; //以上全部都一样
- }
- suocun=1; //当数据塞满一个字节后,锁存就像门,打开放出一次八只二哈,向你奔去
- shuju=0;
- suocun=0;
- }
复制代码
所有资料51hei提供下载:
HC595流水灯仿真文件.rar
(39.65 KB, 下载次数: 110)
|