Tổng quan về trình biên dịch KeilC và proteus

Một phần của tài liệu Đồ án vi xử lý: Thiết kế thiết bị báo cháy tự động (Trang 28)

4.1.1 KeilC

Trình biên dịch là phần mềm mà trên đó sẽ được viết các chương trình điều khiển để nạp xuống cho VĐK. Ta không thể viết chương trình cho VĐK trên word, excel ... mà mỗi một loại VĐK khác nhau lại phải dùng một phần mềm chuyên dụng riêng để viết chương trình cho nó.

Đối với dòng VĐK 8051 thì cũng có một vài trình biên dịch khác nhau, nhưng cơ bản nhất, phổ biến nhất là trình biên dịch KeilC. Vì VĐK không thể hiểu được các ngôn ngữ mà chúng ta viết chương trình, nó chỉ hiểu được các mã máy (mà do nhà sản xuất tạo ra), phần mềm này có chức năng "phiên dịch" các dòng lệnh mà ta viết bằng C hoặc ASM sang "ngôn ngữ mã máy"( tạo ra một file.hex) từ đó ta sẽ dùng mạch nạp để nạp file .hex này cho VĐK.

4.1.2 Proteus

Phần mềm Proteus là phần mềm cho phép mô phỏng hoạt động của mạch điện tử bao gồm phần thiết kế mạch và viết chương trình điều khiển cho các họ vi điều khiển như MCS-51, PIC, AVR, 8051 …

Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏng mạch và ARES dùng để vẽ mạch in.

4.2 Chương trình nạp cho AT89S52

a. Cài đặt tần số cho chip 89s52

Project -> Option for target -> Target và sửa tần số thạch anh là 12MHz

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 29

Output -> tích dấu “v” vào create Hex File

c. Viết chương trình

#include <REGX51.H> #include <stdio.h>

sbit DQ = P3^7; //Khai bao chan cam bien void delay_us(unsigned int Time);

void delay_ms(unsigned int Time); #define LINE_1 0x80

#define LINE_2 0xC0 #define CLEAR_LCD 0x01 #define TRUE 1

#define FALSE 0

unsigned char Lcd_Buff[15]; char mode=0; float tmp, nhiet; sbit khoi = P1^1; sbit dkchuong = P1^4; sbit dkden = P1^5; sbit dkphunnuoc = P1^6; void lcd1602_enable(void);

void lcd1602_send_4bit_data ( unsigned char cX ); void lcd1602_send_command (unsigned char cX ); void lcd1602_init (void );

void lcd1602_gotoxy(unsigned char x, unsigned char y); void lcd1602_clear(void);

void lcd1602_putchar ( unsigned int cX ); void lcd1602_puts (char *s);

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 30

#define LCD_D4 P0_4 #define LCD_D5 P0_5 #define LCD_D6 P0_6 #define LCD_D7 P0_7

// PORT1 --- // Chan du lieu cua DS18b20

//#define DQ P1_2

// PORT2 --- // Cac chan dieu khien cua LCD --- #define LCD_RS P2_2

#define LCD_RW P2_3 #define LCD_E P2_4

void lcd1602_enable(void) // Ham tao xung ENABLE { LCD_E=1; delay_us(3); LCD_E=0; delay_us(5); } // --- // ====ham gui 4 bit bit du lieu ra LCD====

void lcd1602_send_4bit_data ( unsigned char cX ) { LCD_D4 = cX & 0x01; LCD_D5 = (cX>>1)&1; LCD_D6 = (cX>>2)&1; LCD_D7 = (cX>>3)&1; } // --- // ====Ham Gui 1 Lenh Cho LCD====

void lcd1602_send_command (unsigned char cX ) {

lcd1602_send_4bit_data ( cX >>4 ); // gui 4 bit cao lcd1602_enable() ;

lcd1602_send_4bit_data ( cX ); // gui 4 bit thap lcd1602_enable() ;

}

// --- // ====Ham Khoi Tao LCD ====

void lcd1602_init ( void ) {

lcd1602_send_4bit_data ( 0x00 ); delay_ms(200);

LCD_RS=0; LCD_RW=0;

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 31

lcd1602_send_4bit_data ( 0x03 ); // ket noi 8 bit lcd1602_enable() ;

lcd1602_enable () ; lcd1602_enable () ;

lcd1602_send_4bit_data ( 0x02 ); // ket noi 4 bit lcd1602_enable() ;

lcd1602_send_command( 0x2C ); //giao thuc 4 bit,hien thi 2 hang,ki tu 5x8

lcd1602_send_command( 0x80);

lcd1602_send_command( 0x0C); // cho phep hien thi man hinh

lcd1602_send_command( 0x06 ); //tang ID, khong dich khung hinh

lcd1602_send_command( CLEAR_LCD ); //xoa toan bo khung hinh

}

// --- // ====Ham Thiet Lap Vi Tri Con Tro====

void lcd1602_gotoxy(unsigned char x, unsigned char y) {

unsigned char address; if(!y) address = (LINE_1+x); else address = (LINE_2+x); delay_ms(3); lcd1602_send_command(address); delay_ms(1); } // --- //====Ham Xoa Man Hinh LCD====

void lcd1602_clear(void) { lcd1602_send_command( CLEAR_LCD ); delay_us(300); } // --- // ====Ham Gui 1 Ky Tu Len LCD====

void lcd1602_putchar ( unsigned int cX ) {

LCD_RS=1;

lcd1602_send_command( cX ); LCD_RS=0;

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 32

// --- // ====Ham Gui 1 Chuoi Ky Tu Len LCD ====

void lcd1602_puts(char *s) { while (*s) { lcd1602_putchar(*s); s++; } }

//====CHUONG TRINH DELAY==== void delay_ms(unsigned int Time) {

unsigned int i,j,t; t=Time; for(i=0;i<t;i++) { for(j=0;j<125;j++); } }

void delay_us(unsigned int Time) {

unsigned int i,j; for(i=0;i<Time;i++) {

for(j=0;j<2;j++); }

}

void delay_18B20(unsigned int i) {

while(i--); }

//====KHOI TAO CAM BIEN==== void Init_DS18B20() { unsigned char x=0; DQ = 1; delay_18B20(8); DQ = 0; delay_18B20(80); DQ = 1; delay_18B20(14); x=DQ; delay_18B20(20); }

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 33

//====DOC MOT BYTE==== ReadOneChar(void)

{

unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--)

{

DQ = 0; //Cho duong DQ xuong muc thap dat>>=1;

DQ = 1; //Cho duong DQ len muc cao if(DQ) dat|=0x80; delay_18B20(4); } return(dat); }

//====CHUONG TRINH GHI 1BYTE ==== void WriteOneChar(unsigned char dat) {

unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; } } //========================

//=CHUONG TRINH DOC NHIET DO TU CAM BIEN ReadTemperature(void)

{

unsigned char a=0; unsigned char b=0; unsigned int t=0; Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0x44); delay_18B20(100); Init_DS18B20(); WriteOneChar(0xCC); WriteOneChar(0xBE);

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 34

a=ReadOneChar(); b=ReadOneChar(); t = (b*256+a)*25; return( t >> 2 ); } //======================== void select_mode(void) {

if((nhiet>=45) && (khoi==FALSE)) mode=1;

if((nhiet<45) && (khoi==FALSE)) mode=0;

if((nhiet<45) && (khoi==TRUE)) mode=2;

if((nhiet<45) && (khoi==FALSE)) mode=0;

if((nhiet>=45) && (khoi==TRUE)) mode=3;

if((nhiet<45) && (khoi==FALSE)) mode=0; } void dieu_khien(void) { select_mode(); switch(mode) { case 0: dkden=TRUE; dkchuong=TRUE; dkphunnuoc=TRUE; break; case 1: dkden=FALSE; dkchuong=TRUE; dkphunnuoc=TRUE; break; case 2: dkden=TRUE; dkchuong=FALSE; dkphunnuoc=TRUE; break; case 3: dkden=FALSE; dkchuong=FALSE; dkphunnuoc=FALSE; break;

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 35

} }

//====CHUONG TRINH CHINH===== main() { P1=0xf0; P2=0x00; P3=0x00; lcd1602_init(); while(1) { tmp = ReadTemperature(); nhiet=tmp/100;

sprintf(Lcd_Buff," TEMP: %.0f^C",nhiet); lcd1602_gotoxy(1,0); lcd1602_puts(Lcd_Buff); delay_ms(10); dieu_khien(); } }

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 36

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 37

Chương 5. Kết Luận và phương hướng phát triển

5.1 Kết luận

5.1.1 Tự đánh giá kết quả

Sau 2 tháng thực hiện đề tài, với sự hướng dẫn tận tình của giáo viên hướng dẫn và đóng góp tận tình của các thầy cô trong khoa Công Nghệ Tự Động Trường Đại Học Điện Lực cộng với sự nỗ lực của các thành viên trong nhóm, chúng em đã phân công mỗi người 1 công việc cụ thể để hoàn thiện đồ án.

Đồ án kế thừa một khía cạnhứng dụng trong hệ thống vi xử lý, đó là sử dụng vi điều khiển 89s52 (8051) trong mạch báo cháy tự động. Tuy chưa phát huy được các tính năng ưu việt của vi điều khiển 8051 nhưng cũng phần nào ứng dụng va giải quyết được công việc thực tiễn.

5.1.2 Làm được và hạn chế

Phần nội dung của đồ án bao gồm 5 chương:  Chương 1: Đặt vấn đề và nhiệm vụ thư.

 Chương 2: Tổng quan về các cách nhận biết và báo cháy, các bộ phận chính của 1 hệ thống báo cháy.

 Chương 3: Thiết kế phần cứng.  Chương 4: Thiết kế phần mềm.

 Chương 5: Kết luận và phương hướng phát triển.

-Chương 1, chương 2 chúng em tìm tài liệu trên internet và sách giáo trình. -Chương 3 chúng em tham khảo tài liệu, học hỏi từ bạn bè, các anh chị lớn -tuổi đã từng làm đồ án về vi điều khiển 8051.

-Chương 4 chúng em tự viết code cho phần cứng đã thiết kế, do trình độ còn yếu kém, có thể code còn dài dòng và phức tạp chưa được tối ưu.

5.2 Phương hướng phát triển

Với sự phát triển không ngừng của khoa học kĩ thuật nói chung và lĩnh vực điện tử nói riêng, đề tài này có thể phát triển hoạn thiện hơn để đạt kết quả tốt hơn.

Xu hướng phát triển các sản phẩm của ngành công nghiệp vi mạch điện tử dựa trên tiêu chí đơn giản: nhỏ, nhanh và rẻ hơn. Nhờ xu hướng phát triển này nên công nghiệp vi mạch điện tử đã phát triển song hành với rất nhiều lĩnh vực khác nhau và có doanh thu trên toàn cầu luôn tăng trong những năm qua.

Đồ án vi xử lý trong đo lường điều khiển Thiết bị báo cháy tự động

GVHD: Ths. Bùi Thị Duyên Page 38

TÀI LIỆU THAM KHẢO

1. Đo lường và điều khiển bằng máy tính, Ngô Diên Tập năm 1998. 2. Đo lường điện, Ths. Trịnh Khánh Ly.

3. Giáo trình vi điều khiển, Ths. Phạm Hùng Kim Khánh năm 2008. 4. Kỹ thuật vi điều khiển, Ths Lê Xứng - Ths Nguyễn Bá Hội. 5. Kỹ thuật vi xử lý và lập trình C cho hệ thống VXL, năm 2003. 6. Vi xử lý trong đo lường và điều khiển, Ngô Diên Tập.

Một phần của tài liệu Đồ án vi xử lý: Thiết kế thiết bị báo cháy tự động (Trang 28)