This is a GR peach project demonstrating shift registers 595 and 165

Dependencies:   Arduino mbed

Fork of mbed_shiftreg by Sai Rahul Sitaram

shitreg.cpp

Committer:
RahulSitaram
Date:
2016-12-03
Revision:
0:b9fbca7b029d

File content as of revision 0:b9fbca7b029d:

#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;
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;
    
    }

int main() {
    
    shift(0x4F, 0, 0);
    wait_ms(500);
    pc.printf("%c", shift_par(0,0));
}