Разработка микроконтроллерных
систем управления
«Сердце»

«Мозг»
Исполнительные
механизмы

Датчики
010101010000100101
101010101000010010
010101010000100101
101010101000010010
0xAF 0x10 0x21 0x18
0xBA 0x10 0x21
0x18
Arduino
C:
#include <avr/io.h>
#include <compat/ina90.h>
void waitd()
{
register unsigned short int t = 0;
while(++t) _NOP();
}
int main()
int led = 13;
{
void setup() {
DDRC |= 0x20;
pinMode(led, OUTPUT);
while(1)
}
{
PORTC |= 0x20;
void loop() {
waitd();
digitalWrite(led, HIGH);
PORTC &= 0x5F;
delay(1000);
waitd();
digitalWrite(led, LOW);
}
delay(1000);
return 1; }
}
#ifndef mt10t7_h
#define mt10t7_h
#include "WProgram.h"
class mt10t7
{
public: mt10t7();
void Strob_WR1(); //Стробирование линии WR1
void WriteNumber(int Pos,int Num); //Запись одной цыфры
void WriteSymbol(int Pos,int Num); //Запись одного символа
void WriteNumberComma(int Pos,int Num); //Запись одной
цифры с точкой
void WriteNumbers(double Num); //Запись числа
void ClearDisplay(); //Очистка дисплея
void InitDisplay(); //Разблокировка экрана
void Strob_ADR(); //Стробирование адреса
};
#endif // #ifndef mt10t7_h
#ifndef mt10t7_cpp
#define mt10t7_cpp
#define A0 8 //8 нога
#define WR1 9 //9 нога
#define DB0 10 // 10 нога
#define DataBus 2 //смещение в порту для вывода данных
static int
array[]={0xEE,0x06,0xF2,0xD6,0x1E,0xDC,0xFC,0x86,0xFE,0xD
E,0x01}; //Создаем массив с цифрами от 0 до 9 и .
static int
array1[]={0xBE,0x7C,0xE8,0x76,0xF8,0xB8,0xEC,0x3E,0x06,0x4
6,0x68,0xEE,0xBA,0x9E,0x30,0xDC,0x6E}; //Создаем массив
с символами A,b,C,d,E,F,G,H,I,J,L,O,P,q,r,S,U
int Data; //
int DataMask; //
#include "mt10t7.h"
//
//Конструктор - вызывается всегда при создании экземпляра
класса ье10е7
//
mt10t7::mt10t7()
{
DDRB=B00111111; // Порт к которому подключен монитор - его
настройка //-кроме 7 и 8 все ноги порта ставим на выход
//см Cheatcheet PB0-7
pinMode(A0, OUTPUT); //настраиваем ноги на вывод
pinMode(WR1, OUTPUT); //настраиваем ноги на вывод
InitDisplay(); //Разблокироваем экран
ClearDisplay(); //Очищаем дисплей
}
void mt10t7::WriteNumber(int Pos,int Num)
{
Data=Pos;
PORTB=Data<<DataBus; //Записываем номер знакоместа
Strob_ADR();
//Стробируем адрес
Data=array[Num]>>4; //
PORTB=Data<<DataBus; //Записываем данные в нижний тетрайду
Strob_WR1();
//Стробируем линию WR1
Data=array[Num]&0x0F; //
PORTB=Data<<DataBus; //Записываем данные в верхний тетрайду
Strob_WR1();
//Стробируем линию WR1
}
void mt10t7::WriteSymbol(int Pos,int Num)
{
Data=Pos;
PORTB=Data<<DataBus; //Записываем номер знакоместа
Strob_ADR();
//Стробируем адрес
Data=array1[Num]>>4; //
PORTB=Data<<DataBus; //Записываем данные в нижний тетрайду
Strob_WR1();
//Стробируем линию WR1
Data=array1[Num]&0x0F; //
PORTB=Data<<DataBus; //Записываем данные в верхний тетрайду
Strob_WR1();
//Стробируем линию WR1
}

Microcontroller

  • 1.
  • 2.
  • 3.
  • 6.
  • 7.
  • 10.
    C: #include <avr/io.h> #include <compat/ina90.h> voidwaitd() { register unsigned short int t = 0; while(++t) _NOP(); } int main() int led = 13; { void setup() { DDRC |= 0x20; pinMode(led, OUTPUT); while(1) } { PORTC |= 0x20; void loop() { waitd(); digitalWrite(led, HIGH); PORTC &= 0x5F; delay(1000); waitd(); digitalWrite(led, LOW); } delay(1000); return 1; } }
  • 19.
    #ifndef mt10t7_h #define mt10t7_h #include"WProgram.h" class mt10t7 { public: mt10t7(); void Strob_WR1(); //Стробирование линии WR1 void WriteNumber(int Pos,int Num); //Запись одной цыфры void WriteSymbol(int Pos,int Num); //Запись одного символа void WriteNumberComma(int Pos,int Num); //Запись одной цифры с точкой void WriteNumbers(double Num); //Запись числа void ClearDisplay(); //Очистка дисплея void InitDisplay(); //Разблокировка экрана void Strob_ADR(); //Стробирование адреса }; #endif // #ifndef mt10t7_h
  • 20.
    #ifndef mt10t7_cpp #define mt10t7_cpp #defineA0 8 //8 нога #define WR1 9 //9 нога #define DB0 10 // 10 нога #define DataBus 2 //смещение в порту для вывода данных static int array[]={0xEE,0x06,0xF2,0xD6,0x1E,0xDC,0xFC,0x86,0xFE,0xD E,0x01}; //Создаем массив с цифрами от 0 до 9 и . static int array1[]={0xBE,0x7C,0xE8,0x76,0xF8,0xB8,0xEC,0x3E,0x06,0x4 6,0x68,0xEE,0xBA,0x9E,0x30,0xDC,0x6E}; //Создаем массив с символами A,b,C,d,E,F,G,H,I,J,L,O,P,q,r,S,U int Data; // int DataMask; // #include "mt10t7.h"
  • 21.
    // //Конструктор - вызываетсявсегда при создании экземпляра класса ье10е7 // mt10t7::mt10t7() { DDRB=B00111111; // Порт к которому подключен монитор - его настройка //-кроме 7 и 8 все ноги порта ставим на выход //см Cheatcheet PB0-7 pinMode(A0, OUTPUT); //настраиваем ноги на вывод pinMode(WR1, OUTPUT); //настраиваем ноги на вывод InitDisplay(); //Разблокироваем экран ClearDisplay(); //Очищаем дисплей }
  • 22.
    void mt10t7::WriteNumber(int Pos,intNum) { Data=Pos; PORTB=Data<<DataBus; //Записываем номер знакоместа Strob_ADR(); //Стробируем адрес Data=array[Num]>>4; // PORTB=Data<<DataBus; //Записываем данные в нижний тетрайду Strob_WR1(); //Стробируем линию WR1 Data=array[Num]&0x0F; // PORTB=Data<<DataBus; //Записываем данные в верхний тетрайду Strob_WR1(); //Стробируем линию WR1 } void mt10t7::WriteSymbol(int Pos,int Num) { Data=Pos; PORTB=Data<<DataBus; //Записываем номер знакоместа Strob_ADR(); //Стробируем адрес Data=array1[Num]>>4; // PORTB=Data<<DataBus; //Записываем данные в нижний тетрайду Strob_WR1(); //Стробируем линию WR1 Data=array1[Num]&0x0F; // PORTB=Data<<DataBus; //Записываем данные в верхний тетрайду Strob_WR1(); //Стробируем линию WR1 }