This is a GR peach project demonstrating shift registers 595 and 165
Fork of mbed_shiftreg_2 by
shitreg.cpp
- Committer:
- RahulSitaram
- Date:
- 2016-12-31
- Revision:
- 1:b42fa19eeea8
- Parent:
- 0:b9fbca7b029d
- Child:
- 2:a07ae6396167
File content as of revision 1:b42fa19eeea8:
#include "mbed.h" //#include <bitset> #include "arduino.h" //using namespace mbed::mbed; //DigitalOut lat(P8_11); //DigitalOut dat(P8_13); //DigitalOut clk(P4_4); Serial pc(USBTX, USBRX); // tx, rx DigitalOut pins[1][3] = {{P8_11,P8_13,P4_4}}; DigitalIn ser(P2_14); DigitalOut clk_inh(P4_5); DigitalOut clk_2(P4_7); DigitalOut SH_LD(P4_6); int delay_time; int i; uint8_t init; uint8_t data_read; bool c1[4]; bool c2[4]; bool c3[4]; bool c4[4]; void shift(uint8_t data, int delay_time,int row_no){ DigitalOut lat = pins[row_no][0]; DigitalOut dat = pins[row_no][1]; DigitalOut clk = pins[row_no][2]; clk = 0; dat = 0; lat = 0; SH_LD = 1; clk_inh = 1; clk_2 = 1; data_read = 0x00; init = 0x80; for(i=0;i<8;i++){ dat = data & (init>>i); clk = 1; clk = 0; } lat = 1; lat = 0; } uint8_t shift_par(int clk_time, int load_time){ SH_LD = 0; wait_us(load_time); SH_LD = 1; wait_us(load_time); data_read = (data_read<<1)|ser; clk_inh = 0; for(i=0;i<8;i++) { data_read = (data_read<<1)|ser; clk_2 = 0; clk_2 = 1; } //return data_read; if (data_read== 0x00) return 'a'; if (data_read == 0x0F) return 'b'; if (data_read== 0xF0) return 'c'; if (data_read == 0xFF) return 'd'; if (data_read == 0xc5) return '@'; else return 'e'; } int main() { shift(0xAB, 0, 0); wait_ms(500); while(1){ pc.printf("%c\n", shift_par(0,0)); wait(1); } }