Хичээл 28 4 оронт 7 сегменттэй дэлгэц

Бид өмнөх хичээлээр 1 оронт 7 сегменттэй дэлгэц дээр өөрийн хүссэн тоог дүрсэлж сурсан. Бодит байдал дээр бидэнд хэд хэдэн оронтой тоог дүрсэлж харуулах шаардлага их гардаг. Энэхүү хичээлээр бид 4 оронтой 7 сегментэн дэлгэц дээр тоог хэрхэн дүрслэх талаар авч үзэх болно.

Хэрэглэгдэхүүн:

  1. Ардиуно 1ш
  2. Туршилтын хавтан 1ш
  3. 74HC595 IC 1ш
  4. 4bit – 7 сегмент дэлгэц 1ш
  5. 220 ом эсэргүүцэл 4ш
  6. М-М утас 23ш

4 оронтой 7 сегментэн дэлгэц

4 бит 7сегмент дэлгэц
Схем зураг

Дээр харагдаж байгаа схем зургыг сайтар ажилглаарай. Ёрөнхий анадтой болон ёрөнхий катодтой 4 оронтой 7 сегмент дэлгэцийн схем зургыг харуулсан байна.

pin diagram

Зарчмын схем

Зарчмын схем
Зарчмын схем

Программ

Программын гол зорилго нь мэдээж 4 дэлгэц дээр тоог дүрсэлж харуулах. Хэрхэн үүнийг хийдэг талаар товч тайлбарлъя. Бид 4 дэлгэцийг тус бүрд нь микроконтроллерт холбож асааж болно. Гэхдээ энэ нь маш төвөгтөй бөгөөд микроконтроллерийн 12 хөлийг ашиглах шаардлага үүснэ. Иймд үүнийг дараах дарааллаар программчилдаг.

  1. Эхлээд зөвхөн хамгийн эхний дэлгэц дээр тоог дүрсэлж харуулах хэрэгтэй. Ингэхдээ тухайн дэлгэцийг идэвхжүүлэх хөлөнд шаардлагтай дохиог өгсөн байх хэрэгтэй.
  2. Дараа нь эхний дэлгэцийг унтраагаад хоёр дэх дэлгэц дээр тоог харуулаарай.
  3. Гэх мэтээр явсаар гурав, дөрөв дэхь дэлгэц дээр тоог харуулсан бол энэ үйлдлийг илүү хурдан болгож үзээрэй.

Хангалттай хурдан болгосон бол бидний нүд асаж унтарч байгаа дэлгэцийг харж амжихгүй болох бөгөөд энэ нь нүдэнд байнга асаж байгаа мэт харагддаг. Ийм байдлаар бид дэлгэц бүрт өөр өөр тоог дүрсэлж чадах юм. Ихэнх дэлгэц ийм байдлаар ажилладаг бөгөөд анивчих давтамж нь 50 герц байх нь түгээмэл байдаг. Бидний зурагт, гар утас, компьютерийн дэлгэц хүртэл ийм байдлаар ажилладаг. Жишээ кодыг туршиж үзээрэй.

int latch=9;  //74HC595  pin 9 STCP
int clock=10; //74HC595  pin 10 SHCP
int data=8;   //74HC595  pin 8 DS

unsigned char table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c
,0x39,0x5e,0x79,0x71,0x00};

void setup() {
  pinMode(latch,OUTPUT);
  pinMode(clock,OUTPUT);
  pinMode(data,OUTPUT);
}
void Display(unsigned char num)
{

  digitalWrite(latch,LOW);
  shiftOut(data,clock,MSBFIRST,table[num]);
  digitalWrite(latch,HIGH);
  
}
void loop() {
  Display(1);
  delay(500);
  Display(2);
  delay(500);
  Display(3);
  delay(500);
  Display(4);
  delay(500);
  Display(5);
  delay(500);
  Display(6);
  delay(500);
  Display(7);
  delay(500);
  Display(8);
  delay(500);
  Display(9);
  delay(500);
  Display(10);
  delay(500);
  Display(11);
  delay(500);
  Display(12);
  delay(500);
  Display(13);
  delay(500);
  Display(14);
  delay(500);
  Display(15);
  delay(500);
}
Бодит зураг