1. Trang chủ
  2. » Luận Văn - Báo Cáo

(Tiểu Luận) Tiểu Luận Thực Hành Vi Điều Khiển Viết Chương Trình Điều Khiển Các Led Bằng Hai Cách Sử Dụng Ngắt Ngoài Và Không Ngắt Ngoài Theo Qui Luật Sau Mỗi Lần Bấm Vào Phím Bấm.pdf

10 0 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Viết Chương Trình Điều Khiển Các Led Bằng Hai Cách Sử Dụng Ngắt Ngoài Và Không Ngắt Ngoài Theo Qui Luật Sau Mỗi Lần Bấm Vào Phím Bấm
Tác giả Nguyễn Vũ Hoàng Huy, Nguyễn Văn Pháp, Lê Minh Tiến, Nguyễn Văn Phước
Người hướng dẫn Phạm Quốc Thiện
Trường học Trường Đại Học Công Nghệ TP. Hồ Chí Minh
Chuyên ngành Thực hành Vi Điều Khiển
Thể loại tiểu luận
Năm xuất bản 2020 - 2021
Thành phố TP. HỒ CHÍ MINH
Định dạng
Số trang 10
Dung lượng 149,68 KB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH BÀI TIỂU LUẬN Tên học phần Thực hành Vi Điều Khiển Kỳ thi học kỳ 2 đợt B năm học 2020 2021 Giảng viên hướng dẫn Phạm Quốc Thiện Sinh viên[.]

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH BÀI TIỂU LUẬN Tên học phần: Thực hành Vi Điều Khiển Kỳ thi học kỳ đợt B năm học 2020 -2021 Giảng viên hướng dẫn: Phạm Quốc Thiện Sinh viên thực hiện: Nguyễn Vũ Hoàng Huy MSSV Nguyễn Văn Pháp MSSV Lê Minh Tiến MSSV Nguyễn Văn Phước MSSV Lớp: 19DOTD2 Ngành: Công nghệ kỹ thuật ô tô Khoa/Viện: Viện kỹ thuật Tp.HCM, ngày … tháng … năm … Tieu luan Câu 1: Viết chương trình điều khiển led hai cách sử dụng ngắt ngồi khơng ngắt ngồi theo qui luật sau: Mỗi lần bấm vào phím bấm nối với chân RB0, đèn sáng theo số lần bấm: bấm lần đèn D1 sáng, bấm lần đèn D2 sáng,… bấm lần đèn D9 sáng, bấm lần quay lại chu trình BÀI LÀM: Cách 1: Ngắt #include #fuses HS #use delay(clock = 20000000) unsigned int8 maled[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; signed int16 tt; #int_ext void ktr_nn() { tt++; if(tt>8) tt=0; } void main() { set_tris_b(0x01); set_tris_c(0x00); enable_interrupts(int_ext); enable_interrupts(global); ext_int_edge(INT_EXT_H2L); tt=0; while(true) { output_c(maled[tt]); } } Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Cách 2: Khơng ngắt ngồi #include #fuses HS #use delay(clock = 20000000) #define nn pin_b0 unsigned int8 maled[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff}; signed int16 tt; void main() { set_tris_b(0x01); set_tris_c(0x00); tt=0; while(true) { output_c(maled[tt]); if(input(nn)==0) { delay_ms(20); if(input(nn)==0) { tt++; if(tt>8) tt=0; output_c(maled[tt]); while(input(nn)==0); } } } } (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Câu 2: Cho sơ đồ mạch viết giải thích ý nghĩa câu lệnh sử dụng chương trình a Thực đếm - 59 hiển thị led dùng ngắt Timer (Thạch anh 4Mhz) b Thực hai cách dùng ngắt ngồi khơng ngắt cho nút nhấn Mỗi lần nhấn nút số đếm tăng lên lớn 59 quay lại BÀI LÀM: Cách 1: Ngắt #include #fuses HS #use delay(clock = 4000000) unsigned int8 maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; signed int16 int1 tt; quet; #int_ext void ktr_nn() { tt++; if(tt>59) tt=0; } #int_timer1 void ngat_timer() { set_timer1(60536); quet=~quet; if(quet==0) { output_c(0x00); output_d(maled[tt/10]); output_c(0x02); } else { output_c(0x00); output_d(maled[tt%10]); (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan output_c(0x01); (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam } void main() { set_tris_b(0x01); set_tris_c(0x00); set_tris_d(0x00); setup_timer_1(t1_internal|t1_div_by_1); set_timer1(60536); enable_interrupts(int_timer1); enable_interrupts(int_ext); enable_interrupts(global); ext_int_edge(INT_EXT_H2L); tt=0; while(true) { } } Cách 2: Khơng ngắt ngồi #include #fuses HS #use delay(clock = 4000000) #define nn pin_b0 unsigned int8 maled[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; signed int16 int1 tt; quet; #int_timer1 void ngat_timer() { set_timer1(60536); quet=~quet; if(quet==0) (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam { output_c(0x00); output_d(maled[tt/10]); output_c(0x02); } else { output_c(0x00); output_d(maled[tt%10]); output_c(0x01); } } void main() { set_tris_b(0x01); set_tris_c(0x00); set_tris_d(0x00); setup_timer_1(t1_internal|t1_div_by_1); set_timer1(60536); enable_interrupts(int_timer1); enable_interrupts(global); tt=0; while(true) { if(input(nn)==0) { delay_ms(20); if(input(nn)==0) { tt++; if(tt>59) tt=0; while(input(nn)==0); } } } } (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Câu 3: Cho sơ đồ mạch, viết chương trình giải thích ý nghĩa câu lệnh, theo yêu cầu sau: a PIC (U1) sử dụng ADC kênh hiển thị giá trị lên LCD1 b Truyền giá trị ADC kênh từ PIC (U1) đến PIC (U2) giao tiếp UART hiển thị LCD2 BÀI LÀM: a #include #device adc=10 #fuses HS #use delay(clock = 20000000) //Su dung thach anh 20Mhz #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) #define LCD_ENABLE_PIN PIN_d6 #define LCD_RS_PIN PIN_d4 #define LCD_RW_PIN PIN_d5 #define LCD_DATA4 PIN_d0 #define LCD_DATA5 PIN_d1 #define LCD_DATA6 PIN_d2 #define LCD_DATA7 PIN_d3 #include signed int32 adc,da; void main() { set_tris_a(0x01); set_tris_d(0x00); set_tris_c(0x80); lcd_init(); setup_adc(adc_clock_div_2); (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam setup_adc_ports(an0); set_adc_channel(0); while(true) { adc=read_adc(); da=adc*5000/1023; putc(da/1000); delay_ms(100); putc(da/100%10+10); delay_ms(100); putc(da/10%10+20); delay_ms(100); putc(da%10+30); delay_ms(100); lcd_gotoxy(1,1); lcd_putc(" DIEN AP "); lcd_gotoxy(1,2); lcd_putc(" "); lcd_putc(da/1000+0x30); lcd_putc(da/100%10+0x30); lcd_putc(da/10%10+0x30); lcd_putc(da%10+0x30); lcd_putc("mV "); } } b #include #device adc=10 #fuses HS #use delay(clock = 20000000) //Su dung thach anh 20Mhz #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) #define LCD_ENABLE_PIN PIN_d6 #define LCD_RS_PIN #define LCD_RW_PIN PIN_d4 PIN_d5 (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam Tieu luan (TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam(TIEU.LUAN).TIEU.LUAN.thuc.hanh.vi.dieu.khien.viet.chuong.trinh.dieu.khien.cac.led.bang.hai.cach.su.dung.ngat.ngoai.va.khong.ngat.ngoai.theo.qui.luat.sau.moi.lan.bam.vao.phim.bam #define LCD_DATA4 PIN_d0 #define LCD_DATA5 PIN_d1 #define LCD_DATA6 PIN_d2 #define LCD_DATA7 PIN_d3 #include signed int32 ng,tr,ch,dv,da,chay; unsigned int8 data; void main() { set_tris_a(0x01); set_tris_d(0x00); set_tris_c(0x80); lcd_init(); chay=0; while(true) { if(kbhit()) / { data=getch(); if(data

Ngày đăng: 24/12/2023, 11:39

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w