17436

Ознайомлення з принципом роботи частотомірів

Лабораторная работа

Коммуникация, связь, радиоэлектроника и цифровые приборы

Мета роботи Ознайомлення з принципом роботи частотомірів Теоретичні відомості Вимірювання частоти та періоду сигналів по методу прямого перетворення базується на реалізації двох операцій: перетворенні вимірюваного сигналу в послідовність дискретних імпульсів ц

Украинкский

2013-07-01

701 KB

4 чел.


Мета роботи

Ознайомлення з принципом роботи частотомірів

Теоретичні відомості

Вимірювання частоти та періоду сигналів по методу прямого перетворення базується на реалізації двох операцій: перетворенні вимірюваного сигналу в послідовність дискретних імпульсів цієї ж самої частоти та підрахунку кількості цих імпульсів на протязі відомого та строго-визначеного часового інтервалу. Принцип дії таких частотомірів, на прикладі часового інтервалу, який формується за 10 періодів тактового генератора відомого періоду Т0, ілюструється часовою діаграмою представленою на рис.1.

Рис. 1 – Часова діаграма роботи частотоміра, який працює
по методу прямого перетворення

Для вимірювання частоти з допомогою мікроконтролера необхідно:

  •  з допомогою одного з таймерів сформувати часовий інтервал відомої тривалості Т0;
  •  на протязі цього часового інтервалу лічильником підрахувати кількість імпульсів сформованих формувачем NX;
  •  розрахувати частоту вхідного сигналу fX згідно виразу .

Якщо сформований часовий інтервал 1 с., то

Завдання:

  •  Виміряти частоту вихідної напруги мультивібратора напруги та відобразити виміряне значення на рідкокристалічному дисплеї;

№ варіанту

1

2

3

4

5

6

7

8

9

0

Частота кварцу, МГц

11,5

11

10,5

10

9,5

9

8,5

8

7,5

12

Програмна реалізація

#include <REG51.H>

#include <stdio.h>

/*---------------------------------*/

#define Fclc 10000000

#define TREF 1.0

unsigned char idata THH0;

unsigned char idata TL0_T;

unsigned char idata TH0_T;

unsigned char idata THH0_T;

/*---------------------------------*/

#define LCD_DAT P2

#define LCD_RS P2_1

#define LCD_RW P2_2

#define LCD_E P2_3

/*---------------------------------*/

void init_LCD(void);

void out_com_lcd(char out);

char putchar(unsigned char out);

void inc_kursor_pos_lcd(unsigned char n);

unsigned char print_ram_adres_lcd;

unsigned char freq_pos;

/*---------------------------------*/

void init_T0(void);

void init_T1(void);

/*---------------------------------*/

void delay(unsigned int n);

/*---------------------------------*/

void main(void)

{

init_LCD();

printf("\n   ");

freq_pos=print_ram_adres_lcd;

init_T0();        //Timer

init_T1();        //Counter

EA=1;

while(1)

 {

 }

}

/*---------------------------------*/

void delay(unsigned int n)

{

unsigned int i,j;

for(j=0;j<n;j++)

 for(i=0;i<0x200;i++);

}

/*---------------------------------*/

void init_LCD(void)

{

unsigned char init_comand[]={0x30,0x30,0x30,0x38,0x0F,0x1,0x6};

unsigned char i;

LCD_RS=0;

LCD_RW=0;

LCD_E=0;

delay(100);

for(i=0;i<7;i++)

 out_com_lcd(init_comand[i]);

print_ram_adres_lcd=0;

}

/*---------------------------------*/

void out_com_lcd(char out)

{

unsigned char a;

LCD_RS=0;

LCD_RW=0;

LCD_DAT &= 0x0F;   //4-bit interface

LCD_DAT |= out & 0xF0;

for(a=0;a<200;a++);

LCD_E=1;

for(a=0;a<200;a++);

LCD_E=0;

for(a=0;a<200;a++);

LCD_DAT &= 0x0F;

LCD_DAT |= (out <<4) & 0xF0;

for(a=0;a<200;a++);

LCD_E=1;

for(a=0;a<200;a++);

LCD_E=0;

for(a=0;a<200;a++);

delay(5);

}

/*---------------------------------*/

char putchar(unsigned char out)

{

unsigned char a;

if(out=='\n')

 {

 print_ram_adres_lcd=0x2;

 out_com_lcd(0x80+print_ram_adres_lcd);

 return out;

 }

out_com_lcd(0x80+print_ram_adres_lcd);

LCD_RS=1;

LCD_RW=0;

LCD_E=0;

LCD_DAT &= 0x0F;   //4-bit interface

LCD_DAT |= out & 0xF0;

for(a=0;a<200;a++);

LCD_E=1;

for(a=0;a<200;a++);

LCD_E=0;

for(a=0;a<200;a++);

LCD_DAT &= 0x0F;

LCD_DAT |= (out <<4) & 0xF0;

for(a=0;a<200;a++);

LCD_E=1;

for(a=0;a<200;a++);

LCD_E=0;

inc_kursor_pos_lcd(1);

return out;

}

/*---------------------------------*/

void inc_kursor_pos_lcd(unsigned char n)

{

unsigned char i;

for(i=0;i<n;i++)

 {

 print_ram_adres_lcd++;

 if(print_ram_adres_lcd==0x11)print_ram_adres_lcd=0x42;

 if(print_ram_adres_lcd==0x51)print_ram_adres_lcd=0x12;

 if(print_ram_adres_lcd==0x21)print_ram_adres_lcd=0x52;

 if(print_ram_adres_lcd==0x61)print_ram_adres_lcd=0x2;

 }

}

/*---------------------------------*/

void init_T0(void)

{

long t,NT0;

t=TREF*Fclc/12.0;

NT0=0xFFFFFF-t;

TL0_T=NT0;

TH0_T=(NT0&0xFF00)>>8;

THH0_T=(NT0&0xFF0000)>>16;

TL0 = TL0_T;

TH0 = TH0_T;

THH0= THH0_T;

TMOD &= 0XF0;                    /* clear Timer 0   */

TMOD  |= 0X1;

ET0 = 1;        /* IE.1*/

TR0 = 1;                /* TCON.4 start timer  */

}

/*---------------------------------*/

void init_T1(void)

{

TMOD  &= 0XF;       /* clear Timer 1 control    */

TMOD = 0X51 ;

TL1 = 0X0 ;                  /* value set by user         */

TH1 = 0X0 ;                 /* value set by user          */

ET1 = 1 ;          /* ET0 is IE.3         */

TR1 = 1;                /* TCON.6  start timer      */

}

/*---------------------------------*/

void int_T0(void) interrupt 1

{

unsigned int N,Freq;

THH0++;

if(THH0==0)

 {

 TR0=0;

 TR1=0;

 TL0 = TL0_T;

 TH0 = TH0_T;

 THH0=THH0_T;

 N=(TH1<<8);

 N=N|TL1;

 TH1=0;

 TL1=0;

 Freq = N/TREF;

 print_ram_adres_lcd=freq_pos;

 printf("%d Hz",Freq);

 TR0=1;

 TR1=1;

 }

}

/*---------------------------------*/

void int_T1(void) interrupt 3

{

TR1=0;

TR1=1;

}

/*---------------------------------*/

Результати  даної  роботи

Висновок

На даній лабораторній роботі я   ознайомився з принципом роботи частотомірів, 

а також   з його застосуванням. Розробив програму  яка відповідає вихідному результату.


 

А также другие работы, которые могут Вас заинтересовать

70383. О хронологических показания Киевской летописи. Хронология событий киевского княжения Всеволода 96.5 KB
  Окончание неудачного вторжения Святослава Ольговича в переяславские владения Андрея Владимировича Лаврентьевская и родственные ей летописи датируют заоутра после битвы между их дружинами а затем добавляют: и на ту нощь загорѣсѧ городъ Переяславль.
70385. Совместимы ли русский национальный характер и модернизация? 1.54 MB
  Показано что детерминированные модели общественного развития базирующиеся на особенностях природной среды и историческом опыте народа имеют крайне ограниченное применение и объясняющую способность. Успенского до современных писателей подталкивают читателя к мысли что менталитет...
70388. Трудовой конфликт. Конгруэнтная эмпатия 118.31 KB
  Полностью согласен с экспертом в том что потенциальный трудовой конфликт начинается с момента подбора персонала. Как правило если нацеленного на конфликт проблемного сотрудника все же приняли руководствуясь тем что он очень понравился руководителю война начинается достаточно быстро.
70389. «Звезды» могут и гаснуть на время... 62 KB
  Личный опыт говорит о том что нельзя нанимать человека на работу руководствуясь симпатиями к нему со стороны руководителя. Любой руководитель который выбирает себе любимчиков рано или поздно понимает что такой подход неэффективен что он вредит бизнесу.
70390. А что вы будете делать, когда сотрудник перестанет вам нравиться? 76.76 KB
  А что вы будете делать когда сотрудник перестанет вам нравиться Начнем с фильтров которые ставит на момент собеседования специалист по персоналу. И наоборот: слишком строгий отсев может привести к тому что вы не увидите в массе песка золотую песчинку.