Ứng dụng họ điều khiển 8051 ghép nối 04 LED 7 thanh để hiển thị tần số lưới điện với dải đo [45-55]HzFile mô phỏng, lưu đồ thuật toán: https://www.mediafire.com/?5e6zaqbb4bhsyi4
Trang 1BÀI TẬP LỚN
VXL & VĐK
Ứng dụng họ điều khiển 8051 ghép nối 04 LED 7 thanh để hiển thị tần số
lưới điện với dải đo [45-55]Hz
Trang 2Mục Lục
Lời nói đầu 3
Đề tài: 4
PHẦN I: CƠ SỞ LÝ THUYẾT 5
Chương I: Tổng quan về vi điều khiển 5
1 Giới thiệu về các họ vi xử lý và các họ điều khiển thông dụng 5
2 Các bộ vi điều khiển 5
2.1 Các bộ vi điều khiển và các bộ xử lý nhúng 5
2.2 Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung 6
Chương II:Tổng quan về họ vi điều khiển 8051 7
I Họ vi điều khiển 8051 7
1 Giới thiệu chung 7
2 Sơ đồ cấu trúc chung của họ 8051 8
3 Sơ đồ chân của 8051 9
4 Cổng vào ra song song (I/O Port) 10
II Giới thiêu về Vi điều khiển 89C52 11
Chương III: LED BẢY THANH 12
1 Giới thiêu chung led 7 thanh 12
2 Ghép nối led 7 thanh 13
PHẦN 2: NỘI DUNG THIẾT KẾ 18
1 Sơ đồ nguyên lý 18
Chương trình 24
a Phần mềm lập trình 24
PHẦN 3: PHẦN KẾT LUẬN 33
Tài liệu tham khảo: 34
L i nh n xét c a th y cô: ời nhận xét của thầy cô: ận xét của thầy cô: ủa thầy cô: ầy cô: 34
Trang 3Lời nói đầu
Với sự tiến bộ của con người, với sự phát triển của khoa học kỹ thuật thì cácnghành công nghiệp phát triển mạnh mẽ, các hệ thống ứng dụng ra đời, điều đócũng đặt ra yêu cầu cao về chất lượng, độ chính xác Một trong những hệ thốngđược ứng dụng nhiều nhất là: hệ thống đo điều khiển và hiển thị ra led 7thanh.Các hệ thống đang ngày dần được tự động hóa với những kỹ thuật như vi
xử lý, vi điều khiển… đang ngày một làm cho các bộ tự động dần trở nên tốthơn đảm bảo yêu cầu hơn
Trong quá trình sản xuất ở các nhà máy,xí nghiệp; quá trình điều khiểnnhiệt độ trong các phòng, hội nghị, các khu chung cư, việc đo và khống chếnhiệt độ tự động là yêu cầu hết sức cần thiết và quan trọng Vì nếu nắm bắtđược nhiệt độ làm việc của các hệ thống, dây chuyền sản xuất… thì giúp chúng
ta biết được tình trạng làm việc theo yêu cầu và có những xử lý kịp thời để tránh
hư hỏng và giải quyết các sự cố sảy ra.Yêu cầu của các hệ thống là phải đảmbảo chính xác, kịp thời và nhanh, hệ thống làm việc ổn định ngay cả khi cónhiễu và do tác động khác
Hà Nội ngày 28 tháng 12 năm 2013
Trang 4Quá trình thực hiện:
1 Xây dựng mạch nguyên lý
2 Xây dựng thuật toán
3 Viết chương trình
Trang 5PHẦN I: CƠ SỞ LÝ THUYẾT
Chương I: Tổng quan về vi điều khiển
1 Giới thiệu về các họ vi xử lý và các họ điều khiển thông dụng
Lịch sử phát triển của bộ vi xử lý và bộ vi điều khiển
Sự ra đời và phát triển nhanh chóng của kĩ thuật vi điện tử mà đặc trưng là kĩthuật vi xử lý đã tạo ra một bước ngoặt quan trọng trong sự phát triển của khoahọc tính toán, điều khiển vi xử lý thông tin.Kĩ thuật vi xử lý đóng vai trò râtquan trọng trong tất cả các lĩnh vực của cuộc sống và khoa học kĩ thuật, đặc biệt
là lĩnh vực tin học và tự động hoá
Năm 1971, hãng Intel đã cho ra đời bộ vi xử lý( microprocessor ) đầu tiên trênthế giới tên gọi là Intel – 4004/4 bit, nhằm đáp ứng nhu cầu cấp thiết của mộtcông ty kinh doanh là hãng truyền thông BUSICOM Intel-4004 là kết quả củamột ý tưởng quan trọng trong kĩ thuật vi xử lý số Đó là một kết cấu logic mà cóthể thay đổi được chức năng của nó bằng chương trình ngoài chứ không pháttriển theo hướng tạo ra một cấu trúc cứng chỉ thực hiện một số chức năng nhấtđịnh như trước đây Sau đó, các bộ vi xử lý mới liên tục được đưa ra thị trườngngày càng được phát triển, hoàn thiện hơn trong các thế hệ về sau
Vào năm 1972, hãng Intel đưa ra bộ vi xử lý 8 bit đầu tiên với tên Intel 8008/8bit Từ năm 1974 – 1975, Intel chế tạo các bộ vi xử lý 8-bit 8080 và 8085A.Cũng vào khoảng thời gian này, một loạt các hãng khác trên thế giới cũng đãcho ra đời các bộ vi xử lý tương tự như : 6800 của Motorola với 5000 Tranzitor,signetics 6520, 1801 của RCA, kế đến là 6502 của hãng MOS Technology vàZ80 của hãng Zilog
2 Các bộ vi điều khiển
2.1 Các bộ vi điều khiển và các bộ xử lý nhúng.
Trong mục này chúng ta bàn về nhu cầu đối với các bộ vi điều khiển (VĐK )
và so sánh chúng với các bộ vi xử lý cùng dạng chung Pentium và các bộ vi xử
lý 86 khác Chúng ta cùng xem xét vai trò của các bộ vi điều khiển trong thịtrường các sản phẩm nhúng Ngoài ra, chúng ta còn cung cấp một số tiêu chuẩn
vể cách lựa chọn một bộ vi điều khiển như thế nào
Trang 62.2 Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung
Sự khác nhau giữa một bộ vi điều khiển và một bộ vi xử lý là gì? Bộ xử lýở đây
là cá bộ vi xử lý công dụng chung như họ Intel là 86(8086, 80286, 80386,
80486 và Pentium) hoặc họ Motorola là 680 là ( 68000, 68010, 68020, 68030,
68040 vv ) Những bộ vi xử lý này không có RAM, ROM và không có cáccổng vào ra trên chíp.Với lý do đó mà chúng được gọi chung là các bộ vi xử lýcông dụng chung
Hình: Hệ thống vi xử lý được so sánh với hệ thống vi điều khiển a)Hệ thống vi xử lý công dụng chung
Trang 7thành và không gian lại hạn chế Trong nhiều ứng dụng , ví dụ như điều khiển
TV từ xa thì không cần công suất tính toán của bộ vi xử lý 486 hoặc thâm chínhư 8086 Trong rất nhiều ứng dụng thì không gian nó chiếm, công suất nó tiêutốn và giá thành trên một đợn vie là những cân nhắc nghiêm ngặt hơn nhiều sovới công suất tính toán Những ứng dụng thường yêu cầu một số thao tác vào-ra
để đọc các tín hiệu tắt- mở những bit nhất định Điều thú vị là một số nhà sảnxuất các bộ vi điều khiển đã đi xa hơn là tích hợp cả một bộ chuyển đổi ADC vàcác ngoại vi khác vào trong bộ điều khiển
Chương II:Tổng quan về họ vi điều khiển 8051
I Họ vi điều khiển 8051
1 Giới thiệu chung
Họ vi điều khiển 8051(còn gọi là C51) là một trong những họ vi điều khiểnthông dụng nhất Bộ vi điều khiển này có 128 byte RAM,4K byte ROMtrên chíp, hai bộ định thời, một cổng nối tiếp và 4 cổng (đều rộng 8bit) vào ratất cả được đặt trên một chíp Lúc ấy nó được coi làmột “hệ thống trên chíp” 8051 là một bộ xử lý 8 bit có nghĩa là CPU chỉ cóthể làm việc với 8 bit dữ liệu tại một thời điểm Dữ liệu lớn hơn 8 bitđược chia ra thành các dữ liệu 8 bit để cho xử lý 8051 có tất cả 4 cổng vào-
ra I/O mỗi cổng rộng 8bit Mặc dù 8051 có thể có một ROM trênchíp cực đại là 64 K byte,nhưng các nhà sản xuất lúc đó đã choxuất xưởng chỉ với 4K byte ROM trên chíp 8051 đã trở nên phổ biếnsau khi Intel cho phép các nhà sản xuất khác sản xuất và bán bất kỳ dạngbiến thể nào của 8051 mà họ thích với điều kiện họ phải để mã lạitương thích với 8051.Điều này dẫn đến sự ra đời nhiều phiên bảncủa 8051 với các tốc độ khác nhau và dung lượng ROM trên chípkhác nhau được bán bởi hơn nửa các nhà sản xuất Điềunày quan trọng
là mặc dù có nhiều biến thể khác nhau của 8051 về tốc độ và dung lươngnhớ ROM trên chíp, nhưng tất cả chúng đều tương thích với 8051 ban đầu vềcác lệnh Điều này có nghĩa là nếu ta viết chương trình của mình chomột phiên bản nào đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác màkhông phân biệt nó từ hãng sản xuất nào
Trang 82 Sơ đồ cấu trúc chung của họ 8051
Interrupt control : Điều khiển ngắt
Other registers : Các thanh ghi khác
ROM : là loại bộ nhớ không mất dữ liệu khi mất nguồn cung cấp, được gọi lànhớ chương trình bên trong
RAM : là bộ nhớ dữ liệu bên trong có dung lượng 128Byte dùng để lưu trữ dữliệu như biến số, hằng số, bộ đệm truyền thông
Timer 2, 1 , 0 : Bộ định thời 2 , 1 , 0
CPU : Đơn vị điều khiển trung tâm
Oscillator : Mạch dao động
Bus control: Điều khiển Bus
I/O ports: Các ports vào/ ra
Serial port: port nối tiếp
Address/data : địa chỉ/ dữ liệu
Trang 93 Sơ đồ chân của 8051
Chức năng :
- Chân 40 nối dương nguồn 5V
- Chân 20 nối đất (Mass,GND)
- Chân 29 (PSEN): là tín hiệu điều khiển xuất ra của 8051, nó cho phépchọn bộ nhớ ngoài và được nối chung với chân OE (output) của EPROMngoài để cho phép đọc các byte của chương trình ( ở đây là đọc các lệnh-khác với đọc dữ liệu)
- Chân 30 (ALE) là tín hiệu điều khiển xuất ra của 8051, nó cho phép kênhBus địa chỉ và Bus dữ liệu của Port 0
- Chân 31 (EA) được đưa xuống thấp cho phép chọn bộ nhớ mã ngoài đốivới 8051
- P0 từ chân 39-> 32 tương ứng là các chân P0_0 -> P0_7
- P1 từ chân 1->8 tương ứng với các chân P1_0 -> P1_7
- P2 từ chân 21->28 tương ứng là các chân P2_0->P2_7
- P3 từ chân 10->17 tương ứng là các chân P3_0->P3_7
- Riêng cổng 3 có 2 chức năng ở mỗi chân như trên hình vẽ :
- P3.0 – RxD : chân nhận dữ liệu nối tiếp khi giao tiếp với RS232 (COM)
- P3.1 – TxD : phân truyền dữ liệu nối tiếp khi giao tiếp RS232
- P3.2 – INT0 : interupt 0, ngắt ngoài 0
- P3.3 – INT1 : interupt 1 ngắt ngoài 1
- P3.4 – T0 : Timer 0 đầu vào timer 0
Trang 10- P3.5 – T1 : Timer 1 đầu vào timer 1.
- P3.6 – WR : Điều khiển ghi dữ liệu
- P3.7 – RD : Điều khiển đọc dữ liệu
- Chân 18,19 nối với thạch anh tạo thành mạch dao động cho vi điều khiển,
vi xử lý
- Tần số thạch anh thường dùng trong các ứng dụng là 12Mhz và11.092MHz (Giao tiếp với cổng COM), tần số tối đa là 24Mhz
4 Cổng vào ra song song (I/O Port)
8051 có 4 cổng vào ra song song có tên lần lượt là P0, P1, P2, P3 tất cả cáccổng này đều là cổng ra vào 2 chiều 8 bit Các bít của mỗi cổng là một chân trênchíp như vậy mỗi cổng sẽ có 8 chân trên chíp Hướng dữ liệu dùng cổng đó làmcổng ra hay cổng vào là độc lập giữa các cổng và giữa các chân trong cùng 1cổng
Các chân P0 không có điện trở treo cao (pullup resistor) bên trong, mạch láitạo mức cao chi có khi sử dụng cổng này với tính năng là bus dồn kênh địa chỉ/
dữ liệu Như vậy với chức năng ra thông thường, P0 là cổng ra open drain, vớichức năng vào, P0 là cổng cao trở Nếu muốn sử dụng cổng P0 làm cổng vào /rathông dụng thì ta phải thêm trở tử 4K7 đến 10K Các cổng P1, P2, P3 đều cóđiện trở pullup bên trong, do đó có thể dùng với chức năng cổng vào/ra thôngthường mà không cần thêm điện trở bên ngoài
Cổng truyền thông nối tiếp ( Serial Port) :
Cổng nối tiếp trong 8051 chủ yếu được dùng trong các ứng dụng có yêu cầutruyền thông với máy tính, hoặc với 1 vi điều khiển khác Liên quan đến cổngnối tiếp chủ yếu có 2 thanh ghi : SCON và SBUF Ngoài ra, một thanh ghi khác
là thanh ghi PCON (không đánh địa chỉ bít) có bít 7 tên là SMOD quy định tốc
độ truyền của cổng nối tiếp có gấp đôi lên (SMOD=1) hay không (SMOD=0).Cổng có đặc điểm :
- Truyền song công : có nghĩa là tại một thời điểm có thể vừa truyền vừa nhận dữliệu
- Phương thức truyền không đồng bộ: là dữ liệu được truyền đi theo từng kí tự
- Bộ đệm truyền nhận dữ liệu đều có tên là SBUF
- SCON là thanh ghi bit được dùng để lập trình việc đóng khung dữ liệu, xác địnhchế độ làm việc của cổng truyền thông nối tiếp
Trang 11Bảng dưới đây mô tả chi tiết các bit khác nhau của thanh ghi SCON :
7 SM0 9FH Xác định chế độ cổng nối tiếp (bit 0)
6 SM1 9EH Xác định chế độ cổng nối tiếp (bit 1)
5 SM2 9DH Cho phép truyền thông đa xử lý
1 TI 99H Cờ truyền :nhận được sau khi truyền xong 1 byte
0 RI 98H Cờ nhận: Nhận được sau khi nhận đủ 1 byte
Các chế độ làm việc của cổng truyền thông
II Giới thiêu về Vi điều khiển 89C52
AT 89C52 là họ vi xử lý do hãng Intel sản xuất Các sản phẩm AT89C52thích hợp cho những ứng dụng điều khiển Việc xử lý trên byte và các toán sốhọc ở cấu trúc dữ liệu nhỏ được thực hiện bằng nhiều chế độ truy xuất dữ liệunhanh trên RAM nội Tập lệnh cung cấp một bảng tiện dụng của những tập lệnh
số học 8 bit gồm cả lệnh nhân và chia Nó cung cấp những hỗ trợ mở rộng trênchip dùng cho những biến 1 bit như là kiểu dữ liệu riêng biệt cho phép quản lý
và kiểm tra từng bit trực tiếp trong hệ thống điều khiển
AT89C52 cung cấp những đặc tính chuẩn như : 4 Kbyte bộ nhớ chỉ đọc có thếxóa và lập trình nhanh (EPROM), 128 Byte RAM, 32 đường I/O, 2TIME/COUNTER 16 Bit, 5 vecto ngắt có cấu trúc 2 mức ngắt, một Port nối tiếpbán song công, 1 mạch dao động tạo xung Clock và bộ dao động ON-CHIP
Các đặc điểm của chip AT89C52 được tóm tắt như sau :
4Kbyte bộ nhớ có thể lập trình nhanh, có khả năng tới 1000 chu kỳghi/xóa
Trang 12 Tần số hoạt động từ: 0Hz đến 24MHz
3 mức khóa bộ nhớ lập trình
2 bộ Timer/counter 16 bit
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64KB vùng nhớ mã ngoài
64KB vùng nhớ dữ liệu ngoại
4µs cho hoạt động nhân hoặc chia
Chương III: LED BẢY THANH
1 Giới thiêu chung led 7 thanh
LED 7 thanh được dùng nhiều trong các mạch hiện thị thông báo, hiện thị
số, kí tự đơn giản LED 7 được cấu tạo từ các LED đơn sắp xếp theo các thanhnét để có thể biểu diễn các chữ số hoặc các kí tự đơn giản như từ số 0 đến 9 và
A đến F chả hạn LED 7 thanh dùng để hiện số thì rất đẹp và dễ nhìn Tùy vàokích thước của số và kí tự mà mỗi thanh được cấu tạo bởi một hay nhiều LEDđơn Các LED đơn đó được ghép và được đặt tên bằng các chữ cái a g và cómột dấu chấm dot ( dấu chấm này có thể sáng và tắt tùy theo yêu cầu) được cấutạo bởi 1 LED đơn Qua đó người ta chỉ cần 8 bit tương ứng với 8 LED đơn đểđiều khiển được và hiện thị số từ 0 đến 9 và các kí tự từ A đến F
LED đơn được xếp lại với nhau thành hình như trên hình vẽ Các LED đơnnày chỉ chung nhau Anot hoặc Katot và riêng nhau các chân con lại Anot hặc
Trang 13Katot Nhiệm vụ của chúng ta là cho sáng các LED đơn đó để cho nó thành sốhay kí tự đơn giản.
Hiện nay LED 7 được sản xuất theo 2 kiểu là Anot chung và Katot chung
và được điều khiển làm việc tương tự như bơm dòng hay nuốt dòng của cácLED đơn có trong LED7 (Thường hay thiết kế theo kiểu bơm dòng choLED) Thông thường trong các mạch thiết kế thực tế người thiết kế thườnghay sử dụng loại Anot chung Phương pháp ghép nối là cấp dòng, đảo trạngthái thông qua đệm và quét LED
2 Ghép nối led 7 thanh
Để ghép nối với LED7 có thể có nhiều cách, nhưng phải đảm bảo sao cóthể điều khiển tắt mở riêng từng LED đơn trong đó để tạo ra các số và các ký
tự mong muốn.Các ICs điều khiển đều khó khả năng sinh dòng kém tức làdòng đầu ra của các chân ICs nhỏ hơn khả năng nuốt dòng Do vậy, nếu ghépnối trực tiếp các net với các chân cổng IC thì loại Anode chung là thích hợphơn cả Cần phải chú ý dòng dồn về ICs quá mức chịu được thì cũng khôngđược vì làm nóng và dei ICs điều khiển
* 2 cách ghép nối thường dùng:
+ Cách 1 : Dùng trực tiếp các chân điều khiển (vi xử lý)
Đối với cách này thì nhìn thì rất tốn chân của vi xử lý Và dòng của LED sẽdồn tất cả về vi xử lý Nếu một hệ thống lớn thì cách này không ổn vì ảnhhưởng đến vi xử lý và nhiều dòng dồn về vi xử lý sẽ làm vi xử lý nóng và dẫn
Trang 14tới chết ( chúng ta tưởng tượng xem nếu mà hệ thống nhiều phần điều khiển từcác chân vi xử lý mà tất cả các tải điều khiển dồn trực tiếp dòng về vi xử lý thìlúc đó dòng trong 1 thời điểm khá lớn vượt quá ngưỡng cho phép của vi xử lý.Dòng mà vi xử lý chịu đựng được cũng khá nhỏ đâu dưới 100mA ) Các này chỉ dùng được hệ thống điều khiển ít, mạch dùng vi xử lý khá đơn giản như hiện thị LED, đếm số từ 0 đến 9 chả hạn.
+ Cách 2 : Dùng IC giải mã BCD sang LED 7 thanh
Sử dụng IC giải mã 7447 để giả mã từ mã BCD sang mã LED7 Đối vớicách này thì trông rất ổn Vừa tiếp kiệm được chân vi xử lý và tránh được dòngdồn về vi xử lý (dòng ở đây được dồn về 7447) Đây là cách mà người thiết kếthường dùng trong các hệ thống cần đến hiện thị
Thông thường các thiết kế, LED 7 thanh được dùng để hiện thị các giá trịcác giá trị số từ 0 đến 9 và đôi khi cần phải hiện thị các kí tự đơn giản như Ađến F trong hệ thống để báo trạng thái của hệ thống Các giá trị hiện thị baogồm nhiều chữ số tức là chúng ta phải dùng đến nhiều LED7 ghép lại thì mớihiện thị được nhiều số Ví dụ như muốn hiện thị số 123 chả hạn thì chúng taphải dùng đến 3 LED 7 thanh ghép lại
Như vậy để ghép nhiều LED 7 thanh thay vì chung ta phải dùng 8 chânriêng rẽ cho mỗi LED Ví dụ để hiện thị được 3 chữ số lên LED 7 (123 chả hạn)khi đó ta sẽ mất 3x8 = 24 chân dữ liệu điều khiển để hiện thị được 3 chữ số
Trang 15cho các LED 7 thanh và thiết kế thêm các tín hiệu điều khiển cấp nguồn riêng
rẽ cho từng LED 7 một hay là cấp nguồn cho các chân Anot chung hay Katotchung Nhìn trên sơ đồ trên ta thấy được kiểu ghép nối giữa các LED Cácđường dữ liệu vào của 3 LED được chung với nhau và các chân điều khiểnnguồn cho các LED được riêng rẽ và được điều khiển bằng transitor ( khuếchđại dòng) Như vậy đối với mạch trên chúng ta tiếp kiệm được nhiều chân vi xử
lý Đối với mạch trên và cách ghép nối như trên thì mất tối đa chỉ có 11 chân vi
xử lý
8 chân dữ liệu của LED 7 được chung nhau và chung được ghép nối qua
2 cách : Thứ nhất dùng vào trực tiếp các chân vi xử lý và thứ 2 là qua các ICđệm hay IC giải mã Nhưng trong thiết kế không mấy khi người ta cho trực tiếpcác chân dữ liệu đó vào trực tiếp vi xử lý mà người ta phải cho qua các IC đệmhay giải mã đối với hệ thống lớn Chỉ những mạch đơn giản người ta mới chovào trực tiếp vi xử lý.Thông thường người ta dùng thêm các IC đệm hay giải mãnhư ULN2803, 74LS47
Đối với phương pháp ghép LED như thế này thì làm sao điều khiển đượchiện thị số 123 chả hạn Nếu chúng ta mới nhìn thì sẽ thấy các LED 7 sẽ hiện thịgiống nhau vì chúng chung nhau đường dữ liệu Nhưng không phải là vậy Nếuchung ta cho từng thời điểm từng LED sáng 1 thì chúng ta sẽ thấy khác đó Số
123 sẽ được hiện thị lên 3 LED đó Đó là thuật toán quét LED dựa vào hiệntượng lưu ảnh trong mắt khi chúng ta quét với tần số lớn
Trang 16Như vậy đối với phương pháp này chúng ta tiếp kiệm được một số lượnglớn chân vi xử lý và đồng thời tiếp kiệm được năng lượng tiêu thụ do phươngpháp quét LED trong thời gian ngắn Khi đó tối đa trong 1 thời điểm có 1 LEDsáng toàn bộ thôi Cần phải tính toán giá trị dòng vào cho LED sao cho LEDsáng đẹp bằng cách thêm bớt điện trở.
PHẦN 2: NỘI DUNG THIẾT KẾ