Tải bản đầy đủ
ĐO NHIỆT ĐỘ MÔI TRƯỜNG THỰC VÀ HIỂN THỊ HỌ TÊN , MÃ SINH VIÊN , GIÁO VIÊN HƯỚNG DẪN TRÊN LCD OLED.

ĐO NHIỆT ĐỘ MÔI TRƯỜNG THỰC VÀ HIỂN THỊ HỌ TÊN , MÃ SINH VIÊN , GIÁO VIÊN HƯỚNG DẪN TRÊN LCD OLED.

Tải bản đầy đủ

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

0xFF,0xFF,0xC3,0xDD,0xDD,0xC3,0xDF,0xDF, //q
0xFF,0xFF,0xEB,0xD3,0xFB,0xFB,0xFB,0xFF, //r
0xFF,0xFF,0xC3,0xFD,0xC3,0xBF,0xC1,0xFF, //s
0xF7,0xF7,0xE3,0xF7,0xF7,0xD7,0xEF,0xFF, //t
0xFF,0xFF,0xBB,0xBB,0xBB,0xBB,0x87,0xFF, //u
0xFF,0xFF,0xDD,0xDD,0xDD,0xEB,0xF7,0xFF, //v
0xFF,0xFF,0xDD,0xDD,0xD5,0xD5,0xEB,0xFF, //w
0xFF,0xFF,0xDB,0xE7,0xE7,0xDB,0xBD,0xFF, //x
0xFF,0xFF,0xBB,0xD7,0xEF,0xF7,0xFB,0xFF, //y
0xFF,0xFF,0x83,0xDF,0xEF,0xF7,0x83,0xFF, //z
0xFF,0xE3,0xDD,0xDD,0xDD,0xDD,0xE3,0xFF, //0
0xFF,0xEF,0xE7,0xEF,0xEF,0xEF,0xEF,0xFF, //1
0xFF,0xC7,0xBB,0xBF,0xC7,0xFB,0x83,0xFF, //2
0xFF,0xC7,0xBB,0xCF,0xBF,0xBB,0xC7,0xFF, //3
0xFF,0xEF,0xF7,0xDB,0x83,0xDF,0xDF,0xFF, //4
0xFF,0x83,0xFB,0xC3,0xBF,0xBF,0xC3,0xFF, //5
0xFF,0xC3,0xFD,0xE1,0xDD,0xDD,0xE3,0xFF, //6
0xFF,0x83,0xBF,0xDF,0xEF,0xF7,0xFB,0xFF, //7
0xFF,0xC3,0xBD,0xC3,0xBD,0xBD,0xC3,0xFF, //8
0xFF,0xC7,0xBB,0x87,0xBF,0xBB,0xC7,0xFF, //9
} ;
#define RELAY1

GPIO_PIN_4 // D4

#define RELAY2

GPIO_PIN_0 // B0

#define RELAY1ON
GPIOPinWrite(GPIO_PORTD_BASE,RELAY1,RELAY1) //d4
#define RELAY1OFF GPIOPinWrite(GPIO_PORTD_BASE,RELAY1,0) //
d4
GVHD: Dương Thị Hằng

Page: 67

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

#define RELAY2ON
GPIOPinWrite(GPIO_PORTB_BASE,RELAY2,RELAY2) // B0
#define RELAY2OFF GPIOPinWrite(GPIO_PORTB_BASE,RELAY2,0) //
B0
#define LED1

GPIO_PIN_2 // E1

#define LED2

GPIO_PIN_3 // B0

#define LED1ON GPIOPinWrite(GPIO_PORTF_BASE,LED1,LED1) // F2
#define LED1OFF GPIOPinWrite(GPIO_PORTF_BASE,LED1,0)

// F2

#define LED2ON GPIOPinWrite(GPIO_PORTF_BASE,LED2,LED2) // F3
#define LED2OFF GPIOPinWrite(GPIO_PORTF_BASE,LED2,0)

// F3

// khai bao chan dk cho matrix
#define SCK1
#define DATA1
#define LAT1

GPIO_PIN_7 // C7
GPIO_PIN_6 // C6
GPIO_PIN_5 // C5

// khai bao chan dk cho LED 7 thanh
#define SCK2
#define DATA2

GPIO_PIN_5 // B5
GPIO_PIN_4 // B4

#define LAT2

GPIO_PIN_6 // B6

#define SEG1

GPIO_PIN_6 // D6

#define SEG2

GPIO_PIN_7 // D7

unsigned char const bcd[10] =
{0x90,0xF5,0x1C,0x34,0x71,0x32,0x12,0xF4,0x10,0x30} ;
unsigned char const hang[9] =
{0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xFF} ;
unsigned int nhietDo,nhietDoMin,nhietDoMax,demsp,demInt;
GVHD: Dương Thị Hằng

Page: 68

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

unsigned char text[50],i,mode,vitri,time[10];
void delay_us(unsigned int us);

// delay microsec

void delay_ms(unsigned int ms);

// delay minisec

void delay_us(unsigned int us)
{
while(us--);SysCtlDelay(1500);
}
void delay_ms(unsigned int ms)
{
while(ms--)delay_us(1000);
}
// Init Adc
void initAdc(void)
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);
Enable ADC

/*

*/

SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);
125KSps clk for ADC

/*

*/

ADCSequenceDisable(ADC_BASE, 0);
ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR,
0);
ADCSequenceEnable(ADC_BASE, 0);
}
// read ADC ( set channel)
int readAdc(char channel)
{
unsigned long value;
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC);
GVHD: Dương Thị Hằng

Page: 69

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

SysCtlADCSpeedSet(SYSCTL_ADCSPEED_125KSPS);
125KSps clk for ADC

/*

*/

ADCSequenceDisable(ADC_BASE, 0);
ADCSequenceConfigure(ADC_BASE, 0, ADC_TRIGGER_PROCESSOR,
0);
ADCSequenceStepConfigure(ADC_BASE, 0, 0, channel |
ADC_CTL_END);
ADCSequenceEnable(ADC_BASE, 0);
ADCProcessorTrigger(ADC_BASE, 0);
while( (HWREG(ADC_BASE + ADC_O_X_SSFSTAT) & 0x00000100) );
ADCSequenceDataGet(ADC_BASE, 0, &value);
//SysCtlPeripheralDisable(SYSCTL_PERIPH_ADC);
return((unsigned int)(value));
}
void init_gpio(void)
{
// unsigned long delayLoop; // khai bao bien
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|
SYSCTL_XTAL_8MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
// Buoc 2. Thiet lap cho GPIO
GPIOPinTypeGPIOOutput(GPIO_PORTB_BASE, 0x7F);
// GPIODirModeSet(GPIO_PORTB_BASE, 0x79);
GPIOPadConfigSet(GPIO_PORTB_BASE,0x7F,
GVHD: Dương Thị Hằng

Page: 70

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeGPIOOutput(GPIO_PORTC_BASE, GPIO_BHIGH);
GPIOPadConfigSet(GPIO_PORTC_BASE,GPIO_BHIGH,
GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_OD);
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, 0x13);
GPIOPadConfigSet(GPIO_PORTD_BASE,0x13,
GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinTypeGPIOOutput(GPIO_PORTF_BASE, 0x0C);
GPIOPadConfigSet(GPIO_PORTF_BASE,0x0C,
GPIO_STRENGTH_8MA,GPIO_PIN_TYPE_STD_WPU);
}
void khaiBaoNgatPortEF(void)
{
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_BLOW);
GPIOPadConfigSet(GPIO_PORTE_BASE,GPIO_BLOW,
GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinIntEnable(GPIO_PORTE_BASE, GPIO_BLOW);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1|
GPIO_PIN_0);
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_0,
GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU);
GPIOPinIntEnable(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_0);
IntEnable(INT_GPIOE);
IntEnable(INT_GPIOF);
IntMasterEnable();
}
GVHD: Dương Thị Hằng

Page: 71

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

void GPIOFIntHandler (void)
{
if(GPIOPinIntStatus(GPIO_PORTF_BASE,true)==GPIO_PIN_0)
{
GPIOPinIntClear(GPIO_PORTF_BASE,GPIO_PIN_0);
}
if(GPIOPinIntStatus(GPIO_PORTF_BASE,true)==GPIO_PIN_1) //
Select
{
vitri = 0;
RIT128x96x4Clear();
delay_ms(50);
GPIOPinIntClear(GPIO_PORTF_BASE,GPIO_PIN_1);
}
}
void GPIOEIntHandler (void)
{
if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_0) // Phim
UP
{
if(vitri==1)nhietDoMin++;
if(vitri==2)nhietDoMax++;
if (nhietDoMin >= nhietDoMax)nhietDoMin=nhietDoMax-1;
GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_0);

// UP

}
if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_1) // Phim
DOWN
{
if(vitri==1)nhietDoMin--;
GVHD: Dương Thị Hằng

Page: 72

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

if(vitri==2)nhietDoMax--;
if (nhietDoMax<= nhietDoMin)nhietDoMax=nhietDoMin+1;
GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_1);

// DOWN

}
if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_3) // Phim
RIGHT
{
vitri++;
if(vitri>2)vitri=1;
GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_3);

// RIGHT

}
if(GPIOPinIntStatus(GPIO_PORTE_BASE,true)==GPIO_PIN_2) // Phim
LEFT
{
if(vitri>1)vitri--;
else vitri=2;
GPIOPinIntClear(GPIO_PORTE_BASE,GPIO_PIN_2);

// LEFT

}
}
void doNhiet_relay(void)
{
// adc = 1023*Vout/3.3 (= 3lan gia tri nhiet do thuc )
// nhu vay phai doc 3 lan, duoc gia tri gap 10 lan nhiet do
nhietDo = readAdc(0);
nhietDo += readAdc(0);
nhietDo += readAdc(0);
nhietDo -= nhietDo/13; // can chinh thuc te
RIT128x96x4StringDraw( "DH Cong nghiep Ha Noi",0,10,15);
GVHD: Dương Thị Hằng

Page: 73

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

sprintf(text,"LOW: %2.2d.%d - HIGH:%2.2d.
%d",nhietDoMin/10,nhietDoMin%10,nhietDoMax/10,nhietDoMax%10);
RIT128x96x4StringDraw( text,0,20,15);
sprintf(text," Nhiet do: %3.2d.%d

",nhietDo/10,nhietDo%10);

RIT128x96x4StringDraw( text,0,35,15);
if(vitri==1)RIT128x96x4StringDraw( " Dat Nhiet do Min ",0,50,15);
if(vitri==2)RIT128x96x4StringDraw( " Dat Nhiet do Max ",0,50,15);
if(vitri>0) RIT128x96x4StringDraw( " Select => Exit

",0,70,15);

if(nhietDoif(nhietDo>nhietDoMax)RELAY1ON; else RELAY1OFF;
delay_ms(500);
}
void hienThiOLED(void)
{
RIT128x96x4StringDraw( "

",0,10,15);

RIT128x96x4StringDraw( "DHCNHN",i,10,15);
RIT128x96x4StringDraw( "SVTH:TRINH DINH CHUONG",0,30,15);
RIT128x96x4StringDraw( " MSV:0841050361",0,50,15);
RIT128x96x4StringDraw( "GVHD: DUONG THI HANG ",0,70,15);
delay_ms(100); // toc do chay chu DHCNHN
i++;
if(i>90)i=0;
}
int main()
{
init_gpio();
khaiBaoNgatPortEF();
// cai dat ADC
initAdc();
GVHD: Dương Thị Hằng

Page: 74

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

RIT128x96x4Init(1000000);
RIT128x96x4Clear();
RELAY1OFF;
RELAY2OFF;
nhietDoMin = 230;
nhietDoMax = 260;
demInt = 0;
demsp=0;
while(1)
{
//hienThiOLED();
doNhiet_relay();

// doc ADC

}
}

GVHD: Dương Thị Hằng

Page: 75

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

KẾT LUẬN
Nghiên cứu này ban đầu đã cho thấy được kết quả khả quan, tạo tiền đề
cho phát triển các ứng dụng với ARM Cortex M3. Để phát triển đề tài này,
em xin đưa ra một số ưu nhược điểm như sau:
* Ưu, nhược điểm:
* Ưu điểm
- Giá thành chip rẻ so với các dòng chip khác với cùng số tài nguyên như
ARM.
- Tốc độ xử lý cao, ổn định.
- Tiết kiệm năng lượng
- Số lượng tài nguyên lớn, phù hợp với nhiều ứng dụng khác nhau
* Nhược điểm
- Nhiều thanh ghi, câu lệnh khá dài, gây khó nhớ cho người dùng, dễ nhầm
lẫn.
- Thị trường ARM ở Việt Nam chưa rộng, gây khó trong việc tìm kiếm tài
liệu và khó khăn trong việc đặt mua chip, do vậy việc nghiên cứu chưa được
sâu
* Hướng phát triển:
- Đặt mua KIT từ TI tạo điều kiện nghiên cứu thực tế trên module.
Tạo các module thực tế để tạo điều kiện thuận lợi cho sinh viên nghiên cứu,
thực hành với các ứng dụng thực tế, dễ hình dung
Cuối cùng chúng em xin chân thành cảm ơn cô Dương Thị Hằng đã giúp
chúng em hoàn thành bài báo cáo này.

GVHD: Dương Thị Hằng

Page: 76

SVTH: Trịnh Đình Chương

Trường Đại Học Công Nghiệp Hà Nội

Khoa Điện Tử

MỤC LỤC

GVHD: Dương Thị Hằng

Page: 77

SVTH: Trịnh Đình Chương