SlideShare a Scribd company logo
1 of 84
Download to read offline
PTIT
Giảng viên hướng dẫn: Phạm Thế Duy
Sinh viên thực hiện: Đinh Tuấn Hải
Đ09VTA1
409160010
Báo cáo Kỹ thuật Vi xử lý
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH
BÁO CÁO
MÔN KỸ THUẬT VI XỬ LÝ
TPHCM - 2011
GIẢNG VIÊN HƯỚNGDẪN: Phạm Thế Duy
SINH VIÊN THỰC HIỆN: Đinh Tuấn Hải
Lớp Đ09VTA1
MSSV: 409160010
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 2
Lưu ý:
+ Các mạch mô phỏng được thực hiện trên Proteus 7.8 SP2 và CodeVision 2.05.0
Professional với các điều kiện được ghi chú sẵn.
+ Các ghi chú trong code chỉ được ghi 1 lần, theo thứ tự xuất hiện của dòng lệnh. (Có
những code thừa nhưng do xuất hiện trước nên vẫn được ghi chú bình thường)
+ Các bài tập có sử dụng bộ định thời để chạy với ý nghĩa thời gian thực có thể hoạt
động sai khi sử dụng trên các máy tính khác, và phải hiệu chỉnh lại cho thích hợp. Các bài tập
này mang ý nghĩa thuật toán, giải thuật nhiều hơn ý nghĩa chính xác về mặt thời gian. Tất cả
các bài đã được hiệu chỉnh để chạy chính xác trên hệ thống máy tính của cá nhân người lập
trình, do vậy có thể mang tính chủ quan.
TP.HCM ngày 10 tháng 10 năm 2011
Sinh viên thực hiện
Đinh Tuấn Hải
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 3
MỤC LỤC
B I 1 ĐIỀU HI N C NG T C ĐƠN V ED ĐƠN......................................................................4
B I 2 HI N TH T ÊN ED 7 Đ ẠN............................................................................................17
B I 3 ĐIỀU HI N ĐỌC B N HÍ A T N HI N TH HÍ T ÊN ED 7 Đ ẠN........27
B I 4 ĐIỀU HI N HI N TH T ÊN CD....................................................................................38
B I 5 ĐIỀU HI N ĐỌC ĐIỆN DC B NG ADC V HI N TH ÊN CD ..............................51
B I 6 Đ NHIỆT Đ V HI N TH T ÊN ED 7 Đ ẠN D NG ẠCH S S NH TƯƠNGTỰ
TÍCH H T NG AV .................................................................................................................67
BÀI 7: TẠ UNG VU NG SIN TA GI C B NG DAC............................................................83
BÀI 8: GIAO TIẾP NỐI TIẾP USART..............................................................................................96
BÀI 9: THỰC HIỆN ĐỒNG HỒ ĐIỆN TỬ ..................................................................................... 115
B I 10 ĐÈN TÍN HIỆU GIAO THÔNG......................................................................................... 136
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 4
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3a Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 8/21/2011
Author : Freeware, for evaluation and
Company :
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 5
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
// Declare your global variables here
int i,j; //khai báo biến
unsigned char phu, phu2;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTA=0x00;
DDRA=0xFF; //Port A là OUT
// Port B initialization
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 6
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00; //Port B là IN
// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00; //Port C là IN
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00; //Port D là IN
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 7
// OC0 output: Disconnected
TCCR0=0x00; //Các thanh ghi cho Timer/Counter0
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00; //Các thanh ghi cho Timer/Counter1
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 8
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00; //thanh ghi cho Timer/Counter2
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off //ngắt ngoài
// INT1: Off
// INT2: Off
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 9
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00; //Cài đặt ngắt cho các bộ Timer/Counter
// USART initialization
// USART disabled
UCSRB=0x00; //Chức năng USART
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80; //Bộ so sánh tương tự - Analog Comparator
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 10
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
// Place your code here
switch(PINB)
{
case 0b00000001: //Cau 1: 1 LED sang doi qua lai
{
PORTA = 0b10000000;
delay_ms(20); //tạo độ trễ để mắt người có thể theo dõi kịp
for (i=0; i<=6; i++) //chay LED qua phai 7 lan
{
PORTA = PORTA >> 1; //Port A dịch qua phải 1 bit
delay_ms(20);
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 11
for (i=6; i>=1; i--) //chay LED qua trai 7 lan
{
PORTA = PORTA << 1;
delay_ms(20);
}
break;
};
case 0b00000010: //Cau 2: 8 LED sang dan sau do tat dan
{
PORTA = 0b00000000;
phu = 0b10000000;
for (i=0; i<=7; i++) //sang dan tu trai qua phai
{
PORTA = phu;
phu = phu | (phu >> 1);
delay_ms(20);
}
for (i=0; i<=7; i++) //tat dan
{
PORTA = PORTA >> 1;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 12
delay_ms(20);
}
break;
};
case 0b00000100: //Cau 3: 8 LED sang tu hai ben vao roi tat tu hai ben vao
{
phu = 0b10000000;
phu2 = 0b00000001;
PORTA = 0b00000000;
for (i=1; i<=4; i++) //sang tu hai ben vao
{
PORTA = phu + phu2 + PORTA;
phu = phu >> 1;
phu2 = phu2 <<1;
delay_ms(20);
};
phu = 0b10000000;
phu2 = 0b00000001;
for (i=1; i<=4; i++) //tat tu hai ben vao
{
PORTA = PORTA - phu - phu2 ;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 13
phu = phu >> 1;
phu2 = phu2 <<1;
delay_ms(20);
}
break;
}
case 0b00001000: //Cau 4: 1 LED sang chay tu trai qua phai roi dung lai
{
phu2 = 0b00000000;
for (i=7; i>=0; i--)
{
phu = 0b10000000;
for (j=0; j<=i; j++)
{
PORTA = phu + phu2;
delay_ms(20);
phu = phu >> 1;
}
phu2 = PORTA;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 14
}
delay_ms(20);
break;
}
case 0b00010000: //Cau 5: 8 LED chop tat
{
PORTA = 0b11111111;
delay_ms(20);
PORTA = 0b00000000;
delay_ms(20);
break;
};
case 0b00100000: //Cau 6: Cac LED sang tat xen ke va nguoc lai
{
PORTA = 0b10101010;
delay_ms(20);
PORTA = 0b01010101;
delay_ms(20);
break;
};
case 0b01000000: //Cau 7: 4 LED sang 4 LED tat va nguoc lai
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 15
{
PORTA = 0b11110000;
delay_ms(20);
PORTA = 0b00001111;
delay_ms(20);
break;
};
case 0b10000000: //Cau 8: 2 LED sang chay vao tu hai ben va chay ra hai ben
{
phu = 0b10000000;
phu2 = 0b00000001;
for (i=0; i<=7; i++)
{
PORTA = phu + phu2;
delay_ms(20);
phu = phu >> 1; //phu cho led chay qua phai, phu2 cho led chay
qua trai
phu2 = phu2 << 1;
}
break;
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 16
}
};
}
Ghi chú: Bật lần lượt các công tắc từ 1 tới 8 trong file mô phỏng để thực hiện lần lượt 8 yêu cầu
của đề bài.
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
D1
LED-YELLOW
D2
LED-YELLOW
D3
LED-YELLOW
D4
LED-YELLOW
D5
LED-YELLOW
D6
LED-YELLOW
D7
LED-YELLOW
D8
LED-YELLOW
0
SW1
SW-SPDT
SW2
SW-SPDT
SW3
SW-SPDT
SW4
SW-SPDT
SW5
SW-SPDT
SW6
SW-SPDT
SW7
SW-SPDT
SW8
SW-SPDT
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 17
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3a Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Bai thuc hanh so 2
Version :
Date : 8/22/2011
Author : Freeware, for evaluation and
non-commercial use only
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 18
Company :
Comments: Dinh Tuan Hai - D09VTA1
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
// Declare your global variables here
unsigned char led[10] =
{0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b
11100000,0b11111110,0b11110110,}; // dinh nghia cac chu so tren LED
unsigned char pos[5] = {0b00000111,0b00001011,0b00001101,0b00001110,0b00001111};
//dinh nghia vi tri chon LED tren bang LED (position)
unsigned char dis[4] = {0,0,0,0}; //dinh nghia so de hien thi tren LED (display)
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 19
int i,j,k;
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 20
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 21
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 22
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 23
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 24
{
// Place your code here
switch(PINB)
{
case 0b00000001: // nhan SW1 de hien 4 so lien tuc
{
for (i=0;i<=3;i++)
{
PORTD = pos[i]; //hien thi so o vi tri i
PORTC = led[i+1]; //dịch
delay_ms(2);
PORTD = pos[4];
}
break;
}
case 0b00000010: // nhan SW2 de chay 0-9
{
for (i=0; i<=9; i++)
{
dis[3] = led[i];
for (k=0; k<=5; k++) //giam toc do chay so lai
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 25
{
for (j=3; j>=0; j--)
{
PORTD = pos[j];
PORTC = dis[j];
delay_ms(2);
PORTD = pos[4];
}
}
for (j=0; j<=3; j++)
dis[j] = dis[j+1];
}
break;
}
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 26
}
}
Ghi chú:
+ Nhấn SW1 để thực hiện yêu cầu 1 (hiện 4 số cùng lúc trên bảng LED)
+ Nhấn SW2 để thực hiện yêu cầu 2 (chạy số từ 0-9 từ phải qua trái)
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
SW1
SW-SPDT
SW2
SW-SPDT
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 27
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3a Evaluation
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 27/08/2011
Author : Dinh Tuan Hai
Company : D09VTA1
Comments: HVCNBCVT
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 28
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
// Declare your global variables here
int i,dem,row,col,n,j,k;
//dinh nghia cac ky tu se hien tren LED
unsigned char led[16] =
{0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b
11100000,0b11111110,0b11110110, 0b11101110, 0b00111110, 0b10011100, 0b01111010,
0b10011110, 0b10001110};
//dinh nghia cac vi tri cua LED, pos[4] la khong chon vi tri nao(xoa)
unsigned char pos[5] = {0b00000111,0b00001011,0b00001101,0b00001110,0b00001111};
unsigned char dis[4] = {0,0,0,0};
int TIMVITRI(unsigned char p) //chuong trinh tim vi tri bit 0 trong p
{
dem = 10;
n=0;
while (p != 0b11111111) //thuc hien cho den khi p = 0xFF
{
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 29
p = (p >> 1);
p = p | 0b10000000;
n = n + 1;
}
dem = n - 1;
return(dem); //tra lai gia tri dem
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out
// State7=P State6=P State5=P State4=P State3=1 State2=1 State1=1 State0=1
PORTA=0xFF;
DDRA=0x00; //Cong A nhan tin hieu vao
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 30
PORTB=0xFF;
DDRB=0xFF; //Cong B dua tin hieu ra
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF; //Cong C dua tin hieu ra
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0x0F; //4 bit cao: IN, 4 bit thap: OUT
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 31
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 32
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 33
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 34
// TWI initialization
// TWI disabled
TWCR=0x00;
while (1)
{
// Place your code here
while (PIND.4 == 0) //thuc hien yeu cau so 1
{
PORTB=0b11110111;
for (col = 3; col>=0; col--)
{
row=TIMVITRI(PINA);
if (row>=0)
{
i=col*4+row; //thuật toán tính giá trị nút bấm
dis[3] = led[i];
};
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 35
PORTB =(PORTB>>1)| 0b10000000;
};
PORTD = pos[3];
PORTC = dis[3];
delay_ms(1);
}
while (PIND.4 == 1) //thuc hien yeu cau so 2
{
PORTB=0b11110111;
for (col = 3; col>=0; col--)
{
row=TIMVITRI(PINA);
if (row>=0)
{
i=col*4+row;
for(j=0;j<=2;j++)
{
dis[j] = dis[j+1];
}
dis[3] = led[i];
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 36
};
PORTB =(PORTB>>1)| 0b10000000;
};
for(n=0;n<=6;n++)
{
for(k=0;k<=3;k++) //hien thi ra LED
{
PORTD = pos[k];
PORTC = dis[k];
delay_ms(1);
PORTD = pos[4];
}
}
}
}
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 37
Ghi chú:
+ Chuyển mức Logic cổng PIND.4 thành 0 để thực hiện yêu cầu số 1 của bài (đọc mã
phím hiển thị lên LED 7 đoạn)
+ Chuyển mức Logic cổng PIND.4 thành 1 để thực hiện yêu cầu số 2 của bài (nhấm phim,
hiện ký tự tương ứng trên LED kế tiếp những ký tự đã nhấn trước đó)
0 4 8 C
1 5 9 D
2 6 A E
3 7 B F
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
1
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 38
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 9/6/2011
Author : Dinh Tuan Hai
Company : D09VTA1 - MSSV: 409160010
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 39
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
#define RS PORTC.0
#define RW PORTC.1
#define E PORTC.2
#define data PORTD
void wait_LCD(void) //chương trình con nhằm đợi cho LCD sẵn sàng
{
unsigned char tam;
DDRD = 0x00;
RS = 0;
RW = 1;
do
{
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 40
E = 1;
delay_ms(100);
tam = PIND;
E = 0;
}
while ((tam && 0x80)!= 0x80);
DDRD = 0xFF;
}
void set(unsigned char set) //chương trình con cài đặt cho LCD
{
delay_us(210);
RS = 0;
RW = 0;
E = 0;
data = set;
E = 1;
E = 0;
}
void display(unsigned char out) //chương trình con hiển thị 1 mã ASCII cho LCD
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 41
{
delay_us(210);
RS = 1;
RW = 0;
E = 0;
data = out;
E = 1;
E = 0;
}
void clear_LCD(void) //chương trình con xóa LCD
{
delay_ms(1);
RS = 0;
RW = 0;
E = 0;
data = 0x01;
E = 1;
E = 0;
}
void pos(int x,int y) //chương trình con chọn vị trí trên LCD
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 42
{
int i;
delay_us(210);
if(x == 0)
set(0x02);
if(x == 1)
set(0xc0);
for(i=0;i<=y;i++)
set(0x14);
}
// Declare your global variables here
char line1[] = {" Dinh Tuan Hai"}; //chuỗi được hiển thị ở hàng 1
char line2[] = {" 409160010 "}; //chuỗi được hiển thị ở hàng 2
int i,j;
unsigned char x;
void main(void)
{
// Declare your local variables here
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 43
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 44
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0x07;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 45
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 46
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 47
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
set(0x38);
set(0x0c);
set(0x02);
while (1)
{
// Place your code here
while (PINC.3 == 1) //Thuc hien yeu cau so 1
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 48
{
for (i=0;i<=16;i++)
{
display(line1[i]); //hiển thị hàng chữ 1
}
set(0xc0);
for (i=0;i<=16;i++)
{
display(line2[i]); //hiển thị hàng chữ 2
}
}
while (PINC.3 == 0) //Thuc hien yeu cau so 2
{
for (j=14;j>=0;j--) //chay cho de khi nao ca chuoi duoc can le trai
{
pos(1,j);
for(i=0;i<=(14-j);i++)
{
display(line1[i]);
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 49
}
delay_ms(40);
clear_LCD(); //xóa LCD
}
for(j=1;j<=15;j++) //chay tiep cho den khi ca chuoi chay het
{
pos(1,0);
for(i=j;i<=16;i++)
display(line1[i]);
delay_ms(40);
clear_LCD();
}
}
}
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 50
Ghi chú:
+ Chỉnh mức Logic của cổng PINC.3 thành 0 để thực hiện yêu cầu số 1 (hiển thị 2 dòng
chữ trên LCD)
+ Chỉnh mức Logic của cổng PINC.3 thành 1 để thực hiện yêu cầu số 2 (hiển thị dòng chữ
trôi)
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9
D1
8
D0
7
E
6
RW
5
RS
4
VSS
1
VDD
2
VEE
3
LCD1
LM016L
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 51
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project : Bai thuc hanh so 5
Version :
Date : 9/9/2011
Author : Dinh Tuan Hai
Company : D09VTA1 - PTIT - 409160010
Comments:
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 52
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
#include <stdio.h>
#define RS PORTC.0 //định nghĩa lại cái port trên LCD để dễ chỉnh sửa
#define RW PORTC.1
#define E PORTC.2
#define data PORTD
#define ADC_VREF_TYPE 0x20
// Read the 8 most significant bits
// of the AD conversion result
unsigned char read_adc(unsigned char adc_input) //chương trình con đọc ADC
{
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 53
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}
void wait_LCD(void)
{
unsigned char tam;
tam = 0x80;
DDRD = 0x00;
while ((tam && 0x80)==0x80)
{
RS = 0;
RW = 1;
E = 0;
tam = PIND;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 54
E = 1;
E = 0;
}
DDRD = 0xFF;
}
void set(unsigned char set)
{
delay_us(210);
RS = 0;
RW = 0;
E = 0;
data = set;
E = 1;
E = 0;
}
void display(unsigned char out)
{
delay_us(210);
RS = 1;
RW = 0;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 55
E = 0;
data = out;
E = 1;
E = 0;
}
void clear_LCD(void)
{
delay_us(210);
RS = 0;
RW = 0;
E = 0;
data = 0x01;
E = 1;
E = 0;
}
void pos(int x,int y)
{
int i;
if(x == 0)
set(0x02);
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 56
if(x == 1)
{
set(0xc0);
y = y-1; //sua lai ham nay de cho chinh xac vi tri cusor dong 2
}
for(i=0;i<=y;i++)
set(0x14);
}
void display_hexa(unsigned char in) //chuong trinh hien thi ma HEXA
{
unsigned char i,j;
i = in & 0x0f; //lấy 4 bit thấp
if ((0x00 <= i) && (i <= 0x09))
i = i + 0x30;
else i = i + 0x37;
j = in & 0xf0; //lấy 4 bit cao
j = j >> 4;
if ((0x00 <= j) && (j <= 0x09))
j = j + 0x30;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 57
else j = j + 0x37;
pos(0,13);
display(j);
delay_ms(1);
display(i);
//data = j;
delay_ms(100);
clear_LCD();
}
// Declare your global variables here
int k;
unsigned char i,j,in,tam;
unsigned int value,bit_value;
float valuef;
unsigned char dis[6] = {0,0x2c,0,0,0,0};
void main(void)
{
// Declare your local variables here
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 58
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0b00000111;
// Port D initialization
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 59
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 60
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 61
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: Off
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 62
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// ADC initialization
// ADC Clock frequency: 1000.000 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
set(0x38);
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 63
set(0x0c);
set(0x02);
while (1)
{
// Place your code here
while (PINC.3 == 0) // Thuc hien yeu cau so 1
{
in = read_adc(0); //đọc ADC vào
display_hexa(in); //hiển thị mã hexa lên LCD
}
for(k = 0; k<=7; k++)
{
in = read_adc(k);
// Chuong trinh doi tu so nhi phan ra thap phan
value = 0;
bit_value = 1;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 64
for (i=0;i<=7;i++)
{
tam = in & 0x01;
bit_value = 1;
if(tam == 0x01)
{
for(j=1;j<=i;j++)
bit_value = 2* bit_value;
}
else bit_value = 0;
value = bit_value + value;
in = in >> 1;
}
//Quy doi gia tri de chuan bi hien thi ra LCD
valuef = value * 5;
valuef = (float)valuef / 255;
valuef = valuef * 10000;
value = (int)valuef;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 65
//Nap cac gia tri do duoc vao cac vi tri hien thi
for(i=5;i>=2;i--)
{
dis[i] = value % 10 + 0x30;
value = value/10;
}
dis[0] = value % 10 + 0x30;
//Hien thi ra man hinh LCD
if (k==4)
pos(1,0);
for (i=0;i<=2; i++)
{
display(dis[i]);
}
display(0x20); //SpaceBar
}
delay_ms(150);
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 66
clear_LCD();
}
}
Ghi chú:
+ Chỉnh mức Logic trên PINC.3 là 0 để thực hiện yêu cầu số 1 (hiện mã HEXA tương ứng
điện áp đầu vào cổng PINA.0)
+ Chỉnh mức Logic trên PINC.3 là 1 để thực hiện yêu cầu số 2 (hiện 8 giá trị điện áp
tương ứng trên 8 cổng vào)
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
100%
RV1
50k
100%
RV2
50k
100%
RV3
50k
0%
RV4
100
100%
RV5
50k
100%
RV6
50k
100%
RV7
50k
100%
RV8
50k
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9
D1
8
D0
7
E
6
RW
5
RS
4
VSS
1
VDD
2
VEE
3
LCD2
LM016L
U1(AREF)
RV2(2)
0
1
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 67
/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.0 Professional
Automatic Program Generator
© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 9/19/2011
Author : Dinh Tuan Hai - 409160010
Company : D09VTA1 - PTIT
Comments: Bai thuc hanh so 6
Chip type : ATmega16
Program type : Application
AVR Core Clock frequency: 8.000000 MHz
Memory model : Small
External RAM size : 0
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 68
Data Stack size : 256
*****************************************************/
#include <mega16.h>
#include <delay.h>
#include <math.h>
#define RS PORTC.0
#define RW PORTC.1
#define E PORTC.2
#define data PORTD
long int i,j=0,x;
long int time,temp;
int k;
float v,tempf;
unsigned char timedisplay[5] = {0,46,0,0,0}; //chuoi hien thi thoi gian tu nap
unsigned char voltagedisplay[5] = {0,46,0,0,0}; //chuoi hien thi dien ap tren tu
unsigned char tdisplay[4] = {0,0,0,0}; //chuoi hien thi nhiet do
char start[] = {" Starting..."}; //Chuoi hien thi khi LCD khoi dong
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 69
// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
// Place your code here
}
// Timer 0 output compare interrupt service routine
interrupt [TIM0_COMP] void timer0_comp_isr(void)
{
// Place your code here
i++; //tang i len sau moi lan ngat
}
// Analog Comparator interrupt service routine
interrupt [ANA_COMP] void ana_comp_isr(void)
{
// Place your code here
time = i*10; //thoi gian tinh bang ms.
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 70
// Declare your global variables here
void wait_LCD(void)
{
unsigned char tam;
tam = 0x80;
DDRD = 0x00;
while ((tam && 0x80)==0x80)
{
RS = 0;
RW = 1;
E = 0;
tam = PIND;
E = 1;
E = 0;
}
DDRD = 0xFF;
}
void set(unsigned char set)
{
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 71
delay_us(210);
RS = 0;
RW = 0;
E = 0;
data = set;
E = 1;
E = 0;
}
void display(unsigned char out)
{
delay_us(210);
RS = 1;
RW = 0;
E = 0;
data = out;
E = 1;
E = 0;
}
void clear_LCD(void)
{
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 72
RS = 0;
RW = 0;
E = 0;
data = 0x01;
E = 1;
E = 0;
}
void pos(int x,int y)
{
int i;
if(x == 0)
set(0x02);
if(x == 1)
set(0xc0);
for(i=0;i<=y;i++)
set(0x14);
}
void time_display(long int time) //hien thi thoi gian
{
clear_LCD();
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 73
temp = time;
timedisplay[4] = temp % 10 + 48;
temp = temp / 10;
timedisplay[3] = temp % 10 + 48;
temp = temp / 10;
timedisplay[2] = temp % 10 + 48;
temp = temp / 10;
timedisplay[0] = temp + 48;
for(k=0;k<=4;k++)
display(timedisplay[k]);
display(115);
//time = 0;
//delay_ms(300);
}
void voltage_display(long int time) //hien thi dien ap
{
pos(0,9);
tempf = (float)time / 1000;
v = 5*(1-exp((-tempf)/10));
v = v * 1000;
v = (int)v;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 74
temp = v;
voltagedisplay[4] = temp % 10 + 48;
temp = temp / 10;
voltagedisplay[3] = temp % 10 + 48;
temp = temp / 10;
voltagedisplay[2] = temp % 10 + 48;
temp = temp / 10;
voltagedisplay[0] = temp + 48;
for(k=0;k<=4;k++)
display(voltagedisplay[k]);
display(86);
}
void temperature_display(int v) //hien thi nhiet do
{
pos(1,5);
temp = v;
for(k=3;k>=0;k--)
{
tdisplay[k] = temp % 10;
temp = temp /10;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 75
}
for(k=0;k<=2;k++)
{
display(tdisplay[k]+48);
}
display(111);
display(67);
}
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0xFF;
Tải bản FULL (165 trang): bit.ly/2Ywib4t
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 76
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTC=0x00;
DDRC=0xFF;
// Port D initialization
// Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
// State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
PORTD=0x00;
DDRD=0xFF;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 1000.000 kHz
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 77
// Mode: CTC top=OCR0
// OC0 output: Disconnected
TCCR0=0x0B; //CTC mode
TCNT0=0x00; //khoi tao gia tri 0
OCR0=0x9B; //dem len 125 nhip
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 78
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
Tải bản FULL (165 trang): bit.ly/2Ywib4t
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 79
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// USART disabled
UCSRB=0x00;
// Analog Comparator initialization
// Analog Comparator: On
// Interrupt on Falling Output Edge
// Analog Comparator Input Capture by Timer/Counter 1: On
ACSR=0x08;
SFIOR=0x00;
// ADC initialization
// ADC disabled
ADCSRA=0x00;
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 80
// SPI initialization
// SPI disabled
SPCR=0x00;
// TWI initialization
// TWI disabled
TWCR=0x00;
// Global enable interrupts
#asm("sei")
set(0x38);
set(0x0c);
set(0x02);
PORTA.0 = 1;
delay_ms(50); //xa tu
for(k=0;k<=16;k++)
display(start[k]); //hien dong chu khoi dong
while (1)
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 81
{
// Place your code here
PORTA.0 = 0;
TIMSK = 0x02;
TCNT0 = 0x00;
i=0;
x = 1;
time = 0;
while(x==1) //lap vo han cho den khi tu nap bang LM35
{
if(time!=0)
x = 0;
}
pos(0,2);
time_display(time); //lan luot hien thi cac gia tri ra man hinh LCD
voltage_display(time);
temperature_display(v);
PORTA.0 = 1; //xa tu chuan bi cho lan do tiep theo
delay_ms(50);
}
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 82
}
Ghi chú:
+ Điều chỉnh nhiệt độ trên LM35 để kiểm tra xem hiển thị LCD có chính xác hay không.
PB0/T0/XCK
1
PB1/T1
2
PB2/AIN0/INT2
3
PB3/AIN1/OC0
4
PB4/SS
5
PB5/MOSI
6
PB6/MISO
7
PB7/SCK
8
RESET
9
XTAL2
12
XTAL1
13
PD0/RXD
14
PD1/TXD
15
PD2/INT0
16
PD3/INT1
17
PD4/OC1B
18
PD5/OC1A
19
PD6/ICP1
20
PD7/OC2
21
PC0/SCL
22
PC1/SDA
23
PC2/TCK
24
PC3/TMS
25
PC4/TDO
26
PC5/TDI
27
PC6/TOSC1
28
PC7/TOSC2
29
PA7/ADC7
33
PA6/ADC6
34
PA5/ADC5
35
PA4/ADC4
36
PA3/ADC3
37
PA2/ADC2
38
PA1/ADC1
39
PA0/ADC0
40
AREF
32
AVCC
30
U1
ATMEGA16
D7
14
D6
13
D5
12
D4
11
D3
10
D2
9
D1
8
D0
7
E
6
RW
5
RS
4
VSS
1
VDD
2
VEE
3
LCD1
LM016L
RL1
1
R1
10k
R1(1)
R2
10k
R2(1)
C1
1m
+88.8
Volts
0
0
U3(VOUT)
U1(PB2/AIN0/INT2)
85.0
3
1
VOUT
2
U3
LM35
Tải bản FULL (165 trang): bit.ly/2Ywib4t
PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ]
2011 Trang 83
BÀI 7: G DAC
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.6 Professional
Automatic Program Generator
© Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
e-mail:office@hpinfotech.com
Project : Bai thuc hanh so 7
Version :
Date : 1/10/2011
Author : Dinh Tuan Hai
Company : D09VTA1 - PTIT
Comments: MSSV: 409160010
Chip type : ATmega16
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
2677192

More Related Content

What's hot

Bài Giải máy điện không đồng bộ (Máy I).docx
Bài Giải máy điện không đồng bộ (Máy I).docxBài Giải máy điện không đồng bộ (Máy I).docx
Bài Giải máy điện không đồng bộ (Máy I).docxMan_Ebook
 
Cau truc phan cung pic16 f8xx
Cau truc phan cung pic16 f8xxCau truc phan cung pic16 f8xx
Cau truc phan cung pic16 f8xxBùi Ngọc Bảo
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Sốviethung094
 
Truyen song-va-anten
Truyen song-va-antenTruyen song-va-anten
Truyen song-va-antenĐỗ Kiệt
 
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Man_Ebook
 
Chuong 05 transistor bjt
Chuong 05 transistor bjtChuong 05 transistor bjt
Chuong 05 transistor bjtJean Okio
 
Đề cương ôn tập Khí cụ điện - Năm 2019
Đề cương ôn tập Khí cụ điện - Năm 2019Đề cương ôn tập Khí cụ điện - Năm 2019
Đề cương ôn tập Khí cụ điện - Năm 2019Man_Ebook
 
250 bai tap_kt_dien_tu_0295
250 bai tap_kt_dien_tu_0295250 bai tap_kt_dien_tu_0295
250 bai tap_kt_dien_tu_0295Con Khủng Long
 
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii FrameworkXây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii FrameworkGMO-Z.com Vietnam Lab Center
 
Thi tuyển viettel phần test iq english.pdf
Thi tuyển viettel phần test iq english.pdfThi tuyển viettel phần test iq english.pdf
Thi tuyển viettel phần test iq english.pdfMan_Ebook
 
Kĩ thuật đo lường
Kĩ thuật đo lường Kĩ thuật đo lường
Kĩ thuật đo lường Vũ Quang
 
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuCông thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuMan_Ebook
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlabPhạmThế Anh
 

What's hot (20)

Bài Giải máy điện không đồng bộ (Máy I).docx
Bài Giải máy điện không đồng bộ (Máy I).docxBài Giải máy điện không đồng bộ (Máy I).docx
Bài Giải máy điện không đồng bộ (Máy I).docx
 
Cau truc phan cung pic16 f8xx
Cau truc phan cung pic16 f8xxCau truc phan cung pic16 f8xx
Cau truc phan cung pic16 f8xx
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
 
Truyen song-va-anten
Truyen song-va-antenTruyen song-va-anten
Truyen song-va-anten
 
Đề tài: Thiết bị khóa cửa bằng bảo mật và thẻ chip RFID, HAY
Đề tài: Thiết bị khóa cửa bằng bảo mật và thẻ chip RFID, HAYĐề tài: Thiết bị khóa cửa bằng bảo mật và thẻ chip RFID, HAY
Đề tài: Thiết bị khóa cửa bằng bảo mật và thẻ chip RFID, HAY
 
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
Thiết kế hệ thống điều khiển tốc độ động cơ dc sử dụng bộ điều khiển pid và p...
 
Chuong 05 transistor bjt
Chuong 05 transistor bjtChuong 05 transistor bjt
Chuong 05 transistor bjt
 
Đề tài: Thiết kế bộ băm xung áp một chiều có đảo chiều, HAY
Đề tài: Thiết kế bộ băm xung áp một chiều có đảo chiều, HAYĐề tài: Thiết kế bộ băm xung áp một chiều có đảo chiều, HAY
Đề tài: Thiết kế bộ băm xung áp một chiều có đảo chiều, HAY
 
Đề cương ôn tập Khí cụ điện - Năm 2019
Đề cương ôn tập Khí cụ điện - Năm 2019Đề cương ôn tập Khí cụ điện - Năm 2019
Đề cương ôn tập Khí cụ điện - Năm 2019
 
Giáo trình an toàn điện-hay
Giáo trình an toàn điện-hayGiáo trình an toàn điện-hay
Giáo trình an toàn điện-hay
 
250 bai tap_kt_dien_tu_0295
250 bai tap_kt_dien_tu_0295250 bai tap_kt_dien_tu_0295
250 bai tap_kt_dien_tu_0295
 
Cac lenh trong matlab
Cac lenh trong matlabCac lenh trong matlab
Cac lenh trong matlab
 
Đề tài: Động cơ không đồng bộ ba pha, HAY, 9đ
Đề tài: Động cơ không đồng bộ ba pha, HAY, 9đĐề tài: Động cơ không đồng bộ ba pha, HAY, 9đ
Đề tài: Động cơ không đồng bộ ba pha, HAY, 9đ
 
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii FrameworkXây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
Xây dựng hệ thống quản lý sân bóng sử dụng Yii Framework
 
Đề tài: Hệ thống Iot điều khiển và giám sát ngôi nhà, HAY, 9đ
Đề tài: Hệ thống Iot điều khiển và giám sát ngôi nhà, HAY, 9đĐề tài: Hệ thống Iot điều khiển và giám sát ngôi nhà, HAY, 9đ
Đề tài: Hệ thống Iot điều khiển và giám sát ngôi nhà, HAY, 9đ
 
Thi tuyển viettel phần test iq english.pdf
Thi tuyển viettel phần test iq english.pdfThi tuyển viettel phần test iq english.pdf
Thi tuyển viettel phần test iq english.pdf
 
Kĩ thuật đo lường
Kĩ thuật đo lường Kĩ thuật đo lường
Kĩ thuật đo lường
 
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiềuCông thức Máy điện 1 - Chương 3 - Máy điện một chiều
Công thức Máy điện 1 - Chương 3 - Máy điện một chiều
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
 
Vi du chi tiet giai thich lap trinh gui trong matlab
Vi du chi tiet  giai thich lap trinh gui trong matlabVi du chi tiet  giai thich lap trinh gui trong matlab
Vi du chi tiet giai thich lap trinh gui trong matlab
 

Similar to báo cáo thực hành kỹ thuật vi xử lý PTIT

Running LED menggunakan Mikrokontroler Atmega16
Running LED menggunakan Mikrokontroler Atmega16Running LED menggunakan Mikrokontroler Atmega16
Running LED menggunakan Mikrokontroler Atmega16tifanihandayani
 
Controlling Motors for Robot
Controlling Motors for RobotControlling Motors for Robot
Controlling Motors for RobotVarad Manglekar
 
8051-mazidi-solution
8051-mazidi-solution8051-mazidi-solution
8051-mazidi-solutionZunAib Ali
 
Combine the keypad and LCD codes in compliance to the following requ.pdf
Combine the keypad and LCD codes in compliance to the following requ.pdfCombine the keypad and LCD codes in compliance to the following requ.pdf
Combine the keypad and LCD codes in compliance to the following requ.pdfforwardcom41
 
Arduino with 7 segment
Arduino with 7 segmentArduino with 7 segment
Arduino with 7 segmentidrismuhamad
 
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4Kaku Tomohiro
 
Dam gate open close lpc prog
Dam gate open close lpc progDam gate open close lpc prog
Dam gate open close lpc prognikhil dixit
 
Intro2 Robotic With Pic18
Intro2 Robotic With Pic18Intro2 Robotic With Pic18
Intro2 Robotic With Pic18Moayadhn
 
4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primerpvmistary
 
4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primerpvmistary
 
Cics testing and debugging-session 7
Cics testing and debugging-session 7Cics testing and debugging-session 7
Cics testing and debugging-session 7Srinimf-Slides
 
Embedded system (Chapter 3) io_port_programming
Embedded system (Chapter 3) io_port_programmingEmbedded system (Chapter 3) io_port_programming
Embedded system (Chapter 3) io_port_programmingIkhwan_Fakrudin
 
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docxalinainglis
 
22 Microcontroller Programs
22 Microcontroller Programs22 Microcontroller Programs
22 Microcontroller Programsbabak danyal
 

Similar to báo cáo thực hành kỹ thuật vi xử lý PTIT (20)

Running LED menggunakan Mikrokontroler Atmega16
Running LED menggunakan Mikrokontroler Atmega16Running LED menggunakan Mikrokontroler Atmega16
Running LED menggunakan Mikrokontroler Atmega16
 
Controlling Motors for Robot
Controlling Motors for RobotControlling Motors for Robot
Controlling Motors for Robot
 
8051-mazidi-solution
8051-mazidi-solution8051-mazidi-solution
8051-mazidi-solution
 
Combine the keypad and LCD codes in compliance to the following requ.pdf
Combine the keypad and LCD codes in compliance to the following requ.pdfCombine the keypad and LCD codes in compliance to the following requ.pdf
Combine the keypad and LCD codes in compliance to the following requ.pdf
 
Arduino with 7 segment
Arduino with 7 segmentArduino with 7 segment
Arduino with 7 segment
 
Emeto_Chukwuemeka_7691553_A8
Emeto_Chukwuemeka_7691553_A8Emeto_Chukwuemeka_7691553_A8
Emeto_Chukwuemeka_7691553_A8
 
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4
Nefrock勉強会 in大岡山「FPGAでゲーム機を作ろう!の会」Day4
 
CPU
CPUCPU
CPU
 
Dam gate open close lpc prog
Dam gate open close lpc progDam gate open close lpc prog
Dam gate open close lpc prog
 
Intro2 Robotic With Pic18
Intro2 Robotic With Pic18Intro2 Robotic With Pic18
Intro2 Robotic With Pic18
 
Basic Computer Organization and Design
Basic  Computer  Organization  and  DesignBasic  Computer  Organization  and  Design
Basic Computer Organization and Design
 
4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer
 
4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer4 bit lcd_interfacing_with_arm7_primer
4 bit lcd_interfacing_with_arm7_primer
 
Cics testing and debugging-session 7
Cics testing and debugging-session 7Cics testing and debugging-session 7
Cics testing and debugging-session 7
 
Embedded system (Chapter 3) io_port_programming
Embedded system (Chapter 3) io_port_programmingEmbedded system (Chapter 3) io_port_programming
Embedded system (Chapter 3) io_port_programming
 
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx
7447_datasheet.pdf© 2001 Fairchild Semiconductor Corporati.docx
 
22 Microcontroller Programs
22 Microcontroller Programs22 Microcontroller Programs
22 Microcontroller Programs
 
LED
LEDLED
LED
 
ARM 64bit has come!
ARM 64bit has come!ARM 64bit has come!
ARM 64bit has come!
 
Analog to Digital Converter
Analog to Digital ConverterAnalog to Digital Converter
Analog to Digital Converter
 

More from nataliej4

đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155nataliej4
 
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...nataliej4
 
Quản lý dịch vụ ô tô toyota 724279
Quản lý dịch vụ ô tô toyota 724279Quản lý dịch vụ ô tô toyota 724279
Quản lý dịch vụ ô tô toyota 724279nataliej4
 
Từ vựng tiếng anh luyện thi thpt quốc gia
Từ vựng tiếng anh luyện thi thpt quốc giaTừ vựng tiếng anh luyện thi thpt quốc gia
Từ vựng tiếng anh luyện thi thpt quốc gianataliej4
 
Công tác dược lâm sàng tại bv cấp cứu trưng vương
Công tác dược lâm sàng tại bv cấp cứu trưng vươngCông tác dược lâm sàng tại bv cấp cứu trưng vương
Công tác dược lâm sàng tại bv cấp cứu trưng vươngnataliej4
 
Bài giảng nghề giám đốc
Bài giảng nghề giám đốcBài giảng nghề giám đốc
Bài giảng nghề giám đốcnataliej4
 
đề Cương chương trình đào tạo trình độ trung cấp kế toán tin học
đề Cương chương trình đào tạo trình độ trung cấp kế toán   tin họcđề Cương chương trình đào tạo trình độ trung cấp kế toán   tin học
đề Cương chương trình đào tạo trình độ trung cấp kế toán tin họcnataliej4
 
Giáo trình kỹ thuật an toàn và bảo hộ lao động
Giáo trình kỹ thuật an toàn và bảo hộ lao độngGiáo trình kỹ thuật an toàn và bảo hộ lao động
Giáo trình kỹ thuật an toàn và bảo hộ lao độngnataliej4
 
Lựa chọn trong điều kiện không chắc chắn
Lựa chọn trong điều kiện không chắc chắnLựa chọn trong điều kiện không chắc chắn
Lựa chọn trong điều kiện không chắc chắnnataliej4
 
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877nataliej4
 
Sổ tay hướng dẫn khách thuê tòa nhà ree tower
Sổ tay hướng dẫn khách thuê   tòa nhà ree towerSổ tay hướng dẫn khách thuê   tòa nhà ree tower
Sổ tay hướng dẫn khách thuê tòa nhà ree towernataliej4
 
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...nataliej4
 
Bài giảng giáo dục hoà nhập trẻ khuyết tật
Bài giảng giáo dục hoà nhập trẻ khuyết tậtBài giảng giáo dục hoà nhập trẻ khuyết tật
Bài giảng giáo dục hoà nhập trẻ khuyết tậtnataliej4
 
đồ áN thiết kế quần âu nam 6838864
đồ áN thiết kế quần âu nam 6838864đồ áN thiết kế quần âu nam 6838864
đồ áN thiết kế quần âu nam 6838864nataliej4
 
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...nataliej4
 
Bài giảng dịch tễ học bệnh nhiễm trùng
Bài giảng dịch tễ học bệnh nhiễm trùngBài giảng dịch tễ học bệnh nhiễm trùng
Bài giảng dịch tễ học bệnh nhiễm trùngnataliej4
 
Bài giảng môn khởi sự kinh doanh
Bài giảng môn khởi sự kinh doanhBài giảng môn khởi sự kinh doanh
Bài giảng môn khởi sự kinh doanhnataliej4
 
Giới thiệu học máy – mô hình naïve bayes learning intro
Giới thiệu học máy – mô hình naïve bayes   learning introGiới thiệu học máy – mô hình naïve bayes   learning intro
Giới thiệu học máy – mô hình naïve bayes learning intronataliej4
 
Lý thuyết thuế chuẩn tắc
Lý thuyết thuế chuẩn tắcLý thuyết thuế chuẩn tắc
Lý thuyết thuế chuẩn tắcnataliej4
 
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)nataliej4
 

More from nataliej4 (20)

đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155đồ áN xây dựng website bán laptop 1129155
đồ áN xây dựng website bán laptop 1129155
 
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...
Nghệ thuật chiến tranh nhân dân việt nam trong công cuộc xây dựng và bảo vệ t...
 
Quản lý dịch vụ ô tô toyota 724279
Quản lý dịch vụ ô tô toyota 724279Quản lý dịch vụ ô tô toyota 724279
Quản lý dịch vụ ô tô toyota 724279
 
Từ vựng tiếng anh luyện thi thpt quốc gia
Từ vựng tiếng anh luyện thi thpt quốc giaTừ vựng tiếng anh luyện thi thpt quốc gia
Từ vựng tiếng anh luyện thi thpt quốc gia
 
Công tác dược lâm sàng tại bv cấp cứu trưng vương
Công tác dược lâm sàng tại bv cấp cứu trưng vươngCông tác dược lâm sàng tại bv cấp cứu trưng vương
Công tác dược lâm sàng tại bv cấp cứu trưng vương
 
Bài giảng nghề giám đốc
Bài giảng nghề giám đốcBài giảng nghề giám đốc
Bài giảng nghề giám đốc
 
đề Cương chương trình đào tạo trình độ trung cấp kế toán tin học
đề Cương chương trình đào tạo trình độ trung cấp kế toán   tin họcđề Cương chương trình đào tạo trình độ trung cấp kế toán   tin học
đề Cương chương trình đào tạo trình độ trung cấp kế toán tin học
 
Giáo trình kỹ thuật an toàn và bảo hộ lao động
Giáo trình kỹ thuật an toàn và bảo hộ lao độngGiáo trình kỹ thuật an toàn và bảo hộ lao động
Giáo trình kỹ thuật an toàn và bảo hộ lao động
 
Lựa chọn trong điều kiện không chắc chắn
Lựa chọn trong điều kiện không chắc chắnLựa chọn trong điều kiện không chắc chắn
Lựa chọn trong điều kiện không chắc chắn
 
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877
Thực trạng phân bố và khai thác khoáng sét ở đồng bằng sông cửu long 4857877
 
Sổ tay hướng dẫn khách thuê tòa nhà ree tower
Sổ tay hướng dẫn khách thuê   tòa nhà ree towerSổ tay hướng dẫn khách thuê   tòa nhà ree tower
Sổ tay hướng dẫn khách thuê tòa nhà ree tower
 
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...
Phân tích tác động của thiên lệch hành vi đến quyết định của nhà đầu tư cá nh...
 
Bài giảng giáo dục hoà nhập trẻ khuyết tật
Bài giảng giáo dục hoà nhập trẻ khuyết tậtBài giảng giáo dục hoà nhập trẻ khuyết tật
Bài giảng giáo dục hoà nhập trẻ khuyết tật
 
đồ áN thiết kế quần âu nam 6838864
đồ áN thiết kế quần âu nam 6838864đồ áN thiết kế quần âu nam 6838864
đồ áN thiết kế quần âu nam 6838864
 
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...
Tài liệu hội thảo chuyên đề công tác tuyển sinh – thực trạng và giải pháp 717...
 
Bài giảng dịch tễ học bệnh nhiễm trùng
Bài giảng dịch tễ học bệnh nhiễm trùngBài giảng dịch tễ học bệnh nhiễm trùng
Bài giảng dịch tễ học bệnh nhiễm trùng
 
Bài giảng môn khởi sự kinh doanh
Bài giảng môn khởi sự kinh doanhBài giảng môn khởi sự kinh doanh
Bài giảng môn khởi sự kinh doanh
 
Giới thiệu học máy – mô hình naïve bayes learning intro
Giới thiệu học máy – mô hình naïve bayes   learning introGiới thiệu học máy – mô hình naïve bayes   learning intro
Giới thiệu học máy – mô hình naïve bayes learning intro
 
Lý thuyết thuế chuẩn tắc
Lý thuyết thuế chuẩn tắcLý thuyết thuế chuẩn tắc
Lý thuyết thuế chuẩn tắc
 
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)
Bài giảng thuế thu nhập (cá nhân, doanh nghiệp)
 

Recently uploaded

Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesFatimaKhan178732
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docxPoojaSen20
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionSafetyChain Software
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphThiyagu K
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityGeoBlogs
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactdawncurless
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDThiyagu K
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxiammrhaywood
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Celine George
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfchloefrazer622
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
Russian Call Girls in Andheri Airport Mumbai WhatsApp 9167673311 💞 Full Nigh...
Russian Call Girls in Andheri Airport Mumbai WhatsApp  9167673311 💞 Full Nigh...Russian Call Girls in Andheri Airport Mumbai WhatsApp  9167673311 💞 Full Nigh...
Russian Call Girls in Andheri Airport Mumbai WhatsApp 9167673311 💞 Full Nigh...Pooja Nehwal
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxSayali Powar
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajanpragatimahajan3
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdfQucHHunhnh
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptxVS Mahajan Coaching Centre
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsTechSoup
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3JemimahLaneBuaron
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introductionMaksud Ahmed
 

Recently uploaded (20)

Separation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and ActinidesSeparation of Lanthanides/ Lanthanides and Actinides
Separation of Lanthanides/ Lanthanides and Actinides
 
mini mental status format.docx
mini    mental       status     format.docxmini    mental       status     format.docx
mini mental status format.docx
 
Mastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory InspectionMastering the Unannounced Regulatory Inspection
Mastering the Unannounced Regulatory Inspection
 
Z Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot GraphZ Score,T Score, Percential Rank and Box Plot Graph
Z Score,T Score, Percential Rank and Box Plot Graph
 
Paris 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activityParis 2024 Olympic Geographies - an activity
Paris 2024 Olympic Geographies - an activity
 
Accessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impactAccessible design: Minimum effort, maximum impact
Accessible design: Minimum effort, maximum impact
 
Measures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SDMeasures of Dispersion and Variability: Range, QD, AD and SD
Measures of Dispersion and Variability: Range, QD, AD and SD
 
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptxSOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
SOCIAL AND HISTORICAL CONTEXT - LFTVD.pptx
 
Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17Advanced Views - Calendar View in Odoo 17
Advanced Views - Calendar View in Odoo 17
 
Arihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdfArihant handbook biology for class 11 .pdf
Arihant handbook biology for class 11 .pdf
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
Russian Call Girls in Andheri Airport Mumbai WhatsApp 9167673311 💞 Full Nigh...
Russian Call Girls in Andheri Airport Mumbai WhatsApp  9167673311 💞 Full Nigh...Russian Call Girls in Andheri Airport Mumbai WhatsApp  9167673311 💞 Full Nigh...
Russian Call Girls in Andheri Airport Mumbai WhatsApp 9167673311 💞 Full Nigh...
 
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptxPOINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
POINT- BIOCHEMISTRY SEM 2 ENZYMES UNIT 5.pptx
 
social pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajansocial pharmacy d-pharm 1st year by Pragati K. Mahajan
social pharmacy d-pharm 1st year by Pragati K. Mahajan
 
1029 - Danh muc Sach Giao Khoa 10 . pdf
1029 -  Danh muc Sach Giao Khoa 10 . pdf1029 -  Danh muc Sach Giao Khoa 10 . pdf
1029 - Danh muc Sach Giao Khoa 10 . pdf
 
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions  for the students and aspirants of Chemistry12th.pptxOrganic Name Reactions  for the students and aspirants of Chemistry12th.pptx
Organic Name Reactions for the students and aspirants of Chemistry12th.pptx
 
Introduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The BasicsIntroduction to Nonprofit Accounting: The Basics
Introduction to Nonprofit Accounting: The Basics
 
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"Mattingly "AI & Prompt Design: The Basics of Prompt Design"
Mattingly "AI & Prompt Design: The Basics of Prompt Design"
 
Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3Q4-W6-Restating Informational Text Grade 3
Q4-W6-Restating Informational Text Grade 3
 
microwave assisted reaction. General introduction
microwave assisted reaction. General introductionmicrowave assisted reaction. General introduction
microwave assisted reaction. General introduction
 

báo cáo thực hành kỹ thuật vi xử lý PTIT

  • 1. PTIT Giảng viên hướng dẫn: Phạm Thế Duy Sinh viên thực hiện: Đinh Tuấn Hải Đ09VTA1 409160010 Báo cáo Kỹ thuật Vi xử lý
  • 2. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH BÁO CÁO MÔN KỸ THUẬT VI XỬ LÝ TPHCM - 2011 GIẢNG VIÊN HƯỚNGDẪN: Phạm Thế Duy SINH VIÊN THỰC HIỆN: Đinh Tuấn Hải Lớp Đ09VTA1 MSSV: 409160010
  • 3. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 2 Lưu ý: + Các mạch mô phỏng được thực hiện trên Proteus 7.8 SP2 và CodeVision 2.05.0 Professional với các điều kiện được ghi chú sẵn. + Các ghi chú trong code chỉ được ghi 1 lần, theo thứ tự xuất hiện của dòng lệnh. (Có những code thừa nhưng do xuất hiện trước nên vẫn được ghi chú bình thường) + Các bài tập có sử dụng bộ định thời để chạy với ý nghĩa thời gian thực có thể hoạt động sai khi sử dụng trên các máy tính khác, và phải hiệu chỉnh lại cho thích hợp. Các bài tập này mang ý nghĩa thuật toán, giải thuật nhiều hơn ý nghĩa chính xác về mặt thời gian. Tất cả các bài đã được hiệu chỉnh để chạy chính xác trên hệ thống máy tính của cá nhân người lập trình, do vậy có thể mang tính chủ quan. TP.HCM ngày 10 tháng 10 năm 2011 Sinh viên thực hiện Đinh Tuấn Hải
  • 4. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 3 MỤC LỤC B I 1 ĐIỀU HI N C NG T C ĐƠN V ED ĐƠN......................................................................4 B I 2 HI N TH T ÊN ED 7 Đ ẠN............................................................................................17 B I 3 ĐIỀU HI N ĐỌC B N HÍ A T N HI N TH HÍ T ÊN ED 7 Đ ẠN........27 B I 4 ĐIỀU HI N HI N TH T ÊN CD....................................................................................38 B I 5 ĐIỀU HI N ĐỌC ĐIỆN DC B NG ADC V HI N TH ÊN CD ..............................51 B I 6 Đ NHIỆT Đ V HI N TH T ÊN ED 7 Đ ẠN D NG ẠCH S S NH TƯƠNGTỰ TÍCH H T NG AV .................................................................................................................67 BÀI 7: TẠ UNG VU NG SIN TA GI C B NG DAC............................................................83 BÀI 8: GIAO TIẾP NỐI TIẾP USART..............................................................................................96 BÀI 9: THỰC HIỆN ĐỒNG HỒ ĐIỆN TỬ ..................................................................................... 115 B I 10 ĐÈN TÍN HIỆU GIAO THÔNG......................................................................................... 136
  • 5. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 4 /***************************************************** This program was produced by the CodeWizardAVR V2.05.3a Evaluation Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 8/21/2011 Author : Freeware, for evaluation and Company : Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0
  • 6. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 5 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> #include <stdio.h> // Declare your global variables here int i,j; //khai báo biến unsigned char phu, phu2; void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTA=0x00; DDRA=0xFF; //Port A là OUT // Port B initialization
  • 7. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 6 // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; //Port B là IN // Port C initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00; DDRC=0x00; //Port C là IN // Port D initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00; DDRD=0x00; //Port D là IN // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF
  • 8. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 7 // OC0 output: Disconnected TCCR0=0x00; //Các thanh ghi cho Timer/Counter0 TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; //Các thanh ghi cho Timer/Counter1 TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00;
  • 9. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 8 ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; //thanh ghi cho Timer/Counter2 TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off //ngắt ngoài // INT1: Off // INT2: Off
  • 10. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 9 MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; //Cài đặt ngắt cho các bộ Timer/Counter // USART initialization // USART disabled UCSRB=0x00; //Chức năng USART // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; //Bộ so sánh tương tự - Analog Comparator SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization
  • 11. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 10 // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; while (1) { // Place your code here switch(PINB) { case 0b00000001: //Cau 1: 1 LED sang doi qua lai { PORTA = 0b10000000; delay_ms(20); //tạo độ trễ để mắt người có thể theo dõi kịp for (i=0; i<=6; i++) //chay LED qua phai 7 lan { PORTA = PORTA >> 1; //Port A dịch qua phải 1 bit delay_ms(20); }
  • 12. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 11 for (i=6; i>=1; i--) //chay LED qua trai 7 lan { PORTA = PORTA << 1; delay_ms(20); } break; }; case 0b00000010: //Cau 2: 8 LED sang dan sau do tat dan { PORTA = 0b00000000; phu = 0b10000000; for (i=0; i<=7; i++) //sang dan tu trai qua phai { PORTA = phu; phu = phu | (phu >> 1); delay_ms(20); } for (i=0; i<=7; i++) //tat dan { PORTA = PORTA >> 1;
  • 13. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 12 delay_ms(20); } break; }; case 0b00000100: //Cau 3: 8 LED sang tu hai ben vao roi tat tu hai ben vao { phu = 0b10000000; phu2 = 0b00000001; PORTA = 0b00000000; for (i=1; i<=4; i++) //sang tu hai ben vao { PORTA = phu + phu2 + PORTA; phu = phu >> 1; phu2 = phu2 <<1; delay_ms(20); }; phu = 0b10000000; phu2 = 0b00000001; for (i=1; i<=4; i++) //tat tu hai ben vao { PORTA = PORTA - phu - phu2 ;
  • 14. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 13 phu = phu >> 1; phu2 = phu2 <<1; delay_ms(20); } break; } case 0b00001000: //Cau 4: 1 LED sang chay tu trai qua phai roi dung lai { phu2 = 0b00000000; for (i=7; i>=0; i--) { phu = 0b10000000; for (j=0; j<=i; j++) { PORTA = phu + phu2; delay_ms(20); phu = phu >> 1; } phu2 = PORTA;
  • 15. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 14 } delay_ms(20); break; } case 0b00010000: //Cau 5: 8 LED chop tat { PORTA = 0b11111111; delay_ms(20); PORTA = 0b00000000; delay_ms(20); break; }; case 0b00100000: //Cau 6: Cac LED sang tat xen ke va nguoc lai { PORTA = 0b10101010; delay_ms(20); PORTA = 0b01010101; delay_ms(20); break; }; case 0b01000000: //Cau 7: 4 LED sang 4 LED tat va nguoc lai
  • 16. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 15 { PORTA = 0b11110000; delay_ms(20); PORTA = 0b00001111; delay_ms(20); break; }; case 0b10000000: //Cau 8: 2 LED sang chay vao tu hai ben va chay ra hai ben { phu = 0b10000000; phu2 = 0b00000001; for (i=0; i<=7; i++) { PORTA = phu + phu2; delay_ms(20); phu = phu >> 1; //phu cho led chay qua phai, phu2 cho led chay qua trai phu2 = phu2 << 1; } break; }
  • 17. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 16 } }; } Ghi chú: Bật lần lượt các công tắc từ 1 tới 8 trong file mô phỏng để thực hiện lần lượt 8 yêu cầu của đề bài. PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 D1 LED-YELLOW D2 LED-YELLOW D3 LED-YELLOW D4 LED-YELLOW D5 LED-YELLOW D6 LED-YELLOW D7 LED-YELLOW D8 LED-YELLOW 0 SW1 SW-SPDT SW2 SW-SPDT SW3 SW-SPDT SW4 SW-SPDT SW5 SW-SPDT SW6 SW-SPDT SW7 SW-SPDT SW8 SW-SPDT
  • 18. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 17 /***************************************************** This program was produced by the CodeWizardAVR V2.05.3a Evaluation Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Bai thuc hanh so 2 Version : Date : 8/22/2011 Author : Freeware, for evaluation and non-commercial use only
  • 19. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 18 Company : Comments: Dinh Tuan Hai - D09VTA1 Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> // Declare your global variables here unsigned char led[10] = {0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b 11100000,0b11111110,0b11110110,}; // dinh nghia cac chu so tren LED unsigned char pos[5] = {0b00000111,0b00001011,0b00001101,0b00001110,0b00001111}; //dinh nghia vi tri chon LED tren bang LED (position) unsigned char dis[4] = {0,0,0,0}; //dinh nghia so de hien thi tren LED (display)
  • 20. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 19 int i,j,k; void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0
  • 21. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 20 PORTC=0x00; DDRC=0xFF; // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped
  • 22. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 21 // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization
  • 23. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 22 // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled
  • 24. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 23 UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; while (1)
  • 25. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 24 { // Place your code here switch(PINB) { case 0b00000001: // nhan SW1 de hien 4 so lien tuc { for (i=0;i<=3;i++) { PORTD = pos[i]; //hien thi so o vi tri i PORTC = led[i+1]; //dịch delay_ms(2); PORTD = pos[4]; } break; } case 0b00000010: // nhan SW2 de chay 0-9 { for (i=0; i<=9; i++) { dis[3] = led[i]; for (k=0; k<=5; k++) //giam toc do chay so lai
  • 26. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 25 { for (j=3; j>=0; j--) { PORTD = pos[j]; PORTC = dis[j]; delay_ms(2); PORTD = pos[4]; } } for (j=0; j<=3; j++) dis[j] = dis[j+1]; } break; } }
  • 27. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 26 } } Ghi chú: + Nhấn SW1 để thực hiện yêu cầu 1 (hiện 4 số cùng lúc trên bảng LED) + Nhấn SW2 để thực hiện yêu cầu 2 (chạy số từ 0-9 từ phải qua trái) PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 SW1 SW-SPDT SW2 SW-SPDT
  • 28. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 27 /***************************************************** This program was produced by the CodeWizardAVR V2.05.3a Evaluation Automatic Program Generator © Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 27/08/2011 Author : Dinh Tuan Hai Company : D09VTA1 Comments: HVCNBCVT Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0
  • 29. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 28 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> // Declare your global variables here int i,dem,row,col,n,j,k; //dinh nghia cac ky tu se hien tren LED unsigned char led[16] = {0b11111100,0b01100000,0b11011010,0b11110010,0b01100110,0b10110110,0b10111110,0b 11100000,0b11111110,0b11110110, 0b11101110, 0b00111110, 0b10011100, 0b01111010, 0b10011110, 0b10001110}; //dinh nghia cac vi tri cua LED, pos[4] la khong chon vi tri nao(xoa) unsigned char pos[5] = {0b00000111,0b00001011,0b00001101,0b00001110,0b00001111}; unsigned char dis[4] = {0,0,0,0}; int TIMVITRI(unsigned char p) //chuong trinh tim vi tri bit 0 trong p { dem = 10; n=0; while (p != 0b11111111) //thuc hien cho den khi p = 0xFF {
  • 30. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 29 p = (p >> 1); p = p | 0b10000000; n = n + 1; } dem = n - 1; return(dem); //tra lai gia tri dem } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=Out Func1=Out Func0=Out // State7=P State6=P State5=P State4=P State3=1 State2=1 State1=1 State0=1 PORTA=0xFF; DDRA=0x00; //Cong A nhan tin hieu vao // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
  • 31. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 30 PORTB=0xFF; DDRB=0xFF; //Cong B dua tin hieu ra // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0xFF; //Cong C dua tin hieu ra // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0x0F; //4 bit cao: IN, 4 bit thap: OUT // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00;
  • 32. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 31 TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00;
  • 33. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 32 OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;
  • 34. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 33 // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00;
  • 35. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 34 // TWI initialization // TWI disabled TWCR=0x00; while (1) { // Place your code here while (PIND.4 == 0) //thuc hien yeu cau so 1 { PORTB=0b11110111; for (col = 3; col>=0; col--) { row=TIMVITRI(PINA); if (row>=0) { i=col*4+row; //thuật toán tính giá trị nút bấm dis[3] = led[i]; };
  • 36. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 35 PORTB =(PORTB>>1)| 0b10000000; }; PORTD = pos[3]; PORTC = dis[3]; delay_ms(1); } while (PIND.4 == 1) //thuc hien yeu cau so 2 { PORTB=0b11110111; for (col = 3; col>=0; col--) { row=TIMVITRI(PINA); if (row>=0) { i=col*4+row; for(j=0;j<=2;j++) { dis[j] = dis[j+1]; } dis[3] = led[i];
  • 37. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 36 }; PORTB =(PORTB>>1)| 0b10000000; }; for(n=0;n<=6;n++) { for(k=0;k<=3;k++) //hien thi ra LED { PORTD = pos[k]; PORTC = dis[k]; delay_ms(1); PORTD = pos[4]; } } } } }
  • 38. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 37 Ghi chú: + Chuyển mức Logic cổng PIND.4 thành 0 để thực hiện yêu cầu số 1 của bài (đọc mã phím hiển thị lên LED 7 đoạn) + Chuyển mức Logic cổng PIND.4 thành 1 để thực hiện yêu cầu số 2 của bài (nhấm phim, hiện ký tự tương ứng trên LED kế tiếp những ký tự đã nhấn trước đó) 0 4 8 C 1 5 9 D 2 6 A E 3 7 B F PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 1
  • 39. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 38 /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 9/6/2011 Author : Dinh Tuan Hai Company : D09VTA1 - MSSV: 409160010 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0
  • 40. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 39 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> #define RS PORTC.0 #define RW PORTC.1 #define E PORTC.2 #define data PORTD void wait_LCD(void) //chương trình con nhằm đợi cho LCD sẵn sàng { unsigned char tam; DDRD = 0x00; RS = 0; RW = 1; do {
  • 41. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 40 E = 1; delay_ms(100); tam = PIND; E = 0; } while ((tam && 0x80)!= 0x80); DDRD = 0xFF; } void set(unsigned char set) //chương trình con cài đặt cho LCD { delay_us(210); RS = 0; RW = 0; E = 0; data = set; E = 1; E = 0; } void display(unsigned char out) //chương trình con hiển thị 1 mã ASCII cho LCD
  • 42. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 41 { delay_us(210); RS = 1; RW = 0; E = 0; data = out; E = 1; E = 0; } void clear_LCD(void) //chương trình con xóa LCD { delay_ms(1); RS = 0; RW = 0; E = 0; data = 0x01; E = 1; E = 0; } void pos(int x,int y) //chương trình con chọn vị trí trên LCD
  • 43. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 42 { int i; delay_us(210); if(x == 0) set(0x02); if(x == 1) set(0xc0); for(i=0;i<=y;i++) set(0x14); } // Declare your global variables here char line1[] = {" Dinh Tuan Hai"}; //chuỗi được hiển thị ở hàng 1 char line2[] = {" 409160010 "}; //chuỗi được hiển thị ở hàng 2 int i,j; unsigned char x; void main(void) { // Declare your local variables here
  • 44. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 43 // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0xFF; // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out
  • 45. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 44 // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0x07; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge
  • 46. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 45 // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00;
  • 47. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 46 TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off
  • 48. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 47 ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; set(0x38); set(0x0c); set(0x02); while (1) { // Place your code here while (PINC.3 == 1) //Thuc hien yeu cau so 1
  • 49. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 48 { for (i=0;i<=16;i++) { display(line1[i]); //hiển thị hàng chữ 1 } set(0xc0); for (i=0;i<=16;i++) { display(line2[i]); //hiển thị hàng chữ 2 } } while (PINC.3 == 0) //Thuc hien yeu cau so 2 { for (j=14;j>=0;j--) //chay cho de khi nao ca chuoi duoc can le trai { pos(1,j); for(i=0;i<=(14-j);i++) { display(line1[i]);
  • 50. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 49 } delay_ms(40); clear_LCD(); //xóa LCD } for(j=1;j<=15;j++) //chay tiep cho den khi ca chuoi chay het { pos(1,0); for(i=j;i<=16;i++) display(line1[i]); delay_ms(40); clear_LCD(); } } } }
  • 51. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 50 Ghi chú: + Chỉnh mức Logic của cổng PINC.3 thành 0 để thực hiện yêu cầu số 1 (hiển thị 2 dòng chữ trên LCD) + Chỉnh mức Logic của cổng PINC.3 thành 1 để thực hiện yêu cầu số 2 (hiển thị dòng chữ trôi) D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 0
  • 52. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 51 /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Bai thuc hanh so 5 Version : Date : 9/9/2011 Author : Dinh Tuan Hai Company : D09VTA1 - PTIT - 409160010 Comments: Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0
  • 53. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 52 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> #include <stdio.h> #define RS PORTC.0 //định nghĩa lại cái port trên LCD để dễ chỉnh sửa #define RW PORTC.1 #define E PORTC.2 #define data PORTD #define ADC_VREF_TYPE 0x20 // Read the 8 most significant bits // of the AD conversion result unsigned char read_adc(unsigned char adc_input) //chương trình con đọc ADC {
  • 54. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 53 ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCH; } void wait_LCD(void) { unsigned char tam; tam = 0x80; DDRD = 0x00; while ((tam && 0x80)==0x80) { RS = 0; RW = 1; E = 0; tam = PIND;
  • 55. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 54 E = 1; E = 0; } DDRD = 0xFF; } void set(unsigned char set) { delay_us(210); RS = 0; RW = 0; E = 0; data = set; E = 1; E = 0; } void display(unsigned char out) { delay_us(210); RS = 1; RW = 0;
  • 56. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 55 E = 0; data = out; E = 1; E = 0; } void clear_LCD(void) { delay_us(210); RS = 0; RW = 0; E = 0; data = 0x01; E = 1; E = 0; } void pos(int x,int y) { int i; if(x == 0) set(0x02);
  • 57. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 56 if(x == 1) { set(0xc0); y = y-1; //sua lai ham nay de cho chinh xac vi tri cusor dong 2 } for(i=0;i<=y;i++) set(0x14); } void display_hexa(unsigned char in) //chuong trinh hien thi ma HEXA { unsigned char i,j; i = in & 0x0f; //lấy 4 bit thấp if ((0x00 <= i) && (i <= 0x09)) i = i + 0x30; else i = i + 0x37; j = in & 0xf0; //lấy 4 bit cao j = j >> 4; if ((0x00 <= j) && (j <= 0x09)) j = j + 0x30;
  • 58. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 57 else j = j + 0x37; pos(0,13); display(j); delay_ms(1); display(i); //data = j; delay_ms(100); clear_LCD(); } // Declare your global variables here int k; unsigned char i,j,in,tam; unsigned int value,bit_value; float valuef; unsigned char dis[6] = {0,0x2c,0,0,0,0}; void main(void) { // Declare your local variables here
  • 59. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 58 // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0x00; // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0b00000111; // Port D initialization
  • 60. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 59 // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=0xFF // OC0 output: Disconnected TCCR0=0x00; TCNT0=0x00; OCR0=0x00; // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off
  • 61. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 60 // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected
  • 62. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 61 ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: Off
  • 63. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 62 // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; SFIOR=0x00; // ADC initialization // ADC Clock frequency: 1000.000 kHz // ADC Voltage Reference: AREF pin // ADC Auto Trigger Source: ADC Stopped // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x83; // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; set(0x38);
  • 64. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 63 set(0x0c); set(0x02); while (1) { // Place your code here while (PINC.3 == 0) // Thuc hien yeu cau so 1 { in = read_adc(0); //đọc ADC vào display_hexa(in); //hiển thị mã hexa lên LCD } for(k = 0; k<=7; k++) { in = read_adc(k); // Chuong trinh doi tu so nhi phan ra thap phan value = 0; bit_value = 1;
  • 65. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 64 for (i=0;i<=7;i++) { tam = in & 0x01; bit_value = 1; if(tam == 0x01) { for(j=1;j<=i;j++) bit_value = 2* bit_value; } else bit_value = 0; value = bit_value + value; in = in >> 1; } //Quy doi gia tri de chuan bi hien thi ra LCD valuef = value * 5; valuef = (float)valuef / 255; valuef = valuef * 10000; value = (int)valuef;
  • 66. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 65 //Nap cac gia tri do duoc vao cac vi tri hien thi for(i=5;i>=2;i--) { dis[i] = value % 10 + 0x30; value = value/10; } dis[0] = value % 10 + 0x30; //Hien thi ra man hinh LCD if (k==4) pos(1,0); for (i=0;i<=2; i++) { display(dis[i]); } display(0x20); //SpaceBar } delay_ms(150);
  • 67. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 66 clear_LCD(); } } Ghi chú: + Chỉnh mức Logic trên PINC.3 là 0 để thực hiện yêu cầu số 1 (hiện mã HEXA tương ứng điện áp đầu vào cổng PINA.0) + Chỉnh mức Logic trên PINC.3 là 1 để thực hiện yêu cầu số 2 (hiện 8 giá trị điện áp tương ứng trên 8 cổng vào) PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 100% RV1 50k 100% RV2 50k 100% RV3 50k 0% RV4 100 100% RV5 50k 100% RV6 50k 100% RV7 50k 100% RV8 50k D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD2 LM016L U1(AREF) RV2(2) 0 1
  • 68. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 67 /***************************************************** This program was produced by the CodeWizardAVR V2.05.0 Professional Automatic Program Generator © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com Project : Version : Date : 9/19/2011 Author : Dinh Tuan Hai - 409160010 Company : D09VTA1 - PTIT Comments: Bai thuc hanh so 6 Chip type : ATmega16 Program type : Application AVR Core Clock frequency: 8.000000 MHz Memory model : Small External RAM size : 0
  • 69. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 68 Data Stack size : 256 *****************************************************/ #include <mega16.h> #include <delay.h> #include <math.h> #define RS PORTC.0 #define RW PORTC.1 #define E PORTC.2 #define data PORTD long int i,j=0,x; long int time,temp; int k; float v,tempf; unsigned char timedisplay[5] = {0,46,0,0,0}; //chuoi hien thi thoi gian tu nap unsigned char voltagedisplay[5] = {0,46,0,0,0}; //chuoi hien thi dien ap tren tu unsigned char tdisplay[4] = {0,0,0,0}; //chuoi hien thi nhiet do char start[] = {" Starting..."}; //Chuoi hien thi khi LCD khoi dong
  • 70. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 69 // Timer 0 overflow interrupt service routine interrupt [TIM0_OVF] void timer0_ovf_isr(void) { // Place your code here } // Timer 0 output compare interrupt service routine interrupt [TIM0_COMP] void timer0_comp_isr(void) { // Place your code here i++; //tang i len sau moi lan ngat } // Analog Comparator interrupt service routine interrupt [ANA_COMP] void ana_comp_isr(void) { // Place your code here time = i*10; //thoi gian tinh bang ms. }
  • 71. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 70 // Declare your global variables here void wait_LCD(void) { unsigned char tam; tam = 0x80; DDRD = 0x00; while ((tam && 0x80)==0x80) { RS = 0; RW = 1; E = 0; tam = PIND; E = 1; E = 0; } DDRD = 0xFF; } void set(unsigned char set) {
  • 72. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 71 delay_us(210); RS = 0; RW = 0; E = 0; data = set; E = 1; E = 0; } void display(unsigned char out) { delay_us(210); RS = 1; RW = 0; E = 0; data = out; E = 1; E = 0; } void clear_LCD(void) {
  • 73. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 72 RS = 0; RW = 0; E = 0; data = 0x01; E = 1; E = 0; } void pos(int x,int y) { int i; if(x == 0) set(0x02); if(x == 1) set(0xc0); for(i=0;i<=y;i++) set(0x14); } void time_display(long int time) //hien thi thoi gian { clear_LCD();
  • 74. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 73 temp = time; timedisplay[4] = temp % 10 + 48; temp = temp / 10; timedisplay[3] = temp % 10 + 48; temp = temp / 10; timedisplay[2] = temp % 10 + 48; temp = temp / 10; timedisplay[0] = temp + 48; for(k=0;k<=4;k++) display(timedisplay[k]); display(115); //time = 0; //delay_ms(300); } void voltage_display(long int time) //hien thi dien ap { pos(0,9); tempf = (float)time / 1000; v = 5*(1-exp((-tempf)/10)); v = v * 1000; v = (int)v;
  • 75. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 74 temp = v; voltagedisplay[4] = temp % 10 + 48; temp = temp / 10; voltagedisplay[3] = temp % 10 + 48; temp = temp / 10; voltagedisplay[2] = temp % 10 + 48; temp = temp / 10; voltagedisplay[0] = temp + 48; for(k=0;k<=4;k++) display(voltagedisplay[k]); display(86); } void temperature_display(int v) //hien thi nhiet do { pos(1,5); temp = v; for(k=3;k>=0;k--) { tdisplay[k] = temp % 10; temp = temp /10;
  • 76. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 75 } for(k=0;k<=2;k++) { display(tdisplay[k]+48); } display(111); display(67); } void main(void) { // Declare your local variables here // Input/Output Ports initialization // Port A initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00; DDRA=0xFF; Tải bản FULL (165 trang): bit.ly/2Ywib4t
  • 77. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 76 // Port B initialization // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTB=0x00; DDRB=0x00; // Port C initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTC=0x00; DDRC=0xFF; // Port D initialization // Func7=Out Func6=Out Func5=Out Func4=Out Func3=Out Func2=Out Func1=Out Func0=Out // State7=0 State6=0 State5=0 State4=0 State3=0 State2=0 State1=0 State0=0 PORTD=0x00; DDRD=0xFF; // Timer/Counter 0 initialization // Clock source: System Clock // Clock value: 1000.000 kHz
  • 78. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 77 // Mode: CTC top=OCR0 // OC0 output: Disconnected TCCR0=0x0B; //CTC mode TCNT0=0x00; //khoi tao gia tri 0 OCR0=0x9B; //dem len 125 nhip // Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer1 Stopped // Mode: Normal top=0xFFFF // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off // Input Capture on Falling Edge // Timer1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00; TCCR1B=0x00; TCNT1H=0x00;
  • 79. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 78 TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00; // Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer2 Stopped // Mode: Normal top=0xFF // OC2 output: Disconnected ASSR=0x00; TCCR2=0x00; TCNT2=0x00; OCR2=0x00; // External Interrupt(s) initialization // INT0: Off // INT1: Off Tải bản FULL (165 trang): bit.ly/2Ywib4t
  • 80. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 79 // INT2: Off MCUCR=0x00; MCUCSR=0x00; // Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00; // USART initialization // USART disabled UCSRB=0x00; // Analog Comparator initialization // Analog Comparator: On // Interrupt on Falling Output Edge // Analog Comparator Input Capture by Timer/Counter 1: On ACSR=0x08; SFIOR=0x00; // ADC initialization // ADC disabled ADCSRA=0x00;
  • 81. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 80 // SPI initialization // SPI disabled SPCR=0x00; // TWI initialization // TWI disabled TWCR=0x00; // Global enable interrupts #asm("sei") set(0x38); set(0x0c); set(0x02); PORTA.0 = 1; delay_ms(50); //xa tu for(k=0;k<=16;k++) display(start[k]); //hien dong chu khoi dong while (1)
  • 82. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 81 { // Place your code here PORTA.0 = 0; TIMSK = 0x02; TCNT0 = 0x00; i=0; x = 1; time = 0; while(x==1) //lap vo han cho den khi tu nap bang LM35 { if(time!=0) x = 0; } pos(0,2); time_display(time); //lan luot hien thi cac gia tri ra man hinh LCD voltage_display(time); temperature_display(v); PORTA.0 = 1; //xa tu chuan bi cho lan do tiep theo delay_ms(50); }
  • 83. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 82 } Ghi chú: + Điều chỉnh nhiệt độ trên LM35 để kiểm tra xem hiển thị LCD có chính xác hay không. PB0/T0/XCK 1 PB1/T1 2 PB2/AIN0/INT2 3 PB3/AIN1/OC0 4 PB4/SS 5 PB5/MOSI 6 PB6/MISO 7 PB7/SCK 8 RESET 9 XTAL2 12 XTAL1 13 PD0/RXD 14 PD1/TXD 15 PD2/INT0 16 PD3/INT1 17 PD4/OC1B 18 PD5/OC1A 19 PD6/ICP1 20 PD7/OC2 21 PC0/SCL 22 PC1/SDA 23 PC2/TCK 24 PC3/TMS 25 PC4/TDO 26 PC5/TDI 27 PC6/TOSC1 28 PC7/TOSC2 29 PA7/ADC7 33 PA6/ADC6 34 PA5/ADC5 35 PA4/ADC4 36 PA3/ADC3 37 PA2/ADC2 38 PA1/ADC1 39 PA0/ADC0 40 AREF 32 AVCC 30 U1 ATMEGA16 D7 14 D6 13 D5 12 D4 11 D3 10 D2 9 D1 8 D0 7 E 6 RW 5 RS 4 VSS 1 VDD 2 VEE 3 LCD1 LM016L RL1 1 R1 10k R1(1) R2 10k R2(1) C1 1m +88.8 Volts 0 0 U3(VOUT) U1(PB2/AIN0/INT2) 85.0 3 1 VOUT 2 U3 LM35 Tải bản FULL (165 trang): bit.ly/2Ywib4t
  • 84. PTIT [BÁO CÁO KỸ THUẬT VI XỬ LÝ] 2011 Trang 83 BÀI 7: G DAC /***************************************************** This program was produced by the CodeWizardAVR V1.24.6 Professional Automatic Program Generator © Copyright 1998-2005 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail:office@hpinfotech.com Project : Bai thuc hanh so 7 Version : Date : 1/10/2011 Author : Dinh Tuan Hai Company : D09VTA1 - PTIT Comments: MSSV: 409160010 Chip type : ATmega16 Program type : Application Clock frequency : 8,000000 MHz Memory model : Small 2677192