Cau truc de thi docx Câu 1 (2 điểm) 1 Hãy trình bày về pha phân tích trong quy trình thiết kế Top Down 2 Hãy trình bày về pha thiết kế nguyên lý trong quy trình thiết kế Top Down 3 Hãy trình bày về ph.
Trang 1Câu 1: (2 điểm):
1 Hãy trình bày về pha phân tích trong quy trình thiết kế Top-Down
2 Hãy trình bày về pha thiết kế nguyên lý trong quy trình thiết kế Top-Down
3 Hãy trình bày về pha thiết kế kỹ thuật trong quy trình thiết kế Top-Down
4 Hãy trình bày về pha xây dựng hệ thống trong quy trình thiết kế Top-Down
5 Hãy trình bày về pha kiểm thử trong quy trình thiết kế Top-Down
Câu 2: (3 điểm):
1 Xây dựng sơ đồ tổng thể của hệ thống khóa số tự động cho cửa nhà riêng
2 Xây dựng sơ đồ tổng thể của hệ thống đóng mở cửa tự động
3 Xây dựng sơ đồ tổng thể của hệ thống điều khiển ổn định nhiệt độ phòng trong mùa đông
4 Xây dựng sơ đồ tổng thể của hệ thống đếm sản phẩm trong dây truyền sản xuất
5 Xây dựng sơ đồ tổng thể của hệ thống chuông báo giảng đường tự động
(Kèm theo đặc tả khối)
Câu 3: (5 điểm)
1 Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến nhiệt độ LM35, nguồn nuôi là Vcc Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 Chân RB4÷RB7 nối với 4 nút bấm được nối lên 5V Chân RD0÷RD7 nối qua 8 LED đơn, qua trở, xuống GND
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục theo yêu cầu sau:
- Mỗi khi phím B4 được bấm thì đọc giá trị 8 bit ở kênh AN0 của ADC và xuất ra cổng
RD
- Mỗi khi phím B5 được bấm thì đọc giá trị nhiệt độ ở cảm biến LM35, tính toán nhiệt
độ thực tế và xuất ra cổng RS232 chuỗi “Nhiet do: <nhiệt độ>” Trong đó <nhiệt độ>
- Việc kiểm tra phím bấm thực hiện bằng ngắt
- Thông số truyền của RS232 là: Tốc độ 4800 baud, 8 bit dữ liệu, không parity, 1 bit stop
2 Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến trọng lượng (điện áp ra tuyến tính trong dải 0 100mV) Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 Chân RB7 với một cảm biến đếm sản phẩm (tích cực mức 1) Chân RD0÷RD7 nối với 2 led 7 đoạn qua IC giải mã BCD 7447
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục theo yêu cầu sau:
- Mỗi khi có một sản phẩm đi qua thì tăng biến đếm và hiển thị số đếm được lên led 7 đoạn Đồng thời đọc giá trị cảm biến trọng lượng, tính toán trọng lượng thực tế và truyền ra cổng RS232 chuỗi “San pham thu <số sp> co trong luong <trọng lượng>” Trong đó <số sp> là số sản phẩm đếm được, <trọng lượng> là trọng lượng đo được
Trang 2- Biết rằng giải đo của cảm biến trọng lượng là 0 ÷ 50kg Điện áp tham chiếu Vref+ =
- Việc kiểm tra đếm sản phẩm thực hiện bằng ngắt
- Thông số truyền của RS232 là: Tốc độ 9600 baud, 8 bit dữ liệu, không parity, 1 bit stop
3 Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến nhiệt độ LM35 Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 RD0,RD1,RD2 lần lượt nối với 3 led đơn màu Xanh, Vàng và Đỏ
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục sau mỗi 500ms theo yêu cầu sau:
C thì bật
C thì bật đèn đỏ
- Xuất ra cổng RS232 chuỗi “Nhiet do: <nhiệt độ>” Trong đó <nhiệt độ> là nhiệt độ
- Thông số truyền của RS232 là: Tốc độ 19200 baud, 8 bit dữ liệu, không parity, 1 bit stop
- Chu kỳ 500ms được tính toán bằng ngắt Timer0, thạch anh 20MHz
Trang 3BÀI GIẢI:
Câu 3: (5 điểm)
CÂU 3(1) Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến nhiệt độ LM35, nguồn nuôi là Vcc Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 Chân RB4÷RB7 nối với 4 nút bấm được nối lên 5V Chân RD0÷RD7 nối qua 8 LED đơn, qua trở, xuống GND
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục theo yêu cầu sau:
- Mỗi khi phím B4 được bấm thì đọc giá trị 8 bit ở kênh AN0 của ADC và xuất ra cổng
RD
- Mỗi khi phím B5 được bấm thì đọc giá trị nhiệt độ ở cảm biến LM35, tính toán nhiệt
độ thực tế và xuất ra cổng RS232 chuỗi “Nhiet do: <nhiệt độ>” Trong đó <nhiệt độ>
- Việc kiểm tra phím bấm thực hiện bằng ngắt
- Thông số truyền của RS232 là: Tốc độ 4800 baud, 8 bit dữ liệu, không parity, 1 bit stop
Sơ đồ:
MCLR/VPP 1
RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-4
RA3/AN3/VREF+
5 RA4/T0CKI 6
RA5/AN4/SS/LVDIN 7
RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10
OSC1/CLKI 13
RA6/OSC2/CLKO 14
RC0/T1OSO/T1CKI 15 RC2/CCP1 17 RC3/SCK/SCL 18
RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30
RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26
RB0/INT0 33 RB1/INT1 34 RB2/INT2 35 RB3/CCP2B 36
RB4 37 RB5/PGM 38 RB6/PGC 39 RB7/PGD 40
RC1/T1OSI/CCP2A 16
U1
PIC18F452
27.0
3
1
VOUT 2
U2
11 R1OUT 12 T2IN 10 R2OUT 9
T1OUT 14 R1IN 13 T2OUT 7 R2IN 8
C2+
4
C2-5
C1+
1
C1-3
VS+ 2 VS- 6
U3
MAX232
ERROR
TXD 3 RXD 2
CTS 8 RTS 7 DSR 6
DTR 4
DCD 1
RI 9
P1
COMPIM
C1
10u
C2
10u
C3
10u
C4
10u
B4
B5
B6
B7
D1
LED-YELLOW
D2
LED-YELLOW
D3
LED-YELLOW
D4
LED-YELLOW
D5
LED-YELLOW
D6
LED-YELLOW
D7
LED-YELLOW
D8
LED-YELLOW
R1
280
D0 D1 D3 D5 D7
R2
10k
R3
10k
R4
10k
R5
10k
Trang 4#include <18F452.h>
#device adc=8
#use delay(oscillator=11059200)
#use rs232(baud=4800,xmit=PIN_C6,rcv=PIN_C7) int8 Butt, iAD;
float fAD;
#int_RB
void RB_isr(void){
Butt=input_b();
Butt=(Butt>>4)&0x0F;
}
void main()
{
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
set_tris_b(0xFF);
set_tris_d(0);
set_adc_channel(0);
while(TRUE)
{
switch(Butt){
case 1: output_d(read_adc()); break;
case 2: iAD=read_adc();
fAD=(iAD*200.0)/255.0;
printf("Nhiet do=%6.2f",fAD);
break;
case 4: break;
case 8: break;
}
Butt=0;
delay_ms(10);
}
}
Trang 5Câu 3.2 Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến trọng lượng (điện áp ra tuyến tính trong dải 0 100mV) Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 Chân RB7 với một cảm biến đếm sản phẩm (tích cực mức 1) Chân RD0÷RD7 nối với 2 led 7 đoạn qua IC giải mã BCD 7447
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục theo yêu cầu sau:
- Mỗi khi có một sản phẩm đi qua thì tăng biến đếm và hiển thị số đếm được lên led 7 đoạn Đồng thời đọc giá trị cảm biến trọng lượng, tính toán trọng lượng thực tế và truyền ra cổng RS232 chuỗi “San pham thu <số sp> co trong luong <trọng lượng>” Trong đó <số sp> là số sản phẩm đếm được, <trọng lượng> là trọng lượng đo được
- Việc kiểm tra đếm sản phẩm thực hiện bằng ngắt
- Thông số truyền của RS232 là: Tốc độ 9600 baud, 8 bit dữ liệu, không parity, 1 bit stop
Sơ đồ:
0 5V
0 100mV
MCLR/VPP 1 RA0/AN0 2 RA1/AN1 3 RA2/AN2/VREF-4
RA3/AN3/VREF+
5 RA4/T0CKI 6 RA5/AN4/SS/LVDIN 7
OSC1/CLKI 13
RA6/OSC2/CLKO 14
RB0/INT0 33 RB1/INT1 34 RB2/INT2 35 RB3/CCP2B 36 RB4 37 RB5/PGM 38 RB6/PGC 39 RB7/PGD 40
U1
PIC18F452
T1IN 11 R1OUT 12 T2IN 10 R2OUT 9
C2+
4 C2-5
C1+
1 C1-3
U3
TXD 3 RXD 2
CTS 8 RTS 7 DSR 6
DTR 4
DCD 1
RI 9 P1
COMPIM
C1 10u
C2 10u
C3 10u C4 10u
D0 D2 D4 D6
R6 10k 3
2
1
U2:A
LM324
R7
10k
50
% RV1
200k
LoadCell
-12v
+12v
LDR1 TORCH_LDR
R2 10k
D0 D2
D4 D6 A
7
B 1
C 2
D 6
BI/RBO 4
RBI 5
LT 3
U4
7447
R1 220
A 7
B 1
C 2
D 6
BI/RBO 4
RBI 5
LT 3
U5
7447
R3 220
Trang 6#include <18F452.h>
#device adc=8
#use delay(oscillator=11059200)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7)
int8 iDem,Butt,iKL;
float fKL;
#int_RB
void RB_isr(void){
Butt=input_b();
Butt=(Butt>>4)&0x0F;
}
void main(){
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
enable_interrupts(INT_RB);
enable_interrupts(GLOBAL);
set_tris_b(0xFF);
set_tris_d(0);
set_adc_channel(0);
while(TRUE)
{
switch(Butt){
case 1: break;
case 2: break;
case 4: break;
case 8:
iDem++;
output_d(iDem);
iKL=read_adc();
fKL=(iKL*50.0)/255.0;
printf("San pham thu:%3u co trong luong:%6.2f",iDem,fKL); break;
}
Butt=0;
delay_ms(10);
}
}
Trang 7BÀI 3.3 Vẽ sơ đồ ghép nối một vi điều khiển PIC 18F452 với các thiết bị như sau Chân RA0 nối với cảm biến nhiệt độ LM35 Chân RC6, RC7 nối với một bộ truyền/nhận nối tiếp RS232 RD0,RD1,RD2 lần lượt nối với 3 led đơn màu Xanh, Vàng và Đỏ
Viết chương trình điều khiển cho vi điều khiển PIC18F452 trong sơ đồ trên thực hiện liên tục sau mỗi 500ms theo yêu cầu sau:
C thì bật
C thì bật đèn đỏ
- Xuất ra cổng RS232 chuỗi “Nhiet do: <nhiệt độ>” Trong đó <nhiệt độ> là nhiệt độ
- Thông số truyền của RS232 là: Tốc độ 19200 baud, 8 bit dữ liệu, không parity, 1 bit stop
Chu kỳ 500ms được tính toán bằng ngắt Timer0, thạch anh 20MHz
Sơ đồ:
MCLR/VPP 1
RA0/AN0 2
RA1/AN1 3
RA2/AN2/VREF-4
RA3/AN3/VREF+
5 RA4/T0CKI 6
RA5/AN4/SS/LVDIN 7
RE0/RD/AN5 8 RE1/WR/AN6 9 RE2/CS/AN7 10
OSC1/CLKI 13
RA6/OSC2/CLKO 14
RC0/T1OSO/T1CKI 15 RC2/CCP1 17 RC3/SCK/SCL 18
RD0/PSP0 19 RD1/PSP1 20 RD2/PSP2 21 RD3/PSP3 22 RD4/PSP4 27 RD5/PSP5 28 RD6/PSP6 29 RD7/PSP7 30
RC4/SDI/SDA 23 RC5/SDO 24 RC6/TX/CK 25 RC7/RX/DT 26
RB0/INT0 33
RB1/INT1 34
RB2/INT2 35
RB3/CCP2B 36
RB4 37
RB5/PGM 38
RB6/PGC 39
RB7/PGD 40
RC1/T1OSI/CCP2A 16 U1
PIC18F452
50.0
3
1
U2
11 R1OUT 12 T2IN 10 R2OUT 9
T1OUT 14 R1IN 13
R2IN 8
C2+
4
C2-5
C1+
1
C1-3
U3
TXD 3 RXD 2
CTS 8 RTS 7 DSR 6
DTR 4
DCD 1
RI 9 P1
COMPIM
C1 10u
C2 10u
C3 10u
C4 10u
D1 XANH D2 VANG D3 DO
R1 280
D0 D1 D2 D3 D4 D5 D6 D7 R6
10k
Trang 8#include <18F452.h>
#device adc=8
#use delay(oscillator=20MHz)
#use rs232(baud=19200 ,xmit=PIN_C6,rcv=PIN_C7)
int8 Butt, iAD;
float fAD;
#int_TIMER0 // Timer 0 overflow (using TIMER0 name)
void TMR0_isr(void){
iAD=read_adc();
fAD=(iAD*200.0)/255.0;
if(fAD<50){
output_d(1); // Xanh
}else{
if(fAD>60){
output_d(4); // Do
}else{
output_d(2); // Vang
}
}
printf("Nhiet do=%6.2f",fAD);
set_timer0(26472);
}
void main()
{
setup_adc_ports(AN0);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_64); //840 ms overflow set_tris_b(0xFF);
set_tris_d(0);
set_adc_channel(0);
set_timer0(26472);
enable_interrupts(int_TIMER0);
enable_interrupts(GLOBAL);
while(TRUE){}
}