Bài báo cáo đồ án môn ứng dụng kỹ thuật sử trong điều khiển tự động
Bài Báo Cáo Đồ Án Môn Ứng Dụng Kỹ Thuật Số Trong Điều Khiển Tự Động I.Mạch Đếm: 1.Giới thiệu linh kiện chính có trong mạch - LM555,74LS192,7447,Led 7 Đoạn chung Anot, 2.Cấu tạo Linh Kiên và nguyên lý Hoạt Đông 2.1.Cấu Tạo Linh Kiện 2.1.1.LM55 1 +Chân số 1(GND): cho nối GND để lấy dòng cấp cho IC hay chân còn gọi là chân chung + Chân số 2(TRIGGER): Đây là chân đầu vào thấp hơn điện áp so sánh và được dùng như 1 chân chốt hay ngõ vào của 1 tần so áp.Mạch so sánh ở đây dùng các transitor PNP với mức điện áp chuẩn là 2/3Vcc + Chân số 3(OUTPUT): Chân này là chân dùng để lấy tín hiệu ra logic Trạng thái của tín hiệu ra được xác định theo mức 0 và 1 1 ở đây là mức cao nó tương ứng với gần bằng Vcc nếu (PWM=100%) và mức 0 tương đương với 0V nhưng mà trong thực tế mức 0 này ko được 0V mà nó trong khoảng từ (0.35 ->0.75V) + Chân số 4(RESET): Dùng lập định mức trạng thái ra Khi chân số 4 nối masse thì ngõ ra ở mức thấp Còn khi chân 4 nối vào mức áp cao thì trạng thái ngõ ra tùy theo mức áp trên chân 2 và 6.Nhưng mà trong mạch để tạo được dao động thường hay nối chân này lên VCC + Chân số 5(CONTROL VOLTAGE): Dùng làm thay đổi mức áp chuẩn trong IC 555 theo các mức biến áp ngoài hay dùng các điện trở ngoài cho nối GND Chân này có thể không nối cũng được nhưng mà để giảm trừ nhiễu người ta thường nối chân số 5 xuống GND thông qua tụ điện từ 0.01uF đến 0.1uF các tụ này lọc nhiễu và giữ cho điện áp chuẩn được ổn định + Chân số 6(THRESHOLD) : là một trong những chân đầu vào so sánh điện áp khác và cũng được dùng như 1 chân chốt + Chân số 7(DISCHAGER) : có thể xem chân này như 1 khóa điện tử và chịu điều khiển bỡi tầng logic của chân 3 Khi chân 3 ở mức áp thấp thì khóa này đóng lại.ngược lại thì nó mở ra Chân 7 tự nạp xả điện cho 1 mạch R-C lúc IC 555 dùng như 1 tầng dao động + Chân số 8 (Vcc): Không cần nói cũng bít đó là chân cung cấp áp và dòng cho IC hoạt động Không có chân này coi như IC chết Nó được cấp điện áp từ 2V >18V (Tùy từng loại 555 nhé thấp nhất là con NE7555) + Công thức tính tần số điều chế độ rộng xung của 555 2 Nhìn vào sơ đồ mạch trên ta có công thức tính tần số , độ rộng xung + Tần số của tín hiệu đầu ra là : T= 1/(ln2.C.(R1 + 2R2)) + Chu kì của tín hiệu đầu ra :T = 1/f + Thời gian xung ở mức H (1) trong một chu kì : T1 = ln2 (R1 + R2).C + Thời gian xung ở mức L (0) trong 1 chu kì :T2 = ln2.R2.C 2.1.2.IC Giải Mã 74LS47 - IC74LS47 là loại IC giải mã BCD sang led 7 đoạn Mạch giải mã BCD sang led 7 đoạn là mạch giải mã phức tạp vì mạch phải cho nhiều ngõ ra lên cao hoặc xuống thấp( tuỳ vào loại đèn led là anod chung hay catod chung) để làm các đèn cần thiết sáng nên các số hoặc ký tự IC 74LS47 là loại IC tác động ở mức thấp có ngõ ra cực thu để hở và khả năng nhận dòng đủ cao để thúc trực tiếp các đèn led 7 đoạn loại anod chung - Hình dáng và sơ đồ chân Hinh:Hình dáng và sơ đồ chân của IC 74LS47 3 + Chân 1, 2, 6, 7: Chân dử liệu BCD vào + Chân 9, 10, 11, 12, 13, 14, 15: Các chân ra tác động mức thấp + Chân 8: Chân nối mass + Chân 16: Chân nối nguồn + Chân 4: Gồm ngõ vào xoá BI được để không hay nối lên cao cho hoạt động giải mã bình thường Khi nối BI ở mức thấp, các ngõ ra đều tắt bất chấp trạng thái của các ngõ vào + Chân 5: Ngõ vào xoá dợn sóng RBI được để không hay nối lên cao khi không được dùng để xoá số 0( số 0 ở trước số có nghĩa hay số 0 thừa bên trái dấu chấm thập phân) + Chân 3: Ngõ vào thử đèn LT ở cao các ngõ ra đều tắt và ngõ ra xoá dợn sóng RBO thấp Khi ngõ vào BI/RBO để không hay nối lên cao và ngõ vào LT giữ ở mức thấp các ngõ ra đều sáng - Sơ đồ logic và bảng trạng thái sơ đồ logic Sơ đồ cấu trúc của IC74LS47, nó giúp cho những ai muốn tìm hiểu sâu về IC giải mã 74LS47 hoạt động và giải mã BCD sang led 7 đoạn như thế nào Sự hoạt động của mạch được thể hiện ở bảng sự thật, trong đó đối với các ngõ ra H là tắt và L là sáng, nghĩa là nếu 74LS47 thúc đèn led 7 đoạn thì các đoạn a, b, c, d, e, f, g của đèn sẽ sáng hay tắt tuỳ vào ngõ ra tương ứng của 74LS47 là L hay H 4 Hinh: Bảng trạng thái của IC74LS47 Kết quả là khi mã số nhị phân 4 bit vào có giá trị thập phân từ 0 đến 15 đèn led hiển thị lên các số như ở hình bên dưới Chú ý là khi mã số nhị phân vào là 1111= 1510 thì đèn led tắt 2.1.3.IC Đếm Lên/Xuống 74LS192 - IC 74LS192 là IC hoạt động ở chế độ đếm đồng bộ Nó có khả năng đếm thuận (Count UP) và đếm nghịch (Count DOWN) - Sơ đồ chân trong thực tế của IC 74LS192: 1 CPU(5): Xung vào đếm thuận 2 CPD(4): Xung vào đếm nghịch 3 MR(14): Xóa xung không đồng bộ nhập vào 4 PL(11): Song song không đồng bộ (mức tích cực thấp) 5 Pn (1,9,10,15): Đầu vào song song dữ liệu 6 Qn(2,3,6,7): Đầu ra của dữ liệu 7 TCD(13): Sự đếm xuống của chân đầu ra (Borrow) 5 8 TCU(12): Sự đếm lên của xung đầu ra (Carry) 9 Vcc(16): Cấp nguồn 10 GND(8): Nối đất Sơ đồ chân IC 74LS192 Bảng chức năng : MR PL CPU CPD CHẾ ĐỘ H X X X RESET L L X X PRESET L H H H Không đếm L H H Đếm thuận L H H Đếm nghịch 6 Sơ đồ nguyên lý IC 74LS192 2.1.4 LED 7 Đoạn Led 7 thanh được ứng dụng khá phổ biến khi cần hiển thị số tự nhiên hoặc vài chữ cái nhất định Led 7 thanh có thể có kích thước lớn nhỏ khác nhau, màu sắc khác nhau nhưng về cấu tạo cơ bản như hình dưới 7 Cấu tạo led 7 thanh Led 7 thanh bao gồm nhiều led tích hợp bên trong, các led được nối chung nhau 1 chân Trong thực tế có 2 loại led 7 thanh là led 7 thanh Anốt chung và led 7 thanh Katốt chung Led loại Anốt chung, các led sẽ có chung nhau chân nguồn (chân dương), chân còn lại của led nào được nối đất thì led đó sẽ sáng Led loại Katốt chung, các led sẽ nối chung nhau chân đất (chân âm), chân còn lại của led nào được nối nguồn thì led đó sẽ sáng Ngoài 7 thanh sáng chính, mỗi led 7 thanh còn có thêm một led dùng để hiển thị dấu phân số khi cần thiết Khả năng hiển thị 10 chữ số thập phân của led 7 thanh 3.Sơ Đồ Nguyên Lý Của Mạch Đếm 8 9 4.Mạch Layout 10 Khi MSSP ôû cheá ñoä SPI: Bit 7 WCOL Write Collition Detect bit WCOL = 1 Döõ lieäu môùi ñöôïc ñöa vaøo thanh ghi SSPBUF trong khi chöa truyeàn xong döõ lieäu tröôùc ñoù WCOL = 0 Khoâng coù hieän töôïng treân xaûy ra Bit 6 SSPOV Receive Overflow Indicalor bit (bit naøy chæ coù taùc duïng ôû cheá ñoä SPI Slave mode) SSPOV = 1 Döõ lieäu trong bufer ñeäm (thanh ghi SSPBUF) bò traøn (döõ lieäu cuõ chöa ñöôïc ñoïc thì coù döõ lieäu môùi gi ñeø leân) SSPOV = 0 Khoâng coù hieän töôïng treân xaûy ra Bit 5 SSPEN Synchronous Serial Port Enable bit SSPEN = 1 Cho pheùp coång giao tieáp MSSP (caùc pin SCK, SDO, SDI ) SSPEN = 0 Khoâng cho pheùp coång giao tieáp MSSP Bit 4 CKP Clock Polarity Select bit CKP = 1 Traïng thaùi chôø cuûa xung clock laø möùc logic cao CKP = 0 Traïng thaùi chôø cuûa xung clock laø möùc logic thaáp Bit 3-0 SSPM3:SSPM0 Synchronous Serial Mode Select bit Caùc bit naøy ñoùng vai troø löïa choïn caùc cheá ñoä hoaït ñoäng cuûa MSSP 0101 Slave mode, xung clock laáy töø pin SCK, khoâng cho pheùp pin ñieàu khieån( laø pin I/O bình thöôøng) 0100 SPI Slave mode, xung clock laáy töø pin SCK, cho pheùp pin ñieàu khieån 0011 SPI Master mode, xung clock baèng (ngoõ ra TMR2)/2 0010 SPI Master mode, xung clock baèng (FOSC/64) 0001 SPI Master mode, xung clock baèng (FOSC/16) 0000 SPI Master mode, xung clock baèng (FOSC/4) Caùc traïng thaùi khoâng ñöôïc lieät keâ hoaëc khoâng coù taùc duïng ñieàu khieån hoaëc chæ coù taùc duïng ñoái vôùi cheá ñoä I2C mode Khi MSSP ôû cheá ñoä I2C: Bit 7 WCOL Write Collition Detect bit Khi truyeàn döõ lieäu ôû cheá ñoä I2C Master mode: WCOL = 1 Ñöa döõ lieäu truyeàn ñi vaøo thanh ghi SSPBUF trong khi cheá ñoä truyeàn döõ lieäu cuûa I2C chöa saün saøng WCOL = 0 Khoâng xaûy ra hieän töôïng treân khi truyeàn döõ lieäu ôû cheá ñoä I2C Slave mode: WCOL = 1 Döõ lieäu môùi ñöôïc ñöa vaøo thanh ghi SSPBUF trong khi döõ lieäu cuõ chöa ñöôïc truyeàn ñi WCOL = 0 Khoâng coù hieän töôïng treân xaûy ra ÔÛ cheá ñoä nhaän döõ lieäu (Master hoaëc Slave): Bit naøy khoâng coù taùc duïng chæ thi caùc traïng thaùi 31 Bit 6 SSPOV Receive Overflow Indicator Flag bit Khi nhaän döõ lieäu: SSPOV = 1 Döõ lieäu môùi ñöôïc nhaän vaøo thanh ghi SSPBUF trong khi döõ lieäu cuõ chöa ñöôïc ñoïc SSPOV = 0 Khoâng coù hieän töôïng treân xaûy ra Khi truyeàn döõ lieäu: Bit naøy khoâng coù taùc duïng chæ thò caùc traïng thaùi Bit 5 SSPEN Synchronous Serial Port Enable bit SSPEN = 1 Cho pheùp coång giao tieáp MSSP (caùc pin SDA vaø SCL) SSPEN = 0 Khoâng cho pheùp coång giao tieáp MSSP Caàn chuù yù laø caùc pin SDA vaø SCL phaûi ñöôïc ñieàu khieån traïng thaùi baèng caùc bit töông öùng trong thanh ghi TRISC tröôùc ñoù) Bit 4 CKP SCK Release Control bit ÔÛ cheá ñoä Slave mode: CKP = 1 Cho xung clock taùc ñoäng CKP = 0 Giöõ xung clock ôû möùc logic thaáp (ñeå baûo ñaûm thôøi gian thieát laäp döõ lieäu) Bit 3,0 SSPM3:SSPM0 Caùc bit naøy ñoùng vai troø löïa choïn caùc cheá ñoä hoaït ñoäng cuûa MSSP 1111 I2C Slave mode 10 bit ñòa chæ vaø cho pheùp ngaét khi phaùt hieän bit Start vaø bit Stop 1110 I2C Slave mode 7 bit ñòa chæ vaø cho pheùp ngaét khi phaùt hieän bit Start vaø bit Stop 1011 I2C Firmwave Controlled Master mode (khoâng cho pheùp cheá ñoä Slave) 1000 I2C Master mode, xung clock = FOSC/(4*(SSPADD+1)) 0111 I2C Slave mode 10 bit ñòa chæ Caùc traïng thaùi khoâng ñöôïc lieät keâ hoaëc khoâng coù taùc duïng ñieàu khieån hoaëc chæ coù taùc duïng ñoái vôùi cheá ñoä SPI mode Thanh ghi SSPCON2: ( ñòa chæ 91h) Thanh ghi ñieàu khieån caùc cheá ñoä hoaït ñoäng cuûa chuaån giao tieáp I2C Bit 7 GCEN General Call Enable bit GCEN = 1 Cho pheùp ngaét khi ñòa chæ 0000h ñöôïc nhaän vaøo thanh ghi SSPSR (ñòa chæ cuûa cheá ñoä General Call Address) GCEN = 0 Khoâng cho pheùp cheá ñoä ñòa chæ treân 32 Bit 6 ACKSTAT Acknowledge Status bit (bit naøy chæ coù taùc duïng khi truyeàn döõ lieäu ôû cheá ñoä I2C Master mode) ACKSTAT = 1 Nhaän ñöôïc xung töø I2C Slave ACKSTAT = 0 Chöa nhaän ñöôïc xung Bit 5 ACKDT Acknowledge Data bit (bit naøy chæ coù taùc duïng khi nhaän döõ lieäu ôû cheá ñoä I2C Master mode) ACKDT = 1 Chöa nhaän ñöôïc xung ACKDT = 0 Ñaõ nhaän ñöôïc xung Bit 4 ACKEN Acknowledge Sequence Enable bit (bit naøy chæ coù taùc duïng khi nhaän döõ lieäu ôû cheá ñoä I2C Master mode) ACKEN = 1 Cho pheùp xung xuaát hieän ôû 2 pin SDA vaø SCL khi keát thuùc quaù trình nhaän döõ lieäu ACKEN = 0 Khoâng cho pheùp taùc ñoäng treân Bit 3 RCEN Receive Enable bit (bit naøy chæ coù taùc duïng ôû cheá ñoä I2C Master mode) RCEN = 1 Cho pheùp nhaän döõ lieäu ôû cheá ñoä I2C Master mode RCEN = 0 Khoâng cho pheùp nhaän döõ lieäu Bit 2 PEN Stop Condition Enable bit PEN = 1 Cho pheùp thieát laäp ñieàu kieän Stop ôû 2 pin SDA vaø SCL PEN = 0 Khoâng cho pheùp taùc ñoäng treân Bit 1 RSEN Repeated Start Condition Enable bit RSEN = 1 Cho pheùp thieát laäp ñieàu kieän Start laëp laïi lieân tuïc ôû 2 pin SDA vaø SCL RSEN = 0 Khoâng cho pheùp taùc ñoäng treân Bit 0 SEN Start Condition Enable/Stretch Enable bit ÔÛ cheá ñoä Master mode: SEN = 1 Cho pheùp thieát laäp ñieàu kieän Start ôû 2 pin SDA vaø SCL SEN = 0 Khoâng cho pheùp taùc ñoäng treân ÔÛ cheá ñoä Slave mode: SEN = 1 Cho pheùp khoùa xung clock töø pin SCL cuûa I2C Master SEN = 0 Khoâng cho pheùp taùc ñoäng treân Operation I2C coù nhieàu cheá ñoä hoaït ñoäng vaø ñöôïc ñieàu khieån bôûi caùc bit SSPCON, bao goàm: • I2C Master mode, xung clock = fosc/4*(SSPADD+1) • I2C Slave mode, 7 bit ñòa chæ • I2C Slave mode, 10 bit ñòa chæ • I2C Slvae mode, 7 bit ñòa chæ, cho pheùp ngaét khi phaùt hieän bit Start vaø bit Stop 33 I2C Slave mode, 10 bit ñòa chæ, cho pheùp ngaét khi phaùt hieän bit Start vaø bit Stop • I2C Firmware Control Master mode Ñòa chæ truyeàn ñi seõ bao goàm caùc bit ñòa chæ vaø moät bit ñeå xaùc ñònh thao taùc (ñoïc hay ghi döõ lieäu) vôùi ñoái töôïng caàn truy xuaát döõ lieäu • Khi löïa choïn giao dieän I2C vaø khi set bit SSPEN, caùc pin SCL vaø SDA seõ ôû traïng thaùi cöïc thu hôû Do ñoù trong tröôøng hôïp caàn thieát ta phaûi söû duïng ñieän trôû keùo leân ôû beân ngoaøi vi ñieàu khieån, beân caïnh ñoù caàn aán ñònh caùc giaù trò phuø hôïp cho caùc bit TRISC (bit ñieàu khieån xuaát nhaäp caùc chaân SCL vaø SDA) I2C Slave Mode: Vieäc tröôùc tieân laø phaûi set caùc pin SCL vaø SDA laø input (set bit TRISC) I2C cuûa vi ñieàu khieån seõ ñöôïc ñieàu khieån bôûi moät vi ñieàu khieån hoaëc moät thieát bò ngoaïi vi khaùc thoâng qua caùc ñòa chæ Khi ñòa chæ naøy chæ ñeán vi ñieàu khieån, thì taïi thôøi ñieåm naøy vaø taïi thôøi ñieåm döõ lieäu ñaõ ñöôïc truyeàn nhaän xong sau ñoù, vi ñieàu khieån seõ taïo ra xung ACK ñeå baùo hieäu keát thuùc döõ lieäu, giaù trò trong thanh ghi SSPSR seõ ñöôïc ñöa vaøo thanh ghi SSPBUF Tuy nhieân xung ACK seõ khoâng ñöôïc taïo ra neáu moät trong caùc tröôøng hôïp sau xaûy ra: • Bit BF (SSPSTAT) baùo hieäu buffer ñaày ñaõ ñöôïc set tröôùc khi quaù trình truyeàn nhaän xaûy ra • Bit SSPOV (SSPCON) ñöôïc set tröôùc khi quaù trình truyeàn nhaän xaûy ra (SSPOV ñöôïc set trong tröôøng hôïp khi moät byte khaùc ñöôïc nhaän vaøo trong khi döõ lieäu trong thanh ghi SSPBUF tröôùc ñoù vaãn chöa ñöôïc laáy ra) Trong caùc tröôøng hôïp treân, thanh ghi SSPSR seõ khoâng ñöa giaù trò vaøo thanh ghi SSPBUF, nhöng bit SSPIF (PIR1)seõ ñöôïc set Ñeå quaù trình truyeàn nhaän döõ lieäu ñöôïc tieáp tuïc, caàn ñoïc döõ lieäu töø thanh ghi SSPBUF vaøo tröôùc, khi ñoù bit BF seõ töï ñoäng ñöôïc xoùa, coøn bit SSPOV phaûi ñöôïc xoùa baèng chöông trình Khi MSSP ñöôïc kích hoaït, noù seõ chôø tín hieäu ñeå baét ñaàu hoaït ñoäng Sau khi nhaân ñöôïc tín hieäu baét ñaàu hoaït ñoäng (caïnh xuoáng ñaàu tieân cuûa pin SDA), döõ lieäu 8 bit seõ ñöôïc dòch vaøo thanh ghi SSPSR Caùc bit ñöa vaøo seõ ñöôïc laáy maãu taïi caïnh leân cuûa xung clock Giaù trò nhaän ñöôïc töø thanh ghi SSPSR seõ ñöôïc so saùnh vôùi giaù trò trong thanh ghi SSPADD taïi caïnh xuoáng cuûa xung clock thöù 8 Neáu keát quaû so saùnh baèng nhau, töùc laø I2C Master chæ ñònh ñoái töôïng giao tieáp laø vi ñieàu khieån ñang ôû cheá ñoä Slave mode (ta goïi hieän töôïng naøy laø address match), bit BF vaø SSPOV seõ ñöôïc xoùa veà 0 vaø gaây ra caùc taùc ñoäng sau: Giaù trò trong thanh ghi SSPSR ñöôïc ñöa vaøo thanh ghi SSPBUF Bit BF töï ñoäng ñöôïc set Moät xung ACK ñöôïc taïo ra 34 Côø ngaét SSPIF ñöôïc set (ngaét ñöôïc kích hoaït neáu ñöôïc cho pheùp tröôùc ñoù) taïi caïnh xuoáng cuûa xung clock thöù 9 Khi MSSP ôû cheá ñoä I2C Slave mode 10 bit ñòa chæ, vi ñieàu khieån caàn phaûi nhaän vaøo 10 bit ñòa chæ ñeå so saùnh Bit (SSPSTAT) phaûi ñöôïc xoùa veà 0 ñeå cho pheùp nhaän 2 byte ñòa chæ Byte ñaàu tieân coù ñònh daïng laø ‘11110 A9 A8 0‘ trong ñoù A9, A8 laø hai bit MSB cuûa 10 bit ñòa chæ Byte thöù 2 laø 8 bit ñòa chæ coøn laïi Quaùtrình nhaän daïng ñòa chæ cuûa MSSP ôû cheá ñoä I2C Slave mode 10 bit ñòa chæ nhö sau: 1 Ñaàu tieân 2 bit MSB cuûa 10 bit ñòa chæ ñöôïc nhaän tröôùc, bit SSPIF, BF vaø UA (SSPSTAT) ñöôïc set (byte ñòa chæ ñaàu tieân coù ñònh daïng laø ‘11110 A9 A8 0’) 2 Caäp nhaät vaøo 8 bit ñòa chæ thaáp cuûa thanh ghi SSPADD, bit UA seõ ñöôïc xoùa bôûi vi ñieàu khieån ñeå khôûi taïo xung clock ôû pin SCL sau khi quaù trình caäp nhaät hoaøn taát 3 Ñoïc giaù trò thanh ghi SSPBUF (bit BF seõ ñöôïc xoùa veà 0) vaø xoùa côø ngaét SSPIF 4 Nhaän 8 bit ñòa chæ cao, bit SSPIF, BF vaø UA ñöôïc set 5 Caäp nhaät 8 bit ñòa chæ ñaõ nhaän ñöôïc vaøo 8 bit ñòa chæ cao cuûa thanh ghi SSPADD,neáu ñòa chæ nhaän ñöôïc laø ñuùng (address match), xung clock ôû chaân SCL ñöôïc khôûi taïo vaø bit UA ñöôïc set 6 Ñoïc giaù trò thanh ghi SSPBUF (bit BF seõ ñöôïc xoùa veà 0) vaø xoùa côø ngaét SSPIF 7 Nhaän tín hieäu Start 8 Nhaän byte ñòa chæ cao (bit SSPIF vaø BF ñöôïc set) 9 Ñoïc giaù trò thanh ghi SSPBUF (bit BF ñöôïc xoùa veà 0) vaø xoùa côø ngaét SSPIF Trong ñoù caùc böôcù 7,8,9 xaûy ra trong quaù trình truyeàn döõ lieäu ôû cheá ñoä Slave mode Xem giaûn ñoà xung cuûa I2C ñeå coù ñöôïc hình aûnh cuï theå hôn veà caùc böôùc tieán haønh trong quaù trình nhaän daïng ñòa chæ Xeùt quaù trình nhaän döõ lieäu ôû cheá ñoä Slave mode, caùc bit ñòa chæ seõ ñöôïc I2C Master ñöa vaøo tröôùc Khi bit trong caùc bit ñòa chæ coù giaù trò baèng 0 (bit naøy ñöôïc nhaän daïng sau khi caùc bit ñòa chæ ñaõ ñöôïc nhaän xong) vaø ñòa chæ ñöôïc chæ ñònh ñuùng (address match), bit cuûa thanh ghi SSPSTAT ñöôïc xoùa veà 0 vaø ñöôøng döõ lieäu SDI ñöôïc ñöa veà möùc logic thaáp (xung ) Khi bit SEN (SSPCON) ñöôïc set, sau khi 1 byte döõ lieäu ñöôïc nhaän, xung clock töø chaân RC3/SCK/SCL seõ ñöôïc ñöa xuoáng möùc thaáp, muoán khôûi 35 taïo laïi xung clock ta set bit CKP (SSPCON) Ñieàu naøy seõ laøm cho hieän töôïng traøn döõ lieäu khoâng xaûy ra vì bit SEN cho pheùp ta ñieàu khieån ñöôïc xung clock dòch döõ lieäu thoâng qua bit CKP (tham khaûo giaûn ñoà xung ñeå bieát theâm chi tieát) Khi hieän töôïng traøn döõ lieäu xaûy ra, bit BF hoaëc bit SSPOV seõ ñöôïc set Ngaét seõ xaûy ra khi moät byte döõ lieäu ñöôïc nhaän xong, côø ngaét SSPIF seõ ñöôïc set vaø phaûi ñöôïc xoùa baèng chöông trình 2.2 EEPROM 24C64 2.2.1 EEPROM LÀ GÌ? - EEPROM (tiếng Anh: Electrically Erasable Programmable Read-Only Memory) là một chip nhớ không xoá được thường dùng trong các máy tính và các thiết bị di động để lưu trữ một lượng dữ liệu thấp và cần thiết thay đổi nội dung được.EEPROM thuộc loại "bộ nhớ không mất dữ liệu khi ngừng cung cấp điện" (non-volatile storage) Có thể nói EEPROM là công nghệ mới nhất của ROM mà điều khác biệt cơ bản là chúng có khả năng xoá được bằng phương pháp lập trình mà chúng không cần đến các thiết bị chuyên dụng như các thế hệ trước của nó Bằng cách sử dụng EEPROM (hoặc flash ROM) người ta có thể dễ dàng xoá bỏ các chương trình được nạp trên nó của các bo mạch chủ trong máy tính cá nhân mà không cần thêm một thao tác cơ học nào khác kể cả tháo vỏ máy tính EEPROM còn giúp các thiết bị khác (bo mạch mạng, bo mạch đồ hoạ, wireless access points, bộ định tuyến hoặc trong điện thoại, thiết bị giải trí số cá nhân ) có thể nâng cấp firmware mà không cần thay đổi chip nhớ, việc mà trước kia người ta thường thực hiện gắn chip trên các đế để có thể thay thế sau này bằng cách gỡ bỏ chúng và thay bằng chip khác.:''' 2.2.2 EEPROM 24C64 - Là 1 chip nhớ vơi dung lương bộ nhớ la 64kbit.Giao tiếp với VĐK qua chuẩn giao tiếp TWI-I2C Sơ đồ chân vào hình ảnh thực tế của 24C64 36 Trong đó : + Chân 1,2,3: là chân chọn chip để khai báo địa chỉ trên đường truyền TWI-I2C qua bảng + Chân 4,8: là 2 chân cấp nguồn cho chip +Chân 5,6 : là chân truyền dữ liệu thông qua chuẩn giao tiếp TWI-I2C +Chân Số 7:(Write Control) la chân điều khiển quá trinh ghi chip.bình thường chân này ở mức 0 Sơ đồ khối của chip 37 2.2.3 LEDMAXTRIX - Ma traän LED töùc Dot Matrix LED laø taäp hôïp nhieàu ñeøn LED ñöôïc boá trí thaønh daïng “ma traän” hình chöõ nhaät hoaëc vuoâng vôùi soá haøng laø a vaø soá coät laø b Ma traän LED ñöôïc duøng raát nhieàu trong caùc öùng duïng hieån thò nhö caùc bieån quaûng caùo, hieån thò thay theá 38 LCD hoaëc thaäm chí duøng hieån thò video…Ñeå giaûm soá löôïng caùc ñöôøng ñieàu khieån, trong caùc ma traän LED caùc LED ñöôïc noái chung vôùi nhau theo haøng vaø coät Soá löôïng LED treân ma traän LED laø axb trong khi soá löôïng ngoõ ra baèng toång soá haøng vaø coät: a + b Vieäc ñieàu khieån 1 ma traän LED kích thöôùc lôùn ñoøi hoûi thieát keá moät maïch driver vaø ñieàu khieån raát phöùc taïp Vôùi muïc ñích giuùp baïn ñoïc laøm quen khaùi nieäm ma traän LED, trong phaïm vi baøi naøy chæ trình baøy thao taùc vôùi 1 ma traän LED coù kích thöôùc 8x8 (8 haøng, 8 coät) Ma traän LED 8x8 thöôøng ñöôïc duøng ñeå hieån thò caùc kyù töï trong baûng maõ ASCII thay cho Text LCD Tuy nhieân, baïn coù theå gheùp caùc ma traän LED naøy laïi ñeå hieån thò caùc loaïi hình aûnh baát kyø coù ñoä phaân giaûi thaáp Hình döôùi moâ taû moät caáu truùc cuûa moät ma traän LCD 8x8 vôùi 16 ngoõ ra ñöôïc ñaët teân töø C0…C7 vaø D0…D7 (C ñaïi dieän cho Control vaø D laø Data) Ma traän LED 8x8 - Beân trong caùc oâ cuûa ma traän LED laø caùc LED phaùt sang Trong moâ hình treân, Cathod (cöïc aâm) cuûa caùc LED treân moãi haøng ñöôïc noái chung vôùi nhau vaø ngoõ ra chung laø caùc ngoõ R (Row: Haøng) Caùc Anod cuûa caùc LED treân moãi coät ñöôïc noái chung taïo thaønh caùc ñöôøng C (Colume: Coät) Thoâng thöôøng, caùc ñöôøng R vaø C ñöôïc choïn sao cho soá löôïng ñöôøng R nhieàu hôn ñöôøng C hoaëc sao cho soá löông caùc ñöôøng R gaàn nhaát vôùi soá 8, 16, 32…(luõy thöøa cuûa 2) Lyù do cuûa vieäc choïn naøy nhaèm giaûm kích thöôùc boä font chöùa caùc kyù töï hoaëc hình aûnh hieån thò leân ma traän LED, baïn seõ hieåu roõ hôn khi tìm hieåu caùc ñieàu khieån ma traän LED 8x8 39 - Tröôùc heát chuùng ta seõ khaûo caùch cho saùng caùc LED maø khoâng caàn quan taâm ñeán baûng font Quan saùt coät thöù hai (coät C1) trong hình treân, trong coät naøy chæ coù 2 LED ôû haøng D2 vaø D3 laø sang, caùc LED coøn laïi taét Ñieàu naøy ñöôïc thöïc hieän baèng caùch kích chaân C1 (Anod) leân möùc cao, keùo caùc chaân D2, D3 xuoáng möùc 0 trong khi caùc chaân Data khaùc ñöôïc giöõ ôû möùc cao Caùc coät khaùc ñöôïc thöïc hieän töông töï Tuy nhieân, caâu hoûi ôû ñaây laø laøm sao hieån thò caùc coät vôùi caùc ñeøn LED saùng khaùc nhau trong khi caùc ngoõ Cathod cuûa chuùng ñeàu ñöôïc noái chung (thaønh caùc chaân D) Ví duï moät ngöôøi keùo taát caû 5 chaân C0…C4 leân möùc cao vaøo xuaát tín hieäu ra caùc chaân D, khi ñoù taát caû caùc LED treân duøng moät haøng seõ saùng hoaëc taét nhö nhau “Bí quyeát” ôû ñaây chính laø kyõ thuaät “queùt”, chuùng ta seõ hieån thò tuaàn töï caùc coät vôùi caùc giaù trò töông öùng cuûa chuùng chöù khoâng hieån thò ñoàng thôøi Trong ví duï hieån thò soá ‘4’, tröôùc heát haõy kích chaân C1 leân cao trong khi caùc chaân C0,C2…C7 ôû möùc thaáp, xuaát tín hieäu ra caùc chaân D ñeå hieån thò leân coät C1 Tieáp theo keùo chaân C2 leân cao vaø caùc chaân Control khaùc ôû möùc thaáp, xuaát döõ lieäu ra caùc chaân D ñeå hieån thò coät C2…Cöù nhö theá cho ñeán khi hieån thò heát caùc coät thì quay laïi coät C0 Quaù trình naøy goïi laø “queùt LED” Do toác ñoä “queùt” raát cao neân chuùng ta seõ khoâng coù caûm giaùc “nhaáp nhaùy”, caùc coät cuûa ma traän nhö ñöôïc hieån thò ñoàng thôøi Chuù yù laø ñoä saùng cuûa LED phuï thuoäc vaøo soá coät LED, neáu baïn “queùt” quaù nhieàu coät LED, tæ leä thôøi gian “ON” cuûa moãi coät seõ raát nhoû so vôùi thôøi gian “OFF” vì phaûi chôø queùt caùc coät khaùc Vì theá neáu ma traän LED coù nhieàu coät hoaëc khi gheùp nhieàu ma traän, caùc maïch driver caàn ñöôïc söû duïng ñeå ñaûm baûo ñoä saùng cuûa LED - Giaû söû moãi LED ñaïi dieän cho 1 bit vaø caùc LED saùng ñaïi dieän cho giaù trò nhò phaân 1 trong khi caùc LED taét laø soá 0 Neáu xem moãi coät cuûa ma traän laø 1 con soá 8 bit thì 8 giaù trò caàn thieát ñeå hieàn thò soá ‘4’ laø: 0xFF, 0xCF, 0xD7, 0xDB, 0xDD, 0x00, 0xDF, 0xFF Boä 8 giaù trò naøy taïo thaønh maõ font cho kyù töï ‘4’, chuùng seõ ñöôïc ñònh nghóa tröôùc vaø löu trong boä nhôù cuûa chip ñieàu khieån (PIC), moãi laàn moät kyù töï ñöôïc yeâu caàu hieån thò, boä font töông öùng cuûa kyù töï ñoù seõ ñöôïc “load” ra vaø xuaát laàn löôït treân caùc ñöôøng Data, ñaây chính laø lyù do taïi sao chuùng ta goïi caùc ñöôøng D laø caùc ñöôøng Data Caùch “queùt” LED toâi vöøa trình baøy laø caùch “queùt ngang”, baïn coù theå thöïc hieän “queùt doïc” neáu öùng duïng yeâu 40 caàu Trong phöông phaùp queùt doïc, caùc chaân haøng chung seõ ñöôïc duøng ñeå choïn haøng caàn hieån thò, döõ lieäu seõ xuaát ra theo töøng haøng treân 8 coät vaø laàn löôït thay ñoåi haøng (haøng 0 tröôùc, ñeán 1…vaø cuoái cuøng laø 7) Trong baøi hoïc naøy toâi thöïc hieän theo caùch queùt ngang vaø baûng font cuõng ñöôïc xaây döïng cho caùch queùt naøy Caùch duøng phaàn meàm ñeå giaûi maõ: - Trong ví duï hieån thò soá 4 treân baïn thaáy chuùng ta caàn giaûi maõ cho töøng coät ñeå xaùc ñònh maõ cho kyù töï caàn hieån thò Khi soá löôïng kyù töï hieån thò lôùn thì vieät giaûi maõ seõ chieám nhieàu thôøi gian Moät soá öùng duïng coù saün giuùp giaûi maõ moät caùch nhanh choáng vaø chính xaùc Phaàn naøy höôùng daãn caùc baïn söû duïng moät öùng duïng cuûa tröôøng ñaïi hoïc Sö Phaïm Kyõ Thuaät TP Hoà Chí Minh ñeå giaûi maõ caùc kyù töï caàn thieát Sau khi khôûi ñoäng (cöông trình khoâng caàn caøi ñaët) chöông trình cho giao dieän nhö sau: Chöông trình coù nhieàu chöùc naêng nhöng ôû ñaây chæ höôùng daãn baïn caùch giaûi maõ chöõ Ví duï ñeå giaûi maõ soá 4 ôû treân, nhaáp vaøo caùc LED ñeå hieån thò soá 4 theo caùch baïn muoán 41 - Sau khi nhaäp xong maõ töông öùng cuûa caùc Data line seõ xuaát hieän beân khung beân döôùi Söû duïng caùc maõ naøy cho öùng duïng cuûa baïn 3.Sơ Đồ Nguyên Lý Mạch 42 4.Chương Trình Nạp Cho VĐK - Chương trình được viêt bằng MikroC For PIC V8.02.Và nạp theo chuẩn ICSP (In Circuit Serial Programming) void main() { int i,j,k,m,l,doc,ghi; int const Data_Wr []={ 0x7F,0x7F,0x60,0x60,0x60,0x60,0x60,0x60, //l 0x7C,0x7A,0x66,0x66,0x66,0x66,0x66,0x7C , //d 0x7C,0x7A,0x66,0x66,0x66,0x66,0x66,0x7C, //d 0x42, 0x42, 0x42,0x7E,0x42,0x42,0x24,0x18 ,//a 0x62,0x63,0x63,0x67,0x67,0x63,0x63,0x63, ,//n 0x66,0x66,0x66,0x7E,0x7E,0x66,0x66,0x66, 0xFF,0xC3,0xFF,0xFF,0xFF,0xC9,0xFF,0xFF, 0xFF,0xC3,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C, //0 0x1C,0x22,0x22,0x22,0x1C,0x22,0x22,0x1C, //8 0x1C,0x08,0x08,0x08,0x08,0x28,0x18,0x08, //1 0x78,0x04,0x04,0x44,0x38,0x10,0x08,0x7C, ,//3 0x1C,0x22,0x22,0x22,0x1C,0x22,0x22,0x1C, //8 0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C, //0 43 //h 0x1C,0x22,0x22,0x22,0x22,0x22,0x22,0x1C, //0 0x78,0x04,0x04,0x44,0x38,0x10,0x08,0x7C, ,//3 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, }; int const Data_Rd[144]; int const hang[]={0xE4,0x64,0xA4,0x24,0xC4,0x44,0x84,0x44,}; trisc=0; trisb=0; trisd=0; // Khai bao I2C I2C_Init(100000); I2C_Start(); //PHAT BIT STAR CHO I2C I2C_Wr(0xA0); //TRUYEN DIA CHI CUA 24C64 LA D0 LEN DUONG TRUYEN I2C I2C_Wr(0x00); //TRUYEN DIA CHI GHI O NHO DAU TIEN CUA 24C64 LA 0x00 For(ghi=0;ghi