Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 33 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
33
Dung lượng
2,49 MB
Nội dung
Cụng hoa xa hụi chu nghia Viờt Nam ục lõp T Hanh phuc ********* BO CO BI TP LN Mụn hoc: o lng va iờu khiờn may tinh tai : o va hiờn thi tục ụ ụng c qua cụng USB Lp : LT C-H iờn t 1-Khoa Giáo viên hớng dẫn: Vu Thi Thu Hng Sinh viờn thc hiờn: Nguyờn Tiờn Dung Ly Long Hng Yờu cõu ca tai: Mach c thiờt kờ bng phõn mờm chuyờn dung trờn may tinh Tục ụ ụng c c hiờn thi bng ụ thi trờn may tinh Mach c ghep nụi vi may tinh qua cụng USB Phõn mờm hiờn thi trờn may tinh c viờt bng ngụn ng lõp trinh Windows Thc hiờn: Mach c ve bng phõn mờm Altium o tục ụ s dung cam biờn hụng ngoai va vi iờu khiờn 89S52 S dung IC giao tiờp cụng USB gia lõp cụng com Atmega8 Phõn mờm hiờn thi tục ụ ụng c trờn may tinh c viờt bng Visual Basic Chng - Giới thiệu họ 8051( AT 89S52) I-Tụng quan Sơ đồ chân AT 89S52 Bộ vi điều khiển AT89S52 gồm khối chức sau đây: CPU( Central Processing Unit) bao gồm: - Thanh ghi tích luỹ A - Thanh ghi tích luỹ phụ B, dùng cho phép nhân phép chia - Đơn vị logic học( ALU: Arithmetic Logical Unit) - Từ trạng thái chơng trình( PSW: Progam Status Word) - Bốn băng ghi - Con trỏ ngăn xếp Bộ nhớ chơng trình( Bộ nhớ ROM) gồm 8Kb Flash Bộ nhớ liệu( Bôn nhớ RAM) gồm 256 bytes Bộ UART( Universal Ansynchronous Receiver and Tranmitter) làm chức truyền nhận nối tiếp, nhờ khối này, AT89S52 giao tiếp với máy tính qua cổng COM Timer /Counter 16 bít thực chức định thời đếm kiện WDM( Watch Dog Timer) đợc dùng để phục hồi lại hoạt động CPU bị treo nguyên nhân WDM AT89S52 gồm Timer 14 bít, Timer bít, ghi WDTPRG( WDT programable) điều khiển Timer bit ghi chớc WDTRST( WDM register) Bình thờng WDT không hoạt động( bị cấm), phép WDT, giá trị 1EH E1H cần phải đợc ghi liên tiếp vào ghi WDTRST Timer 14 bit WDT đếm tăng dần sau chu kỳ đồng hồ giá trị 16383 xảy tràn Khi xảy tràn, chân RTS đợc đặt mức cao thời gian 96.Tosc (Tossc=1/Fosc) AT89S52 đợc reset Khi WDT hoạt động, ngoại trừ reset phần cứng reset WDT tràn cách cấm đợc WDT, sử dụng WDT đoạn mã chơng trình phải đợc đặt khe thời gian từ lần WDT đợc khởi tạo lại Hình: Sơ đồ khối vi điều khiển 89S52 II- Sơ đồ chân chức 1.Port 0(P0.0-P0.7 hay từ chân 32 đến chân 39): Gồm chân, chức xuất nhập ra, Port Bus đa hợp liệu địa chỉ( AD0-AD7), chức đợc sử dụng AT89S52 giao tiếp với thiết bị có kiến trúc Bus 2.Port 1( P1.0-P1,7 hay từ chân đến chân 8) : Có chức xuất nhập theo bit byte Ngoài ra, chân P1.5, P1.6, P1.7 đợc dùng để nạp ROM theo chuẩn ISP, chân P1.0 P1.1 đợc dùng cho Timer 3.Port 2( P2.0- P2.7 hay từ chân 21 đến chân 28): Là port có công dụng kép: đờng xuất nhập byte cao bus địa thiết kế dùng nhớ mở rộng 4.Port 3( P3.0- P3.7 hay từ chân 10 đến chân 17): Mỗi chân port chức xuất nhập có chức riêng: Bit P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 Tên RXD TXD INT0 INT1 T0 T1 WR RD Chức Dữ liệu nhận cho port nối tiếp Dữ liệu phát cho port nối tiếp Ngắt bên Ngắt bên Ngõ vào Timer/Counter Ngõ vào Timer/Counter Xung ghi nhớ liệu bên Xung đọc nhớ liệu bên RST( Reset- chân 9): Mức tích cực chân mức 1, để reset ta phải đa mức 1(5V) đến chân với thời gian tối thiểu chu kỳ máy( tơng đơng 2uS thạch anh 12MHz Trạng thái ghi reset, reset trạng thái ghi không thay đổi 6.XTAL1, XTAL2: AT89S52 có dao động chip, thờng đợc nồi với dao động thạch anh có tần số lớn 33MHz, thông thờng 12MHz EA( External Access): EA thờng đợc mắc lên mức cao(+5V) mức thấp( GND) Nếu mức cao, vi điều khiển thi hành chơng trình từ ROM nội Nếu mức thấp, chơng trinh đợc thi hành từ nhớ mở rộng 8.ALE( Address Latch Enable): ALE tín hiệu để chốt địa vào ghi bên nửa đầu chu kỳ nhớ Sau đờng port dùng để xuất nhập liệu nửa chu kỳ sau nhớ 9.PSEN( Program Store Enable): PSEN điều khiển phép nhớ chơng trình mở rộng trờng đợc nối đến chân /OE ( Output Enable) EPROM phép đọc bytes mã lệnh PSEN mức thấp thừi gian đọc lệnh Các mã nhị phân chơng trình đợc đọc từ EPROM qua Bus đợc chốt vào ghi lệnh vi điều khiển để giải mã lệnh Khi thi hành chơng trình ROM nội, PSEN mức thụ động( mức cao) 10.Vcc, GND: AT89S52 dùng nguồn chiều có dải điện áp từ 4V-5.5V đợc cấp qua chân 40(+) chân 20(-) III-Tổ chức nhớ AT89S52 1.Bộ nhớ chơng trình AT89S52 có 8Kb Flash Rom chip, chân EA( Chân 31) đợc đặt mức logic cao(+5V), vi điều khiển thực chơng trình ROM nội địa 0000H Số lần ghi cho nhớ khoảng 1000 lần( lý thuyết) Khi chân EA đợc đặt mức thấp, vi điều khiển thực hiên chơng trình nhớ chơng trình (EPROM ngoài), nhiên để có ợc điều phải có mạch phối ghép AT89S52 với EPROM đợc lựa chọn Hình dới vi mach chốt (Latch) tách riêng bus đa hợp địa liệu AD0AD7; Tuỳ theo dung lợng EPROM có số đờng địa tơng ứng đợc dung; EPROM đợc đọc nhờ tín hiệu PSEN ` 89S52 Flash EPRROM A15:8 P2 ALE P0 Latch A7:0 D7:0 PSEN # OE 2.Bộ nhớ liệu AT89S52 có 256 bytes RAM nội đợc phân chia nh sau: Các bank ghi có địa từ 00H đến 1FH: 32 byte thấp nhớ nội đợc dành cho bank ghi Bộ lệnh AT89S52 hỗ trợ ghi có tên R0-R7 theo mặc định sau reset hệ thống, ghi có địa từ 00H đến 07H Các lệnh dùng ghi R0-R7 ngắn nhanh so với lệnh có chức tơng ứng dùng kiểu địa trực tiếp Các liệu đợc dung thờng xuyên nên dùng ghi Do có bank ghi nên thời điểm có bank ghi đợc truy xuất ghi R0-R7, để chuyển đổi việc truy xuất ghi ta phải thay đổi bit chọn bank ghi trạng thái RAM địa hoá bit có địe từ 20H đến 2FH: AT89S52 có 128 bits có chứa byte định địa theo bit từ 20H đến 2FH ý tởng truy xuất bit phần mềm đặc tính mạnh vi điều khiển nói chung Các bit đợc đặt xoá, AND, OR , với lệnh đơn RAM đa dụng từ 30H đến FFH Các ghi chức đặc biệt từ 80H đến FFH: Bộ nhớ liệu ngoài: Port EA ALE Port 89S52 RD D0-D7 74HC373 O D G WR A0-A7 RAM A8-A15 OE WE Sơ đồ ghép nối AT89S52 với RAM Bộ nhớ liệu nhớ RAM đợc đọc ghi tín hiệu /RD WR Các RAM giao tiếp với AT89S52 tơng tự cách thức nh EPROM ngoại trừ chân /RD AT89S52 nối với chân /OE RAM chân /WR AT89S52 nối với chân /WE RAM Nếu có nhiều vi mạch RAM ROM sùng đợc ghép nối với AT89S52 dùng thêm vi mạch giải mã 74LS138 4.Các ghi chức Từ trạng thái chơng trình( PSW: Program Status Word) Thanh ghi B Con trỏ ngăn xếp SP( Stack pointer) Con trỏ liệu DPTR( Data poiner) Các ghi Port( Port register) Các ghi Timer( Timer register) Các ghi Port nối tiếp(Serial Port register) Các ghi ngắt( Interrupt register) Thanh ghi điều khiển nguồn( Power Control register) Mạch tạo dao động Reset * Mạch tạo dao động: AT89S52 có chia tần số chip, cấp xung clock cho khối bên chip từ nguồn dao động bên qua chân XTAL1 XTAL2 * Mạch Reset: Có cách để reset AT89S52 lần lợt là: Reset cấp nguồn, Reset WDT, Reset phần mềm Reset mạch qua chân RST HI Vcc R 10K 19 18 31 40 P P P P P P P P 0 0 0 0 /A /A /A /A /A /A /A /A P P P P P P P P 1 1 1 1 /T /T E X /S /M /M /S D D D D D D D D P P P2 P2 P2 P2 P2 P2 S O SI IS O C K XTA L1 XTA L2 /A /A /A /A /A /A /A /A P /R X D P /T X D P /IN T P 3 /IN T P /T P /T P /W R P /R D PSEN A L E /P R O G E A /V P P R ST VC C G N D C 20 SW C Reset A T89S 52 3 3 3 3 2 2 2 2 1 1 1 1 29 30 IV-Port nụi tiờp AT89S52 có port nối tiếp chip hoạt động nhiều chế độ khác nhau, nhiều tốc độ khác Chức chủ yếu port nói tiếp thực chuyển đổi song song sang nối tiếp với liệu xuất chuyển đổi nói tiếp sang song song với liệu nhập để giao tiếp với máy tinh qua cổng nối tiếp thiết bị tơng tự AT89S52 Máy tính Cổng COM Bộ chuyển đổi mức Mô tả hoạt động Port nối tiếp Port nối tiếp hoạt động song công( full duplex: thu phát đồng thời) đệm lúc thu( receiver buffering) cho phép kí tự đợc thu đợc giữ kí tự thứ đợc nhận Nếu CPU đọc kí tự thứ trớckhi kí tự thứ đợc thu đầy đủ liệu không 1.Các ghi port nối tiếp Có ghi chức đặc biệt cho phép phần mềm truy xuất đến Port nối tiếp: SBUF SCON Thanh ghi điều khiển Port nối tiếp( SCON- Serial Controller) Thanh ghi điều khiển Port nối tiếp SCON địa 98H ghi có điịnh địa bit, chứa bit trạng thái bit để đièu khiển liên quan tới port nối tiếp Các bit điều khiển đặt chế độ hoạt động cho Port nối tiếp, bit trạng thái báo cáo kết thúc việc phát thu ký tự Các bit trạng thai đợc kiểm tra ophần mềm đợc lập trình để tạo ngắt Bit Ký hiệu Địa Mô tả SCON.7 SM0 9FH Mode 1-Bit chọn chế độ cho Port nối tiếp SCON.6 SM1 9EH Mode 1-Bit chọn chế độ hoạt động cho Port nối tiếp SM0SM1=00: Port nối tiếp hoạt động chế độ SM0SM1=01: Port nối tiếp hoạt động chế độ1 SM0SM1=10: Port nối tiếp hoạt động chế độ2 SM0SM1=11: Port nối tiếp hoạt động chế độ3 SCON.5 SM2 9DH Mode 2-Bit chọn chế độ cho Port nối tiếp Bit cho phép truyền thông đa xử lý SCON.4 REN 9CH Receiver Enable-Bit cho phép thu, REN phải đợc đặt phép nhận ký tự SCON.3 TB8 9BH Transmitted bit 8-Bit truyền thứ sử dụng chế độ UART bit SCON.2 RB8 9AH Receiver bit 8- Bit nhận thứ sử dụng chế độ UART bit SCON.1 TI 99H Transmitted Interupt- Cờ ngắt truyền, TI đợc đặt kết thúc việc truyền ký tự, TI đợc xoá phần mềm sanh TOP cua bụ so sanh kờnh B Thanh Ghi ICR1: 16 bit, c tach ICR1H va ICR1L Thanh ghi Input capture (ICR1n) se cõp nhõt gia tri cua bụ ờm TCNT1 mi xay s kiờn chõn ICP1 Ngoai ghi c s dung inh nghia gia tri TOP cua bụ ờm Thanh ghi TIMSK: Cac bụ T/C trờn AVR dựng chung ghi mt na ngt, vi thờ TIMSK cung c dựng quy inh ngt cho T/C1 Co iờu luc chung ta ch quan tõm ờn cac bit t ờn cua TIMSK Co tt ca loai ngt trờn T/C1 (nh lai T/C0 ch co loai ngt tran) Bit 2: TOIE1, bit quy inh ngt tran cho T/C1 (tng t trng hp cua T/C0) Bit 3: OCIE1B la bit cho phep ngt co Match xay viờc so sanh TCNT1 vi OCR1B Bit 4: OCIE1A la bit cho phep ngt co Match xay viờc so sanh TCNT1 vi OCR1A Bit 5: TICIE1 la bit cho phep ngt trng hp Input Capture c dựng Ta luụn phai nh rng muụn s dung ngt thi phai t bit i SREG bng cho phep ngt toan cuc (trong Codevison dựng cõu lờnh #asm (sei) Thanh ghi TIFR: La ghi c nh cho tt ca cac bụ T/C Cac bit t ờn ghi la cac c trang thai cua T/C1 3.3 Timer/counter (T/C2) Tuy T/C2 la mụt T/C bit, nhng no co õy u cac chờ ụ hoat ụng nh T/C1 gụm: binh thng, Fast PWM, Phase Corect PWM, Phase and Frequency Corect PWM Ngt vi AVR Atmega8 4.1 Gii thiờu Interrupts, thng c gi la ngt, la mụt tin hiờu khn cp gi ờn bụ x li, yờu cõu bụ x li tam ngng tc khc cac hoat ụng hiờn tai nhay ờn mụt ni khac thc hiờn mụt nhiờm vu khn cp nao o, nhiờm vu gi la trinh phuc vu ngt isr (interrupt service routine) Sau kờt thuc nhiờm vu isr, bụ ờm chng trinh se c tra vờ gia tri trc o bụ x li quay vờ thc hiờn tiờp cac nhiờm vu dang d Nh võy, ngt co mc ụ u tiờn x li cao nht, ngt thng c dựng x li cac s kiờn bt ng nhng khụng tụn qua nhiờu thi gian Cac tin hiờu dn ờn ngt co thờ xut phat t cac thiờt bi bờn chip (ngt bao bụ ờm T/C tran, ngt bao qua trinh gi d liờu bng RS232 kờt thuc) hay cac tac nhõn bờn ngoai (ngt bao co nut nhn c nhn, ngt bao co goi d liờu a c nhõn) Sụ lng ngt trờn mi dong chip la khac nhau, ng vi mi ngt se co vector ngt, vector ngt la cac ghi co ia ch cụ inh c inh nghia trc nm phõn õu cua bụ nh chng trinh Bng 2.6 Bng vector ngt Atmega8 Th t u tiờn ngt: Vi AVR, th t u tiờn ngt la cụ inh, khụng thay ụi c nh 8051 Mụt vector ngt co ia ch thp hn thi se co mc u tiờn ngt cao hn Theo quy tc ta thy, ngt ngoai INT0 se c u tiờn hn INT1 s dung c ngt, ta phai cho phep ngt toan cuc bng cach set bit i ghi SREG Vi Codevison, viờc c thc hiờn bng cõu lờnh: #asm (sei) 4.2 Ngt ngoai Ngt ngoai la cach rt hiờu qua thc hiờn giao tiờp gia ngi dựng va chip Trờn chip Atmega8 co ngt ngoai co tờn la INT0 va INT1 tng ng chõn sụ (PD2) va sụ (PD3) Vi ngt ngoai, co ghi liờn quan ờn ngt ngoai o la MCUCR, GICR va GIFR Cu thờ cac ghi c trinh bay bờn di Hỡnh 2.6 Kt ni ngt ngoi vi Atmega8 Thanh ghi MCUCR: La ghi la chn kiờu ngt ngoai INT õy, ta ch cõn quan tõm ờn bit ISC11, ISC10, ISC01, ISC00 Viờc tựy chn kiờu ngt c thờ hiờn bang sau: Bng 2.7 Kiu ngt ngoi cho Atmega8 ISCn1 ISCn0 Kiu bt mu 0 Mc thp se tao yờu cõu ngt D tr Thanh Canh xuụng ( Falling ) se tao yờu cõu ngt ghi GICR: La 1 Canh lờn ( Rising ) se tao yờu cõu ngt ghi bit nhng ch co bit cao (bit va bit 7) la c s dung cho iờu khiờn ngt, cu truc ghi nh bờn di Khi ta t bit INTx=1 tc la ta a cho phep ngt tng ng hoat ụng Thanh ghi c ngt chung - GIFR (General Interrupt Flag Register) co bit INTF1 va INTF0 la cac bit trang thai (hay bit c - Flag) cua ngt INT1 va INT0 Nờu co s kiờn ngt phự hp xay trờn chõn INT1, bit INTF1 c t ụng set bng (tng t cho trng hp cua INTF0), chung ta co thờ s dung cac bit nhõn cac ngt, nhiờn iờu la khụng cõn thiờt nờu chung ta cho phep ngt t ụng, vi võy ghi thng khụng c quan tõm lõp trinh ngt ngoai Cu truc ghi GIFR c trinh bay hinh bờn di Trờn õy la mụt sụ ghi liờn quan ờn qua trinh ngt ngoai Nh võy, th t xõy dng ngt ngoai c tiờn hanh nh sau: Cai t MCUCR Cho phep ngt nao bng GICR set bit i ghi SREG Truyờn thụng nụi tiờp USART 5.1 Gii thiờu Thuõt ng USART tiờng anh la viờt tt cua cum t: Universal Synchronous & Asynchronous serial Reveiver and Transmitter, nghia la bụ truyờn nhõn nụi tiờp ụng bụ va khụng ụng bụ Cõn chu y rng khai niờm USART (hay UART nờu ch noi ờn bụ truyờn nhõn khụng ụng bụ) thng ch thiờt bi phõn cng (device, hardware), khụng phai ch mụt chun giao tiờp USART hay UART cõn phai kờt hp vi mụt thiờt bi chuyờn ụi mc iờn ap tao mụt chun giao tiờp nao o Vi du, chun RS232 (hay COM) trờn cac may tinh ca nhõn la s kờt hp cua chip UART va chip chuyờn ụi mc iờn ap Tin hiờu t chip UART thng theo mc TTL: Mc logic cao la 5v, mc thp la 0v Trong o, tin hiờu theo chun RS232 trờn may tinh ca nhõn thng la -12v cho mc logic cao va +12v cho mc thp (tham khao hinh 2.7) Chu y la cac giai thich tai liờu theo mc logic TTL cua USART, khụng theo RS232 Hỡnh 2.7 Tớn hiu tng ng ca UART v RS232 Truyờn thụng nụi tiờp: Trong tuyờn thụng nụi tiờp d liờu c truyờn tng bit trờn (hoc mụt it) ng truyờn Vi ly nay, cho dự d liờu cua ta co ln ờn õu ta cung ch dựng rt it ng truyờn Hinh 2.8 mụ ta s so sanh gia cach truyờn song song va nụi tiờp viờc truyờn sụ 187 thõp phõn (tc 10111011 nhi phõn) Hỡnh 2.8 Truyn bit theo phng phỏp song song v ni tip Mụt han chờ rt dờ nhõn thy truyờn nụi tiờp so vi song song la tục ụ truyờn va ụ chinh xac cua d liờu truyờn va nhõn Vi d liờu cõn c chia nh tng bit truyờn/nhõn, tục ụ truyờn se bi giam Mt khac, am bao tinh chinh xac cua d liờu, bụ truyờn va bụ nhõn cõn co nhng tha hiờp hay nhng tiờu chun nht inh Phõn tiờp theo chng gii thiờu cac tiờu chun truyờn thụng nụi tiờp khụng ụng bụ Truyờn ng b: Khai niờm ụng bụ ch s bao trc qua trinh truyờn Ly vi du thiờt bi (tb1) kờt vi vi thiờt bi (tb2) bi ng, mụt ng d liờu va ng xung nhip C mi lõn tb1 muụn gi bit d liờu, tb1 iờu khiờn ng xung nhip chuyờn t mc thp lờn mc cao bao cho tb2 sn sang nhõn mụt bit Bng cach bao trc tt ca cac bit d liờu co thờ truyờn/nhõn dờ dang vi it rui ro qua trinh truyờn Tuy nhiờn, cach truyờn oi hi it nht ng truyờn cho qua trinh (send or receive) Giao tiờp gia may tinh va cac ban phim (tr ban phim kờt nụi theo chun USB) la mụt vi du cua cach truyờn thụng nụi tiờp ụng bụ Truyờn khụng ng b: Khac vi cach truyờn ụng bụ, truyờn thụng khụng ụng bụ ch cõn mụt ng truyờn cho mụt qua trinh Khung d liờu a c chun hoa bi cac thiờt bi nờn khụng cõn ng xung nhip bao trc d liờu ờn Vi du thiờt bi ang giao tiờp vi theo phng phap nay, chung a c tha thuõn vi rng c 1ms thi se co bit d liờu truyờn ờn, nh thờ thiờt bi nhõn ch cõn kiờm tra va c ng truyờn mi mili - giõy c cac bit d liờu va sau o kờt hp chung lai d liờu co y nghia Truyờn thụng nụi tiờp khụng ụng bụ vi thờ hiờu qua hn truyờn thụng ụng bụ (khụng cõn nhiờu lines truyờn) Tuy nhiờn, qua trinh truyờn cụng thi viờc tuõn thu cac tiờu chun truyờn la hờt sc quan trng Chung ta se bt õu tim hiờu cac khai niờm quan trng phng phap truyờn thụng Baud rate (tục Baud): Nh vi du trờn vờ viờc truyờn bit 1ms, ta thy rng viờc truyờn va nhõn khụng ụng bụ xay cụng thi cac thiờt bi tham gia phai thụng nht vờ khoang thi danh cho bit truyờn, hay noi cach khac tục ụ truyờn phai c cai t nh trc, tục ụ gi la tục ụ Baud Theo inh nghia, tục ụ Baud la sụ bit truyờn giõy Vi du nờu tục ụ Baud c t la 19200 thi thi gian danh cho bit truyờn la 1/19200 ~ 52.083us Frame (khung truyờn): Do truyờn thụng nụi tiờp ma nht la nụi tiờp khụng ụng bụ rt dờ mt hoc sai lờch d liờu, qua trinh truyờn thụng theo kiờu phai tuõn theo mụt sụ quy cach nht inh Bờn canh tục ụ Baud, khung truyờn la mụt yờu tục quan trng tao nờn s cụng truyờn va nhõn Khung truyờn bao gụm cac quy inh vờ sụ bit mi lõn truyờn, cac bit bao nh bit Start va bit Stop, cac bit kiờm tra nh Parity, ngoai sụ lng cac bit mụt data cung c quy inh bi khung truyờn Hinh 2.7 trờn la mụt vi du cua mụt khung truyờn theo UART, khung truyờn c bt õu bng mụt Start bit, tiờp theo la bit data, sau o la bit Parity dựng kiờm tra d liờu va cuụi cựng la bit Stop: Start bit: Start la bit õu tiờn c truyờn mụt khung truyờn, bit co chc nng bao cho thiờt bi nhõn biờt rng co mụt goi d liờu sp c truyờn ti modul USART AVR, ng truyờn luụn trang thai cao ngh (Idle), nờu mụt chip AVR muụn thc hiờn viờc truyờn d liờu no se gi mụt bit start bng cach keo ng truyờn xuụng mc Nh võy, vi AVR bit Start la mang gia tri va co gia tri iờn ap 0V (vi chun RS232 gia tri iờn ap cua bit Start la ngc lai) Start la bit bt buục phai co khung truyờn Data: Data hay d liờu cõn truyờn la thụng tin chinh ma chung ta cõn gi va nhõn Data khụng nht thiờt phai la goi bit, vi AVR ta co thờ quy inh sụ lng bit cua data la 5, 6, 7, hoc (tng t cho hõu hờt cac thiờt bi h tr UART khac) Trong truyờn thụng nụi tiờp UART, bit co anh hng nh nht (LSB Least Significant Bit, bit bờn phai) cua data se c truyờn trc va cuụi cựng la bit co anh hng ln nht (MSB Most Significant Bit, bit bờn trai) Parity bit: Parity la bit dựng kiờm tra d liờu truyờn ung khụng (mụt cach tng ụi) Co loai Parity la Parity chn (even parity) va Parity l (odd parity) Parity chn nghia la sụ lng sụ d liờu bao gụm bit parity luụn la sụ chn Ngc lai tụng sụ lng cac sụ Parity l luụn la sụ l Vi du, nờu d liờu cua ta la 10111011 nhi phõn, co tt ca sụ d liờu nay, nờu Parity chn c dựng, bit Parity se mang gia tri am bao tụng cac sụ la sụ chn (6 sụ 1) Nờu Parity l c yờu cõu thi gia tri cua Parity bit la Stop bit: Stop bit la mụt hoc cac bit bao cho thiờt bi nhõn rng mụt goi d liờu a c gi xong Sau nhõn c Stop bit, thiờt bi nhõn se tiờn hanh kiờm tra khung truyờn am bao tinh chinh xac cua d liờu Stop bit la cac bit bt buục xut hiờn khung truyờn, AVR USART co thờ la hoc bit 5.2 Truyờn thụng nụi tiờp khụng ng b vi AVR (UART) Vi iờu khiờn Atmega8 co modul truyờn thụng nụi tiờp USART Co chõn chinh liờn quan ờn modul o la chõn xung nhip - XCK (chõn sụ 1), chõn truyờn d liờu TXD (Transmitted Data) va chõn nhõn d liờu - RXD (Reveived Data) Trong o chõn XCK ch c s dung nh la chõn phat hoc nhõn xung gi nhip chờ ụ truyờn ụng bụ Tuy nhiờn, chung ta khụng khao sat chờ ụ truyờn thụng ụng bụ, vi thờ ta ch cõn quan tõm ờn chõn TXD va RXD Vi cac chõn truyờn/nhõn d liờu ch am nhiờm chc nng ục lõp (hoc la truyờn, hoc la nhõn), kờt nụi cac chip AVR vi (hoc kờt nụi AVR vi thiờt bi h tr UART khac) ta phai u cheo chõn TXD cua thiờt bi th nht kờt nụi vi RXD cua thiờt bi va ngc lai Modul USART trờn chip Atmega8 hoat ụng song cụng (Full Duplex Operation), nghia la qua trinh truyờn va nhõn d liờu co thờ xay ụng thi Cỏc ghi liờn quan UART: Thanh ghi UDR: Hay ghi d liờu, la ghi bit cha gia tri nhõn c va phat i cua USART Thc cht ghi co thờ coi nh ghi TXB (Transmit data Buffer) va RXB (Reveive data Buffer) co chung ia ch c UDR thu c gia tri ghi ờm d liờu nhõn, viờt gia tri vao UDR tng ng t gia tri vao ghi ờm phat, chun bi gi i Chu y cac khung truyờn s dung 5, hoc bit d liờu, cac bit cao cua ghi UDR se khụng c s dung Thanh ghi UCSRA: La ghi iờu khiờn hoat ụng cua modul USART Thanh ghi UCSRA chu yờu cha cac bit trang thai nh bit bao qua trinh nhõn kờt thuc (RXC), truyờn kờt thuc (TXC), bao ghi d liờu trụng (UDRE), khung truyờn co li (FE), d liờu tran (DOR), kiờm tra Parity co li (PE) UDRE (USART Data Register Empty): Khi bit bay bng nghia la ghi d liờu UDR ang trụng va sn sang cho mụt nhiờm vu truyờn hay nhõn tiờp theo Vi thờ nờu ta muụn truyờn d liờu õu tiờn ta phai kiờm tra xem bit UDRE co bng hay khụng, sau chc chn rng UDRE = hay viờt d liờu vao ghi UDR truyờn i U2X: La bit ch inh gp ụi tục ụ truyờn, bit c set lờn 1, tục ụ truyờn so cao gp lõn so vi bit mang gia tri MPCM: La bit chn chờ ụ hoat ụng a x li (multi-processor) Thanh ghi UCSRB (USART Control and Status Register B): õy la ghi quan trng iờu khiờn USART Vi thờ chung ta se khao sat chi tiờt tng bit cua ghi RXCIE (Receive Complete Interrupt Enable): La bit cho phep ngt qua trinh nhõn kờt thuc Viờc nhõn d liờu truyờn bng phng phap nụi tiờp khụng ụng bụ thng c thc hiờn thụng qua ngt, vi thờ bit thng c set bng USART c dung nhõn d liờu TXCIE (Transmit Complete Interrupt Enable): Bit cho phep ngt qua trinh truyờn kờt thuc UDRIE (USART Data Register Empty Interrupt Enable): La bit cho phep ngt ghi d liờu UDR trụng RXEN (Receiver Enable): La mụt bit quan trng iờu khiờn bụ nhõn cua USART, kich hoat chc nng nhõn d liờu ta phai set bit lờn TXEN (Transmitter Enable): La bit iờu khiờn bụ phat Set bit lờn ta se ụng bụ phat cua USART UCSZ2 (Chracter size): Bit kờt hp vi bit khac ghi UCSRC quy inh ụ dai cua d liờu truyờn/nhõn Chung ta se khao sat chi tiờt tim hiờu ghi UCSRC RXB8 (Receive Data Bit 8): La bit d liờu Ta nh lai rng USART AVR co h tr truyờn d liờu co ụ dai tụi a bit, ghi d liờu la ghi bit Do o, co goi d liờu bit c nhõn, bit õu se cha ghi UDR, cõn co bit khac ong vai tro bit th chin, RXD8 la bit th chin Ta chu y la cac bit c anh sụ t 0, vi thờ bit th chin se co ch sụ la 8, vi le o ma bit co tờn la RXD8 (khụng phai RXD9) TXB8 (Transmit Data Bit 8): Tng t nh bit RXD8, bit TXB8 cung ong vai tro bit th truyờn thụng, nhng bit c dựng luc truyờn d liờu Thanh ghi UCSRC (USART Control and Status Register C): Thanh ghi chu yờu quy inh khung truyờn va chờ ụ truyờn Tuy nhiờn, co mụt rc rụi nho nh la ghi lai co cựng ia ch vi ghi UBRRH (thanh ghi cha byte cao dựng xac lõp tục ụ Baud), noi mụt cach khac ghi la Vi thờ bit ghi nay, tc bit URSEL la bit chn ghi Khi URSEL=1, ghi c chip AVR hiờu la ghi iờu khiờn UCSRC, nhng nờu bit URSEL=0 thi ghi UBRRH se c s dung Cac bit lai ghi UCSRC c mụ ta nh sau: UMSEL (USART Mode Select) la bit la chn gia chờ ụ truyờn thụng ụng bụ va khụng ụng bụ Nờu UMSEL=0, chờ ụ khụng ụng bụ c chn, ngc lai nờu UMSEL=1, chờ ụ ụng bụ c kich hoat Hai bit UPM1 va UPM0 (Parity Mode) c dựng quy inh kiờm tra Pariry Nờu UPM1:0=00, Parity khụng c s dung (mode kha thụng dung), UPM1:0=01 khụng c s dung, UPM1:0=10 thi Parity chn c dựng, UPM1:0=11 Parity l c s dung (xem thờm bang 2.8) Bng 2.8 Chn kim tra Parity USBS (Stop bit Select), bit Stop khung truyờn bng AVR USART co thờ la hoc bit, nờu USBS=0 thi Stop bit ch la bit USBS=1 se co Stop bit c dựng Hai bit UCSZ1 va UCSZ0 (Character Size) kờt hp vi bit UCSZ2 ghi UCSRB tao bit quy inh ụ dai d liờu truyờn Bang 2.9 tom tt cac gia tri co thờ co cua tụ hp bit va ụ dai d liờu truyờn tng ng Bng 2.9 di d liu truyn UCPOL (Clock Pority) la bit ch cc cua xung kich chờ ụ truyờn thụng ụng bụ nờu UCPOL=0, d liờu se thay ụi thay ụi canh lờn cua xung nhip, nờu UCPOL=1, d liờu thay ụi canh xuụng xung nhip Nờu ta s dung chờ ụ truyờn thụng khụng ụng bụ, hay set bit bng Thanh ghi UBRRL va UBRRH (USART Baud Rate Register): Hai ghi thp va cao quy inh tục ụ Baud Nhc lai la ghi UBRRH dựng chung ia ch ghi UCSRC, ta phai set bit URSEL bng nờu muụn s dung ghi UBRRH Nh ta quan sat hinh trờn, ch co bit thp cua UBRRH c dựng, bit kờt hp vi bit ghi UBRRL tao thanh ghi 12 bit quy inh tục ụ Baud Chu y la nờu ta viờt gia tri vao ghi UBRRL, tục ụ Baud se tc thi c cõp nhõt, vi thờ ta phai viờt gia tri vao ghi UBRRH trc viờt vao ghi UBRRL Gia tri gan cho ghi UBRR khụng phai la tục ụ Baud, no ch c USART dựng tinh tục ụ Baud Bang 2.10 hng dn cach tinh tục ụ Baud da vao gia tri cua ghi UBRR va ngc lai, cach tinh gia tri cõn thiờt gan cho ghi UBRR a biờt tục ụ Baud Bng 2.10 Cỏch tớnh tc Baud Trong cac cụng thc bang 2.10, fOSC la tục tõn sụ xung nhip cua hờ thụng (thach anh hay nguụn xung nụi) Trong datasheet cua Atmega8 a co sn cac tục ụ Baud mu theo tng tõn sụ OSC Cỏch s dng UART Thụng thng, s dung modul USART trờn AVR ta phai thc hiờn viờc quan trng, o la: Cai t tục ụ Baud (thanh ghi UBRR), inh dang khung truyờn (UCSRB, UCSRC) va cuụi cựng kich hoat bụ truyờn, bụ nhõn, ngt Trong tai em chu yờu cõp ờn phng phap truyờn thụng khụng ụng bụ, viờc xac lõp cac thụng sụ hoat ụng chu yờu da trờn chờ ụ Trong hõu hờt cac ng dung, tục ụ Baud va khung truyờn thng khụng ụi, trng hp chung ta co thờ tao trc tiờp USART phõn õu main va sau o ch cõn truyờn hoc nhõn d liờu ma khụng cõn thay ụi cac cai t Tuy nhiờn, nờu trng hp giao tiờp linh hoat vi du ta ang chờ tao mụt thiờt bi co kha nng giao tiờp vi mụt thiờt bi õu cuụi khac (nh may tinh chng han), luc ta nờn cho phep ngi dựng thay ụi tục ụ Baud hoc cac thụng sụ khac phự hp vi thiờt bi õu cuụi ụi vi nhng ng dung kiờu ta nờn viờt chng trinh ụng USART va co thờ gi lai nhiờu lõn cõn thay ụi Lõp trinh bng Codevision thi viờc thiờt lõp cac thụng sụ UART ch cõn thc hiờn tựy chn CodeWinzarAVR, rụi sau o phõn mờm se t sinh oan code phuc vu modul c t õu chng trinh Mch dao ng va Reset AVR 6.1 Mch dao ng Bt kờ loai vi iờu khiờn nao cung cõn co mụt xung nhip hoat ụng Chip AVR Atmega8 co hai la chn nguụn xung nhip: Ly nguụn xung nhip t bụ dao ụng nụi vi tõn sụ 1Mhz, 2Mhz, 4Mhz, 8Mhz Ly nguụn xung t bụ tao dao ụng bờn ngoai (dao dụng RC, thach anh) Tõn sụ dao ụng ngoai ln nht ma chip co thờ ap ng c la 16Mhz vi Atmega8 va 8Mhz vi Atmega8L Viờc la chn tõn sụ cac nguụn xung nụi c thc hiờn bng cach thiờt lõp cho cac Fuse Bit CKSEL30 trờn phõn mờm nap Cu thờ nh bang sau: Bng 2.11 Chn xung nhp t b to dao ng ni RC s dung nguụn xung t bụ dao ụng ngoai (ch xet vi du bụ dao ụng thach anh) thi trc tiờn ta phai t cac Fuse Bit CKSEL3 0=1111 rụi sau o lp mach dao ụng nh hinh sau: Hỡnh 2.9 Mch dao ng ngoi bng thch anh 6.2 Mch Reset (RST) Trờn AVR co mụt chõn dựng tao tin hiờu RST chip t bờn ngoai Vi Atmega8 thi chõn RST la chõn (PC6) Chip se c reset tai chõn RST co mụt iờn ap mc thp t vao (0v) Hinh 2.10 la mụt mach reset n gian Hỡnh 2.10 Mch Reset AVR Chng 3: Mch nguyờn ly va phõn mờm I-Mch nguyờn ly II-Phõn mờm 1.o tục ụ va truyờn lờn may tinh #include #include unsigned long int result,s,count; unsigned char my_data[7], resolution=10; //////////////////////////////////////////////////////////////////////////// // Khoi tao chuong trinh void init(void) { TMOD=0x21; // Cho phep Timer0 hoat dong o che timer 16 bit //timer 8bit tu nap lai IE=0x83; // Cho phep ngat ngoai tu chan INT1, ngat boi Timer0 IP=0x10; // Cho phep ngat ngoai uu tien hon ngat TH0=-5000/256; // Tre =~ 0.005s TL0=-5000%256; SCON=0x50;//che bit du lieu,1 bit sart,1 bit stop TH1=0xFD;//set baut rate at 9600(11.0592Mhz) TL1=0xFD; TF0=1; //co bao tran timer TR0=1; //cho phep timer TR1=1; //cho phep timer IT0=1; //ngat suon am my_data[0]='@'; my_data[5]='#'; result = 0; // Gia tri khoi tao ban dau bang s=0; count=0; } //////////////////////////////////////////////////////////////////////////// void delay_ms(unsigned int ms) { unsigned int i; unsigned char j; for(i=ms;i>0;i ) for(j=115;j>0;j ); } //////////////////////////////////////////////////////////////////////////// // timer tao thoi gian chuan void time(void) interrupt { TR0=0; TF0=0; TH0=-5000/256; TL0=-5000%256; s++; TR0=1; } //////////////////////////////////////////////////////////////////////////// // Ham dem su dung ngat ngoai void ngatngoai0(void) interrupt { EA=0; // cam ngat count++; delay_ms(10); EA=1;// cho phep ngat tro lai } //////////////////////////////////////////////////////////////////////////// //gui du lieu qua cong COM void send_data(char uart_data) { TI=0; SBUF=uart_data; while(TI==0);//cho dang gui du lieu TI=0; } //////////////////////////////////////////////////////////////////////////// void send(void) { unsigned char i; for(i=0;i=200) { EA=0; result=count*60/resolution; s=0; count=0; my_data[1]=result/10000+0x30; my_data[2]=result%10000/1000+0x30; my_data[3]=result%10000%1000/100+0x30; my_data[4]=result%10000%1000%100/10+0x30; my_data[5]=result%10000%1000%100%10+0x30; send(); EA=1; } } } 2.Hiờn thi bng ụ thi trờn may tinh [...]... liờu va sau o kờt hp chung lai thanh d liờu co y nghia Truyờn thụng nụi tiờp khụng ụng bụ vi thờ hiờu qua hn truyờn thụng ụng bụ (khụng cõn nhiờu lines truyờn) Tuy nhiờn, ờ qua trinh truyờn thanh cụng thi viờc tuõn thu cac tiờu chun truyờn la hờt sc quan trng Chung ta se bt õu tim hiờu cac khai niờm quan trng trong phng phap truyờn thụng nay Baud rate (tục Baud): Nh trong vi du trờn vờ viờc truyờn... ghi quan trng iờu khiờn USART Vi thờ chung ta se khao sat chi tiờt tng bit cua thanh ghi nay RXCIE (Receive Complete Interrupt Enable): La bit cho phep ngt khi qua trinh nhõn kờt thuc Viờc nhõn d liờu truyờn bng phng phap nụi tiờp khụng ụng bụ thng c thc hiờn thụng qua ngt, vi thờ bit nay thng c set bng 1 khi USART c dung nhõn d liờu TXCIE (Transmit Complete Interrupt Enable): Bit cho phep ngt khi qua. .. nhiờm vu trong isr, bụ ờm chng trinh se c tra vờ gia tri trc o ờ bụ x li quay vờ thc hiờn tiờp cac nhiờm vu con dang d Nh võy, ngt co mc ụ u tiờn x li cao nht, ngt thng c dựng ờ x li cac s kiờn bt ng nhng khụng tụn qua nhiờu thi gian Cac tin hiờu dn ờn ngt co thờ xut phat t cac thiờt bi bờn trong chip (ngt bao bụ ờm T/C tran, ngt bao qua trinh gi d liờu bng RS232 kờt thuc) hay do cac tac nhõn bờn ngoai... ngoai la cach rt hiờu qua ờ thc hiờn giao tiờp gia ngi dựng va chip Trờn chip Atmega8 co 2 ngt ngoai co tờn la INT0 va INT1 tng ng 2 chõn sụ 4 (PD2) va sụ 5 (PD3) Vi ngt ngoai, co 3 thanh ghi liờn quan ờn ngt ngoai o la MCUCR, GICR va GIFR Cu thờ cac thanh ghi c trinh bay bờn di Hỡnh 2.6 Kt ni ngt ngoi vi Atmega8 Thanh ghi MCUCR: La thanh ghi la chn kiờu ngt ngoai INT õy, ta ch cõn quan tõm ờn 4 bit... cac bit nay ờ nhõn ra cac ngt, tuy nhiờn iờu nay la khụng cõn thiờt nờu chung ta cho phep ngt t ụng, vi võy thanh ghi nay thng khụng c quan tõm khi lõp trinh ngt ngoai Cu truc thanh ghi GIFR c trinh bay trong hinh ngay bờn di Trờn õy la mụt sụ thanh ghi liờn quan ờn qua trinh ngt ngoai Nh võy, th t ờ xõy dng ngt ngoai c tiờn hanh nh sau: Cai t MCUCR Cho phep ngt nao bng GICR set bit i trong thanh ghi... trong qua trinh truyờn Ly vi du thiờt bi 1 (tb1) kờt vi vi thiờt bi 2 (tb2) bi 2 ng, mụt ng d liờu va 1 ng xung nhip C mi lõn tb1 muụn gi 1 bit d liờu, tb1 iờu khiờn ng xung nhip chuyờn t mc thp lờn mc cao bao cho tb2 sn sang nhõn mụt bit Bng cach bao trc nay tt ca cac bit d liờu co thờ truyờn/nhõn dờ dang vi it rui ro trong qua trinh truyờn Tuy nhiờn, cach truyờn nay oi hi it nht 2 ng truyờn cho 1 qua. .. nhận 1 ký tự,RI đợc xoá bằng phần mềm Trớc khi sử dụng cổng nối tiếp, phải khởi động thanh ghi SCON để chọn chế độ 2.Trao đổi dữ liệu qua Port nối tiếp Thao tác trao đổi dữ liệu qua port nối tiếp không đơn thuần chỉ là việc ghi/đọc dữ liệu nh trao đổi dữ liệu trực tiếp qua các port(chẳng hạn P1, P2,4 ) mà nó bao gồm 3 thao tác cính nh sau: - Khởi tạo cổng nối tiếp: Thao tác này bao gồm các việc nh sau:... sụ 0 (bit õu tiờn) trong thanh ghi nay la liờn quan ờn T/C0, bit nay co tờn la bit cho phep ngt khi co tran T/C0 Thanh ghi TIFR: La thanh ghi c nh cho tt ca cac bụ T/C Trong thanh ghi nay bit sụ 0, TOV0 la c ch thi ngt tran cua T/C0 Khi co ngt tran xay ra, bit nay t ụng c set lờn 1 Thụng thng trong iờu khiờn cac T/C vai tro cua thanh ghi TIFR khụng qua quan trng 3.2 Timer/counter 1 (T/C1) T/C1 la bụ... UPM1:0=01 khụng c s dung, UPM1:0=10 thi Parity chn c dựng, UPM1:0=11 Parity l c s dung (xem thờm bang 2.8) Bng 2.8 Chn kim tra Parity USBS (Stop bit Select), bit Stop trong khung truyờn bng AVR USART co thờ la 1 hoc 2 bit, nờu USBS=0 thi Stop bit ch la 1 bit trong khi USBS=1 se co 2 Stop bit c dựng Hai bit UCSZ1 va UCSZ0 (Character Size) kờt hp vi bit UCSZ2 trong thanh ghi UCSRB tao thanh 3 bit quy... truyờn thụng nụi tiờp USART Co 3 chõn chinh liờn quan ờn modul nay o la chõn xung nhip - XCK (chõn sụ 1), chõn truyờn d liờu TXD (Transmitted Data) va chõn nhõn d liờu - RXD (Reveived Data) Trong o chõn XCK ch c s dung nh la chõn phat hoc nhõn xung gi nhip trong chờ ụ truyờn ụng bụ Tuy nhiờn, chung ta khụng khao sat chờ ụ truyờn thụng ụng bụ, vi thờ ta ch cõn quan tõm ờn 2 chõn TXD va RXD Vi cac chõn truyờn/nhõn