BÀI TẬP LỚN
VXL & VĐK
Đề tài
Ứ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
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Mục Lục
Lờ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ác
nghà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 7
thanh.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ốt
hơ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ển
nhiệ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 đảm
bả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.
Nhóm : 1 Page 2
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Hà Nội ngày 28 tháng 12 năm 2013
Nhóm : 1 Page 3
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Quá trình thực hiện:
1. Xây dựng mạch nguyên lý.
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.
Nhóm : 1 Page 5
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
2.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ác
cổ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
b) Hệ thống vi điều khiển
Như thiết kế hệ thống sử dụng bộ vi xử lý công dụng chung chẳng hạn
như Pentium hay 68040 phải bổ xung thêm RAM, ROM, các cổng vào ra và các
bộ định thời ngoài để làm cho chúng hoạt động được. Mặc dù việc bổ sung
RAM, ROM và các cổng vào ra bên ngoài làm cho hệ thống cồng kềnh và đắt
hơn, nhưng chúng có ưu điểm là linh hoạt chẳng hạn như người thiết kế có
quyền quyết định về số lượng RAM, ROM và các cổng vào ra cần thiết phù hợp
với bài toán trong tam tay của mình. Điều này không thể có được với các bộ vi
điều khiển. Một bộ vi điều khiển có một CPU (một bộ vi xử lý) cùng với một
lượng cố định RAM, ROM, các cổng vào ra và một bộ định thời tất cả trên cùng
một chíp. Hay nói cách khác là bộ xử lý RAM, ROM các cổng vào ra và bộ
định thời đều được nhúng với nhau trên một chíp; do vậy người thiết kế không
thể bổ xung thêm bộ nhớ ngoài , cổng vào ra hoặc bộ đinh thời cho nó. Số
lượng cố định của RAM, ROM trên chíp và số các cổng vào – ra trong các bộ vi
điều khiển làm cho chúng trở nên lý tưởng với nhiều ứng dụng mà trong đó giá
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 cho
mộ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.
Nhóm : 1 Page 7
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
2. 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.
Nhóm : 1 Page 8
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
3. 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ép chọn
bộ nhớ ngoài và được nối chung với chân OE (output) của EPROM ngoà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ênh
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ới
chứ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 /ra
thô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ông
thườ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ầu
truyề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ổng
nố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 định
chế độ làm việc của cổng truyền thông nối tiếp.
Bảng dưới đây mô tả chi tiết các bit khác nhau của thanh ghi SCON :
Bit Tên Địa chỉ Chức năng
Nhóm : 1 Page 10
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
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ý
4 REN 9CH Bít cho phép nhận
3 TB8 9BH Sử dụng trong chế độ 2 và 3
2 RB8 9AH Sử dụng trong chế độ 2 và 3
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
• 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 thanh
né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ào
kí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ấu
tạ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.
Ở trên là hình
dạng
LED7 ngoài
thực tế và trong
mạch
nguyên lý và
cấu tạo.
Cấu tạo của LED chúng ta nhìn
trên rất đơn giản chúng chỉ gồm các
LED đơn được xếp lại với nhau thành hình như trên hình vẽ. Các LED đơn
này chỉ chung nhau Anot hoặc Katot và riêng nhau các chân con lại Anot hặc
Katot. 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ác
LED đơn có trong LED7 (Thường hay thiết kế theo kiểu bơm dòng cho
Nhóm : 1 Page 12
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ị bao
gồ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ới
hiện thị được nhiều số. Ví dụ như muốn hiện thị số 123 chả hạn thì chúng ta
phả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ân
riê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ố.
Như vậy sẽ rất tốn chân vi xử lý, do vậy người ta dùng chung các đường dữ liệu
cho 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 Katot
chung. 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ển
Nhóm : 1 Page 14
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
nguồ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ếp
cá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 đệm
hay giải mã đối với hệ thống lớn. Chỉ những mạch đơn giản người ta mới cho
và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 được
hiệ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ếu
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Nút nhấn sẽ được nối 1 đầu với vi điều khiển và 1 đầu nối mass như sau:
d. Khối xử lý
Khối xử lý là vi xử lý 89C52.
Nhóm : 1 Page 18
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Nhóm : 1 Page 19
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
e. Khối hiển thị
Khối hiển thị bao gồm bộ giải mã BCD sử dụng 74LS247 và Led 7 thanh
Anot chung.
Sau khi có các khối, thực hiện ghép nối ta sẽ có mạch mô phỏng hoàn chỉnh như
sau:
Nhóm : 1 Page 20
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
2. Viết Chương trình điều khiển
a. Phần mềm lập trình
Phần mềm lập trình là Keil C.
Các bước tạo 1 project:
Chạy chương trình Keil C:
Nhóm : 1 Page 21
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Vào Project->New Project:
Chọn đường dẫn để lưu và đặt tên cho project:
Nhóm : 1 Page 22
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng
Sau đó ấn Save.
Tiếp theo ta chọn loại Chip: ở đây ta lựa chọn Atmel->chọn AT89C51
Nhóm : 1 Page 23
BTL VXL & VĐK GVHD: Ts. Phạm Văn Hùng