Một Số Bài Toán Ứng Dụng Cho Trình biên dịch Keil C pptx

51 1.5K 8
Một Số Bài Toán Ứng Dụng Cho Trình biên dịch Keil C pptx

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Một Số Bài Toán Ứng Dụng Cho Trình biên dịch Keil C (compiler) Điều khiển Led đơn, Led 7 thanh và nút nhấn I. Hiển thị Led đơn Bài toán:Ghép nối LED dơn với chân P1.0 của vi điều khiển, viết chương trình điều khiển LED nhấp nháy với thời gian trễ là 1s. + Lưu đồ thuật toán của bài LED nháy: + Chương trình điều khiển: */==================Bo tien xu li===================*/ #include<AT89x51.h> // Dinh kem file thu vien #define bat 1 // Dinh nghia gia tri bat den Led #define tat 0 // Dinh nghia gia tri tat den Led /*==================khai bao bien==================*/ sbit Led = P1^0; // Khai bao bien Led kieu bit chan P1.0 void delay(long time) { while(time ); } /* ham chinh */ void main(void) { while(1) { Led = bat; // bat Led delay(25000); // tre 1s Led = tat; // tat Led START Khởi tạo hệ thống Sáng Led Trễ 1S Tắt Led Trễ 1S delay(25000); //tre 1s } } II. Phối hợp Led và nút nhấn 1. Phối hợp Led đơn và nút nhấn Bài toán: Một đèn Led được nối với chân P1.0 của vi điều khiển. Một công tắc START nối với chân P3.0 và công tắc STOP nối với chân P3.1 của vi điều khiển. hãy viết chương trình điều khiển để khi bật công tắc START thì Led sáng, khi bật công tắc STOP thì Led tắt. + Lưu đồ thuật giải của bài toán: + Chương trình điều khiển: */==================Bo tien xu li===================*/ #include<AT89x51.h> // Dinh kem file thu vien #define bat 1 // Dinh nghia gia tri bat den Led #define tat 0 // Dinh nghia gia tri tat den Led /*==================khai bao bien==================*/ sbit Led = P1^0; // Khai bao bien Led kieu bit chan P1.0 sbit STOP = P3^0; // cong tac STOP de tat Led sbit START = P3^1; // cong tac START de bat Led /*=================== ham chinh==================*/ void main(void) { Led = tat; //ban dau tat Led while(1){ if((START==0)&&(STOP==1)) { Led = bat; Start Led = tat Start = 0 Stop = 0 Led = tat Led = bat } if((START==1)&&(STOP==0)){ Led = tat; } } } 2. Phối hợp Led 7 thanh và nút nhấn Các số hiển thị P1.0 g P1.1 f P1.2 e P1.3 d P1.4 c P1.5 b P1.6 a dp số nạp hex mov P1,# 0 1 0 0 0 0 0 0 1 81 1 1 1 1 1 0 0 1 1 cf 2 0 1 0 0 1 0 0 1 92 3 0 1 1 0 0 0 0 1 86 4 0 0 1 1 0 0 1 1 cc 5 0 0 1 0 0 1 0 1 a4 6 0 0 0 0 0 1 0 1 a0 7 1 1 1 1 0 0 0 1 8f 8 0 0 0 0 0 0 0 1 80 9 0 0 1 0 0 0 0 1 84 Bài toán: Một Nút bấm được nối với chân P3.4, hãy lập trình điều khiển đếm số lần ấn phím từ 0 đến 9 và hiển thị trên Led 7 thanh. + Lưu đồ thuật giải: START Dem=0; ctac==0? dem++; dem<=10? dem=0; hiển thi ra Led 7 thanh + Chương trình điều khiển: /*==================Bo tien xu li===================*/ #include<AT89x51.h> // Dinh kem file thu vien /*=================Khai bao bien toan cuc=============*/ sfr dataP = 0x90; // du lieu la P1 // ma 7 thanh tu 0 den 9 la // 0x81h,0xcfh,0x92h,0x86h,0xcch,0xa4,0xa0h,0x8fh,0x80h,0x84h. sbit ctac = P3^4; unsigned char dem=0; /*====================Khai bao ham==================*/ /* ham delay========================*/ void delay(long time) { while(time ); } /* chuong trinh con kiem tra co phim nhan */ void phim_an(void) { if(ctac==0) //co phim nhan { delay(500); //chong rung phim while(ctac==0); //Cho nha phim delay(500); // chong rung phim dem++; //tang bien dem if(dem==10) dem=0; } } /* hien thi so lan an phim */ void solan_an(void) { switch(dem) { case 0: {dataP=0x81;break;} case 1: {dataP=0xcf;break;} case 2: {dataP=0x92;break;} case 3: {dataP=0x86;break;} case 4: {dataP=0xcc;break;} case 5: {dataP=0xa4;break;} case 6: {dataP=0xa0;break;} case 7: {dataP=0x8f;break;} case 8: {dataP=0x80;break;} case 9: {dataP=0x84;break;} }; } /* chuong trinh chinh */ void main(void) { dataP = 0x81; // ban dau la so 0 while(1){ phim_an(); solan_an(); } } Bài 3 Hiển thị LCD, Giao tiếp bàn phím Hex, Hiển thị ma trận Led I. LCD 1. Ghép nối vi điều khiển với LCD 16x2. - Bảng mô tả đồ chân của LCD 16x2: Chân Ký hiệu I/O Mô tả 1 V ss - Mass 2 V cc - Dương nguồn 5v 3 V EE - Cấp nguồn điều khiển tương phản 4 RS I RS=0 chon thanh ghi lệnh RS=1 chon thanh ghi dữ liệu 5 R/W I R/W=1 đọc dữ liệu, R/W=0 ghi 6 E I/O Cho phép 7 DB0 I/O Bit dữ liệu 8 DB1 I/O Nt 9 DB2 I/O Nt 10 DB3 I/O Nt 11 DB4 I/O Nt 12 DB5 I/O Nt 13 DB6 I/O Nt 14 DB7 I/O Nt Chân 15 và 16 là A và K. Nó được nối với 2 chân của 1 con Led dùng để sáng LCD trong bóng tối chúng ta không sử dụng. - đồ ghép nối LCD với vi điều khiển: 2. Nguyên lí hoạt động của LCD. - Chân V CC , V ss , và V EE : các chân V CC và V SS cáp dương nguồn 5v và mass tương ứng. Chân V EE được dùng để điều khiển độ tương phản. - Chân chọn thanh ghi RS(Register Select): có 2 thanh ghi trong LCD chân RS được dùng để chọn thanh ghi. nếu RS=0 thì thanh ghi mã lệnh được chọn để cho phép người dùng gửi 1 lệnh lên chẳng hạn như xoá màn hình, đưa con trỏ về đầu dòng… Nếu RS=1 thì thanh ghi dữ liệu được chọn cho phép người dùng gửi dữ liệu cần hiển thị lên LCD. - Chân đọc/ghi (R/W): đầu vào đọc/ghi cho phép người dùng đọc thông tin từ LCD khi R/W=1 hoặc ghi thông tin lên LCD. - Chân cho phép E(Enable): chân cho phép được sử dụng bởi LCD để chốt dữ liệu của nó. Khi dữ liệu được cấp đến chân dữ liệu thì 1 xung mức cao xuống thấp phải được áp đến chân này để LCD chốt dữ liệu trên các chân dữ liệu. Xung này có độ rộng tối thiểu 450ns. - Chân DB0-DB7: đây là đường dữ liệu 8 bít, được dùng để gửi thông tin lên LCD hoặc đọc nội dung các thanh ghi trong LCD. Để hiển thị các chữ cái và các con số, chúng ta gửi mã ASCII của các chữ cái từ A đến Z , a đến z và các chữ số từ 0 đến 9 đến các chân này khi bật RS=1. - Bảng mã lệnh của LCD: Mã (HEX) Lệnh đến thanh ghi của LCD [...]... 0a 0c 0e 0f 10 14 18 1c 80 0c0 38 Xoá màn hình hiển thị Trở về đầu dòng Giảm con trỏ (dịch con trỏ sang trái ) Tăng con trỏ (dịch con trỏ sang phải) Dịch hiển thị sang phải Dịch hiển thị sang trái Tắt con trỏ, tắt hiển thị Tắt hiển thị, bật con trỏ Bật hiển thi, tắt con trỏ Bật hiển thị, nhấp nháy con trỏ Tắt con trỏ, nhấp nháy con trỏ Dịch vị trí con trỏ sang trái Dịch vị trí con trỏ sang phải Dịch toàn... mã HEX đư c 1 số c 4 chữ số c dạng: x1x2y1y2 khi đó giá trị nạp cho thanh ghi chứa như sau: TH = x1x2, TL = y1y2 Ví dụ: muốn tạo trễ 500us thì: Giả sử chu kì máy là 1us: c N = 65536 – 500/1 = 65036 chuyển sang mã HEX là FE 0C, từ đó: TH = 0xFE, TL = 0x 0C - c cc lập trình cho bộ định thời để tạo trễ ở chế độ 1: +B1: chọn chế độ 1 cho bộ định thời c n dung, từ đó x c định giá trị nạp cho thanh... bat con tro LCDcontrol(0x01);//xoa man hinh } /* -thiet lap du lieu cho LCD -*/ void LCDwrite(unsigned char c) { RS=1;//ghi du lieu RW=0;//ghi du lieu len LCD LCDdata =c; //gia tri C EN=1;/ /cho phep muc cao EN=0;//xung cao xuong thap wait();/ /cho } void LCDwrites(unsigned char *s) { unsigned char data lens,count; lens=strlen(s);// lay do dai bien duoc tro boi con tro for(count=0;count . nội dung c c thanh ghi trong LCD. Để hiển thị c c chữ c i và c c con số, chúng ta gửi mã ASCII c a c c chữ c i từ A đến Z , a đến z và c c chữ số từ 0. Một Số Bài Toán Ứng Dụng Cho Trình biên dịch Keil C (compiler) Điều khiển Led đơn, Led 7 thanh và nút nhấn I. Hiển thị Led đơn Bài toán: Ghép

Ngày đăng: 09/03/2014, 15:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan