![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzfQI6r0f8M5ROJD79fc7fcduSB5hRv3YMqzFTgivC1S3wcN6_pNYLCx3NM55nYvuiFzncKwxfENjw7cmXKTGXTI1iDpSXYvdaLWMEuEbCgieIMH95rbrLcwQrkwv7DivBFwx0xATZNC4t/s320/Kytkenta_35.png)
Ensimäinen
on PL, minkä laskeva reuna aktivoi rinnakkaisrekistereissä olevan
tiedon siirtymisen sarjarekisteriin. Tämä liityntä on kytketty
rinnan molempien IC-piirien välillä. Toinen liityntä on CP,
kellotus, minkä nouseva reuna siirtää bitti kerrallaan
sarjarekisterin dataa lähtöön Q7. Kellotuskin on kytketty rinnan
molempien IC-piirien välillä. Kolmas liityntä on data (1. piirin
Q7 → 2. piirin Ds → Arduino IN). Toisin sanoen ensimmäisen
piirin (alimmat bitit 0 .. 7) sarjalähtö (Q7) kytketään toisen
piirin (ylimmät bitit 8 .. 15) sarjatuloon (Ds) ja toisen piirin
sarjalähtö (Q7) Arduinon tuloon.
![]() |
Piirin
74HCT-165N sisäinen rakenne.
|
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGS5Hu7Wos4CZUdKOspLyN_VIRgcWBcGTKSC8ws-uMGAyGVeAg7ntMTKRbzbGJNo6-J6Ai7CvoQXpQlpZN4BGbBCr1aJ71EOZVARGL1YrOhL6FAt_8t_HLdBpG9n-wljFENkYiZOoRmib1/s320/Liitynnat_165.jpg)
LCD-näyttöön
tulevat tekstit olen valinnut siten, että sekä pienet että isot
ääkköset tulevat mukaan. Siltä osin, kun tuo (void Fun_LCD(int
start, int rivi, int paikka, int data){) näytön koodi on
muuttunut, on tässä esityksessä mukana muuttuneet akeleet. Olen
myös jättänyt mukaan tulostuksen aliohjelman, sillä sen avulla on
havainnollisempaa tarkastella bittejä tietokoneen ja Arduinon
työkaluohjelman avulla. Toiminnallisesti sillä ei ole merkitystä.
Kuvassa
mikropiirejä reunustavat ”mustat liuskat” ovat 8*10kohm
vastus-hybridipiirejä. Vastuksilla on yksi (1) yhteinen maa. Tässä
jokaiselle vastukselle ei ole käyttöä, koska tuloja on 16
kappaletta. Yläosassa näkyväll ”piuhalla” voi tökkiä eri
tuloja.
Kuvassa olin tökkäissyt pinniä no. 12.
OHJELMA
35
/**************************************
*
Ohjelma 35
*
21.01.2017
*
Rinnan sisään, sarjassa ulos
*
16 digitaalitulon toteutus
*
kahdella 74HCT-165N CMOS-piirillä
**************************************/
//
MÄÄRITTELYT:
//
Kirjastomoduulit
#include
<LiquidCrystal.h>
LiquidCrystal
lcd(3, 2, 7,6,5,4);
//
Bittitaulukko ja järjestysnumero
boolean
Arr_DATA[16];
int
Int_Numero = 0;
//
Tulostuksen tahdistus
const
int
Con_PrintViive = 1000;
int
Int_PrintViive = Con_PrintViive;
//
ALIOHJELMAT
void
Fun_Tulostus(){
//Serial.print("Teksti :");
Serial.println(Muuttuja);
for(int
i; i < 16; i++){
Serial.print(Arr_DATA[i]);
}
Serial.println();
Serial.print("Tokkasit :"); Serial.println(Int_Numero);
}
// Tulostus loppu
//
Funktio Parallel IN serial OUT (Rinnan sisään, sarjassa ulos)
//
SarjaIN_Ali_v1.No4Tam17
/****************************************************
void
Fun_LueRsSu(int
PL, int
CP, int
Data){
pinMode(PL,
OUTPUT); // pinnin numero kutsussa
pinMode(CP, OUTPUT); // pinnin numero kutsussa
pinMode(Data, INPUT);// pinnin numero
kutsussa
//
Rinnakkaisdatan siirto
digitalWrite(PL, LOW);
digitalWrite(PL, HIGH);
for(int
i = 0; i < 16; i ++){Arr_DATA[i] = 0;}// tyjennys
for(int
j = 0; j < 16; j++){ // luku
Arr_DATA[j] = digitalRead(Data);
digitalWrite(CP, HIGH);
digitalWrite(CP, LOW);
}//
sarjaluennan loppu
}//
Funtion loppu
//
LCD_AliOhjelma_v1 LCD_Ali_v1.No3Tam17
/****************************************************
case
1:
lcd.setCursor(paikka, rivi);
lcd.print("T");
i
= 1; lcd.write(i); // Ö - kirjain
lcd.print("KK");
i
= 0; lcd.write(i); // Ä - kirjain
i
= 0; lcd.write(i); // Ä - kirjain
lcd.print(" ");
lcd.print("PINNI");
i
= 0; lcd.write(i); // Ä - kirjain
case
2:
lcd.setCursor(paikka, rivi);
lcd.print("t");
lcd.write(opi); // ö - kirjain
lcd.print("kk");
lcd.write(api); // ä - kirjain
lcd.print("sit:");
case
11:
lcd.setCursor(paikka, rivi);
lcd.print(" ");
lcd.setCursor(paikka, rivi);
lcd.print(data);*/
//
ASETUKSET:
void
setup(){
Serial.begin(9600);
lcd.begin(20,2);
lcd.clear();
lcd.setCursor(0,
0);
Fun_LCD(1,0,3,0); // Ylärivin kiinteä teksti
Fun_LCD(2,1,0,0); // Alarivin kiinteä teksti
}//
Asetuksen loppu
//
PÄÄLOOPPI
void
loop(){
Fun_LueRsSu(8,
9, 10);
for(int
No = 0; No < 16; No++){
if(Arr_DATA[15-No] == 1){
Int_Numero
= No + 1;
}//
if loppu
}//
for loppu
Fun_LCD(11,1,10,Int_Numero);
Int_PrintViive--;
if(Int_PrintViive == 0){
Fun_Tulostus();
Int_PrintViive
= Con_PrintViive;
}
// Tulostuskutsu loppu
delay(1);
}
// Pääohjelma LOPPU
Ei kommentteja:
Lähetä kommentti