This is a GR peach project demonstrating shift registers 595 and 165
Fork of mbed_shiftreg_2 by
shitreg.cpp@2:a07ae6396167, 2017-01-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |