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

Dependencies:   Arduino mbed

Fork of mbed_shiftreg by Sai Rahul Sitaram

Committer:
RahulSitaram
Date:
Sat Dec 03 07:17:34 2016 +0000
Revision:
0:b9fbca7b029d
Shift registers with Grpeach

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RahulSitaram 0:b9fbca7b029d 1 #include "mbed.h"
RahulSitaram 0:b9fbca7b029d 2 //#include <bitset>
RahulSitaram 0:b9fbca7b029d 3 #include "arduino.h"
RahulSitaram 0:b9fbca7b029d 4
RahulSitaram 0:b9fbca7b029d 5 //using namespace mbed::mbed;
RahulSitaram 0:b9fbca7b029d 6
RahulSitaram 0:b9fbca7b029d 7 //DigitalOut lat(P8_11);
RahulSitaram 0:b9fbca7b029d 8 //DigitalOut dat(P8_13);
RahulSitaram 0:b9fbca7b029d 9 //DigitalOut clk(P4_4);
RahulSitaram 0:b9fbca7b029d 10 Serial pc(USBTX, USBRX); // tx, rx
RahulSitaram 0:b9fbca7b029d 11 DigitalOut pins[1][3] = {{P8_11,P8_13,P4_4}};
RahulSitaram 0:b9fbca7b029d 12 DigitalIn ser(P2_14);
RahulSitaram 0:b9fbca7b029d 13 DigitalOut clk_inh(P4_5);
RahulSitaram 0:b9fbca7b029d 14 DigitalOut clk_2(P4_7);
RahulSitaram 0:b9fbca7b029d 15 DigitalOut SH_LD(P4_6);
RahulSitaram 0:b9fbca7b029d 16
RahulSitaram 0:b9fbca7b029d 17 int delay_time;
RahulSitaram 0:b9fbca7b029d 18 int i;
RahulSitaram 0:b9fbca7b029d 19 uint8_t init;
RahulSitaram 0:b9fbca7b029d 20 uint8_t data_read;
RahulSitaram 0:b9fbca7b029d 21 void shift(uint8_t data, int delay_time,int row_no){
RahulSitaram 0:b9fbca7b029d 22 DigitalOut lat = pins[row_no][0];
RahulSitaram 0:b9fbca7b029d 23 DigitalOut dat = pins[row_no][1];
RahulSitaram 0:b9fbca7b029d 24 DigitalOut clk = pins[row_no][2];
RahulSitaram 0:b9fbca7b029d 25 clk = 0;
RahulSitaram 0:b9fbca7b029d 26 dat = 0;
RahulSitaram 0:b9fbca7b029d 27 lat = 0;
RahulSitaram 0:b9fbca7b029d 28 SH_LD = 1;
RahulSitaram 0:b9fbca7b029d 29 clk_inh = 1;
RahulSitaram 0:b9fbca7b029d 30 clk_2 = 1;
RahulSitaram 0:b9fbca7b029d 31 data_read = 0x00;
RahulSitaram 0:b9fbca7b029d 32 init = 0x80;
RahulSitaram 0:b9fbca7b029d 33
RahulSitaram 0:b9fbca7b029d 34 for(i=0;i<8;i++){
RahulSitaram 0:b9fbca7b029d 35 dat = data & (init>>i);
RahulSitaram 0:b9fbca7b029d 36 clk = 1;
RahulSitaram 0:b9fbca7b029d 37 clk = 0;
RahulSitaram 0:b9fbca7b029d 38 }
RahulSitaram 0:b9fbca7b029d 39 lat = 1;
RahulSitaram 0:b9fbca7b029d 40 lat = 0;
RahulSitaram 0:b9fbca7b029d 41
RahulSitaram 0:b9fbca7b029d 42 }
RahulSitaram 0:b9fbca7b029d 43
RahulSitaram 0:b9fbca7b029d 44 uint8_t shift_par(int clk_time, int load_time){
RahulSitaram 0:b9fbca7b029d 45 SH_LD = 0;
RahulSitaram 0:b9fbca7b029d 46 wait_us(load_time);
RahulSitaram 0:b9fbca7b029d 47 SH_LD = 1;
RahulSitaram 0:b9fbca7b029d 48 wait_us(load_time);
RahulSitaram 0:b9fbca7b029d 49 data_read = (data_read<<1)|ser;
RahulSitaram 0:b9fbca7b029d 50 clk_inh = 0;
RahulSitaram 0:b9fbca7b029d 51
RahulSitaram 0:b9fbca7b029d 52 for(i=0;i<8;i++)
RahulSitaram 0:b9fbca7b029d 53 {
RahulSitaram 0:b9fbca7b029d 54 data_read = (data_read<<1)|ser;
RahulSitaram 0:b9fbca7b029d 55 clk_2 = 0;
RahulSitaram 0:b9fbca7b029d 56 clk_2 = 1;
RahulSitaram 0:b9fbca7b029d 57
RahulSitaram 0:b9fbca7b029d 58 }
RahulSitaram 0:b9fbca7b029d 59
RahulSitaram 0:b9fbca7b029d 60 return data_read;
RahulSitaram 0:b9fbca7b029d 61
RahulSitaram 0:b9fbca7b029d 62 }
RahulSitaram 0:b9fbca7b029d 63
RahulSitaram 0:b9fbca7b029d 64 int main() {
RahulSitaram 0:b9fbca7b029d 65
RahulSitaram 0:b9fbca7b029d 66 shift(0x4F, 0, 0);
RahulSitaram 0:b9fbca7b029d 67 wait_ms(500);
RahulSitaram 0:b9fbca7b029d 68 pc.printf("%c", shift_par(0,0));
RahulSitaram 0:b9fbca7b029d 69 }