本文共 1054 字,大约阅读时间需要 3 分钟。
#include "reg51.h"#include "intrins.h"// QA1~8接交通灯sbit SER = P3^4; // 74HC595串行数据sbit RCK = P3^5; // 74HC595存储寄存器时钟sbit SCK = P3^6; // 74HC595移位寄存器时钟typedef unsigned char u8;// 行是高点平,列是低电平void HC595(u8 colHigh, u8 colLow, u8 rowHigh, u8 rowLow){ int i; u8 tempData; RCK = 0; SCK = 0; // 先传高位 for (i = 7; i >= 0; --i) { tempData = colHigh >> i; SER = tempData & 0x01; _nop_(); SCK = 1; // 上升沿移位 _nop_(); SCK = 0; _nop_(); } for (i = 7; i >= 0; --i) { tempData = colLow >> i; SER = tempData & 0x01; _nop_(); SCK = 1; // 上升沿移位 _nop_(); SCK = 0; _nop_(); } for (i = 7; i >= 0; --i) { tempData = rowHigh >> i; SER = tempData & 0x01; _nop_(); SCK = 1; // 上升沿移位 _nop_(); SCK = 0; } for (i = 7; i >= 0; --i) { tempData = rowLow >> i; SER = tempData & 0x01; _nop_(); SCK = 1; // 上升沿移位 _nop_(); SCK = 0; _nop_(); } _nop_(); RCK = 1; // 上升沿4个74HC595并口一起发出8位数据 _nop_();}void Delay(int i){ while (--i);}void main(){ while (1) { int i; for (i = 0; i < 8; ++i) { HC595(0xff, 0xfe, 0x00, 1 << i); Delay(5000 * 10); } } }
转载地址:http://swmai.baihongyu.com/