#include #include #pragma config OSC=HS #pragma config WDT=OFF #pragma config MCLRE=ON #pragma config PBADEN=OFF #define led1 PORTEbits.RE0 #define led2 PORTEbits.RE1 #define led3 PORTEb
Trang 1BÀI TẬP MÔN VI ĐIỀU KHIỂN NÂNG CAO
1 Thiết kế ứng dụng với ngắt ngoài
Bài 01 Lập trình đếm sản phẩm trên chân ngắt INT0 và hiển thị trên 3 led 7 thanh
theo phương pháp quét led
#include<p18f4520.h>
#include<delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define led1 PORTEbits.RE0
#define led2 PORTEbits.RE1
#define led3 PORTEbits.RE2
Trang 2#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define led1 PORTCbits.RC0
#define led2 PORTCbits.RC1
Trang 3#define led3 PORTCbits.RC2
#define led4 PORTCbits.RC3
Trang 4#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
#define LCD_RS PORTEbits.RE0
#define LCD_RW PORTEbits.RE1
#define LCD_EN PORTEbits.RE2
void Lcd_configure(void);
void Lcd_Write_Command(char command);
void Lcd_Write_Data(char data);
void Lcd_Write_String(char*str);
void Lcd_configure(void)
Trang 6#pragma code uu_tien_cao = 0x08 void ngat_cao(void)
SP++;
INTCON3bits.INT1IF=0;}
Trang 7#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
Trang 8void Lcd_Write_Command(char command);void Lcd_Write_Data(char data);
Trang 10#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
Trang 12#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#define LCD_DATA PORTD
Trang 14while(1)
{
Trang 152 Thiết kế ứng dụng với Timer
Bài 01 Lập trình tạo xung 1KHz với thạch anh 4MHz, sử dụng Timer0
để tạo xung
#include<p18f4520.h>
#include <delays.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define xung PORTAbits.RA0
void main (void)
Trang 16#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define xung PORTAbits.RA0
void main (void)
Trang 17Bài 03 Lập trình đếm sản phẩm sử dụng Timer0, sản phẩm được hiển thị với 4
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
// dung nut nhan tren chan RA6
unsigned int sp;unsigned int bt;unsigned int bc;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
Trang 19#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
// dung nut nhan tren chan RC0
unsigned int sp;unsigned int bt;unsigned int bc;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
Trang 21#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTEbits.RE0
#define RW PORTEbits.RE1
#define EN PORTEbits.RE2
unsigned int ADC;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
Trang 23#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
unsigned int ADC;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
Trang 24void Lcd_configure (void)
Trang 25OpenADC( ADC_FOSC_16 &
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
Trang 26#pragma config LVP=OFF
#define DATA PORTD
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
Trang 27Lcd_Write_Data ((dienap2%100)/10+0x30); Lcd_Write_Data ((dienap2%100)%10+0x30); }
}
Trang 28Bài 04 Thiết kế bộ đo nhiệt độ sử dụng cảm biến LM35 và kênh AN6 hiển thị trên LCD.
#include<p18f4520.h>
#include <delays.h>
#include<adc.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config LVP=OFF
#define DATA PORTD
#define RS PORTCbits.RC5
#define RW PORTCbits.RC6
#define EN PORTCbits.RC7
unsigned int ADC;
void Lcd_configure (void);
void Lcd_Write_Command (char command);
void Lcd_Write_Data (char data);
void Lcd_configure (void)
Trang 30#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
Trang 31#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config CCP2MX=PORTC
Trang 32Bài 04 Lập trình cho bộ điều khiển mô tơ DC sử dụng PWM với yêu cầu:
- Nhấn nút ON thì TON = 50%
- Nhấn nút OFF thì TON = 0
- Nhấn nút UP thì TON tăng 5%(tăng tối đa 100%)
- Nhấn nút DOWN thì TON giảm 5%(giảm tối đa về 20%)
#include<p18f4520.h>
#include<pwm.h>
#pragma config OSC=HS
#pragma config WDT=OFF
#pragma config MCLRE=ON
#pragma config PBADEN=OFF
#pragma config CCP2MX=PORTC