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

Đồ án tốt nghiệp đo điện áp xoay chiều hiển thị lên LCD

26 15 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 489,65 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

đến những thiết bị lớn như ôtô,tàu thủy, xe lửa, máy bay, hệ thống mạng điện thoại, các bộ điều khiển tự độngtrong nhà máy, các bộ điều chỉnh trong nhà máy điện hạt nhân, trong các hệ th

Trang 1

ĐỒ ÁN TỐT NGHIỆP:

Đo điện áp xoay chiều hiển thị lên LCD

Trang 2

MỤC LỤC

Trang

PHẦN 1: CẤU TRÚC VI ĐIỀU KHIỂN 8051 VÀ ADC0804, LCD,

EEPROM 24C02,RELAY,……….

4

LCD………

9

Trang 3

Ngày nay, các vi điều khiển đã thâm nhập vào mọi lĩnh vực vủa đời sống từdân sự , quân sự đến an ninh quốc phòng, có mặt trong hầu hết các ứng dụng hàngngày từ những thiết bị nhỏ như điện thoại di động, máy nhắn tin, trò chơi điện tử,các thiết bị gia dụng(máy giặt, điều hòa, tủ lạnh….) đến những thiết bị lớn như ôtô,tàu thủy, xe lửa, máy bay, hệ thống mạng điện thoại, các bộ điều khiển tự độngtrong nhà máy, các bộ điều chỉnh trong nhà máy điện hạt nhân, trong các hệ thốngđiều khiển ánh sáng…

Với một loạt các ứng dụng thú vị trên, ở đây chúng em xin giới thiệu một ứngdụng nhỏ dùng vi điều khiển 8051(cụ thể là vi điều khiển AT89S52) để thiết kế:

“Thiết kế hệ thống rơ le số để bảo vệ quá dòng cho thiết bị điện, đo dòng từ

0÷20A, định và lưu được giá trị dòng cắt, hiển thị lên LCD” Đây là một ứng

dụng nhỏ của vi điều khiển nhưng thực tế sử dụng rất nhiều trong các hệ thống đolường điện, điện tử như volt mét, ampe mét điện tử…vv

Đề tài gồm 2 phần:

Phần 1:Cấu trúc vi điều khiển 8051 và ADC 0804, LCD, EEPROM 24C02, RELAY.

Phần 2:Thiết kế hệ thống và code chương trình

Mục đích của đề tài hướng đến: Tạo ra bước đầu cho sinh viên thử nghiệmnhững ứng dụng của vđk trong thực tiễn để rồi từ đó tìm tòi, phát triển nhiều ứngdụng khác trong đời sống hàng ngày cần đến

Mặc dù chúng em rất cố gắng để hoàn thành đồ án này đúng thời hạn ,nhưngkhông thể tránh khỏi những thiếu sót mong quí thầy cô thông cảm.Chúng em mongđược sự đóng góp ý kiến của các thầy cô và các bạn

Chúng em xin chân thành cám ơn!

Trang 4

PHẦN 1: CẤU TRÚC VI ĐIỀU KHIỂN 8051 VÀ ADC0804, LCD, EEPROM

Bộ vi điều khiển AT89S52 gồm các khối chức năng chính sau đây:

CPU( Central Processing Unit) bao gồm:

- Thanh ghi tích luỹ A

- Thanh ghi tích luỹ phụ B, dùng cho phép nhân và phép chia

- Đơn vị logic học( ALU: Arithmetic Logical Unit)

- Từ trạng thái chương trình( PSW: Progam Status Word)

- Bốn băng thanh ghi

- Con trỏ ngăn xếp

Bộ nhớ chương trình( Bộ nhớ ROM) gồm 8Kb Flash.

Bộ nhớ dữ liệu( Bộ nhớ RAM) gồm 256 bytes.

Bộ UART( Universal Ansynchronous Receiver and Tranmitter) làm chức năng

truyền nhận nối tiếp, nhờ khối này, AT89S52 có thể giao tiếp với máy tính quacổng COM

3 bộ Timer /Counter 16 bít thực hiện các chức năng định thời và đếm sự kiện.

WDM( Watch Dog Timer) được dùng để phục hồi lại hoạt động của CPU khi nó

bị treo bởi một nguyên nhân nào đó WDM ở AT89S52 gồm một bộ Timer 14 bít,một bộ Timer 7 bít, thanh ghi WDTPRG( WDT programable) điều khiển Timer 7bit và một thanh ghi chức năng WDTRST( WDM register) Bình thường WDTkhông hoạt động( bị cấm), để cho phép WDT, các giá trị 1EH và E1H cần phảiđược ghi liên tiếp vào thanh ghi WDTRST Timer 14 bit của WDT sẽ đếm tăngdần sau mỗi chu kỳ đồng hồ cho đến giá trị 16383 thì xảy ra tràn Khi xảy ra tràn,chân RTS sẽ được đặt ở mức cao trong thời gian 96.Tosc (Tossc=1/Fosc) vàAT89S52 sẽ được reset Khi WDT hoạt động, ngoại trừ reset phần cứng và reset doWDT tràn thì không có cách nào cấm được WDT, vì vậy khi sử dụng WDT thì cácđoạn mã chương trình phải được đặt trong các khe thời gian từ khi giữa các lầnWDT được khởi tạo lại

Trang 5

II- Sơ đồ các chân và chức năng

1 Port 0(P0.0-P0.7 hay từ chân 32 đến chân 39):

Gồm 8 chân, ngoài chức năng xuất nhập ra, Port 0 còn là Bus đa hợp dữ liệu vàđịa chỉ

(AD0-AD7), chức năng này sẽ được sử dụng khi AT89S52 giao tiếp với thiết bịngoài có kiến trúc Bus

Trang 6

2 Port 1( P1.0-P1,7 hay từ chân 1 đến chân 8) :

Có chức năng xuất nhập theo bit và byte Ngoài ra, 3 chân P1.5, P1.6, P1.7 đượcdùng để nạp ROM theo chuẩn ISP, 2 chân P1.0 và P1.1 được dùng cho bộ Timer 2

3 Port 2( P2.0- P2.7 hay từ chân 21 đến chân 28):

Là một port có công dụng kép: là đường xuất nhập hoặc là byte cao của bus địa chỉđối với các thiết kế dùng bộ nhớ mở rộng

Trang 7

4 Port 3( P3.0- P3.7 hay từ chân 10 đến chân 17):

Mỗi chân trên port 3 ngoài chức năng xuất nhập ra còn có một chức năng riêng:

Bit Tên Chức năng

P3.0 RXD Dữ liệu nhận cho port nối tiếp

P3.1 TXD Dữ liệu phát cho port nối tiếp

P3.3 INT1 sNgắt 1 bên ngoài

5 RST( Reset- chân 9):

Trang 8

Mức tích cực của chân này là mức 1, để reset ta phải đưa mức 1(5V) đến chân nàyvới thời gian tối thiểu 2 chu kỳ máy( tương đương 2uS đối với thạch anh 12MHz).

6 XTAL1, XTAL2:

AT89S52 có một bộ dao động trên chip, nó thường được nối với một bộ dao độngthạch anh có tần số lớn nhất là 33MHz, thông thường là 12MHz

7 EA( External Access):

EA thường được mắc lên mức cao(+5V) hoặc mức thấp( GND) Nếu ở mức cao,

bộ vi điều khiển thi hành chương trình từ ROM nội Nếu ở mức thấp, chương trìnhchỉ được thi hành từ bộ nhớ mở rộng

8 ALE( Address Latch Enable):

ALE là tín hiệu để chốt địa chỉ vào một thanh ghi bên ngoài trong nửa đầu của chu

kỳ bộ nhớ Sau đó các đường port 0 dùng để xuất hoặc nhập dữ liệu trong nửa chu

kỳ sau của bộ nhớ

9 PSEN( Program Store Enable):

PSEN là điều khiển để cho phép bộ nhớ chương trình mở rộng và thường được nốiđến chân /OE ( Output Enable) của một EPROM để cho phép đọc các bytes mãlệnh

PSEN sẽ ở mức thấp trong thời gian đọc lệnh Các mã nhị phân của chương trìnhđược đọc từ EPROM qua Bus và được chốt vào thanh ghi lệnh của bộ vi điềukhiển để giải mã lệnh Khi thi hành chương trình trong ROM nội, PSEN sẽ ở mứcthụ động( mức cao)

10.Vcc, GND:

AT89S52 dùng nguồn một chiều có dải điện áp từ 4V-5.5V được cấp qua chân40(+) và chân 20(-)

B- Bộ biến đổi tương tự sang số ADC0804.

Bộ ADC0804 là một thiết bị CMOS tích hợp với một bộ chuyển đổi tương tự sang

số 8 bit, một bộ logic điều khiển tương thích Bộ chuyển đổi tương tự sang số này

sử dụng phương pháp chuyển đổi xấp xỉ, các lối ra dữ liệu song song, các lối ranày đều tương thích TTL Thiết bị này loại trừ khả năng cần thiết để điều chỉnhđiểm zero bên ngoài và khả năng điều chỉnh tỉ số làm cho ADC dễ dàng giao tiếpvới các bộ vi xử lý

Trang 9

Các đặc điểm của ADC0804

- Nguồn nuôi 5 V, hiệu suất cao

- Dãi tín hiệu lối vào tương tự 5V khi nguồn nuôi là +5V Có thể mở rộng thang

đo bằng các giải pháp kỹ thuật cho từng mạch cụ thể

- Dễ dàng giao tiếp với vi xữ lý vì đầu ra co bộ đệm 3 trạng thái nên có thể ghéptrực tiếp vào kênh dữ liệu của hệ VXL

- Tổng sai số chưa chỉnh là ½ LSB

- Thời gian chuyển đổi 100s

- Bus dữ liệu 8 bit

- Các tín hiệu đều tương thích TTL

- Tần số xung clock 10khz-1208khz

- Đảm bảo sai số tuyến tính trong dãi nhiệt độ từ -40 0C - 85 0C

- Bộ phát xung nhịp nằm trên chip

- Không cần điều chỉnh điểm 0

- /RD chân tác động từ bên ngoài để IC thực hiện quá trình chuyển đổi.

- CLKin : Đầu vào xung clock.

- REF (+) : điện áp vào chuẩn +5V

Trang 10

- REF (-) :điện áp vào chuẩn 0v

- AGND, RGND: chân nối đất.

- Vref/2 : ½ điện áp chuẩn.

 Hoạt động chuyển đổi:

Quá trình biến đổi được bắt đầu bằng mộ xung thấp ngắn hạn ở lối vào /WR.Muốn thề điều kiện cần có là một mức thấp của tín hiệu /CS Sau thời gian biến đổi100s, lối ra /INTR chuyển sang mức thấp và báo hiệu việc kêt thúc quá trình biếnđổi Sau đó qua một mức thấp ở lối vào /RD có thể đọc ra các bit số liệu Sự truynhập để đọc sẽ dẫn đến hậu quả là tín hiệu /INTR sẽ chuyển trở lại mức cao Khi

mà lối vào /RD được chuyển sang mức thấp, thì lối ra /INTR chuyển sang thấp sauquá trình biến đổi kéo dài 8 chu kì giữ nhịp của bộ giữ nhịp bên trong, ở tần số giữnhịp là 640khz, chi kì này là 12.5Пss

C-LCD

1- Sơ đồ chân LCD:

Trang 11

1 Vss - Mass

RS=1 chon thanh ghi dữ liệu

2- Sơ đồ ghép nối LCD với vi điều khiển:

3- Nguyên lí hoạt động của LCD

- Chân VCC, Vss, và VEE: các chân VCC và VSS cáp dương nguồn 5v và mass tương ứng Chân VEE đượ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

Trang 12

- 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:

SCL là xung đầu vào và được sử dụng để đồng bộ hóa EEPROM với vi điều khiển cho các hoạt động khác nhau Khi dữ liệu là để được đọc hoặc viết, lần đầu tiên một điều kiện bắt đầu được tạo ra tiếp theo địa chỉ điện thoại, địa chỉ byte và các

dữ liệu chính nó Cuối cùng, một điều kiện dừng được cung cấp Điều kiện bắt đầu xảy ra khi SDA và SCL nhận được cao đến thấp đồng thời Điều kiện dừng là khi SDA vẫn còn thấp trong khi SCL đi từ cao xuống thấp Dữ liệu được đọc hoặc bằng văn bản giữa các điều kiện bắt đầu và dừng lại trên tất cả các quá trình

Trang 13

chuyển đổi của SCL từ cao đến thấp Để biết thêm chi tiết về các hoạt động khác nhau và giải quyết, hãy tham khảo 24C02 interfacing với 8051.

Tổng cộng có 8 EEPROMs có thể được kết nối thông qua một bus Có ba chân địa chỉ vào AT24C02 để lựa chọn một con chip đặc biệt Thiết bị này có thể được giải quyết serially bởi phần mềm Nó làm cho việc sử dụng của một đăng ký nội bộ củaEEPROM có 4 MSB bit 1010, tiếp theo là các bit địa chỉ EEPROM và LSB nghĩa cho dù dữ liệu sẽ được đọc hoặc bằng văn bản Bit cuối cùng là 1 cho viết và 0 chohoạt động đọc

Ví dụ, nếu một EEPROM tất cả các bit địa chỉ là có căn cứ, sau đó cho hoạt động viết một giá trị hex 0xA1 (1010 0001) sẽ được gửi Đây 000, bit cuối cùng, địa chỉ EEPROM và 1 trong LSB cho thấy một hoạt động viết Tương tự đối với hoạt động đọc địa chỉ thiết bị được gửi 0xA0 (1010 0000)

Tiếp theo, địa chỉ byte hoặc trang được gửi bởi byte dữ liệu Byte dữ liệu này phải được viết hoặc đọc bởi vi điều khiển

1 Địa chỉ chân đầu vào; Cung cấp địa chỉ nhiều hơn

một EEPROM là để giao tiếp với một vi điều khiển đơn

Chân nối đất khi chỉ có một EEPROM được sử dụng

AD0

4 Chân nối đất (0V) Ground

5 Bi-directional pin để chuyển dữ liệu nối tiếp Serial

Trang 14

Sơ đồ rơ le 8 chân

PHẦN 2: THIẾT KẾ HỆ THỐNG VÀ CODE CHƯƠNG TRÌNH.

I- Nguyên lý đo dòng điện bằng điện trở Shunt.

Điện trở Shunt để tạo ra một sụt áp tỷ lệ với dòng điện đi ngang qua nó, sau đó ta dựa trên sự sụt áp đo để tính toàn dòng điện cần đo

Sơ đồ khối đo dòng điện:

Trang 15

Dòng điện xoay chiều.

(điện áp xoay chiều) Chỉnh lưu

Qua điện trở shunt

Chân +IN của ADC0804

- Ngoài ra còn 1 số linh kiện khác như điện trở, tụ điện, nút bấm, biến trở,

diode cầu chỉnh lưu,…

2- Mạch nguyên lý

3- Lưu đồ chương trình

Trang 16

start

Đo dòng Định dòng cắt

End

4- Chương trình

Chương trình viết bằng ngôn ngữ C ( sử dụng phần mềm Kile C)

unsigned int i; //dung de doc ADC trong 5 lan lien tiep

delay_us(50); // doi chuyen doi xong

if(ADC_DATA_PORT>adc_data_max) // Lay gia tri MAX{

}if(ADC_DATA_PORT<adc_data_min) //Lay gia tri MIN{

adc_data_min = ADC_DATA_PORT;

}

Trang 17

char lcd_buff[33]; //bo dem du lieu dung de hien thi ra LCD

unsigned int phan_nguyen,phan_thap_phan; //dung de lay phan nguyen va phan thap phan

unsigned long nguong_cat = 15; //1A

char qua_tai = 0; //co bao qua tai

lcd_init();

lcd_clear();

CONTROL = 0;

TANG = 1; //xuat ra muc 1

GIAM = 1; //xuat ra muc 1

RESET = 1; //xuat ra muc 1

nguong_cat = (unsigned long)eeprom_read(0x10);

nguong_cat = nguong_cat+10; //moi lan tang 100mAdelay_ms(100);

if(nguong_cat>150) //gioi han toi da cua mach la 20Ampe{

nguong_cat=150;

}eeprom_write(0x10,(unsigned char)nguong_cat); //ghi vao

bo nho eeprom

} if(GIAM == 0)

Trang 18

nguong_cat=1;

}eeprom_write(0x10,(unsigned char)nguong_cat); //ghi vao bo nho eeprom

}

phan_nguyen = nguong_cat/10; //doi don vi la ampe Aphan_thap_phan = nguong_cat%10; //lay phan thap phan sau dau phay 2 chu so, vi du I = 3,543A se lay la 54

lcd_gotoxy(0,0);

sprintf(lcd_buff,"NGUONG CAT=%d

%dA",phan_nguyen,phan_thap_phan); //hien thi ra lcd

lcd_puts(lcd_buff);

if(RESET == 0){

CONTROL = 0; //dong relay qua_tai = 0; //het bao qua tai}

ADC_DATA = ADC_DATA*4990; //tinh theo don vi la mV de tranh mat du lieu

ADC_DATA = ADC_DATA>>8; //bo chuyen doi ADC 8 bit co gia tri toi da la 255

ADC_DATA = ADC_DATA/sqrt(2); //lay gia tri hieu dung I ADC_DATA = ADC_DATA/18; //chuyen doi sang dong dien

do duoc theo thuc te

lcd_puts(" Qua tai ");

qua_tai = 1; //bao hieu la dang qua tai}

else if(qua_tai==0) //che do hien thi binh thuong{

phan_nguyen = ADC_DATA/10; //doi don vi la ampe A

Trang 19

phan_thap_phan = ADC_DATA%10; //lay phan thap phan sau

lcd_gotoxy(0,1);

sprintf(lcd_buff,"I= %d.%d A

",phan_nguyen,phan_thap_phan);

lcd_puts(lcd_buff);

}

extern void delay_ms(unsigned int ms);

extern void delay_us(unsigned int us);

unsigned char i2c_start( void );

unsigned char i2c_stop( void );

unsigned char i2c_write_byte(unsigned char byte);

unsigned char i2c_write(unsigned char Data);

unsigned char i2c_read(unsigned char ack);

unsigned char eeprom_read(unsigned char add);

void eeprom_write(unsigned char add, unsigned char Data);

unsigned char i2c_start( void )

Trang 21

Data <<=1;//dich trai mot bit

if(SDA) //bit hight

/* -write a byte or multi byte to eeprom -*/

/* add: address cell eeprom

data: du lieu can ghi ra

len: lenght of data

*/

Trang 22

void eeprom_write(unsigned char add, unsigned char Data)

/* Writing value to DATA pins */

#define LCD_DATA_OUT LCD_PORT

/*================= HAM GUI 4 BIT

THAP======================================*/

void set_lsb(unsigned char Data);

/*==================HAM GUI 4 BIT

CAO======================================*/

void set_msb(unsigned char Data);

/*================= GUI LENH LEN

LCD======================================*/

void put_cmd(unsigned char cmd);

/*================== GUI 1 KI TU

====================================*/

Trang 23

void lcd_gotoxy(unsigned char x,unsigned char y);

void lcd_put_byte(unsigned char b);

void delay_(unsigned long t);

//tao tre cho LCD

void delay_(unsigned long t)

//ham gui 4 bit thap

void set_lsb(unsigned char Data)

{

LCD_DATA_OUT=Data&0x0F;

}

//ham gui 4 bit cao

void set_msb(unsigned char Data)

{

LCD_DATA_OUT=Data>>4;

}

// ham gui lenh len lcd

void put_cmd(unsigned char cmd)

{

LCD_RS=0; // chon thanh ghi lenh

set_msb(cmd);

enable();

Trang 24

put_cmd(0x28); // che do 4 bit,lcd 2 dong, co chu 5x7

put_cmd(0x0D); // bat hien thi,tat con tro 0x0C

Trang 25

void lcd_put_byte(unsigned char b)

Trang 26

Tài liệu tham khảo:

Họ vi điều khiển 8051 – Tống Văn On

Cấu trúc và lập trình học Vi điều khiển 8051 – Nguyễn Tăng Cường

Ngoài ra chúng em còn thu thập tài liệu và thông tin trên internet

……

Ngày đăng: 15/09/2021, 08:22

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w