Автор работы: Пользователь скрыл имя, 29 Ноября 2013 в 21:58, дипломная работа
Қазіргі заманда микропроцессорларды қолданбайтын техника аймағын табу қиын. Олар есепетеулер жүргізу, басқару функцияларын жүргізу үшін, сонымен қатар дыбыстар мен бейнелерді қолданған кезде де пайдаланылады. Қолдану аймағына қарай микропроцесоарларға деген талаптар да өзгере береді. Бұл микропроцессордың ішкі құрылымына байланысты. Контроллер термині ағылшынның control – басқару сөзінен шыққан. Микроконтроллерлер әртүрлі жұмыс принциптарына негізделіп механикалық немесе оптикалық құрылғылардан бастап электронды аналогтық немесе цифрлық құрылғыларға дейін пайдаланылуы мүмкін. Қазіргі кезде кеңінен тараған басқару схемаларының бірі ол, сандық микросхема негізінде құрылғандар.
КІРІСПЕ 5
1 HCS12 БІР КРИСТАЛДЫ МИКРОКОНТРОЛЛЕРЛЕР КЛАСЫ 7
1.1 Кластардың жалпы сипаттамасы 7
2 ELVIS_S12C128ЭКСПЕРИМЕНТАЛДЫ – ЛАБОРАТОРИЯЛЫҚ ҚОНДЫРҒЫСЫ 11
2.1 Қондырғының жалпы сипаттамасы 11
2.2 Микроконтроллердің тақшасы 12
2.3 CSMB12C128 тақшасы + PBMCUSLK тақшасы 17
2.4 CSMB12C128 тақшасы + PBMCUSLK тақшасы + ELVIS II платформасы 20
3 МИКРОПРОЦЕССОРЛЫҚ ЖҮЙЕЛЕРГЕ АРНАЛҒАН CODEWARRIOR ПРОГРАММАЛЫҚ ОРТАСЫ 21
3.1 Өңдеу ортасының жалпы сипаттамасы 21
3.2 CodeWarrior ортасында жоба құру техникасы 23
4 МК MC9S12C128 ПЕРИФИРИЯЛЫ МОДУЛЬДЕРІН ЗЕРТТЕУ 28
4.1 Микроконтроллерлер жайлы жалпы түсінік 28
4.2 Elvis II қондырғысыныңвиртуальды құралдарының жиыны 30
4.4 Микроконтроллердің ШИМ(кең импульсті модуляция) модулін зерттеу 37
4.5 Берілген параметрлері бар жекелеген импульстер генерациясын зерттеу 40
4.6 Аналогты-цифрлы түрлендіргіштің модулі 42
4.7 SPI тізбекті синхронды интерфейсін зерттеу 44
4.8 SCI тізбекті асинхронды интерфейсін зерттеу 46
ҚОРЫТЫНДЫ 48
ҚОЛДАНЫЛҒАН ӘДЕБИЕТТЕР ТІЗІМІ 49
ҚОСЫМША 50
if (T >= Tmax) {
g = 100;
} else { if (T > Tmin) {
g = (unsigned int) ((unsigned int)(100*(T-Tmin)) /
(unsigned char)(Tmax-Tmin)); //Мәліметтер типін түрлендіру
//қолданылды.
} else g = 0;
}
PWMDTY3 = (unsigned char)((unsigned int)(g*PWMPER3) /
(unsigned char)100); //ШИМ каналы үшін салыстыру деңгейінің есептелуі.
}
4.4 сурет - Қондырғыдағыконтактілердің қосылуы
J2тіркеуіші MCU_PORT (J6 немесе J7)
J2 тіркеуіші Elvis II платформасының BNC-тіркеуіші
MCU_PORT (J6 немесе J7) Elvis II платформасының BNC-тіркеуіші
Программаларды және виртуалды аспаптарды iске қосу алдында 4.4 суретке сәйкес қондырғыдағыi манипуляцияларды шығару керек.
Бұл жұмыста таймер кіріс ұстап алу функциясы және таймер ішкі жүйесінің шығыс салыстырылуы арасындағы біріккен жұмыс оқытылады. Мұндай байланыс кейбір кіріс сигналдарға жауап ретінде анықталған параметрлері бар импульстердің генерациясын микроконтроллердің көмегімен жүзеге асыруға мүмкіндік береді. Бұл жұмысқа дайындалу барысында кіріс ұстап алу және таймер ішкі жүйесінің шығыс салыстырылуы режимдері жұмысының ерекшеліктерін қайталаған жөн [12].
Микроконтроллердің кірісіне ELVISmx құралдары жиынтығынан алынған функционалды генератор көмегімен құрылған тікбұрышты импульстер тізбегі келіп түседі. Кіріс сигналының жиілігі – 1кГц. Екі импульсті тізбектерін Scope осциллографына шығару.
4.5.1-сурет. Шығыс импульсінің параметрлері
Кіріс сигналға жауап ретінде жүретін шығыс сигналын микроконтроллердің көмегімен генерациялайтын программаны жазу. Шығыс импульсінің параметрлері 4.5.1 суретте көрсетілген.
#include <hidef.h>
#include "derivative.h"
// Қызметтік регисторлар
#define ti_out 200 //Кіріс сигналының импульс ұзақтығын
void main(void) {
PERT |= 0x01; //Т портының 0 аяғына резистордің қосылуы,
TCTL4 = 0x01; //0 каналында сигналдың үдемелі
TFLG1 = 0xFF; // Кірістің ұстап алуындағы барлық жалауша-
TFLG2 |= 0x80; //Таймер толуының жалаушаларын алып тастау ,
TIOS = 0x02; //1-ші канал шығыстың салыстырылуы,
//0-ші канал кірістік ұстап алу.
TIE = 0x03; //0 және 1 каналдарындағы үзүлулер
TSCR2=0x00; //1/2-ге тең таймер санағышыныңбөлгіш
//жиілігініңтактілеуін орнату,fCT = fBUS= 2МГц.
TSCR1 = 0x80; //Таймердің қосылуы, TEN = 1.
asm CLI; //Микроконтроллерлерде үзүлулер рұқсаты.
here: goto here;//Шексіз бос цикл.
}
}
interrupt 8 void IC0() { //Таймердің ішкі жүйесінің 0 каналындағы
//оқиғалар бойынша
//программасы
TFLG1 = 0x01; //0 каналдағы оқиғалар жалаушаларын
//алып тастау.
TCTL2 = 0x0C;
//1 каналындағы шығыс
TC1 = TCNT+10; //1 каналында шығыс сигналы тізбекті гене-
TFLG1 |= 0x02; //1 каналында оқиға жалаушаларын алып тастау.
}
interrupt 9 void IC1() { //Таймердің ішкі жүйесінің 1 каналындағы
TC1 = TCNT+ti_out*2; //1 каналында салыстыру деңгейін орнату.
TIE &= ~0x02; //1 каналында үзүлулерге тыйым салынады.
TCTL2 = 0x08;
//1 каналындағы шығыс
}
}
4.5.2 сурет - Қондырғыдағы контактілердің қосылуы
J2 тіркеуіші MCU_PORT (J6 немесе J7)
J2 тіркеуіші Elvis II платформасының BNC-тіркеуіші
MCU_PORT (J6 немесе J7) Elvis II платформасының BNC-тіркеуіші
Программаларды және виртуалды құралдарды iске қосу алдында 4.5.2 суретке сәйкес қондырғыдағы манипуляцияларды шығару керек.
Бұл жұмыста АЦТ-тің әр түрлі жұмыс істеу режимдері қарастырылады, олар: бірканалды және көпканалды,бір ретті және үздіксіз.
Осы жұмыста АЦТ модулімен және оның жұмыс істеу режимімен танысу қажет. Сонымен қатар төменде келтірілген мысалдарды қарастыру керек.
Микроконтроллердің AN00 кірісіне Analog Level құралынан кернеудің аналогты деңгейі келіп түседі. Келіп түскен сигналды цифрға түрлендіретін және оны Digital Reader виртуалды құрылғысына жіберетін микроконтроллердің көмегімен жүзеге асатын программаны жазу керек. АЦТ бір ретті түрлендіруі бар 8 разрядты режимде жұмыс істеуі керек.PB1 батырмасын басқан кезде цифрға түрленген кодтың орнына 0x00 шығуы керек [7].
#include <hidef.h>
#include "derivative.h"
// Қызметтік регисторлар
#define PB1 PORTB_BIT0 //PB1 батырмасы қосылужелісінің қолданыстық
#define DOWN 0
//Басылған батырма күйінің
#define UP 0 // Басып алынған батырма күйінің қолданыстық
#define delay(us); for(delay=us/2;delay!=0;delay-
unsigned int delay; //Кешігуді құру үшін айнымалы.
unsigned char BTN = UP;
//Батырма күйін сақтайтын
void main() {
PUCR |= 0x03; //А, В порттары аяқтарына резисторлардың
DDRA = 0xFF; //А порты желілерін шығысқа орнату.
PORTA = 0x00;
DDRB = 0x00;// В порты желілерің кіріске орнату.
ATDCTL2 |= 0x82; //АЦТ және оның түрлендіруінің аяқталуы
delay(50); //50мкс кешігу. АЦТ-ның аналогты компонент-
ATDCTL3 = 0x08; //Әр тізбекте бір түрл
ATDCTL4 |= 0x81;
//АЦТ-ның 8-битті рұқсаты
ATDCTL5 = 0x00; //AN0 -ның аналогты кірісін таңдау, бір канал
asm CLI;
// Микроконтроллерде үзүлулер
for(;;) {
//Батырма сұраудағы шексіз
if (PB1 == UP) BTN = UP; else { //Егер батырма басылмаған болса,онда
delay(1000);
if (PB1 == DOWN) BTN = DOWN; //жасау керек.Егер одан кейін
else delay(1000);
}
}
interrupt 22 void ATD0() { //АЦТ өрнектеуін аяқтау барысында
if (BTN == UP) PORTA = ATDDR0H; //Егер батырма басылмаған болса,
else PORTA =
0x00
ATDCTL5 = 0x00;
}
}
}
4.6 сурет - Қондырғыдағы контактілердің қосылуы
J2 тіркеуіші MCU_PORT(J6 немесе J7)
J10 тіркеуіші MCU_PORT(J6 немесе J7)
DI7 |
DI6 |
DI5 |
DI4 |
DI3 |
DI2 |
DI1 |
DI0 |
Программаларды және виртуалды құралдарды iске қосу алдында 4.6 суретке сәйкес қондырғыдағы манипуляцияларды шығару керек
Информация о работе MC9S12C128 микроконтроллерінің перифериялы модульдері