This is a GR peach project demonstrating shift registers 595 and 165
Fork of mbed_shiftreg_2 by
shitreg.cpp@1:b42fa19eeea8, 2016-12-31 (annotated)
- 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?
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 | 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 | } |