You are on page 1of 5

Họ và tên: Nguyễn Văn Anh

Lớp : CĐT2-K13
MSV: 2018603336
GV: Vũ Trung Kiên

Câu 1. Vẽ, lắp ráp mạch điện và lập trình theo yêu cầu:
a. Vẽ, lắp ráp mạch điện như sau: 5V

R
- Sử dụng biến trở để tạo điện áp 0 đến 5V I/O pin
560
nối với chân AN1. VR LED
- LED1-LED8 nối lần lượt với các chân ANx

RD0:RD7; LED9-LED10 nối lần lượt với 10k

các chân RC0-RC1; LED11 nối với RE1. +88.8


Volts

b. Vẽ lưu đồ thuật toán và viết chương trình theo yêu cầu như sau:
- Đọc giá trị số biến đổi được từ điện áp trên kênh AN1 và hiển thị dưới dạng
số nhị phân trên LED1-LED10. LED sáng tương ứng bit “1”, LED tắt tương
ứng bit “0”; bit có trọng số lớn nhất (D9) tương ứng LED10, bit có trọng số
nhỏ nhất (D0) tương ứng LED1.
- LED11 sáng khi điện áp trên AN1 lớn hơn hoặc bằng 3V, tắt khi điện áp
trên AN1 nhỏ hơn 3V.

Bài làm:
ảnh code:

Bài code :
#include<p18f4520.h>
#include<delays.h>
#include<adc.h>
#pragma config OSC = HS
#pragma config LVP = OFF
#pragma config MCLRE = ON
#pragma config WDT = OFF
unsigned int x; float y;
void main (void)
{
TRISA=0xff; //RA1 co chieu vao
TRISC=0x00;
TRISD=0x00;
TRISE=0X00;
ADCON1=0x0e; // -VREF = VSS ; +VREF = VDD
// Cau hinh ADC
OpenADC(
ADC_FOSC_2 & ADC_RIGHT_JUST & ADC_0_TAD,
ADC_CH1 & ADC_INT_OFF & ADC_VREFPLUS_VDD &
ADC_VREFMINUS_VSS,
14);
while(1)
{
// Doc ADC
ConvertADC(); // ra lenh bien doi
while(BusyADC()); // cho bien doi xong
x=ReadADC();
x=x&0b0000001111111111;
PORTD=x%256;
PORTC=x/256;
y=(x*5)/1023;
if (y>=3) PORTE=0b10;
else PORTE=0b00;
}
}

Mô phỏng trên proteus:


1. Ảnh chụp khi điện áp trên AN1 là 0V, khi đó LED1-LED11 tắt
2. Ảnh chụp khi điện áp trên AN1 là 2V, khi đó LED11 tắt, các LED1-
LED10 sáng/tắt tương ứng giá trị số đọc được là LED1, LED4, LED5,
LED8, LED9 sáng.
3. Ảnh chụp khi điện áp trên AN1 là 4V, khi đó LED11 sáng, các LED1-
LED10 sáng/tắt tương ứng giá trị số đọc được là LED2, LED5, LED6,
LED9, LED10, LED11 sáng.

4. Ảnh chụp khi điện áp trên AN1 là 5V, khi đó LED1-LED11 sáng.

You might also like