thu thập y kiến biểu quyết dùng 8051
Trang 1Lời nói đầu
Trong sự phát triển của kỹ thuật điện tử ngày nay việc sử dụng các con vi điềukhiển trong các hệ thống điện tử rất phổ biến cả về số lợng các ứng dụng của nótrên nhiều thiết bị điện tử từ dân dụng cho đến chuyên dụng, trong nhiều lĩnh vựcnh đo lờng, điều khiển, v.v nhờ vào nhiều u điểm của nó Cùng với nó là sự pháttriển kỹ thuật số với nền tảng là các mạch logic số dựa trên sự kết hợp của cáccổng logic cơ bản mà ngày nay đã đợc tích hợp trong các IC số Việc sử dụngmàn hình LED để hiển thị thông tin nhằm mục đích thông báo, quảng cáo, tại cácnơi công cộng đã đợc sử dụng rất rộng rãi
Trên cơ sở những kiến thức đã đợc học trong môn học kỹ thuật vi xử lý và Kỹthuật số chúng em đã thiết kế một mạch logic số sử dụng vi điều khiển với tên đề
tài đầy đủ là: Thiết kế hệ thống thu thập ý kiến biểu quyết sử dụng VĐK8051 với mục đích là tìm hiểu thêm về vi điều khiểnvà lĩnh vực kỹ thuật số, nâng
cao kiến thức của mình
Do kiến thức còn hạn hẹp và thời gian thực hiện không đợc nhiều nên emkhụng thể hiển thị kết quả trờn mỏy tớnh được em xin được trỡnh bày theocỏch hiển thị trờn led 7 vạch Mặc dù đã cố gắng phần nào thiết kế và tính toán
một cách chi tiết các mạch, các thông số nhng đôi khi còn mang tính lý thuyết,cha thực tế Em mong có sự góp ý và sửa chữa để đề tài này có tính khả thi hơn vềcả phơng diện kinh tế cũng nh kỹ thuật
Hải phũng 2011
Mục lục
Trang
1
Trang 2Chương 1: Khái quát về vấn đề cần nghiên cứu
1.1 Giới thiệu về hệ thống thu thập ý kiến
1.2 Hệ thống biểu quyết( Yes/ No) sử dụng 8051
Thuyết minh nguyên lý hoạt động của mạch
Chương 3: Thiết kế phần mềm điều khiển
3.1 Lưu đồ thuật toán
3.2 Phần mềm điều khiển
3.3 Kết luận
Tài liệu tham khảo
Trang 3Chương 1: Khái quát về vấn đề cần nghiên cứu
1.1 Giới thiệu về hệ thống thu thập ý kiếnHệ thống thu thập ý kiến là việc tổng hợp, phân loại, đánh giá về một vấn đề nàođó có sự tham gia của nhiều người
Hệ thống thu thập ý kiến được sử dụng rộng rãi trong nhiều lĩnh vực như: thu thập ý kiến đồng tình trong một cuộc họp, thu thập các câu trả lời từ vài phương án có sẵn, thu thập ý kiến khách hàng về chất lượng sản phẩm…
Trước đòi hỏi của một xã hội phát triển nhanh chóng như ngày nay việc thu thậpđược nhiều ý kiến với một tốc độ nhanh và chính xác thì các hệ thống thu thập ýkiến đã không ngừng đổi mới phương thức với sự hỗ trợ đắc lực của công nghệ thông tin và các thiết bị điện tử hiện đại
3
Trang 4Dựa trên công nghệ thông tin và các thiết bị điện tử hiện đại các hệ thống thu thập ý kiến biểu quyết ngày càng hoàn thiện có thể thu thập được nhiều ý kiến biểu quyết trong cùng một thời gian Đảm bảo nhanh chóng và chính xác.Có thể xử lý, lưu trữ các thông tin đã thu thập theo yêu cầu nhất định Có thể hoạt động từ xa với sự hỗ trợ của internet và các thiết bị thu phát không dây.
Giá thành ngày càng giảm, đặc biệt nếu sử dụng các VĐK với mục đích điều khiển nhất định nào đó có thể xây dựng được hệ thống đơn giản nhưng vẫn thỏa mãn yêu cầu đặt ra
1.2 Hệ thống biểu quyết( Yes/ No) sử dụng 8051
Phân loại:
Một hệ thống thu thập ý kiến có thể được phân loại theo mục đích cần thực hiện:- Hệ thống thu thập ý kiến đồng tình, phản đối; thích hay không thích( Yes/ No) về một vấn đề nào đó
- Hệ thống thu thập ý kiến về một vấn đè nào đó với các phương án đưa ra để mọi người chọn
Nói chung hệ thống càng thu thập và xử lý nhiều thông tin thì càng phức tạp.Sau đây em xin trình bày về vấn đề “ Thiết kế hệ thống thu thập ý kiến biểu quyết sử dụng VĐK AT89C51”
Yêu cầu công nghệ:
Hệ thống thu thập ý kiến biểu quyết(Yes/ No) là hệ thống khá phổ biến được dùng để tổng hợp số lượng( %) người đồng tình( Yes) và số lượng( %) người phủ định( No)
Hệ thống thu thập ý kiến biểu quyết sử dụng 8051 sẽ nhận tín hiệu từ người cần thu thập qua nút ấn
Để đảm bảo tính nhất quán thì những người đã ấn Yes thì ấn No sẽ không có tác dụng và ngược lại
Trang 5Để giới hạn trong một khoảng thời gian thỡ khi quỏ thời gian yờu cầu mọi tớn hiệu Yes hoặc No sẽ khụng được hệ thống xử lý.
Để đảm bảo yờu cầu mở rộng hệ thống tức là thu thập được nhiều ý kiến hơn thỡ ta sử dụng truyền thụng nối tiếp giữa cỏc vi điều khiển
Cuối cựng hệ thống sẽ tổng hợp và đưa ra số lượng ý kiến đồng tỡnh( Yes) và phủ định( No) được hiển thị trờn Led 7 đoạn, LCD hay mỏy tớnh
Chương 2: Xõy dựng mạch phần cứng
2.1 Giới thiệu về vi điều khiển AT89C51AT89C51 là một bộ vi xử lý 8 bit, loại CMOS, có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình đợc Nó đợc sản xuất với công nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tơng thích với họ MCS-51TM về chân ra và tập lệnh
5
Trang 6
Sơ đồ khối của AT89C51
AT89C51 có các đặc trng cơ bản nh sau: 4 K byte Flash, 128 byte RAM, 32 ờng xuất nhập, hai bộ định thời/đếm 16-bit, một cấu trúc ngắt hai mức u tiên và
đ-5 nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clock trên chip AT89C51 đợc thiết kế với logic tĩnh cho hoạt động có tần số
giảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lợng đợc lựa chọn bằng phần mềm Chế độ nghỉ dừng CPU trong khi vẫn cho phép RAM, các bộ định
thời/đếm, port nối tiếp và hệ thống ngắt tiếp tục hoạt động Chế độ nguồn giảm duy trì nội dung của RAM nhng không cho mạch dao động cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đến khi có reset cứng tiếp
theo
Trang 7Sơ đồ cỏc chõn 89C51
Nh vậy AT89C51 có tất cả 40 chân với các chức năng nh sau:
Port 0 là port xuất nhập 8-bit hai chiều Port 0 còn đợc cấu hình làm bus
địa chỉ (byte thấp) và bus dữ liệu đa hợp trong khi truy xuất bộ nhớ dữ liệu ngoài
và bộ nhớ chơng trình ngoài Port 0 cũng nhận các byte mã trong khi lập trình
cho Flash và xuất các byte mã trong khi kiểm tra chơng trình (Các điện trở kéolên bên ngoài đợc cần đến trong khi kiểm tra chơng trình)
- Port 1(1-8)
Port 1 là port xuất nhập 8-bit hai chiều Port 1 cũng nhận byte địa chỉ
thấp trong thời gian lập trình cho Flash
- Port 2 (21-28)
Port 2 là port xuất nhập 8-bit hai chiều Port 2 tạo ra các byte cao của bus
địa chỉ trong thời gian tìm nạp lệnh từ bộ nhớ chơng trình ngoài và trong thời
7
Trang 8gian truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 16-bit Trong thời gian
truy xuất bộ nhớ dữ liệu ngoài sử dụng các địa chỉ 8-bit, Port 2 phát các nộidung của thanh ghi chức năng đặc biệt P2 Port 2 cũng nhận các bít địa chỉ cao
và vài tín hiệu điều khiển trong thời gian lập trình cho Flash và kiểm tra chơngtrình
- Port 3 (10-17)
Port 3 là Port xuất nhập 8-bit hai chiều Port 3 cũng còn làm các chức
năng khác của AT89C51 Các chức năng này đợc liệt kê nh sau:
P3.0 RxD Ngõ vào Port nối tiếpP3.1 TxD Ngõ ra Port nối tiếpP3.2 INT0 Ngõ vào ngắt ngoài 0P3.3 INT1 Ngõ vào ngắt ngoài 1P3.4 T0 Ngõ vào bên ngoài của bộ định thời 1P3.5 T1 Ngõ vào bên ngoài của bộ định thời 0P3.6 WR Điều khiển ghi bộ nhớ dữ liệu ngoàiP3.7 RD Điều khiển đọc bộ nhớ dữ liệu ngoài
Port 3 cũng nhận một vài tín hiệu điều khiển cho việc lập trình Flash và
RST
Trang 9Khi hoạt động bình thường, xung ngõ ra ALE lu«n có tần sốä không đổilà 1/6 tần số của mạch dao động, có thể được dùng cho các mụch đích định
thời từ bên ngoài vµ tạo xung clock Tuy nhiên, lưu ý là một xung ALE sẽ bị
bỏ qua trong mỗi một chu kỳ truy xuất bộ nhớ dữ liệu ngoài
Khi cần, hoạt động ALE có thể được vô hiệu hoá bằng cách set bit 0của thanh ghi chức năng đặc biệt có địa chỉ 8Eh Khi bit này được set, ALE
chỉ tích cực trong thời gan thực hiện lệnh MOVX hoặc MOVC Ngược lại,
chân này sẽ được kéo lên cao Việc set bit không cho phép hoạt động chốt
byte thấp của địa chỉ sẽ không có tác dụng nếu bộ vi điều khiển đang ở chếđộ thực thi chương trình ngoài
- PSEN (29)
PSEN (Program Store Enable) là xung điều khiển truy xuất bộ nhớchương trình ngoài Khi AT89C52 đang thực thi chương trình từ bộ nhớchương trình ngoài, PSENđược kích hoạt hai lần mỗi chu kỳ máy, nhưng haihoạt động PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài
- EA/Vpp (31)
EA (External Access Enable) là chân cho phép truy xuất bộ nhớ chươngtrình ngồi ( bắt đầu từ 0000H đến FFFFH)
EA = 0 cho phép truy xuất bộ nhớ chương trình ngoài, ngược lại EA=1
sẽ thực thi chương trình bên trong chip
Tuy nhiên, lưu ý rằng nếu bit khoá 1 (lock-bit 1) được lập trình, EA sẽđược chốt bên trong khi reset
Chân này cũng nhận điện áp cho phép lập trình Vpp=12V khi lập trìnhFlash
- XTAL1 và XTAL2 XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại đảo của
mạch dao động, được cấu hình để dùng như một bộ dao động trên chip
9
Trang 10
Không có yêu cầu nào về chu kỳ nhiệm vụ của tín hiệu xung clock bên
ngoài do tín hiệu này phải qua một flip-flop chia hai trước khi đến mạch tạo
xung clock bên trong, tuy nhiên các chi tiết kỹ thuật về thời gian mức thấp và
mức cao, điện áp cực tiểu và cực đại cần phải được xem xét.2.2 Sơ đồ phần cứng
Sơ đồ nguyên lý:
Các phần tử trong mạch:
+ Nguồn: Mạch sử dụng nguồn 5V một chiều.+ Các nút ấn, điện trở treo:
Trang 11Các nút ấn dùng để lấy tín hiệu từ người điều khiển đưa vào hệ thống Có 15 người cần được thu thập ý kiến nên ta sử dụng 30 nút ấn, mỗi người có 2 nút tương ứng với 2 nút Yes( nút trên) và No( nút dưới).
Các điện trở treo( 10K) một đầu treo lên cao( Vcc) và một đầu vào chân output.Nếu không có điện trở treo này thì khi chân output chưa xuất dữ liệu thì dữ liệu đọc vào sẽ bị chập chờn, không biết nó là 0 hay 1
+ Hai VĐK AT89C51:
11
Trang 12Có nhiệm vụ thu thập tín hiệu từ nút ấn gửi đến, thực hiệ đếm các tín hiệu Yes, No Tất cả các công việc này thực hiện chủ yếu trên VĐK U1 còn U2 thực hiện nhiệm vụ đưa tín hiệu truyền thông nối tiếp từ IC1 gửi đến để hiển thị
+ IC giải mã led 7 vạch 7447:
Đây là IC dùng để chuyển tín hiệu dạng số nhị phân sang mã 7 vạch.IC này hoạt động ở mức tích cực thấp
Trang 13Thuyết minh nguyên lý hoạt động của mạch:
Khi một trong 15 người ấn một trong các nút Yes( trên) hoặc No( dưới) sẽ có các tín hiệu logic 1 đưa vào các cổng xuất nhập của 8051( U1)
VĐK U1 sẽ đếm các tín hiệu Yes hoặc No do mỗi người gửi đến, đặc biệt nếu những người đã ấn Yes rồi thì ấn No sẽ không được chấp nhận và ngược lại.Hệ thống còn khống chế được khoảng thời gian định trước( 10s) nếu quá khoảngthời gian này mọi tác động vào nút ấn đều vô nghĩa
Do AT89C51 chỉ có 32 chân xuất nhập nên để có thể đưa tín hiệu ra để hiển thị ta phải dùng một VĐK 89C51 nữa, ta sử dụng truyền thông nối tiếp, VĐK U2 sẽnhận dữ liệu gửi đến qua chân TxD của U1 và xuất ra cổng P0 của U2
Do phải dùng đến hai led 7 vạch để hiển thị được nhiều giá trị hơn nên lúc này các tín hiệu đưa ra ở cổng P0 sẽ là các mã BCD nén và đưa vào 2 IC 7447 để giải mã hiển thị Hai chân P2.0 và P2.1 được sử dụng để cho phép xuất giá trị đếm Yes hoặc No
13
Trang 14Chương 3: Thiết kế phần mềm điều khiển
3.1 Lưu đồ thuật toánLưu đồ thuật toán được tóm tắt như sau:
Trong mỗi một khối lại có một chương trình con thực hiện một công việc nhất định như: đếm giá trị đúng, sai; truyền thông nối tiếp; hiển thị( mã BCD nén)…
Trang 153.2 Phần mềm điều khiểnChương trình chạy bằng ngôn ngữ lập trình Asembly như sau:
Chương trình cho IC1( AT89C51)
#include <sfr51.inc>ORG 0000h
LJMP MAINORG 0BHLJMP TIMER0ORG 30HMAIN : MOV IE, #10000010B MOV PCON,#0H
MOV TMOD,#21H MOV SCON,#50H MOV TH1,#F4H MOV TH0,#0h MOV TL0,#0h MOV A, #0FFH MOV B, #0H MOV R7,#0H MOV R0, #10 MOV R2, #20 AGAIN :
MOV @R0, A INCR0 DJNZ R2, AGAIN
MOV A,#0H SETB TR0 SETB TR1 MOV P0,#FFHDEM :
KTP00 : MOV R1,26 CJNE R1,#0FFH,KTP02 JB P0.0,NO1
INC A MOV 26,#01H NO1 : JB P0.1,KTP02 INC B
MOV 26,#01HKTP02 :
MOV R1,12 CJNE R1,#0FFH,KTP04 JB P0.2,NO2
INC A MOV 12,#01H NO2 : JB P0.3,KTP04 INC B
MOV 12,#01HKTP04 :
MOV R1,13 CJNE R1,#0FFH, KTP06 JB P0.4, NO3
INC A MOV 13,#01H NO3 : JB P0.5, KTP06 INC B
15
Trang 16MOV 13,#01HKTP06 :
MOV R1,14 CJNE R1,#0FFH,KTP10 JB P0.6,NO4
INC A MOV 14,#01H NO4 : JB P0.7,KTP10 INC B
MOV 14,#01HKTP10 :
MOV R1,15 CJNE R1,#0FFH,KTP12 JB P1.0,NO5
INC A MOV 15,#01H NO5 : JB P1.1,KTP12 INC B
MOV 15,#01HKTP12 :
MOV R1,16 CJNE R1,#0FFH, KTP14 JB P1.2, NO6
INC A MOV 16,#01H NO6 : JB P1.3, KTP14 INC B
MOV 16,#01HKTP14 :
MOV R1,17 CJNE R1,#0FFH,KTP16 JB P1.4,NO7
INC A MOV 17,#01H NO7 : JB P1.5,KTP16 INC B
MOV 17,#01HKTP16 :
MOV R1,18 CJNE R1,#0FFH,KTP20 JB P1.6,NO8
INC A MOV 18,#01H NO8 : JB P1.7,KTP20 INC B
MOV 18,#01HKTP20 :
MOV R1,19 CJNE R1,#0FFH,KTP22 JB P2.0,NO9
INC A MOV 19,#01H NO9 : JB P2.1,KTP22 INC B
MOV 19,#01HKTP22 :
MOV R1,20 CJNE R1,#0FFH,KTP24 JB P2.2,NO10
INC A MOV 20,#01H
Trang 17KTP24 : MOV R1,21 CJNE R1,#0FFH,KTP26 JB P2.4,NO11
INC A MOV 21,#01H NO11 : JB P2.5,KTP26 INC B
MOV 21,#01HKTP26 :
MOV R1,22 CJNE R1,#0FFH, KTP32 JB P2.6, NO12
INC A MOV 22,#01H NO12 : JB P2.7, KTP32 INC B
MOV 22,#01HKTP32 :
MOV R1,23 CJNE R1,#0FFH, KTP34 JB P3.2, NO13
INC A MOV 23,#01H NO13 : JB P3.3, KTP34 INC B
MOV 23,#01HKTP34 :
MOV R1,24 CJNE R1,#0FFH,KTP36 JB P3.4,NO14
INC A MOV 24,#01H NO14 : JB P3.5,KTP36 INC B
MOV 24,#01HKTP36 :
MOV R1,25 CJNE R1,#0FFH,KT JB P3.6,NO15 INC A
MOV 25,#01H NO15 : JB P2.5,KT INC B MOV 25,#01HKT :
LCALL TRUYENCJNE R7,#142,PHUNHAYMAI : SJMP NHAYMAIPHU :
LJMP DEM;;;;;;;;;;;;;;;;;;;;;;;;;;;TRUYEN :
TRUYEN1 : MOV SBUF,AHERE:
JNB TI,HERE CLR TITRUYEN2 : MOV SBUF,BHERE1 :
JNB TI,HERE1 CLR TI
17
Trang 18RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;TIMER0 :
CLR TR0 INC R7 MOV TH0,#0H MOV TL0,#0H SETB TR0 RETIEND
Chương trình cho IC2 ( AT89C51)
#include <sfr51.inc>ORG OH
LJMP MAINORG 23HLJMP SERIALORG 30HMAIN : MOV R7,#00H MOV IE,#10010000B MOV TMOD,#20H MOV PCON,#0H MOV SCON,#50H MOV TH1,#F4H SETB TR1LAP :
YES : JB P2.0,NO MOV A,R0 LCALL BCDNEN MOV P0,A NO :
JB P2.1,LAP MOV A,R1 LCALL BCDNEN MOV P0,A SJMP LAPBCDNEN :
MOV B,#10 DIV AB ANL A,#0FH ANL B,#0FH SWAP A ORL A,B RET;;;;;;;;;;;;;;;;;;;;;;;;;;ORG 100H
SERIAL :SERIAL1 : CJNE R7,#00H,SERIAL2 JB TI,TRANS1
MOV A,SBUF MOV R0,A CLR RI
Trang 19CLR TI RETI
SERIAL2 : CJNE R7,#01H,SERIAL1 JB TI,TRANS2
MOV A,SBUF MOV R1,A CLR RI MOV R7,#00H RETI
TRANS2 : CLR TI RETIEND3.3 Kết luận- Mạch đã thực hiện được yêu cầu đặt ra với chức năng chính là tổng hợp ý kiến biểu quyết
- Mạch còn có khả năng thực hiện mở rộng để tổng hợp được nhiều ý kiến do sửdụng truyền thông nối tiếp
* Điều chưa đạt được:
- Tuy nhiên phần mềm điều khiển phải thực hiện công việc kiểm tra từng cổng xuất nhập nên nếu hệ thống tổng hợp nhiều ý kiến biểu quyết sẽ mất thời gian cho việc viết phần mềm, làm chậm quá trình xử lý và tốn bộ nhớ Nên thay 1 chương trình khác hợp lý hơn
- Việc hiển thị trên led 7 vạch làm cho hệ thống cồng kềnh nếu muốn hiển thị nhiều giá trị và không thuận tiện cho việc thu thập ý kiến từ xa
TÀI LIỆU THAM KHẢO
[1]: Tống Văn On, “Họ Vi Điều Khiển 8051”, Nxb Lao động xã hội [2]: Nguyễn Tăng Cường, Phan Quốc Thắng, “Cấu trúc và lập trình họ vi điều khiển 8051”, Nxb Khoa học và Kỹ thuật.
19