0% found this document useful (0 votes)
10 views7 pages

BCTHVDK

Uploaded by

icycute999
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views7 pages

BCTHVDK

Uploaded by

icycute999
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 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