Ngày 3/3, chúng ta đã qua phần báo cáo một vài mini project và học hết phần ADC. Code tham khảo phần này như sau:
Bài tập của các bạn phần này, như đã thông báo, như sau:
BT1. Đọc điện áp trên chân chạy biến trở và hiển thị lên LCD.
BT2. Đọc cảm biến nhiệt độ (đơn giản là LM35) và hiển thị nhiệt độ lên LCD.
Xong bài, các bạn nén project lại rồi nộp tới email: pif.picc5@gmail.com với cú pháp sau ở chủ đề thư:
Tuần này, chúng ta vẫn giữ thời gian và địa điểm như cũ: 7h30 thứ bảy, 203B8. Mình sẽ điểm danh lần hai, và cũng là lần cuối chốt danh sách sau giữa kỳ, các bạn chú ý đi đầy đủ.
Buổi học cuối tuần này, bạn nào còn mini project thì đem lên show luôn. Bài học của chúng ta sẽ là PWM và I2C. Hai phần này sẽ được rút gọn và làm trong 1 buổi. Chúng ta sẽ học coding là chủ yếu, dành thời gian cho project cuối khóa. Các bạn chuẩn bị như sau:
- PWM: đọc trước datasheet, tham khảo bài này. Đọc tập trung phần giải thuật. Phần mạch cầu H điều khiển động cơ sẽ được nói vào cuối khóa. Các bạn làm thêm một module LED RGB để thực hành điều chỉnh độ sáng. Mạch chỉ đơn giản là ANOT nối nguồn, 3 chân còn lại qua trở 1k xuống Mass. Có thể hàn qua dây bus, hàn hoặc cắm test board.
- I2C: tham khảo TUT . Chúng ta sẽ không đào sâu vào phần code I2C và các chuẩn truyền thông nữa, nên để các bạn tự nghiên cứu. Bài học sẽ chỉ nghiên cứu I2C trên lý thuyết. Bạn nào có nhiều thời gian thì làm thử mạch I2C của PIF và code thử.
Hẹn gặp các bạn vào thứ bảy.
Code:
/****************************************************************
*
* www.payitforward.edu.vn
*
****************************************************************/
/****************************************************************
*
* PIC Training Course
*
****************************************************************/
/****************************************************************
*
* Module : ADC2LED.c
* Description : Display 8-bits ADC result on 8-leds connected port B
* Tool : HI-TECH PIC
* Chip : 16F887
* History : 06/03/2012
*
* Author : Nguyen Tien Manh, CLB NCKH DDT
*
*
****************************************************************/
/****************************************************************
* IMPORT
****************************************************************/
#include <htc.h>
__CONFIG(XT & WDTDIS & PWRTEN & MCLREN & UNPROTECT & SWBOREN &
IESODIS & FCMDIS & LVPDIS & DEBUGDIS); //1st config. Word
__CONFIG(BORV21); //2st config. Word
#define _XTAL_FREQ 4000000
/*****************************************************************
* ROUTINES
******************************************************************/
void port_init()
{
TRISA0 = 1; //AN0 (ADC chanel 0) is input
TRISB = 0;
}
void ADC_init()
{
//AN0 is analog
ANSEL=1;
//ADC conversion clock source = Fosc/8
ADCS0=1;
ADCS1=0;
// Vref = VCC = 5V
VCFG0=0;
VCFG1=0;
// Select channel 0
CHS0=0;
CHS1=0;
CHS2=0;
CHS3=0;
//Result formatting: Left justified
ADFM=0;
// Turn on ADC module
ADON=1;
__delay_ms(1); // delay for initiation of module ADC
}
void int_init()
{
GIE = 1; //Global Interrupt Enable
PEIE = 1; //Peripheral Interrupt Enable
ADIE = 1; //ADC Interrupt Enable
ADIF = 0; //Clear ADC Interrupt Flag
}
//Interrupt service rountine
void interrupt isr()
{
if (PEIE && ADIE && ADIF) // Check if conversion is complete
{
PORTB = ADRESH; // Set PortB as 8-bit ADC result (8 high bits of 10-bits ADC result)
ADIF = 0; //Clear ADC Interrupt Flag
}
}
/****************************************************************
* MAIN
****************************************************************/
void main()
{
port_init();
ADC_init();
int_init();
while (1)
GODONE = 1; //start converting
}
/****************************************************************
* END OF standard ADC2LED.c
****************************************************************/
BT1. Đọc điện áp trên chân chạy biến trở và hiển thị lên LCD.
BT2. Đọc cảm biến nhiệt độ (đơn giản là LM35) và hiển thị nhiệt độ lên LCD.
Xong bài, các bạn nén project lại rồi nộp tới email: pif.picc5@gmail.com với cú pháp sau ở chủ đề thư:
[C5] [BT8] [N..] _Họ tên_ ...
Tuần này, chúng ta vẫn giữ thời gian và địa điểm như cũ: 7h30 thứ bảy, 203B8. Mình sẽ điểm danh lần hai, và cũng là lần cuối chốt danh sách sau giữa kỳ, các bạn chú ý đi đầy đủ.
Buổi học cuối tuần này, bạn nào còn mini project thì đem lên show luôn. Bài học của chúng ta sẽ là PWM và I2C. Hai phần này sẽ được rút gọn và làm trong 1 buổi. Chúng ta sẽ học coding là chủ yếu, dành thời gian cho project cuối khóa. Các bạn chuẩn bị như sau:
- PWM: đọc trước datasheet, tham khảo bài này. Đọc tập trung phần giải thuật. Phần mạch cầu H điều khiển động cơ sẽ được nói vào cuối khóa. Các bạn làm thêm một module LED RGB để thực hành điều chỉnh độ sáng. Mạch chỉ đơn giản là ANOT nối nguồn, 3 chân còn lại qua trở 1k xuống Mass. Có thể hàn qua dây bus, hàn hoặc cắm test board.
- I2C: tham khảo TUT . Chúng ta sẽ không đào sâu vào phần code I2C và các chuẩn truyền thông nữa, nên để các bạn tự nghiên cứu. Bài học sẽ chỉ nghiên cứu I2C trên lý thuyết. Bạn nào có nhiều thời gian thì làm thử mạch I2C của PIF và code thử.
Hẹn gặp các bạn vào thứ bảy.