test

Dependencies:   mbed BufferedSerial LS7366LIB2 FastPWM

Committer:
lsh2205
Date:
Thu Apr 23 00:38:16 2020 +0000
Revision:
0:e12eb40b9fef
test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lsh2205 0:e12eb40b9fef 1 #ifndef _7_SEGMENT_H_
lsh2205 0:e12eb40b9fef 2 #define _7_SEGMENT_H_
lsh2205 0:e12eb40b9fef 3
lsh2205 0:e12eb40b9fef 4 #include "MCP23S17.h"
lsh2205 0:e12eb40b9fef 5
lsh2205 0:e12eb40b9fef 6 #define SEG_DELAY_TIME (int)3
lsh2205 0:e12eb40b9fef 7 #define SEG_OE_PERIOD (int)1500 // 1.5 ms
lsh2205 0:e12eb40b9fef 8
lsh2205 0:e12eb40b9fef 9 #define SEG_PGAIN 0
lsh2205 0:e12eb40b9fef 10 #define SEG_INPUT 0
lsh2205 0:e12eb40b9fef 11
lsh2205 0:e12eb40b9fef 12
lsh2205 0:e12eb40b9fef 13 //FastPWM OE_pin(PB_11, -1);
lsh2205 0:e12eb40b9fef 14 //PwmOut OE_pin(PB_11);
lsh2205 0:e12eb40b9fef 15 //DigitalOut output_enable_pin(PB_11);
lsh2205 0:e12eb40b9fef 16 bool OE_state = false;
lsh2205 0:e12eb40b9fef 17
lsh2205 0:e12eb40b9fef 18 const bool num_data[10][8] = {
lsh2205 0:e12eb40b9fef 19 {1,0,0,0,0,0,0,1},
lsh2205 0:e12eb40b9fef 20 {1,1,1,1,0,0,1,1},
lsh2205 0:e12eb40b9fef 21 {0,1,0,0,1,0,0,1},
lsh2205 0:e12eb40b9fef 22 {0,1,1,0,0,0,0,1},
lsh2205 0:e12eb40b9fef 23 {0,0,1,1,0,0,1,1},
lsh2205 0:e12eb40b9fef 24 {0,0,1,0,0,1,0,1},
lsh2205 0:e12eb40b9fef 25 {0,0,0,0,0,1,0,1},
lsh2205 0:e12eb40b9fef 26 {1,0,1,1,0,0,0,1},
lsh2205 0:e12eb40b9fef 27 {0,0,0,0,0,0,0,1},
lsh2205 0:e12eb40b9fef 28 {0,0,1,1,0,0,0,1},
lsh2205 0:e12eb40b9fef 29 };
lsh2205 0:e12eb40b9fef 30
lsh2205 0:e12eb40b9fef 31 int Gobal_GPIOA = 0x00;
lsh2205 0:e12eb40b9fef 32
lsh2205 0:e12eb40b9fef 33 void Segment_Init();
lsh2205 0:e12eb40b9fef 34 void Segment_PWM_Control();
lsh2205 0:e12eb40b9fef 35 void pgain_Latch_pin(bool logic);
lsh2205 0:e12eb40b9fef 36 void pgain_Clock_pin(bool logic);
lsh2205 0:e12eb40b9fef 37 void pgain_data_pin(bool logic);
lsh2205 0:e12eb40b9fef 38 void input_Latch_pin(bool logic);
lsh2205 0:e12eb40b9fef 39 void input_Clock_pin(bool logic);
lsh2205 0:e12eb40b9fef 40 void input_data_pin(bool logic);
lsh2205 0:e12eb40b9fef 41 void Pgain_segment(int num1,int num2,int num3,int delay_time_us);
lsh2205 0:e12eb40b9fef 42 void Input_segment(int num1,int num2,int delay_time_us);
lsh2205 0:e12eb40b9fef 43
lsh2205 0:e12eb40b9fef 44 void Segment_Init()
lsh2205 0:e12eb40b9fef 45 {
lsh2205 0:e12eb40b9fef 46 Pgain_segment(0, 0, 0, SEG_DELAY_TIME);
lsh2205 0:e12eb40b9fef 47 Input_segment(0, 0, SEG_DELAY_TIME);
lsh2205 0:e12eb40b9fef 48 //output_enable_pin = 1;
lsh2205 0:e12eb40b9fef 49 // OE_pin.period(0.015);
lsh2205 0:e12eb40b9fef 50 // OE_pin.write(0.5f);
lsh2205 0:e12eb40b9fef 51 }
lsh2205 0:e12eb40b9fef 52 /*
lsh2205 0:e12eb40b9fef 53 void Segment_PWM_Control()
lsh2205 0:e12eb40b9fef 54 {
lsh2205 0:e12eb40b9fef 55 output_enable_pin = OE_state;
lsh2205 0:e12eb40b9fef 56 OE_state = !OE_state;
lsh2205 0:e12eb40b9fef 57 }
lsh2205 0:e12eb40b9fef 58 */
lsh2205 0:e12eb40b9fef 59 void pgain_Latch_pin(bool logic) //GPA2
lsh2205 0:e12eb40b9fef 60 {
lsh2205 0:e12eb40b9fef 61 if(logic)
lsh2205 0:e12eb40b9fef 62 Gobal_GPIOA |= (1<<2);//LED를 켠다.
lsh2205 0:e12eb40b9fef 63 else
lsh2205 0:e12eb40b9fef 64 Gobal_GPIOA &= ~(1<<2);//LED를 끈다.
lsh2205 0:e12eb40b9fef 65
lsh2205 0:e12eb40b9fef 66 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 67 }
lsh2205 0:e12eb40b9fef 68
lsh2205 0:e12eb40b9fef 69 void pgain_Clock_pin(bool logic) //GPA3
lsh2205 0:e12eb40b9fef 70 {
lsh2205 0:e12eb40b9fef 71 if(logic)
lsh2205 0:e12eb40b9fef 72 Gobal_GPIOA |= (1<<3);//LED를 켠다.
lsh2205 0:e12eb40b9fef 73 else
lsh2205 0:e12eb40b9fef 74 Gobal_GPIOA &= ~(1<<3);//LED를 끈다.
lsh2205 0:e12eb40b9fef 75
lsh2205 0:e12eb40b9fef 76 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 77 }
lsh2205 0:e12eb40b9fef 78
lsh2205 0:e12eb40b9fef 79 void pgain_data_pin(bool logic) //GPA0
lsh2205 0:e12eb40b9fef 80 {
lsh2205 0:e12eb40b9fef 81 if(logic)
lsh2205 0:e12eb40b9fef 82 Gobal_GPIOA |= (1<<0);//LED를 켠다.
lsh2205 0:e12eb40b9fef 83 else
lsh2205 0:e12eb40b9fef 84 Gobal_GPIOA &= ~(1<<0);//LED를 끈다.
lsh2205 0:e12eb40b9fef 85
lsh2205 0:e12eb40b9fef 86 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 87 }
lsh2205 0:e12eb40b9fef 88
lsh2205 0:e12eb40b9fef 89 void input_Latch_pin(bool logic) //GPA6
lsh2205 0:e12eb40b9fef 90 {
lsh2205 0:e12eb40b9fef 91 if(logic)
lsh2205 0:e12eb40b9fef 92 Gobal_GPIOA |= (1<<6);//LED를 켠다.
lsh2205 0:e12eb40b9fef 93 else
lsh2205 0:e12eb40b9fef 94 Gobal_GPIOA &= ~(1<<6);//LED를 끈다.
lsh2205 0:e12eb40b9fef 95
lsh2205 0:e12eb40b9fef 96 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 97 }
lsh2205 0:e12eb40b9fef 98
lsh2205 0:e12eb40b9fef 99 void input_Clock_pin(bool logic) //GPA7
lsh2205 0:e12eb40b9fef 100 {
lsh2205 0:e12eb40b9fef 101 if(logic)
lsh2205 0:e12eb40b9fef 102 Gobal_GPIOA |= (1<<7);//LED를 켠다.
lsh2205 0:e12eb40b9fef 103 else
lsh2205 0:e12eb40b9fef 104 Gobal_GPIOA &= ~(1<<7);//LED를 끈다.
lsh2205 0:e12eb40b9fef 105
lsh2205 0:e12eb40b9fef 106 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 107 }
lsh2205 0:e12eb40b9fef 108
lsh2205 0:e12eb40b9fef 109 void input_data_pin(bool logic) //GPA4
lsh2205 0:e12eb40b9fef 110 {
lsh2205 0:e12eb40b9fef 111 if(logic)
lsh2205 0:e12eb40b9fef 112 Gobal_GPIOA |= (1<<4);//LED를 켠다.
lsh2205 0:e12eb40b9fef 113 else
lsh2205 0:e12eb40b9fef 114 Gobal_GPIOA &= ~(1<<4);//LED를 끈다.
lsh2205 0:e12eb40b9fef 115
lsh2205 0:e12eb40b9fef 116 MCP_Write(MCP_SEG_CS, MCP_GPIOA, Gobal_GPIOA);
lsh2205 0:e12eb40b9fef 117 }
lsh2205 0:e12eb40b9fef 118
lsh2205 0:e12eb40b9fef 119 void Pgain_segment(int num1,int num2,int num3,int delay_time_us)
lsh2205 0:e12eb40b9fef 120 {
lsh2205 0:e12eb40b9fef 121 pgain_Latch_pin(0);
lsh2205 0:e12eb40b9fef 122 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 123
lsh2205 0:e12eb40b9fef 124 if(num1>9)
lsh2205 0:e12eb40b9fef 125 num1=9;
lsh2205 0:e12eb40b9fef 126 if(num1<0)
lsh2205 0:e12eb40b9fef 127 num1=0;
lsh2205 0:e12eb40b9fef 128
lsh2205 0:e12eb40b9fef 129 if(num2>9)
lsh2205 0:e12eb40b9fef 130 num2=9;
lsh2205 0:e12eb40b9fef 131 if(num2<0)
lsh2205 0:e12eb40b9fef 132 num2=0;
lsh2205 0:e12eb40b9fef 133
lsh2205 0:e12eb40b9fef 134 if(num3>9)
lsh2205 0:e12eb40b9fef 135 num3=9;
lsh2205 0:e12eb40b9fef 136 if(num3<0)
lsh2205 0:e12eb40b9fef 137 num3=0;
lsh2205 0:e12eb40b9fef 138
lsh2205 0:e12eb40b9fef 139
lsh2205 0:e12eb40b9fef 140 for(int i=0;i<8;i++)
lsh2205 0:e12eb40b9fef 141 {
lsh2205 0:e12eb40b9fef 142 pgain_Clock_pin(1);
lsh2205 0:e12eb40b9fef 143 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 144 pgain_data_pin(num_data[num3][i]);
lsh2205 0:e12eb40b9fef 145 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 146 pgain_Clock_pin(0);
lsh2205 0:e12eb40b9fef 147 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 148 }
lsh2205 0:e12eb40b9fef 149 for(int i=0;i<8;i++)
lsh2205 0:e12eb40b9fef 150 {
lsh2205 0:e12eb40b9fef 151 pgain_Clock_pin(1);
lsh2205 0:e12eb40b9fef 152 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 153 pgain_data_pin(num_data[num2][i]);
lsh2205 0:e12eb40b9fef 154 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 155 pgain_Clock_pin(0);
lsh2205 0:e12eb40b9fef 156 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 157 }
lsh2205 0:e12eb40b9fef 158 for(int i=0;i<8;i++)
lsh2205 0:e12eb40b9fef 159 {
lsh2205 0:e12eb40b9fef 160 pgain_Clock_pin(1);
lsh2205 0:e12eb40b9fef 161 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 162 pgain_data_pin(num_data[num1][i]);
lsh2205 0:e12eb40b9fef 163 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 164 pgain_Clock_pin(0);
lsh2205 0:e12eb40b9fef 165 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 166 }
lsh2205 0:e12eb40b9fef 167 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 168 pgain_Latch_pin(1);
lsh2205 0:e12eb40b9fef 169 }
lsh2205 0:e12eb40b9fef 170
lsh2205 0:e12eb40b9fef 171 void Input_segment(int num1,int num2,int delay_time_us)
lsh2205 0:e12eb40b9fef 172 {
lsh2205 0:e12eb40b9fef 173 input_Latch_pin(0);
lsh2205 0:e12eb40b9fef 174 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 175
lsh2205 0:e12eb40b9fef 176 if(num1>9)
lsh2205 0:e12eb40b9fef 177 num1=9;
lsh2205 0:e12eb40b9fef 178 if(num1<0)
lsh2205 0:e12eb40b9fef 179 num1=0;
lsh2205 0:e12eb40b9fef 180
lsh2205 0:e12eb40b9fef 181 if(num2>9)
lsh2205 0:e12eb40b9fef 182 num2=9;
lsh2205 0:e12eb40b9fef 183 if(num2<0)
lsh2205 0:e12eb40b9fef 184 num2=0;
lsh2205 0:e12eb40b9fef 185
lsh2205 0:e12eb40b9fef 186 for(int i=0;i<8;i++)
lsh2205 0:e12eb40b9fef 187 {
lsh2205 0:e12eb40b9fef 188 input_Clock_pin(1);
lsh2205 0:e12eb40b9fef 189 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 190 input_data_pin(num_data[num2][i]);
lsh2205 0:e12eb40b9fef 191 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 192 input_Clock_pin(0);
lsh2205 0:e12eb40b9fef 193 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 194 }
lsh2205 0:e12eb40b9fef 195 for(int i=0;i<8;i++)
lsh2205 0:e12eb40b9fef 196 {
lsh2205 0:e12eb40b9fef 197 input_Clock_pin(1);
lsh2205 0:e12eb40b9fef 198 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 199 input_data_pin(num_data[num1][i]);
lsh2205 0:e12eb40b9fef 200 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 201 input_Clock_pin(0);
lsh2205 0:e12eb40b9fef 202 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 203 }
lsh2205 0:e12eb40b9fef 204 wait_us(delay_time_us);
lsh2205 0:e12eb40b9fef 205 input_Latch_pin(1);
lsh2205 0:e12eb40b9fef 206 }
lsh2205 0:e12eb40b9fef 207
lsh2205 0:e12eb40b9fef 208 #endif