Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể một vấn đề đơn giản một sớm một chiều Việc hiểu được cơ chế hoạt động của bộ vi đ
Trang 1MỤC LỤC
Chương1:giới thiệu về hệ thống điều khiển nhiệt độ -1
I / khái niệm về hệ thống điều khiển nhiệt độ -1
II/ các nguyên tắc điều khiển nhiệt độ -1
III/các loại cảm biến nhiệt đô -2
IV/mô hình tổng quát và các phương pháp đo nhiệt độ -3
Chương 2:cảm biến nhiệt -6
I/ các thông số cảm biến -6
II/các loại cảm biến thông dụng -6
Chương 3:giới thiệu vi xử lý AT89C57 -11
I/giới thiệu cấu trúc phần cứng họ MCS51 -11
II/khảo sát sơ đồ chân 8952,và chức năng từng chân -13
III/cấu trúc bên trong vi điều khiển -15
IV/hoạt động timer của 8952 -23
V/hoạt động Port nối tiếp -32
VI/tập lệnh họ 8952 -39
Chương 4:mở rộng port dùng 8255 -45
I/cấu trúc phần cứng -45
II/ cấu trúc phần mềm -47
III/ Giao tiếp 8255 với vi xử lý -47
Chương 5 :thiết kế mạch -49
I/ giới thiệu các linh kiện chính -51
II/thiết kế kit vi xử lý -54
III/ thiết kế mạch điều khiển công suất -58
IV/ thiết kế mạch bàn phím -60
V/ thiết kế mạch nguồn -61
VI/ thiết kế mạch hiển thị -63
VII/ thiết kế khối hiệu chỉnh zieger Nichol -64
VIII/ thiết kế mạch xử lý ADC -68
Chương 6: lưu đồ giải thuật -72
Chương 7:chương trình phần mềm -80
Trang 2PHẦN MỞ ĐẦU
Ngày nay kỹ thuật vi điều khiển đã trở nên quen thuộc trong các ngành kỹ thuật và trong dân dụng Từ các dây chuyền sản xuất lớn đến các thiết bị gia dụng, chúng ta đều thấy sự hiện diện của vi điều khiển Các bộ vi điều khiển có khả năng xử lý nhiều hoạt động phức tạp mà chỉ cần một chip vi mạch nhỏ,nó đã thay thế các thiết bị điều khiển lớn và phức tạp bằng những mạch điện gọn nhẹ, dễ dàng thao tác sử dụng
Chính vì các lý do trên, việc tìm hiểu, khảo sát vi điều khiển là điều mà các sinh viên ngành điện mà đặc biệt là chuyên ngành điều khiển tự động phải hết sức quan tâm
Các bộ điều khiển sử dụng vi điều khiển tuy đơn giản nhưng để vận hành và sử dụng đươc lại là một điều rất phức tạp Phần công việc xử lý chính vẫn phụthuộc vào con người, đó chính là chương trình hay phần mềm Tuy chúng ta thấy các máy tính ngày nay cực kỳ thông minh, giải quyết các bài toán phức tạp trong vài phần triệu giây, nhưng đó cũng là dựa trên sự hiểu biết của con người Nếu không có sự tham gia của con người thì hệ thống vi điều khiển cũng chỉ là một vật vô tri Do vậy khi nói đến vi điều khiển cũng giống như máy tính bao gồm 2 phầân là phần cứng và phần mềm
Các bộ vi điều khiển theo thời gian cùng với sự phát triển của công nghệ bán dẫn đã tiến triển rất nhanh, từ các bộ vi điều khiển 4 Bit đơn giản đến các bộ
vi điều khiển 32 Bit Với công nghệ tiên tiến ngày nay các máy tính có thể đi đến việc suy nghĩ, tri thức các thông tin đưa vào, đó là các máy tính thuộc thế hệ trí tuệ nhân tạo
Mặc dù vi điều khiển đã đi được những bước dài như vậy nhưng để tiếp cận được với kỹ thuật này không thể một vấn đề đơn giản một sớm một chiều Việc hiểu được cơ chế hoạt động của bộ vi điều khiển 8 Bit là cơ sở để chúng
ta tìm hiểu và sử dụng các bộ vi điều khiển tối tân hơn, đây chính là bước đi đầu tiên khi chúng ta muốn xâm nhập sâu hơn vào lĩnh vực này
Để tìm hiểu bộ vi điều khiển và tạo nền tản cho việc nghiên cứu sau nầy thì việc trang bị những kiến thức về vi điều khiển cho sinh viên là hết sức cần
thiết Nên em chọn đề tài “ Thiết kế và thi công hệ thống Kit Vi Điều
Khiển 8952 ứng dụng vào việc điều khiển nhiệt độ “
Trang 3Chương I:
GIỚI THIỆU HỆ THỐNG ĐIỀU KHIỂN
NHIỆT ĐỘ
I.Khái niệm về hệ thống điều khiển nhiệt độ:
Nhiệt độ là đại lượng vật lý hiện diện khắp mọi nơi và trong nhiều lĩnhvực, đặc biệt là trong công nghiệp vì mỗi sản phẩm , thiết bị hay điều kiệnlàm việc cần những nhiệt độ khác nhau Muốn có được nhiệt độ phù hợp cầnphải có một hệ thống điều khiển.Tùy theo tính chất ,yêu cầu của quá trình mànó đòi hỏi các phương pháp điều khiển thích hợp
Hệ thống điều khiển nhiệt độ có thể phân làm hai loại :Hệ thống điềukhiển hồi tiếp (feedback control system) và hệ thống điều khiển tuần tự(sequence control system)
Điều khiển hồi tiếp thường được xác định và giám sát kết quả điều khiển ,
so sánh nó với yêu cầu thực thi và tự động điều chỉnh đúng
Điều khiển tuần tự thực hiện từng bước điều khiển tùy theo hoạt động điềukhiển trước khi xác định tuần tự
II/ các nguyên tắc điều khiển :
1.Nguyên tắc thông tin phản hồi:
Trong các quá trình điều khiển ,tồn tại hai dòng thông tin một từ cơquan chủ quản đến đối tượng và một từ đối tượng đi ngược về cơ quan điềukhiển , được gọi là liên kết ngược hay hồi tiếp
a) Quá trình điều khiển theo
nguyên tắc bù nhiễu:
Tác động vào đối tượng là
luật điều khiển u theo nguyên tác
bùnhiễu để đạt đầu ra c mong
muốn,nhưng không quan sát tín
hiệu ra c
Về nguyên tắc ,đối với hệ
phức tạp thì điều khiển theo mạch hở không cho kết quả tốt
b) Điều khiển theo sai lệch:
Cơ quan điều khiển quan
sát c, so sánh với định chuẩn
điều mong muốn r để chọn luật
Trang 4Nguyên tắc ở đây là điều chỉnh linh hoạt ,loại sai lệch ,thử nghiệm vàsửa.Đây là nguyên tắc cơ bản trong điều khiển.
2.Nguyên tắc đa dang tương xứng:
Muốn quá trình điều khiển có chất lượng thì sự đa dạng của cơ quanđiều khiển phải tương xứng với sự đa dạng của đối tượng Tính đa dạng của cơquan điều khiển có thể dùng để chế ngự đối tượng thể hiện ở :khả năng thuthập thông tin , lưu trữ ,phân tích xử lý ,chọn quyết định ,tổ chức thực hiện
3.Nguyên tắc bổ sung ngoài:
Một hệ thống luôn tồn tại và hoạt động trong môi trường cụ thể và cótác động qua lại chặt chẽ với môi trường đó Trong điều kiện thừa nhậnnguyên tắc bổ sung ngoài sau:thừa nhận có một đối tượng chưa biết (hộpđen)tác động vào hệ thống và ta phải điều khiển cả hệ thống lẫn hộp đen
4.Nguyên tắc dự trư:õ
Vì nguyên tắc 3 luôn coi thông tin chưa đầy đủ phải đề phòng các bấttrắc có thể xảy ra và không được dùng toàn bộ lực lượng trong điều kiện bìnhthường Vốn dự trữ là không sử dụng ,nhưng cần để bảo đảm cho hệ thốngvận hành an toàn
5.Nguyên tắc phân cấp:
Đối với một hệ thống phức tạp cần xây dựng nhiều lớp điều khiển bổsung cho trung tâm ,để khuếch đại khả năng điều khiển Phải tránh khuynhhướng hình thức và phân cấp quá đáng ,xử lý cho đúng nhiện vụ và quyền hạn
ở mỗi cấp
6.Nguyên tắc cân bằng nội:
Mỗi hệ thống cần được xây dựng với cơ chế cân bằng nội để có khảnăng tự giải quyết những biến động xảy ra
III.Các loại điều khiển:
Sự phân loại điều khiển có tính chất quy ước
1.Điều khiển ổn định hóa:
Mục tiêu điều khiển là kết quả đầu ra bằng đầu vào chuẩn r(t) = constvới sai lệch cho phép exl (sai số ở chế độ xác lập)
e(t) = r(t) - c(t) exl
Đặc biệt khi đầu ra hệ thống cần giữ là hằng số ,ta có hệ thống điềuchỉnh hay hệ thống ổn định
Ví dụ: hệ thống ổn định nhiệt độ ,điện áp ,áp suất ,nồng độ tốc độ…
2.Điều khiển theo chương trình:
Nếu r(t) là một hàm định trước theo thời gian ,yêu cầu đáp ứng ra củahệ thống sao chép lại các giá trị của tín hiệu vào r(t) thì ta có hệ thống điềukhiển theo chương trình
Trang 5Ví dụ: hệ thống điều khiển máy công cụ CNC ,điều khiển tự động nhàmáy xi măng Hoàng Thạch ,hệ thống thu thập và truyền số liệu hệ thốngđiện, quản lý vật tư ở nhà máy …
3.Điều khiển theo dõi:
Nếu tín hiệu tác động vào hệ thống r(t) là một hàm không bết trướctheo thời gian ,yêu cầu điều khiển đáp ứng ra c(t) luôn bám sát được r(t) ,ta cóhệ thống theo dõi.Điều khiển theo dõi được sử dụng rộng rãi trong các hệthống điều khiển vũ khí ,hệ thống lái tàu ,máy bay…
4.Điều khiển tối ưu hàm mục tiêu đạt cực trị:
Ví dụ các bài toán qui hoạch ,vận trù trong kinh tế ,kỹ thuật đều là cácphương pháp điều khiển tối ưu
IV.Mô hình tổng quát và các phương pháp đo nhiệt độ:
1.Mô hình hệ thống điều khiển:
Hệ thống đo và điều khiển nhiệt độ là một đạng của hệ thống thu thậpdữ liệu Nhìn chung một hệ thống thu thập dữ liệu đầy đủ có những thànhphần sau:
Phần thu thập dữ liệu từ đối tượng bên ngoài vào hệ thống vi xử lý-máytính Phần này gồm các cảm biến ,mạch gia công tín hiệu ,bộ chuyển đổitín hiệu tương đồng sang tín hiệu số (ADC) và các thiết bị ngoại vi khácnhư nguồn, đường dây truyền dữ liệu …
Phần điều khiển : bao gồm hệ vi xử lý , máy tính và hệ thống tác động vàođối tượng
Phần mềm: là chương trình cho kít xử lý tại chổ và chương trình cho máytính nhằm thu nhận dữ liệu và điều khiển nhiệt độ cũng như giao tiếp vớingười sử dụng Các thành phần trên liên quan chặt chẽ với nhau ,tạo thànhmột hệ thống hợp nhất Từ phân tích trên một hệ thống thu thập dữ liệu(ADS)sẽ có những thành phần cấu trúc sau:
N
ADC
DigitalControll
HTDK
e(kt)
Trang 62.Chức năng các khối trong hệ thống điều khiển:
2.1.Kít chủ vi xử lý:
Kit sử dụng một chip vi xử lý ,là đơn vị master nhận yêu cầu từ ngườisử dụng và truyền dữ liệu cho các slave khác ,ở đây sử dụng kỹ thuật truyềnthông đa xử lý để giao tiếp kit chủ và các kit xử lý slave,giữa kit chủ và máytính, chỉ có thể giao tiếp khi tác động phím từ kit
Kit chủ có thiết kế phần cứng như các kit slave, duy chỉ có thêm vềphần cứng mạng truyền và phần chương trình quản lý các thông số của cácđơn vị slave
2.2.khối thu thập dữ liệu
Khối thu thập dữ liệu có nhiệm vụ thu nhận các giá trị đo từ cảm biến
và biến đổi sang tình hiệu số để kít có thể xử lý
2.4 Chương trình điều khiển:
Thực hiện việc giao tiếp giữa các vi xử lý và kit chủ ,giữa kit chủ vàmáy tính ,đặt trị
3.Các phần tử trong thiết bị đo và phương pháp đo nhiệt độ:
3.1.Các phần tử trong thiết bị đo:
Kênh n
Kênh 1
DỒN KÊNH TƯƠNG TỰ
KÍT LƯU TRỮ VÀ ĐIỀU KHIỂN
ADC
Mạch đối tượng 1
Mạch Gia công n
BỘ PHÂN KÊNH
Máy tínhchủ
Mạch đối tượng n
Mạch Gia công 1
Trang 7 CẢM BIẾN
Phần tử biến đổi các đại lượng không điện sang đại lượng điện,bộ phậnnày thường dùng thermocouple
BỘ CHẾ BIẾN TÍN HIỆU
Biến đổi tín hiệu điện thu được từ thermocouple cho phù hợp với mứcvào mạch biến đổi tín hiệu A/D
BỘ HIỂN THỊ KẾT QUẢ
Hiển thị kết quả thu được dưới dạng hiển thị số
BỘ ĐIỀU KHIỂN
Thực hiện điều khiểntheo phương pháp PID hay ON/OFF
MẠCH KHUYẾCH ĐẠI CÔNG SUẤT
Khuếch đại tín hiệu điều khiển để điều chỉnh nhiệt độ
3.2.Các phương pháp đo:
Hiện nay có rất nhiều phương pháp đo khác nhau :từ đơn giản đếnphức tạp, từ loại có độ chính xác vừa đến loại chính xác cao
Đo nhiệt độ bằng cột thủy ngân
Đo nhiệt độ bằng điện trở
Đo nhiệt độ bằng cặp nhiệt điện
Đo nhiệt độ bằng diode và transistor
Dụng cụ đo nhiệt theo nhiệt nóng chảy của các chất
Dụng cụ đo nhiệt độ theo dòng điện bức xạ
Đo nhiệt độ bằng IC cảm biếm nhiệt
Đo nhiệt độ bằng cảm biến thạch anh
Đo nhiệt độ dùng cảm biến thạch anh có ưu điểm hơn so với cácphương pháp khác ,vì nó có độ chính xác cao ,việc chuyển đổi dạng số rất dễdàng đối với thông tin liên quan đến tần số
Ví dụ: đặc tính đo lường của tinh thể thạch anh do hãng Heulett Packard chếtạo có:
Khoảng đo -80oC 250oC
Khoảng tuyến tính 0.05% khoảng đo
Độ nhạy 1000HZ oC
Khả năng đo 0.0001oC
Tuy nhiên có hạn chế là khó chế tạo ,các mạch dao động thạch anh khótinh chỉnh
a) Cách lắp đặt bộ cảm ứng nhiệt:
Vị trí của cảm ứng nhiệt ảnh hưởng rất lớn đến việc đo đạc và điềukhiển nhiệt độ của vật thể Cảm ứng nhiệt càng xa nguồn nhiệt thì càng vọt lốcao do đó tùy theo yêu cầu cụ thể mà ta lắp đặt vị trí thích hợp
b) Quan hệ giữa các thang đo nhiệt độ:
Trang 8ToC =T(oK)-273.15
ToC ={T(oF)-32}5/9
Trang 9Chương II:
CẢM BIẾN NHIỆT ĐỘ
Cảm biến nhiệt độ là dụng cụ chuyển đổi đại lượng nhiệt thành các đạilượng vật lý khác chẳng hạn như điện, áp suất, độ giãn nở dài, độ giãn nởkhối, điện trở, … Cảm biến nhiệt độ là phần tử không thể thiếu trong bất kỳ hệthống đô lường điều khiển nhiệt độ nào Cảm biến nhiệt độ có khả năng nhậnbiết được tín hiệu nhiệt độ một cách chính xác, trung thực và chuyển đổithành tín hiệu có thể đo lường được như điện áp, dòng điện, điện trở, thể tícháp suất…
I.CÁC THÔNG SỐ CẢM BIẾN:
1.Thông số cấu tạo : được quyết định do nhà sản xuất và phụ thuộc vào từng
loại cảm biến
2.Thông số sử dụng: bao gồm các yếu tố sau:
Khoảng làm việc : là khoảng nhiệt độ mà cảm biến có khả năng khi
chưa bị bảo hòa Khoảng làm việc cao hay thấp là do tính chất cấu tạovà tính lý hóa của từng loại cảm biến qui định
đôä nhạy: được định nghĩa:
df: sự thay đổi đại lượng đo của cảm biến
dx : sự thay đổi đại lượng vật lý
Ngưỡng độ nhạy: là mức thấp nhất mà cảm biến có thể phát hiện
được
Tính trễ: còn gọi là quán tính của cảm biến Tính trễ của cảm biến tạo
ra sai số của phép đo Tốc độ thay đổi cuả đại lượng đo phải phù hợpvới tính trễ của cảm biến Nếu đại lượng đo thay đổi quá nhanh màquán tính của cảm biến lớn thì không thể đo chính xác được Mọi cảmbiến đều có tính trễ do ảnh hưởng của vỏ bảo vệ
II.CÁC LOẠI CẢM BIẾN THÔNG DỤNG:
1.Cặp nhiệt điện :
Cặp nhiệt điện là dụng cụ đo nhiệt độ thường được sử dụng rộng rãitrong công nghiệp.Cơ sở chế tạo cặp nhiệt điện dựa trên các nguyên lý sau:
Hiệu ứng Thomson: qua một dây dẩn có dòng điện I và hiệu nhiệt trên dâylà T1-T2 thì sẽ có một sự hấp thụ hay tỏa nhiệt
Hiệu ứng Pentier: khi có dòng điện đi qua một mối nối của hai dây dẫn thìtại vị trí mối nối sẽ có sự hấp thụ hay tỏa nhiệt
dx df
s
Trang 10 Hiệu ứng Seebeck: trong một dây dẫn bất kỳ , khi có sự chênh lệch nhiệtđộ tại một điểm thì ngay tại điểm đó sẽ xuất hiện một suất điện động
Định luật Macmut: trong một mạch điện kín của dây dẫn đồng nhất bất kỳsự phân bố nhiệt độ ra sao, suất điện động tổng cộng của mạch luôn bằngkhông
Rỏ ràng ở đây nếu ta dùng hai dây kim loại đồng chất a ,nối với nhauqua hai điểm T1 và T2 trong mạch sẽ xuất hiện hai suất điện động bằng nhaunhưng ngược chiều nhau nên tổng suất điện động bằng không
Nhưng nếu mạch kín trên được cấu tạo bởi hai dây kim loại khác nhau
a và b thì tổng suất điện động xuất hiện trong mạch này bằng suất điện độngThomson phụ thuộc vào nhiệt độ tuyệt đối T1,T2 ở hai đầu mối ghép của dâydẫn Ngoài ra trong mạch còn có suất điện động Seebeck ,điều này được giảithích là do sự tập trung khác nhau của điện tử tự do ở hai đầu mối ghép Mặtkhác ,do sự xuất hiện thế năng tiếp xúc tại khu vực mối ghép bởi hai dây dẫnkhông đồng chất lý thuyết trên được thể hiện bằng công thức:
3 2
2
12
1
CT BT
AT
EO
Trang 11Luận Aùn Tốt Nghiêp Thiết Kế Kit Điều Khiển Nhiệt Độ
A,B,C là các hằng số phụ thuộc vào vật liệu chế tạo Như vậy suất điệnđộng E0 là hàm phi tuyến đối với nhiệt độ Nói cách khác độ nhạy của cặpnhiệt thay đổi trong từng khoảng đo.Hoặc về mặt toán học hàm Eo được xemlà tuyến tính với nhiệt độ khi B,C A
Tóm lại: suất điện động được xem là tuyến tính với nhiệt độ trongkhoảng làm việc nào đó tùy theo cấu tạo của từng loại kim loại để làm cặpnhiệt
Cấu tạo :
Cặp nhiệt điện được chế tạo bằng hai sợi kim loại khác nhau ,và có ítnhất là hai mối nối.Một đầu được giữ ở nhiệt độ chuẩn gọi là đầu ra đầu cònlại tiếp xúc với đối tượng đo
Cặp nhiệt điện có cực dương và cực âm,cực dương thường đánh dấumàu đỏ
Tùy theo vật liệu chế tạo ,cặp nhiệt điện được phân thành các loại sau:
Vật liệu cấu tạo
Về nguyên tắc ,khi đốt nóng mối hàn của hai kim loại bất kỳ đều phátsinh một suất điện động nhiệt Nhưng không phải tất cả các kim loại và hợpkim nào cũng đều dùng làm cặp nhiệt được.Vật liệu làm cặp nhiệt điện đòihỏi một số yêu cầu sau:
độ tinh khiết cao
tính chống ăn mòn tốt
độ nóng chảy cao hơn nhiệt môi trường cần đo
Eab(T1,T2)BỘ HIỂN THỊ
Trang 12 một số tính chủ yếu như dẫn điện ,dẫn nhiệt tốt
tính lặp lại trong khoảng một thời gian dài
Ngoài ra độ chính xác của cặp nhiệt điện còn phụ thuộc vào độ chínhxác chế tạo và lý tính của môi trường đo
Cách sử dụng:
Để cặp nhiệt độ có thể làm việc tốt và lâu bền ,khi sử dụng cần lưu ý:+ Cặp nhiệt điện cần có vỏ bảo vệ để chống tác động xâm thực của môitrường yêu cầu đối với vỏ bọc là cách điện nhưng không cách nhiệt
+ Phải đặt cặp nhiệt ở nơi thích hợp vì thường là nhiệt không phân bố đều.+ Vị trí lắp đặt phải tránh chổ có từ trường ,điện trường mạnh
+Để cặp nhiệt thẳng đứng đề phòng ống bảo vệ bị biến dạng do nhiệt cao.+Nên lắp đặt dây bù vào ống sắt nối đất để tránh nhiễu
2.Nhiệt kế điện trở:
Nguyên lý làm việc của nhiệt kế là dựa vào sự thay đổi điện trở theonhiệt độ của các vật liệu dẫn điện
2.1.Nhiệt điện trở kim loại:
Cấu tạo:
Vật liệu cấu tạo điện trở kim loại đòi hỏi các yêu cầu sau:
+ Hệ số nhiệt lớn
+ Điện trở suất lớn
+ Tính ổn định lý hóa tốt
+ Tính thuần khiết
Độ nhạy:
Độ nhạy S của nhiệt điện trở kim loại có dạng sau:
SΔRRRαR
: là hệ số nhiệt điện trở
Ro: là điện trở ở 0oC
Hệ số nhiệt điện trở:
Hệ số nhiệt điện trở của kim loại sẽ tính như sau:
dR RdT
Hệ số nhiệt phụ thuộc vào tính đồng nhất của kim loại
2.2.Nhiệt điện trở bán dẫn:
Thay đổi nhiệt độ được chế tạo bằng chất bán dẫn thường gọi làThermistor
Thành phần chính của thermistor là bột của các oxyt kim loại như Máynghiền bi,Fe,Ni…,hoặc các hổn hợp tinh chế như MgAl2O4 ,Zn2TiO4 …
Phân loại:
Nhiệt điện trở bán dẫn được chia thàn hai loại :
Trang 13 Nhiệt điện trở Pct :là loại nhiệt điện trở có hệ số nhiệt dương ,nghĩa lànhiệt độ tăng thì R giảm.
Nhiệt điện trở Nct: thành phần chính là bột kim loại như: MnAl2O4 và
Zn2TiO4 Độ tin cậy của nhiệt điện trở bán dẫn phụ thuộc vào độ tinh khiếtcủa vật liệ chế tạo Nct thường có hình dạng như:dạng hạt ,dạng dĩa ,dạngkhoen
Hệ số thu nhiệt độ:
Thermistor sẽ bị đốt nóng khi khi nhiệt độ môi trường xung quanh tăngtừ nhiệt độ T0 đến T ,như vậy là nhiệt điện trở đã tiêu thụ được một công suấttheo công thức như sau:
Các ưu điểm: có độ chính xác cao,có thể kết nối với máy tính…
3.IC cảm biến nhiệt độ:
Đây là mạch tích hợp nhận tín hiệu nhiệt độ chuyển đổi thành điện ,chophép đo được ở dạng biến áp hay dòng
Một số loại IC cảm biến thông dụng:LX5700, LX135, LM235, LM335,AD590, LM134,…
Trang 14CHƯƠNG 3 : GIỚI THIỆU VI XỮ LÝ AT 89C52
I GIỚI THIỆU CẤU TRÚC PHẦN CỨNG HỌ MSC-51 (8951):
-Đặc điểm và chức năng hoạt động của các IC họ MSC-51 hoàn toàntương tự như nhau Ở đây giới thiệu IC8951 là một họ IC vi điều khiển dohãng Intel của Mỹ sản xuất Chúng có các đặc điểm chung như sau:
Các đặc điểm của 8952 được tóm tắt như sau :
8 KB EPROM bên trong
128 Byte RAM nội
4 Port xuất /nhập I/O 8 bit
Giao tiếp nối tiếp
64 KB vùng nhớ mã ngoài
64 KB vùng nhớ dữ liệu ngoại
Xử lí Boolean (hoạt động trên bit đơn)
210 vị trí nhớ có thể định vị bit
4 s cho hoạt động nhân hoặc chia
3 Bộ định thời timer
Trang 15Sơ đồ khối của 8951:
INT1\
INT0\
OTHER REGISTER
128 byte RAM
128 byte RAM 8051\8052
ROM 4K: 8031 4K: 8051 EPROM 4K: 8951
INTERRUPT
CONTROL
SERIAL PORT TIMER 0 TIMER 1 TIME 2
Trang 16II KHẢO SÁT SƠ ĐỒ CHÂN 89C52, CHỨC NĂNG TỪNG CHÂN:
1.Sơ đồ chân 8951:
30pF
30pF
Sơ đồ chân IC 8951
2 Chức năng các chân của 8951:
- 8951 có tất cả 40 chân có chức năng như các đường xuất nhập Trongđó có 24 chân có tác dụng kép (có nghĩa 1 chân có 2 chức năng), mỗi đườngcó thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc làthành phần của các bus dữ liệu và bus địa chỉ
XTAL.2 PSEN\
ALE EA\
RST
Vss
P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
18
19
12 MHz
P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
17 16 15 14 13 12 11 10
RD WR T1 T0 INT1 INT0 TXD RXD
8951
29 30 31 9
20
Trang 17Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữa bus địachỉ và bus dữ liệu.
Port 1:
- Port 1 là port IO trên các chân 1-8 Các chân được ký hiệu P1.0, P1.1,P1.2, … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần Port 1 khôngcó chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bịbên ngoài
Port 2:
- Port 2 là 1 port có tác dụng kép trên các chân 21 - 28 được dùng nhưcác đường xuất nhập hoặc là byte cao của bus địa chỉ đối với các thiết bịdùng bộ nhớ mở rộng
Port 3:
- Port 3 là port có tác dụng kép trên các chân 10 - 17 Các chân củaport này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặctính đặc biệt của 8951 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
RD\
Ngõ vào ngắt cứng thứ 0
Ngõ vào ngắt cứng thứ 1
Ngõ vào của TIMER/COUNTER thứ 0.Ngõ vào của TIMER/COUNTER thứ 1.Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.Tín hiệu đọc bộ nhớ dữ liệu ngoài
Các ngõ tín hiệu điều khiển:
Ngõ tín hiệu PSEN (Program store enable):
- PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ
chương trình mở rộng thường được nói đến chân 0E\ (output enable) của
Eprom cho phép đọc các byte mã lệnh
- PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh Cácmã lệnh của chương trình được đọc từ Eprom qua bus dữ liệu và được chốtvào thanh ghi lệnh bên trong 8951 để giải mã lệnh Khi 8951 thi hành chươngtrình trong ROM nội PSEN sẽ ở mức logic 1
Ngõ tín hiệu điều khiển ALE (Address Latch Enable ) :
- Khi 8951 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địachỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu raALE ở chân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địachỉ và dữ liệu khi kết nối chúng với IC chốt
Trang 18- Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip vàcó thể được dùng làm tín hiệu clock cho các phần khác của hệ thống ChânALE được dùng làm ngõ vào xung lập trình cho Eprom trong 8951
Ngõ tín hiệu EA\(External Access):
- Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ởmức 1, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp 8Kbyte Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng ChânEA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8951
Ngõ tín hiệu RST (Reset) :
-Ngõ vào RST ở chân 9 là ngõ vào Reset của 8951 Khi ngõ vào tínhiệu này đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong đượcnạp những giá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự độngReset
Các ngõ vào bộ dao động X1, X2:
- Bộ dao động được tích hợp bên trong 8951, khi sử dụng 8951 người thiết kếchỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ Tần sốthạch anh thường sử dụng cho 8951 là 12Mhz
Chân 40 (Vcc) được nối lên nguồn 5V
III CẤU TRÚC BÊN TRONG VI ĐIỀU KHIỂN
1 Tổ chức bộ nhớ:
EnableviaPSEN
DATAMemory
Enablevia
RD & WR
Trang 19Bảng tóm tắt các vùng nhớ 8951.
RAM đa dụng
E0 E7 E6 E5 E4 E3 E2 E1 E0 ACCD0 D7 D6 D5 D4 D3 D2 D1 D0 PSW
23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1
22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1
20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL0
10
Trang 20CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT
- Bộ nhớ trong 8951 bao gồm ROM và RAM RAM trong 8951 bao
gồm nhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng
bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt
- 8951 có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêngbiệt cho chương trình và dữ liệu Chương trình và dữ liệu có thể chứa bêntrong 8951 nhưng 8951 vẫn có thể kết nối với 64K byte bộ nhớ chương trìnhvà 64K byte dữ liệu
Hai đặc tính cần chú ý la ø:
Các thanh ghi và các port xuất nhập đã được định vị (xác định) trongbộ nhớ và có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác
Ngăn xếp bên trong Ram nội nhỏ hơn so với Ram ngoại như trong cácbộ Microcontroller khác
RAM bên trong 8951 được Phân chia như sau:
Các bank thanh ghi có địa chỉ từ 00H đến 1FH
RAM địa chỉ hóa từng bit có địa chỉ từ 20H đến 2FH
RAM đa dụng từ 30H đến 7FH
Các thanh ghi chức năng đặc biệt từ 80H đến FFH
RAM đa dụng:
- Mặc dù trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30Hđến 7FH, 32 byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tươngtự (mặc dù các địa chỉ này đã có mục đích khác)
- Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùngkiểu địa chỉ trực tiếp hoặc gián tiếp
RAM có thể truy xuất từng bit:
- 8951 chứa 210 bit được địa chỉ hóa, trong đó có 128 bit có chứa các bytecó chứa các địa chỉ từ 20F đến 2FH và các bit còn lại chứa trong nhóm thanhghi có chức năng đặc biệt
- Ý tưởng truy xuất từng bit bằng phần mềm là các đặc tính mạnh củamicrocontroller xử lý chung Các bit có thể được đặt, xóa, AND, OR, , với
1 lệnh đơn Đa số các microcontroller xử lý đòi hỏi một chuổi lệnh đọc – sửa
- ghi để đạt được mục đích tương tự Ngoài ra các port cũng có thể truy xuấtđược từng bit
- 128 bit truy xuất từng bit này cũng có thể truy xuất như các byte hoặc nhưcác bit phụ thuộc vào lệnh được dùng
Các bank thanh ghi:
- 32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh
8951 hổ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi reset hệthống, các thanh ghi này có các địa chỉ từ 00H đến 07H
Trang 21- Các lệnh dùng các thanh ghi RO đến R7 sẽ ngắn hơn và nhanh hơn so vớicác lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu đượcdùng thường xuyên nên dùng một trong các thanh ghi này.
- Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghiđược truy xuất bởi các thanh ghi RO đến R7 để chuyển đổi việc truy xuất cácbank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái
2 Các thanh ghi có chức năng đặc biệt:
- Các thanh ghi nội của 8951 được truy xuất ngầm định bởi bộ lệnh
- Các thanh ghi trong 8951 được định dạng như một phần của RAM trên chip
vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ đếm chươngtrình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp).Cũng như R0 đến R7, 8951 có 21 thanh ghi có chức năng đặc biệt (SFR:Special Function Register) ở vùng trên của RAM nội từ địa chỉ 80H đến FFH
Chú ý: tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có
21 thanh ghi có chức năng đặc biệt được định nghĩa sẵn các địa chỉ
- Ngoại trừ thanh ghi A có thể được truy xuất ngầm như đã nói, đa số cácthanh ghi có chức năng đặc biệt SFR có thể địa chỉ hóa từng bit hoặc byte
Thanh ghi trạng thái chương trình (PSW: Program Status Word):
Trang 22Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau:
00=Bank 0; address00H07H
01=Bank 1; address08H0FH
10=Bank 2; address10H17H
11=Bank 3; address18H1FH
Chức năng từng bit trạng thái chương trình
Cờ Carry CY (Carry Flag):
- Cờ nhớ có tác dụng kép Thông thường nó được dùng cho các lệnhtoán học: C=1 nếu phép toán cộng có sự tràn hoặc phép trừ có mượn và ngượclại C= 0 nếu phép toán cộng không tràn và phép trừ không có mượn
Cờ Carry phụ AC (Auxiliary Carry Flag):
- Khi cộng những giá trị BCD (Binary Code Decimal), cờ nhớ phụ ACđược set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH 0FH.Ngược lại AC= 0
Cờ 0 (Flag 0):
Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng
Trang 23 Những bit chọn bank thanh ghi truy xuất:
- RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xóa saukhi reset hệ thống và được thay đổi bởi phần mềm khi cần thiết
- Tùy theo RS1, RS0 = 00, 01, 10, 11 sẽ được chọn Bank tích cực tươngứng là Bank 0, Bank1, Bank2, Bank3
Cờ tràn OV (Over Flag) :
- Cờ tràn được set sau một hoạt động cộng hoặc trừ nếu có sự tràn toánhọc Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểmtra bit này để xác định xem kết quả có nằm trong tầm xác định không Khicác số không có dấu được cộng bit OV được bỏ qua Các kết quả lớn hơn+127 hoặc nhỏ hơn –128 thì bit OV = 1
Bit Parity (P):
- Bit tự động được set hay Clear ở mỗi chu kỳ máy để lập Parity chẳnvới thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parity luônluôn chẵn Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1trong A và P tạo thành số chẵn
- Bit Parity thường được dùng trong sự kết hợp với những thủ tục củaPort nối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity saukhi thu
Thanh ghi B:
- Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho cácphép toán nhân chia Lệnh MUL AB sẽ nhận những giá trị không dấu 8 bittrong hai thanh ghi A và B, rồi trả về kết quả 16 bit trong A (byte cao) vàB(byte thấp) Lệnh DIV AB lấy A chia B, kết quả nguyên đặt vào A, số dưđặt vào B
Trang 24- Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đamục đích Nó là những bit định vị thông qua những địa chỉ từ F0HF7H.
Con trỏ Ngăn xếp SP (Stack Pointer) :
- Con trỏ ngăn xếp là một thanh ghi 8 bit ở địa chỉ 81H Nó chứa địa chỉ củabyte dữ liệu hiện hành trên đỉnh ngăn xếp Các lệnh trên ngăn xếp bao gồmcác lệnh cất dữ liệu vào ngăn xếp (PUSH) và lấy dữ liệu ra khỏi Ngăn xếp(POP) Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu vàlệnh lấy ra khỏi ngăn xếp sẽ làm giảm SP Ngăn xếp của 8031/8051 được giữtrong RAM nội và giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp,chúng là 128 byte đầu của 8951
- Để khởi động SP với ngăn xếp bắt đầu tại địa chỉ 60H, các lệnh sauđây được dùng:
MOV SP , #5F
- Với lệnh trên thì ngăn xếp của 8951 chỉ có 32 byte vì địa chỉ cao nhấtcủa RAM trên chip là 7FH Sở dĩ giá trị 5FH được nạp vào SP vì SP tăng lên60H trước khi cất byte dữ liệu
- Khi Reset 8951, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầutiên sẽ được cất vào ô nhớ ngăn xếp có địa chỉ 08H Nếu phần mềm ứng dụngkhông khởi động SP một giá trị mới thì bank thanh ghi1 có thể cả 2 và 3 sẽkhông dùng được vì vùng RAM này đã được dùng làm ngăn xếp Ngăn xếpđược truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời vàlấy lại dữ liệu, hoặc truy xuất ngầm bằng lệnh gọi chương trình con ( ACALL,LCALL) và các lệnh trở về (RET, RETI) để lưu trữ giá trị của bộ đếmchương trình khi bắt đầu thực hiện chương trình con và lấy lại khi kết thúcchương trình con …
Con trỏ dữ liệu DPTR (Data Pointer):
-Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là mộtthanh ghi 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao) Balệnh sau sẽ ghi 55H vào RAM ngoài ở địa chỉ 1000H:
MOV A , #55H
MOV DPTR, #1000H
MOV @DPTR, A
Trang 25- Lệnh đầu tiên dùng để nạp 55H vào thanh ghi A Lệnh thứ hai dùngđể nạp địa chỉ của ô nhớ cần lưu giá trị 55H vào con trỏ dữ liệu DPTR Lệnhthứ ba sẽ di chuyển nội dung thanh ghi A (là 55H) vào ô nhớ RAM bên ngoàicó địa chỉ chứa trong DPTR (là 1000H).
Các thanh ghi Port (Port Register):
- Các Port của 8951 bao gồm Port0 ở địa chỉ 80H, Port1 ở địa chỉ90H, Port2 ở địa chỉ A0H, và Port3 ở địa chỉ B0H Tất cả các Port này đều cóthể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
Các thanh ghi Timer (Timer Register):
- 8951 có chứa hai bộ định thời/ bộ đếm 16 bit được dùng cho việcđịnh thời được đếm sự kiện Timer0 ở địa chỉ 8AH (TLO: byte thấp ) và 8CH(THO: byte cao) Timer1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: bytecao) Việc khởi động timer được SET bởi Timer Mode (TMOD) ở địa chỉ 89Hvà thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H Chỉ có TCON được địachỉ hóa từng bit
Các thanh ghi Port nối tiếp (Serial Port Register) :
- 8951 chứa một Port nối tiếp cho việc trao đổi thông tin với các thiết
bị nối tiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác Mộtthanh ghi đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệutruyền và dữ liệu nhập Khi truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thìđọc SBUF Các mode vận khác nhau được lập trình qua thanh ghi điều khiểnPort nối tiếp (SCON) được địa chỉ hóa từng bit ở địa chỉ 98H
Các thanh ghi ngắt (Interrupt Register):
- 8951 có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm saukhi bị reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phépngắt (IE) ở địa chỉ A8H Cả hai được địa chỉ hóa từng bit
Thanh ghi điều khiển nguồn PCON (Power Control Register):
- Thanh ghi PCON không có bit định vị Nó ở địa chỉ 87H chứa nhiềubit điều khiển Thanh ghi PCON được tóm tắt như sau:
Bit 7 (SMOD) : Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếpkhi set
Bit 6, 5, 4 : Không có địa chỉ
Trang 26 Bit 3 (GF1) : Bit cờ đa năng 1.
Bit 2 (GF0) : Bit cờ đa năng 2
Bit 1 (PD) : Set để khởi động mode Power Down và thoát đểreset
Bit 0 (IDL) : Set để khởi động mode Idle và thoát khi ngắt mạchhoặc reset
Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cảcác IC họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS
Hoạt động Reset:
- 8951 có ngõ vào reset RST tác động ở mức cao trong khoảng thờigian 2 chu kỳ xung máy, sau đó xuống mức thấp để 8951 bắt đầulàm việc RST có thể kích bằng tay bằng một phím nhấn thường hở,
sơ đồ mạch reset như sau:
+ 5 V Reset
Manual Reset IV/ HOẠT ĐỘNG TIMER CỦA 8952:
1 GIỚI THIỆU:
- Bộ định thời của Timer là một chuỗi các Flip Flop được chia làm 2,nó nhận tín hiệu vào là một nguồn xung clock, xung clock được đưa vào FlipFlop thứ nhất là xung clock của Flip Flop thứ hai mà nó cũng chia tần số clocknày cho 2 và cứ tiếp tục
- Vì mỗi tầng kế tiếp chia cho 2, nên Timer n tầng phải chia tần sốclock ngõ vào cho 2n Ngõ ra của tầng cuối cùng là clock của FlipFlop tràn Timer hoặc cờ mà nó kiểm tra bởi phần mềm hoặc sinh rangắt Giá trị nhị phân trong các FF của bộ Timer có thể được nghĩnhư đếm xung clock hoặc các sự kiện quan trọng bởi vì Timer được
RST
10 F
8.2 K
100
Trang 27khởi động Ví dụ Timer 16 bit có thể đếm đến từ FFFFH sang0000H.
- Hoạt động của Timer đơn giản 3 bit được minh họa như sau:
Timer Flip Flops.
- Trong hình trên mỗi tầng là một FF loại D phủ định tác động cạnhxuống được hoạt động ở mode chia cho 2 (ngõ ra Q\ được nối vào D) FF cờ làmột bộ chốt đơn giản loại D được set bởi tầng cuối cùng trong Timer Trongbiểu đồ thời gian, tầng đầu đổi trạng thái ở ½ tần số clock, tầng thứ hai đổitrạng thái ở tần số ¼ tần số clock Số đếm được biết ở dạng thập phân vàđược kiểm tra lại dễ dàng bởi việc kiểm tra các tầng của 3 FF Ví dụ số đếm
“4” xuất hiện khi Q2=1, Q1=0, Q0=0 (410=1002)
- Các Timer được ứng dụng thực tế cho các hoạt động định hướng 8951có 2 bộ Timer 16 bit, mỗi Timer có 4 mode hoạt động Các Timer dùng đểđếm giờ, đếm các sự kiện cần thiết và sự sinh ra tốc độ của tốc độ Baud bởisự gắn liền Port nối tiếp
- Mỗi sự định thời là một Timer 16 bit, do đó tầng cuối cùng là tầng thứ
16 sẽ chia tần số clock vào cho 216 = 65.536
- Trong các ứng dụng định thời, 1 Timer được lập trình để tràn ở mộtkhoảng thời gian đều đặn và được set cờ tràn Timer Cờ được dùng để đồngbộ chương trình để thực hiện một hoạt động như việc đưa tới 1 tầng các ngõvào hoặc gởi dữ liệu đếm ngõ ra Các ứng dụng khác có sử dụng việc ghi giờ
D
Q
Q 0
D Q
Q 1
D Q
Q 2
D Q
Q 3Flag FF
Trang 28đều đều của Timer để đo thời gian đã trôi qua hai trạng thái (ví dụ đo độ rộngxung).Việc đếm một sự kiện được dùng để xác định số lần xuất hiện của sựkiện đó, tức thời gian trôi qua giữa các sự kiện.
- Các Timer của 8951 được truy xuất bởi việc dùng 6 thanh ghi chứcnăng đặc biệt như sau :
2 CÁC THANH GHI ĐIỀU KHIỂN TIMER
2.1 Thanh ghi điều khiển chế độ timer TMOD (timer mode register) :
- Thanh ghi mode gồm hai nhóm 4 bit là: 4 bit thấp đặt mode hoạtđộng cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1 8 bitcủa thanh ghi TMOD được tóm tắt như sau:
Trang 29Bit Name Timer Description
7 GATE 1 Khi GATE = 1, Timer chỉ làm việc khi INT1=1
C/T = 1 : Đếm sự kiệnC/T = 0 : Ghi giờ đều đặn
Hai bit M0 và M1 của TMOD để chọn mode cho Timer 0 hoặc Timer 1.
Mode Timer tách ra :Timer 0 : TL0 là Timer 8 bit được điều khiển bởi các bit của Timer 0 TH0 tương tự nhưng được điều khiển bởi các bit của mode Timer 1
Timer 1 : Được ngừng lại
Trang 30- TMOD không có bit định vị, nó thường được LOAD một lần bởi phầnmềm ở đầu chương trình để khởi động mode Timer Sau đó sự định giờ có thểdừng lại, được khởi động lại như thế bởi sự truy xuất các thanh ghi chức năngđặc biệt của Timer khác.
Trang 312.2 Thanh ghi điều khiển timer TCON (timer control register):
- Thanh ghi điều khiển bao gồm các bit trạng thái và các bit điều khiển bởi Timer 0 và Timer 1 Thanh ghi TCON có bit định vị Hoạt động của từng bit được tóm tắt như sau :
Address
Description
TCON.7 TF1 8FH Cờ tràn Timer 1 được set bởi phần cứng ở
sự tràn, được xóa bởi phần mềm hoặc bởiphần cứng khi các vectơ xử lí đến thủ tụcphục vụ ngắt ISR
TCON.6 TR1 8EH Bit điều khiển chạy Timer 1 được set
hoặc xóa bởi phần mềm để chạy hoặcngưng chạy Timer
TCON.5 TF0 8DH Cờ tràn Timer 0(hoạt động tương tự TF1)TCON.4 TR0 8CH Bit điều khiển chạy Timer 0 (giống TR1)TCON.3 IE1 8BH Cờ kiểu ngắt 1 ngoài Khi cạnh xuống xuất
hiện trên INT1 thì IE1 được xóa bởi phầnmềm hoặc phần cứng khi CPU định hướngđến thủ tục phục vụ ngắt ngoài
TCON.2 IT1 8AH Cờ kiểu ngắt 1 ngoài được set hoặc xóa
bằng phấn mềm bởi cạnh kích hoạt bởi sựngắt ngoài
TCON.1 IE0 89H Cờ cạnh ngắt 0 ngoài
2.3 Các nguồn xung nhịp cho timer (clock sources):
- Có hai nguồn xung clock có thể đếm giờ là sự định giờ bên trong vàsự đếm sự kiện bên ngoài Bit C/T trong TMOD cho phép chọn 1 trong 2 khiTimer được khởi động
Trang 32 Sự bấm giờ bên trong (Interval Timing):
- Nếu bit C/T = 0 thì hoạt động của Timer liên tục được chọn vào bộTimer được ghi giờ từ dao động trên Chip Một bộ chia 12 được thêm vào đểgiảm tần số clock đến 1 giá trị phù hợp với các ứng dụng Các thanh ghi TLxvà THx tăng ở tốc độ 1/12 lần tần số dao động trên Chip Nếu dùng thạch anh12MHz thì sẽ đưa đến tốc độ clock 1MHz
- Các sự tràn Timer sinh ra sau một con số cố định của những xungclock, nó phụ thuộc vào giá trị khởi tạo được LOAD vào các thanh ghi THx vàTLx
- Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ nguồn bên ngoài trongnhiều ứng dụng, nguồn bên ngoài này cung cấp 1 sự định giờ với 1 xung trênsự xảy ra của sự kiện Sự định giờ là sự đếm sự kiện Con số sự kiện được xácđịnh trong phần mềm bởi việc đọc các thanh ghi Timer Tlx/THx, bởi vì giá trị
16 bit trong các thanh này tăng lên cho mỗi sự kiện
- Nguồn xung clock bên ngoài đưa vào chân P3.4 là ngõ nhập của xungclock bởi Timer 0 (T0) và P3.5 là ngõ nhập của xung clock bởi Timer 1 (T1)
- Trong các ứng dụng đếm các thanh ghi Timer được tăng trong đápứng của sự chuyển trạng thái từ 1 sang 0 ở ngõ nhập Tx Ngõ nhập bên ngoàiđược thử trong suốt S5P2 của mọi chu kỳ máy: Do đó khi ngõ nhập đưa tớimức cao trong một chu kỳ và mức thấp trong một chu kỳ kế tiếp thì bộ đếmtăng lên một Giá trị mới xuất hiện trong các thanh ghi Timer trong suốt S5P1của chu kỳ theo sau một sự chuyển đổi Bởi vì nó chiếm 2 chu kỳ máy (2s)để nhận ra sự chuyển đổi từ 1 sang 0, nên tần số bên ngoài lớn nhất là500KHz nếu dao động thạch anh 12 MHz
On ChipOscillator
0 = Up (internal Timing)
1 = Down (Event Counting)Crystal
Trang 332.4 sự bắt đầu, kết thúc và sự điều khiển các timer (starting, stopping and controlling the timer) :
- Bit TRx trong thanh ghi có bit định vị TCON được điều khiển bởiphần mềm để bắt đầu hoặc kết thúc các Timer Để bắêt đầu các Timer ta setbit TRx và để kết thúc Timer ta Clear TRx Ví dụ Timer 0 được bắt đầu bởilệnh SETB TR0 và được kết thúc bởi lệnh CLR TR0 (bit Gate= 0) Bit TRx
bị xóa sau sự reset hệ thống, do đó các Timer bị cấm bằng sự mặc định
- Thêm phương pháp nữa để điều khiển các Timer là dùng bit GATEtrong thanh ghi TMOD và ngõ nhập bên ngoài INTx Điều này được dùng để
đo các độ rộng xung Giả sử xung đưa vào chân INT0 ta khởi động Timer 0cho mode 1 là mode Timer 16 bit với TL0/TH0 = 0000H, GATE = 1, TR0 = 1.Như vậy khi INT0 = 1 thì Timer “được mở cổng” và ghi giờ với tốc độ củatần số 1MHz Khi INT0 xuống thấp thì Timer “đóng cổng” và khoảng thờigian của xung tính bằng s là sự đếm được trong thanh ghi TL0/TH0
Timer Operating Mode 1.
2.5 Sự khởi động và truy xuất các thanh ghi timer:
- Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạtđộng cho chúng Sau đó trong chương trình các Timer được bắt đầu, đượcxóa, các thanh ghi Timer được đọc và cập nhật … theo yêu cầu của từng ứngdụng cụ thể
GATE
12 MHz
T0 (P3.4)
Trang 34- Mode Timer TMOD là thanh ghi đầu tiên được khởi gán, bởi vì đặtmode hoạt động cho các Timer Ví dụ khởi động cho Timer 1 hoạt động ởmode 1 (mode Timer 16bit) và được ghi giờ bằng dao động trên Chip ta dùnglệnh : MOV TMOD, # 00001000B Trong lệnh này M1 = 0, M0 = 1 để vàomode 1 và C/T = 0, GATE = 0 để cho phép ghi giờ bên trong đồng thời xóacác bit mode của Timer 0 Sau lệnh trên Timer vẫn chưa đếm giờ, nó chỉ bắtđầu đếm giờ khi set bit điềàu khiểân chạy TR1 của nó.
- Nếu ta không khởi gán giá trị đầu cho các thanh ghi TLx/THx thìTimer sẽ bắt đầu đếm từ 0000Hlên và khi tràn từ FFFFH sang 0000H nó sẽbắt đầu tràn TFx rồi tiếp tục đếm từ 0000H lên tiếp
- Nếu ta khởi gán giá trị đầu cho TLx/THx, thì Timer sẽ bắt đầu đếm từgiá trị khởi gán đó lên nhưng khi tràn từ FFFFH sang 0000H lại đếm từ 0000Hlên
- Chú ý rằng cờ tràn TFx tự động được set bởi phần cứng sau mỗi sựtràn và sẽ được xóa bởi phần mềm Chính vì vậy ta có thể lập trình chờ saumỗi lần tràn ta sẽ xóa cờ TFx và quay vòng lặp khởi gán cho TLx/THx đểTimer luôn luôn bắt đầu đếm từ giá trị khởi gán lên theo ý ta mong muốn
- Đặc biệt những sự khởi gán nhỏ hơn 256 s, ta sẽ gọi mode Timertự động nạp 8 bit của mode 2 Sau khi khởi gán giá trị đầu vào THx, khi set bitTRx thì Timer sẽ bắt đầu đếm giá trị khởi gán và khi tràn từ FFH sang 00Htrong TLx, cờ TFx tự động được set đồng thời giá trị khởi gán mà ta khởi gáncho Thx được nạp tự động vào TLx và Timer lại được đếm từ giá trị khởi gánnày lên Nói cách khác, sau mỗi tràn ta không cần khởi gán lại cho các thanhghi Timer mà chúng vẫn đếm được lại từ giá trị ban đầu
TLx (5 bit) THx (8 bit) TFx Timer Clock
Trang 353.2 Mode Timer 16 bit (MODE 1) :
- Mode 1 là mode Timer 16 bit, tương tự như mode 0 ngoại trừ Timernày hoạt động như một Timer đầy đủ 16 bit, xung clock được dùng với sự kếthợp các thanh ghi cao và thấp (TLx, THx) Khi xung clock được nhận vào, bộđếm Timer tăng lên 0000H, 0001H, 0002H, …, và một sự tràn sẽ xuất hiện khicó sự chuyển trên bộ đếm Timer từ FFFH sang 0000H và sẽ set cờ tràn Time,sau đó Timer đếm tiếp
- Cờ tràn là bit TFx trong thanh ghi TCON mà nó sẽ được đọc hoặc ghibởi phần mềm
- Bit có trọng số lớn nhất (MSB) của giá trị trong thanh ghi Timer là bit
7 của THx và bit có trọng số thấp nhất (LSB) là bit 0 của TLx Bit LSB đổitrạng thái ở tần số clock vào được chia 216 = 65.536
- Các thanh ghi Timer TLx và Thx có thể được đọc hoặc ghi tại bấtkỳ thời điểm nào bởi phần mềm
3.3 Mode tự động nạp 8 bit (MODE 2) :
OverflowReload
-Mode 2 là mode tự động nạp 8 bit, byte thấp TLx của Timer hoạtđộng như một Timer 8 bit trong khi byte cao THx của Timer giữ giá trịReload Khi bộ đếm tràn từ FFH sang 00H, không chỉ cờ tràn được set mà giátrị trong THx cũng được nạp vào TLx : Bộ đếm được tiếp tục từ giá trị này lênđến sự chuyển trạng thái từ FFH sang 00H kế tiếp và cứ thế tiếp tục Modenày thì phù hợp bởi vì các sự tràn xuất hiện cụ thể mà mỗi lúc nghỉ thanh ghiTMOD và THx được khởi động
TLx (8 bit) THx (8 bit) TFx Timer Clock
Timer Clock
TH x (8 bit)
Trang 363.4 Mode Timer tách ra (MODE 3) :
- Mode 3 là mode Timer tách ra và là sự khác biệt cho mỗi Timer
- Timer 0 ở mode 3 được chia là 2 timer 8 bit TL0 và TH0 hoạt độngnhư những Timer riêng lẻ với sự tràn sẽ set các bit TL0 và TF1 tương ứng
- Timer 1 bị dừng lại ở mode 3, nhưng có thể được khởi động bởi việcngắt nó vào một trong các mode khác Chỉ có nhược điểm là cờ tràn TF1 củaTimer 1 không bị ảnh hưởng bởi các sự tràn của Timer 1 bởi vì TF1 được nốivới TH0
- Mode 3 cung cấp 1 Timer ngoại 8 bit là Timer thứ ba của 8951 Khivào Timer 0 ở mode 3, Timer có thể hoạt động hoặc tắt bởi sự ngắt nó rangoài và vào trong mode của chính nó hoặc có thể được dùng bởi Port nối tiếpnhư là một máy phát tốc độ Baud, hoặc nó có thể dùng trong hướng nào đómà không sử dụng Interrupt
V HOẠT ĐỘNG PORT NỐI TIẾP
1 Giới thiệu
8951 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ trênmột dãy tần số rộng Chức năng chủ yếu là thực hiện chuyển đổi song songsang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sang song song với dữliệu nhập
Port nối tiếp cho hoạt động song công (full duplex: thu và phát đồng thời)và đệm thu (receiver buffering) cho phép một ký tự sẽ được thu và được giữtrong khi ký tự thứ hai được nhận Nếu CPU đọc ký tự thứ nhất trước khi kýtự thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất
Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến portnối tiếp là: SBUF và SCON Bộ đệm port nối tiếp (SBUF) ở điạ chỉ 99H nhận
Trang 37dữ liệu để thu hoặc phát Thanh ghi điều khiển port nối tiếp (SCON) ở điạ chỉ98H là thanh ghi có điạ chỉ bit chứa các bit trạng thái và các bit điều khiển.Các bit điều khiển đặt chế độ hoạt động cho port nối tiếp, và các bit trạng tháiBáo cáo kết thúc việc phát hoặc thu ký tự Các bit trạng thái có thể đượckiểm tra bằng phần mềm hoặc có thể lập trình để tạo ngắt.
2 Các thanh ghi và các chế độ hoạt động của port nối tiếp:
2.1 Thanh ghi điều khiển port nối tiếp:
Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghichế độ port nối tiếp (SCON) ở địa chỉ 98H Sau đây các bản tóm tắt thanh ghiSCON và các chế độ của port nối tiếp:
9CH9BH
9AH99H98H
Bit 0 của chế độ port nối tiếpBit 1 của chế độ port nối tiếpBit 2 của chế độ port nối tiếp Cho phép truyền thông xử lý trong các chế độ 2 và 3,
RI sẽ không bị tác động nếu bit thứ 9 thu được là 0
Cho phép bộ thu phải được đặt lên 1 để thu các ký tự
Bit 8 phát, bit thứ 9 được phát trong chế độ 2và 3, được đặt và xóa bằng phần mềm
B it 8 thu, bit thứ 9 thu đượcCờ ngắt phát Đặt lên 1 khi kết thúc phát ký tự, được xóa bằng phần mềm
Cờ ngắt thu Đặt lên 1 khi kết thúc thu ký tự,được xóa bằng phần mềm
Tóm tắt thanh ghi chế độ port nối tiếp
Thanh ghi dịchUART 8 bitUART 9 bitUART 9 bit
Cố định (Fosc /12 )Thay đổi ( đặt bằng timer )Cố định (Fosc /12 hoặc Fosc/64 )Thay đổi ( đặt bằng timer )
Các chế độ port nối tiếp
Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế độ
Ví dụ, lệnh sau:
Trang 38MOV SCON, #01010010B
Khởi động port nối tiếp cho chế độ 1 (SM0/SM1=0/1), cho phép bộ thu(REN=1) và cờ ngắt phát (TP=1) để bộ phát sẳn sàng hoạt động
2.2 Chế độ 0 (Thanh ghi dịch đơn 8 bit):
Chế độ 0 được chọn bằng các thanh ghi các bit 0 vào SM1 và SM2 củaSCON, đưa port nối tiếp vào chế độ thanh ghi dịch 8bit Dữ liệu nối tiếp vàovà ra qua RXD và TXD xuất xung nhịp dịch, 8 bit được phát hoặc thu với bitđầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trên chip
Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF.Dữ liệu dịch ra ngoài trên đường RXD (P3.0) với các xung nhịp được gửi rađường TXD (P3.1) Mỗi bit phát đi hợp lệ (trên RXD) trong một chu kỳ máy,tín hiệu xung nhập xuống thấp ở S3P1 và trở về cao ở S6P1
S1 S2 S3 S4 S5 S6
P1 P2 P1 P2 P1 P2 P1 P2 P1 P2P1
ALE
I.
Việc thu được khởi động khi cho phép bộ thu (REN) là 1 và bit ngắtthu (RI) là 0 Quy tắc tổng quát là đặt REN khi bắt đầu chương trình để khởi
Một chu kỳ máy
Trang 39động port nối tiếp, rồi xoá RI để bắt đầu nhận dữ liệu Khi RI bị xoá, cácxung nhịp được đưa ra đường TXD, bắt đầu chu kỳ máy kế tiếp và dữ liệutheo xung nhịp ở đường RXD Lấy xung nhịp cho dữ liệu vào port nối tiếp xảy
ra ở cạnh đường của TXD
Một chu kỳ máy
D0 D1 D2 D3 D4 D5 D6D7
2.3 Chế độ 1 (UART 8 bit với tốc độ baud thay đổi được):
Ở chế độ 1, port nối tiếp của 8951 làm việc như một UART 8 bit với tốcđộ baud thay đổi được Một UART (Bộ thu phát đồng bộ vạn năng) là mộtdụng cụ thu phát dữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ởmức thấp và theo sau bit stop ở mức cao Đôi khi xen thêm bit kiểm tra chẵnlẻ giữa bit dữ liệu cuối cùng và bit stop Hoạt động chủ yếu của UART làchuyển đổi song song sang nối tiếp với dữ liệu nhập
Ở chế độ 1, 10 bit được phát trên TXD hoặc thu trên RXD Những bit đólà: 1 bit start (luôn luôn là 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop (luônluôn là 1) Với hoạt động thu, bit stop được đưa vào RB8 trong SCON Trong
8951 chế độ baud được đặt bằng tốc độ báo tràn của timer 1
Tạo xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trongcác chế độ 1,2 và 3 được thiết lập bằng bộ đếm 4 bit chia cho 16, ngõ ra làxung nhịp tốc độ baud Ngõ vào của bộ đếm này được chọn qua phần mềm
Trang 402.4 UART 9 bit với tốc độ baud cố định (chế độ 2):
Khi SM1=1 và SM0=0, cổng nối tiếp làm việc ở chế độ 2, như mộtUART 9bit có tốc độ baud cố định, 11 bit sẽ được phát hoặc thu:1bit start, 8 bitdata, 1 bit data thứ 9 có thể được lập trình và 1 bit stop Khi phát bit thứ 9 làbất cứ gì đã được đưa vào TB8 trong SCON (có thể là bit Parity) Khi thu bitthứ 9 thu được sẽ ở trong RB8 Tốc độ baud ở chế độ 2 là 1/32 hoặc 1/16 tầnsố dao động trên chip
2.5 UART 9 bit với tốc độ baud thay đổi được (chế độ 3):
Chế độ này giống như ở chế độ 2 ngoại trừ tốc độ baud có thể lập trìnhđược và được cung cấp bởi Timer.Thật ra các chế độ 1, 2, 3 rất giống nhau.Cái khác biệt là ở tốc độ baud (cố định trong chế độ 2, thay đổi trong chế độ 1và 3) và ở số bit data (8 bit trong chế độ 1,9 trong chế độ 2 và 3)
2.6 Khởi động và truy xuất các thanh ghi cổng nối tiếp:
Bit cho phép bộ thu (REN=Receiver Enable) Trong SCON phải được đặtlên 1bằng phần mềm để cho phép thu các ký tự thông thường thực hiện việcnày ở đầu chương trình khi khởi động cổng nối tiếp, timer … Có thể thực hiệnviệc này theo hai cách Lệnh:
SETB REN ; đặt REN lên 1Hoặc lệnh
MOV SCON,#XXX1XXXXB ; đặt REN lên 1 hoặc xoá các bitkhác trên SCON khi cần (các X phải là 0 hoặc 1 để đặt chế độ làm việc)
Bit dữ liệu thứ 9:
Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3 phải được nạp vào trongTB8 bằng phần mềm Bit dữ liệu thứ 9 thu được đặt ở RB8 Phần mềm có thểcần hoặc không cần bit dữ liệu thứ 9, phụ thuộc vào đặc tính kỹ thuật củathiết bị nối tiếp sử dụng (bit dữ liệu thứ 9 cũng đóng vai trò quan trọng trongtruyền thông đa xử lý )
Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự Như đã nhậnxét ở chương trước, bit P trong từ trạng thái chương trình (PSW) được đặt lên 1hoặc bị xoá bởi chu kỳ máy để thiết lập kiểm tra chẳn với 8 bit trong thanhtích lũy
Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quantrọng trong truyền thông nối tiếp dùng 8951/8051 Cả hai bit được đặt lên 1bằng phần cứng, nhưng phải được xoá bằng phần mềm
2.7 Tốc độ baud port nối tiếp