BCTHVDK

You might also like

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

BÁO CÁO

THỰC HÀNH VI ĐIỀU KHIỂN


Họ và tên: Bùi Ngọc Nam Phương
MSSV: 3120520052
PHẦN 1 : THỰC HÀNH
Bài 3-1 :
Sơ đồ nguyên lý :

Code :
#include <P18F4550.h>
#include <delays.h>
unsigned rom char led_tab [ ] = {
0x00, 0xFF, 0x00, 0xFF,
0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F,0xFF,
0x7F, 0xBF, 0xDF, 0xEF, 0xF7, 0xFB, 0xFD, 0xFE,0xFF,
0x7E, 0xBD, 0xDB, 0xE7, 0xFF,
0xE7, 0xDB, 0xBD, 0x7E, 0xFF}; //khai bao mang LED
void main (void)
{

unsigned char i;
TRISD = 0x00; // PORTD la input
for(; ;) // Vong lap vo tan
{
for (i=0; i < 32; i++)
{
PORTD = led_tab[i]; // LED sang theo mang
Delay10KTCYx(125); // Delay 0.5s
}
}
}

Bài 3-2 :
Sơ đồ nguyên lý :

Code :
#include <P18F4550.h>
#include <Delays.h>
#pragma <CONFIG PBADEN = OFF> ;// Lap bit PBADEN = 0:
// Cho RB4:RB0 la inputs.
void main()
{
TRISD = 0x00; // dat PORTD la output
ADCON1 = 0x07; // dat PCFG<3:0> = 0111 la bit cau hinh
// RB4:RB0 la inputs.
TRISB = 0xFF; // dat PORTB la input
for (;;) // Lap lai vo tan
{
if (PORTBbits.RB0 == 1) //Dieu khien SW0
LATDbits.LATD0 = 0;
else
LATDbits.LATD0 = 1;
if (PORTBbits.RB1 == 1) //Dieu khien SW1
LATDbits.LATD1 = 0;
else
LATDbits.LATD1 = 1;
if (PORTBbits.RB2 == 1) //Dieu khien SW2
LATDbits.LATD2 = 0;
else
LATDbits.LATD2 = 1;
if (PORTBbits.RB3 == 1)//Dieu khien SW3
LATDbits.LATD3 = 0;
else
LATDbits.LATD3 = 1;
if (PORTBbits.RB4 == 1) //Dieu khien SW4
LATDbits.LATD4 = 0;
else
LATDbits.LATD4 = 1;
if (PORTBbits.RB5 == 1) //Dieu khien SW5
LATDbits.LATD5 = 0;
else
LATDbits.LATD5 = 1;
if (PORTBbits.RB6 == 1) //Dieu khien SW6
LATDbits.LATD6 = 0;
else
LATDbits.LATD6 = 1;
if (PORTBbits.RB7 == 1)//Dieu khien SW7
LATDbits.LATD7 = 0;
else
LATDbits.LATD7 = 1;
}
}

Bài 3-3 :
Sơ đồ nguyên lý :
Code :
#include <P18F4550.h>
#include <delays.h>
#define Digit_1 PORTAbits.RA0
#define Digit_2 PORTAbits.RA1
unsigned char Display(unsigned char k)
{
unsigned char Number;
unsigned char Code_Tab[ ] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99,
0x92,0x82,
0xF8, 0x80, 0x90, 0x7F};
Number = Code_Tab[k]; // Chon so de hien thi
return (Number);
}
void main( )
{
unsigned char Msd, Lsd, Value;
unsigned int i;
TRISA = 0x00; // PORTA la ngo ra
TRISD = 0x00; // PORTD la ngo ra
Digit_1 = 0; // xoa Digit 1
Digit_2 = 0; // xoa Digit 2
for (; ;) // Lap lai vo tan
{
for (Value = 0; Value < 100; Value++) // cho chay tu 0 den 99
{
for (i = 0; i < 50; i++)
{
Msd = Value / 10; //so MSB
PORTD = Display(Msd);
Digit_2 = 1; // Hien thi Digit 2
Delay100TCYx(125); // Scan LED moi 2.5 ms
Digit_2 = 0; // Xoa Digit 2
Lsd = Value % 10; //so LSD
PORTD = Display(Lsd);
Digit_1 = 1; // Hien thi Digit 1
Delay100TCYx(125); // Scan LED moi 2.5 ms
Digit_1 = 0; // Xoa Digit 1
}
}
}
}
Bài 3-4 :

Sơ đồ nguyên lý :

Code :
#include <P18F4550.h>
#include <delays.h>
#define ldata PORTD // dat PORTD = LCD data pins
#define rs LATEbits.LATE0 // dat rs = LATE.0
#define rw LATEbits.LATE1 // dat rw = LATE.1
#define en LATEbits.LATE2 // dat en = LATE.2
void lcdcmd(unsigned char value); // khai bao ham cmd
void lcd_init(void); // khai bao ham khoi tao
void Out_Message(rom char *); // khai bao ham xuat tin nhan
void main( )
{
TRISD = 0x00; // PORTD la ngo ra
TRISEbits.TRISE0 = 0;
TRISEbits.TRISE1 = 0;
TRISEbits.TRISE2 = 0;
lcd_init();
Delay1KTCYx(25); // Delay 5 ms
lcdcmd(0x80);// Hien thi dong 1
Out_Message("Happy birthday! ");
lcdcmd(0xC0); // Hien thi dong 2
Out_Message("I love you, ok? ");
while(1); //vong lap vo tan
}
void Out_Message(rom char *message) // ham xuat tin nhan
{
rom char *ip = message;
unsigned char z;
for (z = 0; z < 16; z++)
{
ldata = *(ip++);
rs = 1;
rw = 0;
en = 1;
Delay10TCYx(125); // Delay 250 us
en = 0;
}
}
void lcdcmd(unsigned char value) //ham cmd
{
ldata = value; // dat value vao chan du lieu
rs = 0;
rw = 0;
en = 1;
Delay1KTCYx(25); // Delay 5 ms
en = 0;
}
void lcd_init(void)
{
en = 0;
Delay1KTCYx(100); // Delay 20 ms
lcdcmd(0x38); // Khoi tao LCD 2x16, 5x8 dots
Delay1KTCYx(25); // Delay 5 ms
lcdcmd(0x0E); // Bat hien thi, an con tro
Delay1KTCYx(25); // Delay 5 ms
lcdcmd(0x01); // don dep LCD
Delay1KTCYx(25); // Delay 5 ms
lcdcmd(0x06); // dua con tro qua ben phai
Delay1KTCYx(25); // Delay 5 ms
}

You might also like