Quartus kod magisterka 11

-=================================================================

2 --= PRACA MAGISTERSKA 2011 =

3 --= =

4 --= Temat: Rozbudowa modelu przenośnika taśmowego - detekcja kolorów oraz =

5 --= komunikacja z komputerem =

6 --= =

7 --= =

8 --= inż. K. Bargieł Promotor: Konsultant: =

9 --= inż. K. Cirocki dr inż. K. M. Noga mgr inż. R. Sokół =

10 -================================================================

11 --===============================================================

12 --= Program pracy przenośnika taśmowego umożliwiający wykrywanie wysokości =

13 --= transportowanego elementu w trybie pracy inżynierskiej oraz detekcje kolorów =

14 --= Czerwonego, Zielonego oraz Niebieskiego działając w trybie pracy magisterskiej =

15 --===============================================================

16 -- deklaracja bibliotek

17 library IEEE;

18 use IEEE.STD_LOGIC_1164.ALL;

19 use IEEE.STD_LOGIC_ARITH.ALL;

20 use IEEE.STD_LOGIC_UNSIGNED.ALL;

21

22 -- deklaracja portów wejścia/wyjścia

23 entity SterSekwKomb is

24 Port ( Start: in STD_LOGIC; -- przełącznik START STOP(SW16)

25 Clk : in STD_LOGIC; -- wejście zegarowe 50MHz

26 Enable: out STD_LOGIC; -- wyjście służące do uruchomienia silnika krokowego

27

28 -- sygnały sterujące wyświetlacza LCD

29 lcd_ON: out STD_LOGIC; -- włączenie wyświetlacza

30 lcd_RW: out STD_LOGIC; -- tryb wysyłanie(RW=1) lub odczytywania (RW=0) danych z wyświetlacza

31 lcd_Blon: out STD_LOGIC; -- podświetlenie wyświetlacza

32 lcd_E: out STD_LOGIC; -- uruchomienie wyświetlacza( Enable)

33 lcd_RS: out STD_LOGIC; -- zmienna pozwalająca wysłać tekst na wyświetlacz

34 lcd_dane: out STD_LOGIC_VECTOR(7 downto 0); -- "Szyna danych" umożliwiająca wysyłanie tekstu na wyświetlacz

35

36

37 Detector1: in STD_LOGIC; -- detektor elementu niskiego

38 Detector2: in STD_LOGIC; -- detektor elementu średniego

39 Detector3: in STD_LOGIC; -- detektor elementu wysokiego

40

41

42 Kamera1: in STD_LOGIC; -- detekcja koloru czerwonego(OI_B34)

43 Kamera2: in STD_LOGIC; -- detekcja koloru zielonego9IO_B33)

44 Kamera3: in STD_LOGIC; -- detekcja koloru niebieskiego(IO_B32)

45 KameraCenter: in STD_LOGIC; -- detekcja wykrycia wartości maksymalnej(IO_B31)

46

47

48 Inf: in STD_LOGIC; --przycisk uruchomiający wyświetlenie napisu "Akademia Morska Gdynia 2011" na wyświetlaczu LCD(SW0)

49

50

51 Led_D1: out STD_LOGIC; -- dioda sygnalizująca element niski(LEDR2)

52 Led_D2: out STD_LOGIC; -- dioda sygnalizująca element średni(LEDR1)

53 Led_D3: out STD_LOGIC; -- dioda sygnalizująca element wysoki(LEDR0)

54

55 Led_MGRINZ: out STD_LOGIC; -- dioda sygnalizująca pracę programu służącego do detekcji kolorów(LEDG4)

56

57 Led_C1: out STD_LOGIC; -- dioda sygnalizująca element koloru czerwonego(LEDG0)

58 Led_C2: out STD_LOGIC; -- dioda sygnalizująca element koloru zielonego(LEDG1)

59 Led_C3: out STD_LOGIC; -- dioda sygnalizująca element koloru niebieskiego(LEDG2)

60 Led_Center: out STD_LOGIC; -- dioda sygnalizująca wykrycie środka elementu(LEDG3)

61

62

63
64 Servo: out STD_LOGIC_VECTOR(3 downto 1); -- uruchomienie serwomechanizmu

65 Led1: out STD_LOGIC; -- dioda sygnalizująca zdarzenie1(LEDR15)

66 Led2: out STD_LOGIC; -- dioda sygnalizująca zdarzenie2(LEDR14)

67 Led3: out STD_LOGIC; -- dioda sygnalizująca zdarzenie3(LEDR13)

68 Led4: out STD_LOGIC; -- dioda sygnalizująca zdarzenie4(LEDR12)

69 Led_On: out STD_LOGIC; -- dioda sygnalizująca uruchomienie pracy(LEDR17)

70

71 MGRINZ: in STD_LOGIC; -- sygnał sterujący programem odpowiedzialny za detekcje kolorów (OI_B27 (LPT Start))

72 Speed1: in STD_LOGIC; -- przełącznik prędkości drugiej(SW15)

73 Speed2: in STD_LOGIC; -- przełącznik prędkości trzeciej(SW14)

74 Step: inout STD_LOGIC ); -- wyjście na silnik

75

76

77

78 end SterSekwKomb;

79

80 -- program główny

81 architecture ArchSterSekwKomb of SterSekwKomb is

82

83 -- deklaracja zmiennych

84 signal licznik : integer range 0 to 2147483647; -- 2^31

85 signal zdarzenie : integer range 0 to 255; -- 2^8

86 signal liczkrok : integer range 0 to 16384; -- 2^16

87 signal TIME_GEN : integer range 25000 to 524288; -- 2^19

88 signal LCDLicz : integer range 0 to 1600; -- 2^6

89 signal LCDLicz2 : integer range 0 to 1600; -- 2^6

90 signal LCDLicz3 : integer range 0 to 1600; -- 2^6

91 signal LCDCzas : integer range 0 to 131072000; -- 2^17

92 begin

93 process(Start, Clk)

94 begin

95 lcd_ON <='1'; -- Włączenie wyświetlacza LCD

96 Lcd_RW <='0'; -- Ustawienie tryby wysyłanie danych na LCD

97 Lcd_Blon <='1'; -- Włączenie podświetlenia wyświetlacza LCD

98

99

100

101 Led_C1 <=Kamera1; -- Pojawienie się "1" na pinie Kamera1 wyśle sygnał wysoki

na diodę Led_C1(LEDG0)

102 Led_C2 <=Kamera2; -- Pojawienie się "1" na pinie Kamera2 wyśle sygnał wysoki

na diodę Led_C1(LEDG1)

103 Led_C3 <=Kamera3; -- Pojawienie się "1" na pinie Kamera2 wyśle sygnał wysoki

na diodę Led_C1(LEDG2)

104 Led_Center <=KameraCenter; -- Pojawienie się "1" na pinie KameraCenter wyśle sygnał wysoki na diodę Led_Center(LEDG3)

105 Led_MGRINZ <=MGRINZ; -- Pojawienie się "1" na pinie MGRINZ wyśle sygnał wysoki na diodę Led_C1(LEDG4)

106

107 Led_D1 <=Detector1; -- Pojawienie się "1" na pinie Detektor1 wyśle sygnał wysoki na diodę Led_D1(LEDR2)

108 Led_D2 <=Detector2; -- Pojawienie się "1" na pinie Detektor2 wyśle sygnał wysoki na diodę Led_D12LEDR1)

109 Led_D3 <=Detector3; -- Pojawienie się "1" na pinie Detektor3 wyśle sygnał wysoki na diodę Led_D3(LEDR0)

110

111

112 if (Speed1 ='1') then TIME_GEN<=70000; -- Ustawienie prędkości 2 przesuwania się taśmy

113 elsif (Speed2='1') then TIME_GEN<=300000;-- Ustawienie prędkości 3 przesuwania się taśmy

114 else TIME_GEN<=25000; -- Ustawienie prędkości 1 przesuwania się taśmy

115 end if;

116

117 if (falling_edge(Clk)) then

118 if (Start = '0') and (MGRINZ = '0') then

119 Led_On <='0'; -- włącznik pracy modelu

120 Step <= '0'; -- zatrzymanie silnika krokowego

121 licznik <= 0; -- zerowanie licznika

122 Enable <='0'; -- wyłączenie sygnału sterowania silnikiem krokowym

123 zdarzenie <=0; -- zerowanie zdarzeń

124 Led1 <='0'; -- wyłączenie diody Led1

125 Led2 <='0'; -- wyłączenie diody Led2

126 Led3 <='0'; -- wyłączenie diody Led3

127 Led4 <='0'; -- wyłączenie diody Led4

128 liczkrok <=0; -- zerowanie licznika liczącego kroki silnika

129

130

131 --inicjacja lcd

132 if LCDLicz =63 then LCDLicz<=0; end if;--umożliwia wykonanie inicjacji przy wyjściu ze zdarzenia oczekiwania na obiekt

133 if LCDLicz <=30 then

134

135 if (LCDLicz <=6) or (LCDLicz =17) then lcd_RS <='0'; else lcd_RS <='1'; end if;

136 if LCDLicz =6 then lcd_dane <="00000001"; end if;

137

138 -- Inicjacja LCD

139 if LCDLicz=0 then lcd_dane <="00110000"; end if;-- konfiguracja wyświetlacza 8-bitowego

140 if LCDLicz=1 then lcd_dane <="00110000"; end if;-- konfiguracja wyświetlacza 8-bitowego

141 if LCDLicz=2 then lcd_dane <="00110000"; end if;-- konfiguracja wyświetlacza 8 bitowego

142 if LCDLicz=3 then lcd_dane <="00111000";end if;-- wyłączenie kursora oraz wyłączenie migania kursora

143 if LCDLicz=4 then lcd_dane <="00001000";end if;-- czyszczenie ekranu

144 if LCDLicz=5 then lcd_dane <="00000001";end if;-- włącznie lcd

145 if LCDLicz=6 then lcd_dane <="00001100";end if;-- ustawienie pozostałych parametrów wyświetlacza

146

147 --Napis "Tryb Pracy Magisterskiej"

148 if LCDLicz=7 then lcd_dane <="01010100";end if;-- "T"

149 if LCDLicz=8 then lcd_dane <="01110010";end if;-- "r"

150 if LCDLicz=9 then lcd_dane <="01111001";end if;-- "y"

151 if LCDLicz=10 then lcd_dane <="01100010";end if;--"b"

152 if LCDLicz=11 then lcd_dane <="10100000";end if;--" "

153 if LCDLicz=12 then lcd_dane <="01010000";end if;--"P"

154 if LCDLicz=13 then lcd_dane <="01110010";end if;--"r"

155 if LCDLicz=14 then lcd_dane <="01100001";end if;--"a"

156 if LCDLicz=15 then lcd_dane <="01100011";end if;--"c"

157 if LCDLicz=16 then lcd_dane <="01111001";end if;--"y"

158

159 if LCDLicz=17 then lcd_dane <="11000000";end if;--przejście do 2 wiersza wyświetlacza LCD

160

161 if LCDLicz=18 then lcd_dane <="01001101";end if;--"M"

162 if LCDLicz=19 then lcd_dane <="01100001";end if;--"a"

163 if LCDLicz=20 then lcd_dane <="01100111";end if;--"g"

164 if LCDLicz=21 then lcd_dane <="01101001";end if;--"i"

165 if LCDLicz=22 then lcd_dane <="01110011";end if;--"s"

166 if LCDLicz=23 then lcd_dane <="01110100";end if;--"t"

167 if LCDLicz=24 then lcd_dane <="01100101";end if;--"e"

168 if LCDLicz=25 then lcd_dane <="01110010";end if;--"r"

169 if LCDLicz=26 then lcd_dane <="01110011";end if;--"s"

170 if LCDLicz=27 then lcd_dane <="01101011";end if;--"k"

171 if LCDLicz=28 then lcd_dane <="01101001";end if;--"i"

172 if LCDLicz=29 then lcd_dane <="01100101";end if;--"e"

173 if LCDLicz=30 then lcd_dane <="01101010";end if;--"j"

174

175 if LCDCzas >= 100000 then -- zliczanie czasu służącego do zapisu danych na wyświetlacz

176 LCDLicz<=LCDLicz+1;

177 LCDCzas <=0;

178 else

179 if (LCDCzas > 40000) and (LCDCzas < 80000) then

180 lcd_E <='0';

181 else

182 lcd_E <='1';

183 end if;

184 LCDCzas<=LCDCzas+1;

185 end if;

186 end if;

187

188

189 else

190

191 Led_On <='1';

192 Enable <= '1';

193

194 -- przesuniecie taśmy przenośnika - generowanie impulsów

195 if (licznik <= TIME_GEN) then

196 licznik <= licznik + 1;

197 else

198 licznik <= 0;

199 Step <= not(STEP);

200 liczkrok <= liczkrok + 1;

201 end if;

202

203 -- Oczekiwanie na wykrycie obiektu

204 if (zdarzenie =0) then

205 Led1 <='1';

206

207 if (MGRINZ ='0') then -- część programu odpowiedzialna za wykrywanie wysokości elementu

208

209 if (Detector3 ='1') then

210 zdarzenie <=1; -- zdarzenie 1 odpowiedzialne jest za przesunięcie elementu w celu jego dokładnego zmierzenia

211 liczkrok <=0; -- zerowanie licznika liczącego kroki silnika

212 end if;

213

214

215 else -- część programu odpowiedzialna za wykrywanie kolorów

216 if (KameraCenter = '1') then -- środek elementu został wykryty

217 liczkrok<=1;

218 Led1 <='0';

219 zdarzenie <=2;-- podczas wykrywania kolorów nie ma konieczności wykonania zdarzenia 1 gdy_ element, którego kolor jest wykrywany znajduje się w dogodnej pozycji, co symbolizowane jest przez zmienna KameraCenter

220 LCDLicz <=0;

221

222 else

223

224 --***********************************************************

225 if (LCDLicz <=62) then-- ustaw pinu sterującego LCD

226 if LCDLicz =31 or (LCDLicz =46) then lcd_RS <='0'; else lcd_RS <='1 '; end if;-- Czyszczenie LCD

227 if LCDLicz =31 then lcd_dane <="00000001"; end if;-- Czyszczenie LCD

228 --Napis "Oczekiwanie"

229 if LCDLicz=32 then lcd_dane <="01001111";end if;--"O"

230 if LCDLicz=33 then lcd_dane <="01100011";end if;--"c"

231 if LCDLicz=34 then lcd_dane <="01111010";end if;--"z"

232 if LCDLicz=35 then lcd_dane <="01100101";end if;--"e"

233 if LCDLicz=36 then lcd_dane <="01101011";end if;--"k"

234 if LCDLicz=37 then lcd_dane <="01101001";end if;--"i"

235 if LCDLicz=38 then lcd_dane <="01110111";end if;--"w"

236 if LCDLicz=39 then lcd_dane <="01100001";end if;--"a"

237 if LCDLicz=40 then lcd_dane <="01101110";end if;--"n"

238 if LCDLicz=41 then lcd_dane <="01101001";end if;--"i"

239 if LCDLicz=42 then lcd_dane <="01100101";end if;--"e"

240 if LCDLicz=43 then lcd_dane <="10100000";end if; --" "

241 if LCDLicz=44 then lcd_dane <="01101110";end if;--"n"

242 if LCDLicz=45 then lcd_dane <="01100001";end if;--"a"

243

244 if LCDLicz=46 then lcd_dane <="11000000";end if;--przejście do 2 wiersza wyświetlacza LCD

245

246 if LCDLicz=47 then lcd_dane <="01110111";end if;--"w"

247 if LCDLicz=48 then lcd_dane <="01111001";end if;--"y

248 if LCDLicz=49 then lcd_dane <="01101011";end if;--"k"

249 if LCDLicz=50 then lcd_dane <="01110010";end if;--"r"

250 if LCDLicz=51 then lcd_dane <="01111001";end if;--"y"

251 if LCDLicz=52 then lcd_dane <="01100011";end if;--"c"

252 if LCDLicz=53 then lcd_dane <="01101001";end if;--"i"

253 if LCDLicz=54 then lcd_dane <="01100101";end if;--"e"

254 if LCDLicz=55 then lcd_dane <="10100000";end if;--" "

255 if LCDLicz=56 then lcd_dane <="01101111";end if;--"o"

256 if LCDLicz=57 then lcd_dane <="01100010";end if;--"b"

257 if LCDLicz=58 then lcd_dane <="01101001";end if;--"i"

258 if LCDLicz=59 then lcd_dane <="01100101";end if;--"e"

259 if LCDLicz=60 then lcd_dane <="01101011";end if;--"k"

260 if LCDLicz=61 then lcd_dane <="01110100";end if;--"t"

261 if LCDLicz=62 then lcd_dane <="01110101";end if;--"u"

262

263 if LCDCzas >= 100000 then

264 LCDLicz<=LCDLicz+1;

265 LCDCzas <=0;

266 else

267 if (LCDCzas > 40000) and (LCDCzas < 80000) then lcd_E <='0'; else lcd_E <='1'; end if;

268 LCDCzas<=LCDCzas+1;

269 end if;

270

271 end if;

272 --***********************************************************

273 end if;

274 end if;

275

276 end if;

277

278 -- Przesuniecie obiektu na dogodna pozycje wykrycia wysokości

279 if (zdarzenie =1) then

280 Led2 <='1';

281 if (liczkrok =200) then

282 zdarzenie <=2;

283 liczkrok <=0;

284 end if;

285 end if;

286

287

288

289 -- wykrycie wielkości i ustawienie serwomechanizmu

290 if (zdarzenie=2) then

291 Led3 <='1'; --sygnalizacja wykrycia elementu

292 if (MGRINZ ='0') then -- cześć programu odpowiedzialna za wykrywanie wysokości elementu

293 -- fragment programu odpowiedzialny za ustawienie serwomechanizmu do jednej z trzech pozycji w zależności od wykrytego koloru

294 if (Detector1='1') then--wykrycie elementu niskiego

295 Servo<="001";--ustawienie serwomechanizmu w pozycje "Lewo"

296 else

297 if (Detector2='1') then--wykrycie elementu średniego

298 Servo<="010";--ustawienie serwomechanizmu w pozycje "Środek"

299 else--wykrycie elementu wysokiego

300 Servo<="100";--ustawienie serwomechanizmu w pozycje "Prawo"

301 end if;

302 end if;

303

304 zdarzenie <=3;

305 else -- część programu odpowiedzialna za wykrywanie kolorów

306 -- fragment programu odpowiedzialny za ustawienie serwomechanizmu do jednej z trzech pozycji w zależności od wykrytego koloru

307 if (Kamera1='1') then--wykrycie koloru czerwonego

308 Servo<="001";--ustawienie serwomechanizmu w pozycje "Lewo"

309 Led3 <='0';

310 Led2 <='0';

311 --***********************************************************

312 if LCDLicz <=30 then

313 if (LCDLicz =0) or (LCDLicz =16) then lcd_RS <='0'; else lcd_RS <=' 1'; end if;

314 if LCDLicz =0 then lcd_dane <="00000001"; end if;

315

316 --Napis "Wykryty Obiekt: Kolor Czerwony"

317

318 if LCDLicz=1 then lcd_dane <="01010111";end if; --"W"

319 if LCDLicz=2 then lcd_dane <="01111001";end if; --"y

320 if LCDLicz=3 then lcd_dane <="01101011";end if; --"k"

321 if LCDLicz=4 then lcd_dane <="01110010";end if; --"r"

322 if LCDLicz=5 then lcd_dane <="01111001";end if; --"y"

323 if LCDLicz=6 then lcd_dane <="01110100";end if; --"t"

324 if LCDLicz=7 then lcd_dane <="01111001";end if; --"y"

325 if LCDLicz=8 then lcd_dane <="10100000";end if; --" "

326 if LCDLicz=9 then lcd_dane <="01001111";end if; --"O"

327 if LCDLicz=10 then lcd_dane <="01100010";end if;--"b"

328 if LCDLicz=11 then lcd_dane <="01101001";end if;--"i"

329 if LCDLicz=12 then lcd_dane <="01100101";end if;--"e"

330 if LCDLicz=13 then lcd_dane <="01101011";end if;--"k"

331 if LCDLicz=14 then lcd_dane <="01110100";end if;--"t"

332 if LCDLicz=15 then lcd_dane <="00111010";end if; --":"

333 if LCDLicz=16 then lcd_dane <="11000000";end if; --przejście do 2 wiersza wyświetlacza LCD

334

335 if LCDLicz=17 then lcd_dane <="01001011";end if; --"K"

336 if LCDLicz=18 then lcd_dane <="01101111";end if; --"o"

337 if LCDLicz=19 then lcd_dane <="01101100";end if; --"l"

338 if LCDLicz=20 then lcd_dane <="01101111";end if; --"o"

339 if LCDLicz=21 then lcd_dane <="01110010";end if; --"r"

340 if LCDLicz=22 then lcd_dane <="10100000";end if; --" "

341 if LCDLicz=23 then lcd_dane <="01000011";end if; --"C"

342 if LCDLicz=24 then lcd_dane <="01111010";end if; --"z"

343 if LCDLicz=25 then lcd_dane <="01100101";end if; --"e"

344 if LCDLicz=26 then lcd_dane <="01110010";end if; --"r"

345 if LCDLicz=27 then lcd_dane <="01110111";end if; --"w"

346 if LCDLicz=28 then lcd_dane <="01101111";end if; --"o"

347 if LCDLicz=29 then lcd_dane <="01101110";end if; --"n"

348 if LCDLicz=30 then lcd_dane <="01111001";end if; --"y"

349

350 if LCDCzas >= 100000 then

351 LCDLicz<=LCDLicz+1;

352 LCDCzas <=0;

353 else

354 if (LCDCzas > 20000) and (LCDCzas < 40000) then lcd_E <='0'; else lcd_E <='1'; end if;

355 LCDCzas<=LCDCzas+1;

356 end if;

357 else--koniec wyświetlania napisu

358 zdarzenie <=3;

359 LCDLicz <=0;

360 end if;

361 --***********************************************************

362 else

363 if (Kamera2='1') then--wykrycie koloru zielonego

364 Servo<="010";--ustawienie serwomechanizmu w pozycje "Środek"

365 Led3 <='0';

366 Led2 <='0';

367 --***********************************************************

368 if LCDLicz <=29 then

369 if (LCDLicz =0) or (LCDLicz =16) then lcd_RS <='0'; else lcd_RS <='

1'; end if;

370 if LCDLicz =0 then lcd_dane <="00000001"; end if;

371 --Napis "Kolor Zielony"

372

373 if LCDLicz=1 then lcd_dane <="01010111";end if; --"W"

374 if LCDLicz=2 then lcd_dane <="01111001";end if; --"y

375 if LCDLicz=3 then lcd_dane <="01101011";end if; --"k"

376 if LCDLicz=4 then lcd_dane <="01110010";end if; --"r"

377 if LCDLicz=5 then lcd_dane <="01111001";end if; --"y"

378 if LCDLicz=6 then lcd_dane <="01110100";end if; --"t"

379 if LCDLicz=7 then lcd_dane <="01111001";end if; --"y"

380 if LCDLicz=8 then lcd_dane <="10100000";end if; --" "

381 if LCDLicz=9 then lcd_dane <="01001111";end if; --"O"

382 if LCDLicz=10 then lcd_dane <="01100010";end if;--"b"

383 if LCDLicz=11 then lcd_dane <="01101001";end if;--"i"

384 if LCDLicz=12 then lcd_dane <="01100101";end if;--"e"

385 if LCDLicz=13 then lcd_dane <="01101011";end if;--"k"

386 if LCDLicz=14 then lcd_dane <="01110100";end if;--"t"

387 if LCDLicz=15 then lcd_dane <="00111010";end if; --":"

388 if LCDLicz=16 then lcd_dane <="11000000";end if; --przejście do 2 wiersza wyświetlacza LCD

389

390

391 if LCDLicz=17 then lcd_dane <="01001011";end if; --"K"

392 if LCDLicz=18 then lcd_dane <="01101111";end if; --"o"

393 if LCDLicz=19 then lcd_dane <="01101100";end if; --"l"

394 if LCDLicz=20 then lcd_dane <="01101111";end if; --"o"

395 if LCDLicz=21 then lcd_dane <="01110010";end if; --"r"

396 if LCDLicz=22 then lcd_dane <="10100000";end if; --" "

397 if LCDLicz=23 then lcd_dane <="01011010";end if; --"Z"

398 if LCDLicz=24 then lcd_dane <="01101001";end if; --"i"

399 if LCDLicz=25 then lcd_dane <="01100101";end if; --"e"

400 if LCDLicz=26 then lcd_dane <="01101100";end if;--"l"

401 if LCDLicz=27 then lcd_dane <="01101111";end if;--"o"

402 if LCDLicz=28 then lcd_dane <="01101110";end if;--"n"

403 if LCDLicz=29 then lcd_dane <="01111001";end if;--"y"

404

405

406 if LCDCzas >= 100000 then

407 LCDLicz<=LCDLicz+1;

408 LCDCzas <=0;

409 else

410 if (LCDCzas > 40000) and (LCDCzas < 80000) then lcd_E <='0'; else lcd_E <='1'; end if;

411 LCDCzas<=LCDCzas+1;

412 end if;

413 else--koniec wyświetlania napisu

414 zdarzenie <=3;

415 LCDLicz <=0;

416 end if;

417 --***********************************************************

418 else--wykrycie koloru niebieskiego

419 Servo<="100";--ustawienie serwomechanizmu w pozycje "Prawo"

420 Led3 <='0';

421 Led2 <='0';

422 --***********************************************************

423 if LCDLicz <=31 then

424 if (LCDLicz =0) or (LCDLicz =16) then lcd_RS <='0'; else lcd_RS <='

1'; end if;

425 if LCDLicz =0 then lcd_dane <="00000001"; end if;

426 --Napis "Kolor Niebieski"

427 if LCDLicz=1 then lcd_dane <="01010111";end if; --"W"

428 if LCDLicz=2 then lcd_dane <="01111001";end if; --"y

429 if LCDLicz=3 then lcd_dane <="01101011";end if; --"k"

430 if LCDLicz=4 then lcd_dane <="01110010";end if; --"r"

431 if LCDLicz=5 then lcd_dane <="01111001";end if; --"y"

432 if LCDLicz=6 then lcd_dane <="01110100";end if; --"t"

433 if LCDLicz=7 then lcd_dane <="01111001";end if; --"y"

434 if LCDLicz=8 then lcd_dane <="10100000";end if; --" "

435 if LCDLicz=9 then lcd_dane <="01001111";end if; --"O"

436 if LCDLicz=10 then lcd_dane <="01100010";end if;--"b"

437 if LCDLicz=11 then lcd_dane <="01101001";end if;--"i"

438 if LCDLicz=12 then lcd_dane <="01100101";end if;--"e"

439 if LCDLicz=13 then lcd_dane <="01101011";end if;--"k"

440 if LCDLicz=14 then lcd_dane <="01110100";end if;--"t"

441 if LCDLicz=15 then lcd_dane <="00111010";end if; --":"

442 if LCDLicz=16 then lcd_dane <="11000000";end if; --przejście do 2 wiersza wyświetlacza LCD

443

444

445 if LCDLicz=17 then lcd_dane <="01001011";end if; --"K"

446 if LCDLicz=18 then lcd_dane <="01101111";end if; --"o"

447 if LCDLicz=19 then lcd_dane <="01101100";end if; --"l"

448 if LCDLicz=20 then lcd_dane <="01101111";end if; --"o"

449 if LCDLicz=21 then lcd_dane <="01110010";end if; --"r"

450 if LCDLicz=22 then lcd_dane <="10100000";end if; --" "

451 if LCDLicz=23 then lcd_dane <="01001110";end if; --"N"

452 if LCDLicz=24 then lcd_dane <="01101001";end if; --"i"

453 if LCDLicz=25 then lcd_dane <="01100101";end if; --"e"

454 if LCDLicz=26 then lcd_dane <="01100010";end if;--"b"

455 if LCDLicz=27 then lcd_dane <="01101001";end if;--"i"

456 if LCDLicz=28 then lcd_dane <="01100101";end if;--"e"

457 if LCDLicz=29 then lcd_dane <="01110011";end if;--"s"

458 if LCDLicz=30 then lcd_dane <="01101011";end if;--"k"

459 if LCDLicz=31 then lcd_dane <="01101001";end if;--"i"

460

461 if LCDCzas >= 100000 then

462 LCDLicz<=LCDLicz+1;

463 LCDCzas <=0;

464 else

465 if (LCDCzas > 40000) and (LCDCzas < 80000) then lcd_E <='0'; else lcd_E <='1'; end if;

466 LCDCzas<=LCDCzas+1;

467 end if;

468 else--koniec wyświetlania napisu

469 zdarzenie <=3;

470 LCDLicz <=0;

471 end if;

472 --***********************************************************

473 end if;

474 end if;

475 liczkrok <=0;

476 end if;

477 end if;

478

479 -- Przesuniecie obiektu

480 if (zdarzenie =3) then

481 Led4 <='1';

482

483 if (MGRINZ ='0') then

484 if (liczkrok =9000) then

485 zdarzenie <=0;

486 liczkrok <=0;

487 Led1 <='0';

488 Led2 <='0';

489 Led3 <='0';

490 Led4 <='0';

491 LCDLicz<=0;

492 end if;

493 else

494 if (liczkrok =4000) then

495 zdarzenie <=0;

496 liczkrok <=0;

497 Led1 <='0';

498 Led2 <='0';

499 Led3 <='0';

500 Led4 <='0';

501 LCDLicz<=0;

502 end if;

503 end if;

504 end if;

505

506 end if;

507

508 --***********************************************************

509 if Inf ='1' then

510 if LCDLicz2 <=29 then

511 if (LCDLicz2 =0) or (LCDLicz2=16)then lcd_RS <='0'; else lcd_RS <='

1'; end if;

512

513 if LCDLicz2 =0 then lcd_dane <="00000001"; end if;

514

515 --Napis "Kolor Czerwony"

516 if LCDLicz2=1 then lcd_dane <="01000001";end if; --"A"

517 if LCDLicz2=2 then lcd_dane <="01101011";end if; --"k"

518 if LCDLicz2=3 then lcd_dane <="01100001";end if; --"a"

519 if LCDLicz2=4 then lcd_dane <="01100100";end if; --"d"

520 if LCDLicz2=5 then lcd_dane <="01100101";end if; --"e"

521 if LCDLicz2=6 then lcd_dane <="01101101";end if; --"m"

522 if LCDLicz2=7 then lcd_dane <="01101001";end if; --"i"

523 if LCDLicz2=8 then lcd_dane <="01100001";end if; --"a"

524 if LCDLicz2=9 then lcd_dane <="10100000";end if; --" "

525 if LCDLicz2=10 then lcd_dane <="01001101";end if; --"M"

526 if LCDLicz2=11 then lcd_dane <="01101111";end if; --"o"

527 if LCDLicz2=12 then lcd_dane <="01110010";end if; --"r"

528 if LCDLicz2=13 then lcd_dane <="01110011";end if; --"s"

529 if LCDLicz2=14 then lcd_dane <="01101011";end if; --"k"

530 if LCDLicz2=15 then lcd_dane <="01100001";end if; --"a"

531

532

533 if LCDLicz2=16 then lcd_dane <="11000000";end if; --przejście do 2 wiersza wyświetlacza LCD

534

535 if LCDLicz2=17 then lcd_dane <="10100000";end if; --" "

536 if LCDLicz2=18 then lcd_dane <="10100000";end if; --" "

537 if LCDLicz2=19 then lcd_dane <="01000111";end if; --"G"

538 if LCDLicz2=20 then lcd_dane <="01100100";end if; --"d"

539 if LCDLicz2=21 then lcd_dane <="01111001";end if; --"y"

540 if LCDLicz2=22 then lcd_dane <="01101110";end if; --"n"

541 if LCDLicz2=23 then lcd_dane <="01101001";end if; --"i"

542 if LCDLicz2=24 then lcd_dane <="01100001";end if; --"a"

543 if LCDLicz2=25 then lcd_dane <="10100000";end if; --" "

544 if LCDLicz2=26 then lcd_dane <="00110010";end if; --"2"

545 if LCDLicz2=27 then lcd_dane <="00110000";end if; --"0"

546 if LCDLicz2=28 then lcd_dane <="00110001";end if; --"1"

547 if LCDLicz2=29 then lcd_dane <="00110001";end if; --"1"

548

549 if LCDCzas >= 100000 then

550 LCDLicz2<=LCDLicz2+1;

551 LCDCzas <=0;

552 else

553 if (LCDCzas > 20000) and (LCDCzas < 40000) then lcd_E <='0'; else lcd_E <='1'; end if;

554 LCDCzas<=LCDCzas+1;

555 end if;

556

557

558

559 end if;

560

561 else

562 if LCDLicz2 =30 then LCDLicz <=0; end if;

563 LCDLicz2 <=0;

564

565

566 end if;

567 --***********************************************************

568 --***********************************************************

569 if Start ='1' then

570 if LCDLicz3 <=24 then

571 if (LCDLicz3 =0) or (LCDLicz3 =11) then lcd_RS <='0'; else lcd_RS <='1'; end if;

572

573 if LCDLicz3 =0 then lcd_dane <="00000001"; end if;

574

575 --Napis "Tryb Pracy Inżynierskiej"

576 if LCDLicz3=1 then lcd_dane <="01010100";end if;-- "T"

577 if LCDLicz3=2 then lcd_dane <="01110010";end if;-- "r"

578 if LCDLicz3=3 then lcd_dane <="01111001";end if;-- "y"

579 if LCDLicz3=4 then lcd_dane <="01100010";end if;-- "b"

580 if LCDLicz3=5 then lcd_dane <="10100000";end if;--" "

581 if LCDLicz3=6 then lcd_dane <="01010000";end if;--"P"

582 if LCDLicz3=7 then lcd_dane <="01110010";end if;--"r"

583 if LCDLicz3=8 then lcd_dane <="01100001";end if;--"a"

584 if LCDLicz3=9 then lcd_dane <="01100011";end if;--"c"

585 if LCDLicz3=10 then lcd_dane <="01111001";end if;--"y"

586 if LCDLicz3=11 then lcd_dane <="11000000";end if; --przejście do 2 wiersza wyświetlacza LCD

587

588 if LCDLicz3=12 then lcd_dane <="01001001";end if;--"I"

589 if LCDLicz3=13 then lcd_dane <="01101110";end if;--"n"

590 if LCDLicz3=14 then lcd_dane <="01111010";end if;--"z"

591 if LCDLicz3=15 then lcd_dane <="01111001";end if;--"y"

592 if LCDLicz3=16 then lcd_dane <="01101110";end if;--"n"

593 if LCDLicz3=17 then lcd_dane <="01101001";end if;--"i"

594 if LCDLicz3=18 then lcd_dane <="01100101";end if;--"e"

595 if LCDLicz3=19 then lcd_dane <="01110010";end if;--"r"

596 if LCDLicz3=20 then lcd_dane <="01110011";end if;--"s"

597 if LCDLicz3=21 then lcd_dane <="01101011";end if;--"k"

598 if LCDLicz3=22 then lcd_dane <="01101001";end if;--"i"

599 if LCDLicz3=23 then lcd_dane <="01100101";end if;--"e"

600 if LCDLicz3=24 then lcd_dane <="01101010";end if;--"j"

601

602

603 if LCDCzas >= 100000 then

604 LCDLicz3<=LCDLicz3+1;

605 LCDCzas <=0;

606 else

607 if (LCDCzas > 20000) and (LCDCzas < 40000) then lcd_E <='0'; else lcd_E <='1'; end if;

608 LCDCzas<=LCDCzas+1;

609 end if;

610

611

612

613 end if;

614

615 else

616 if LCDLicz3 =25 then LCDLicz <=0; end if;

617 LCDLicz3 <=0;

618

619 --***********************************************************

620 end if;

621

622 end if;

623

624 --if (Inf ='1') then

625

626

627

628 --end if;

629 end process;

630 end ArchSterSekwKomb;


Wyszukiwarka

Podobne podstrony:
W.IV - 27.11.2010, Fizjoterapia, fizjoterapia, magisterka, Pedagogika
Egzamin zintegrowany chirurgia (11), Pielęgniarstwo- magisterka cm umk, I rok, Zaawansowana praktyka
11 - Kod ramki(1)
xW.III 6-11-2010, Fizjoterapia, fizjoterapia, magisterka, Pedagogika
11 - Kod ramki - szablon, KODY DO RAMEK NA POZDROWIENIA
Metodologia bada naukowych 14.11.09r, Fizjoterapia, fizjoterapia, magisterka, Metodologia pracy mag
Metodologia bada naukowych 28.11.09, Fizjoterapia, fizjoterapia, magisterka, Metodologia pracy magi
Magisterska praca dyplomowa zalacznik do Uchwaly 06 11 2012
11 - Kod ramki, Gotowe kody dla chomikow, wszystko co potrzebne by ozdobić Twojego chomika ;)
Metodyka bada naukowych 21.11.09r, Fizjoterapia, fizjoterapia, magisterka, Metodologia pracy magist
Pytania do egzaminu magisterskiego II-03.11.2007[1](1), nauka, ekonomia, EKONOMIA (anetas511)
11 - Kod ramki, RAMKI NA CHOMIKA, Miłego dnia
cw 11, studia AGH, ZiIP, Magister, Fizyka
W.IV - 27.11.2010, Fizjoterapia, fizjoterapia, magisterka, Pedagogika
Egzamin zintegrowany chirurgia (11), Pielęgniarstwo- magisterka cm umk, I rok, Zaawansowana praktyka
kod rejestracji do fifa manager 11

więcej podobnych podstron