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

Dependencies:   Arduino mbed

Fork of mbed_shiftreg_2 by GR_Peach_Abhinav_Rahul

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