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:
Mon Jan 02 07:59:32 2017 +0000
Revision:
2:a07ae6396167
Parent:
1:b42fa19eeea8
Child:
3:1696c69e3109
Child:
4:081ce87947b8
This is the revision

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