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

Committer:
RahulSitaram
Date:
Sat Dec 31 05:08:51 2016 +0000
Revision:
1:b42fa19eeea8
Parent:
0:b9fbca7b029d
Child:
2:a07ae6396167
Revised

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 1:b42fa19eeea8 21 bool c1[4];
RahulSitaram 1:b42fa19eeea8 22 bool c2[4];
RahulSitaram 1:b42fa19eeea8 23 bool c3[4];
RahulSitaram 1:b42fa19eeea8 24 bool c4[4];
RahulSitaram 1:b42fa19eeea8 25
RahulSitaram 1:b42fa19eeea8 26
RahulSitaram 0:b9fbca7b029d 27 void shift(uint8_t data, int delay_time,int row_no){
RahulSitaram 0:b9fbca7b029d 28 DigitalOut lat = pins[row_no][0];
RahulSitaram 0:b9fbca7b029d 29 DigitalOut dat = pins[row_no][1];
RahulSitaram 0:b9fbca7b029d 30 DigitalOut clk = pins[row_no][2];
RahulSitaram 0:b9fbca7b029d 31 clk = 0;
RahulSitaram 0:b9fbca7b029d 32 dat = 0;
RahulSitaram 0:b9fbca7b029d 33 lat = 0;
RahulSitaram 0:b9fbca7b029d 34 SH_LD = 1;
RahulSitaram 0:b9fbca7b029d 35 clk_inh = 1;
RahulSitaram 0:b9fbca7b029d 36 clk_2 = 1;
RahulSitaram 0:b9fbca7b029d 37 data_read = 0x00;
RahulSitaram 0:b9fbca7b029d 38 init = 0x80;
RahulSitaram 0:b9fbca7b029d 39
RahulSitaram 0:b9fbca7b029d 40 for(i=0;i<8;i++){
RahulSitaram 0:b9fbca7b029d 41 dat = data & (init>>i);
RahulSitaram 0:b9fbca7b029d 42 clk = 1;
RahulSitaram 0:b9fbca7b029d 43 clk = 0;
RahulSitaram 0:b9fbca7b029d 44 }
RahulSitaram 0:b9fbca7b029d 45 lat = 1;
RahulSitaram 0:b9fbca7b029d 46 lat = 0;
RahulSitaram 0:b9fbca7b029d 47
RahulSitaram 0:b9fbca7b029d 48 }
RahulSitaram 0:b9fbca7b029d 49
RahulSitaram 0:b9fbca7b029d 50 uint8_t shift_par(int clk_time, int load_time){
RahulSitaram 0:b9fbca7b029d 51 SH_LD = 0;
RahulSitaram 0:b9fbca7b029d 52 wait_us(load_time);
RahulSitaram 0:b9fbca7b029d 53 SH_LD = 1;
RahulSitaram 0:b9fbca7b029d 54 wait_us(load_time);
RahulSitaram 0:b9fbca7b029d 55 data_read = (data_read<<1)|ser;
RahulSitaram 0:b9fbca7b029d 56 clk_inh = 0;
RahulSitaram 0:b9fbca7b029d 57
RahulSitaram 0:b9fbca7b029d 58 for(i=0;i<8;i++)
RahulSitaram 0:b9fbca7b029d 59 {
RahulSitaram 0:b9fbca7b029d 60 data_read = (data_read<<1)|ser;
RahulSitaram 0:b9fbca7b029d 61 clk_2 = 0;
RahulSitaram 0:b9fbca7b029d 62 clk_2 = 1;
RahulSitaram 0:b9fbca7b029d 63
RahulSitaram 0:b9fbca7b029d 64 }
RahulSitaram 0:b9fbca7b029d 65
RahulSitaram 1:b42fa19eeea8 66 //return data_read;
RahulSitaram 1:b42fa19eeea8 67
RahulSitaram 1:b42fa19eeea8 68 if (data_read== 0x00)
RahulSitaram 1:b42fa19eeea8 69 return 'a';
RahulSitaram 1:b42fa19eeea8 70 if (data_read == 0x0F)
RahulSitaram 1:b42fa19eeea8 71 return 'b';
RahulSitaram 1:b42fa19eeea8 72 if (data_read== 0xF0)
RahulSitaram 1:b42fa19eeea8 73 return 'c';
RahulSitaram 1:b42fa19eeea8 74 if (data_read == 0xFF)
RahulSitaram 1:b42fa19eeea8 75 return 'd';
RahulSitaram 1:b42fa19eeea8 76 if (data_read == 0xc5)
RahulSitaram 1:b42fa19eeea8 77 return '@';
RahulSitaram 1:b42fa19eeea8 78 else return 'e';
RahulSitaram 0:b9fbca7b029d 79
RahulSitaram 0:b9fbca7b029d 80 }
RahulSitaram 0:b9fbca7b029d 81
RahulSitaram 0:b9fbca7b029d 82 int main() {
RahulSitaram 0:b9fbca7b029d 83
RahulSitaram 1:b42fa19eeea8 84 shift(0xAB, 0, 0);
RahulSitaram 0:b9fbca7b029d 85 wait_ms(500);
RahulSitaram 1:b42fa19eeea8 86 while(1){
RahulSitaram 1:b42fa19eeea8 87 pc.printf("%c\n", shift_par(0,0));
RahulSitaram 1:b42fa19eeea8 88 wait(1);
RahulSitaram 1:b42fa19eeea8 89 }
RahulSitaram 0:b9fbca7b029d 90 }