P. 1
LED 7 thanh

LED 7 thanh

|Views: 1,360|Likes:
Được xuất bản bởisytan001

More info:

Published by: sytan001 on Mar 26, 2011
Bản quyền:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

04/21/2013

pdf

text

original

Hướng dẫn lập trình hiển thị LED 7 thanh

Nhóm 18 – Giảng đường 205

Nghiêm Minh Sơn Nguyễn Tùng Sơn Phạm Anh Tài Trần Văn Tam Hoàng Sỹ Tân

1 Hoàng Sỹ Tân

tín hiệu vào chân a là 1 thì chân a tắt. Bây giờ ta tìm hiểu cách hiển thị lên LED 7 thanh.f.ta thêm số 1 vào đầu mã cơ số 2): 2 Hoàng Sỹ Tân . chú ý đây là led Anot.d là sáng. Vậy trong thực tế thì led 7 thanh có 10 chân.b. nên điều khiển nó ta dùng 7 chân điều khiển tín hiệu. Đó cũng chính là giá trị trở gắn vào LED đơn trong bt LED đơn.c. nghĩa là khi cấp nguồn cho nó vào chân VCC. hiệu điện thế khoảng 1. Mỗi thanh led có dòng qua nó phù hợp là 10-20mA. Giả sử ta muốn hiện số 5.g . 1 chân nguồn cho nó là 8 chân. Theo cách hiểu đó.d.f. tránh bị cháy. sau này sẽ thuận lợi hơn trong việc lập trình để đo nhiệt độ trong bài lập trình dành cho ADC. led 7 thanh có 1 dấu chấm gần thanh c và d .Ở bài này mình giới thiệu với các bạn cách lập trình để hiển thị LED 7 thanh .5V. và cùng nó nữa là 1 chân điều khiển nữa. Đồng thời led 7 thanh thực có 2 chân nguồn.g. ta đặt tên cho các thanh của nó là a.e. nghĩa là các chân này có tín hiệu là 0.c. ta gọi là chấm h . do đó ta phải gắn vào VCC một điện trở khoảng 330 Ôm để giảm dòng qua LED. thì nếu tín hiệu vào chân a là 0 thì chân a sáng. mà với mức 0 và 1 của VĐK tương ứng với 0V và 5V DC. thì cần thanh a. và các chân kia là 1. Trong thực tế. ta lập được bảng sau(do không có chân giờ nên mặc định ta cho chân h=1 để nó không sáng . 1> Cấu trúc LED 7 thanh trong proteus và cách hiển thị: Xem ở hình trên.

ta khai báo mảng như sau: Int16 led_7_thanh[]={0xc0.0x92.0xb0. ví dụ như sau: 3 Hoàng Sỹ Tân .0xa4.0x80.0x99.0xf8.0x82.Số 1 2 3 4 5 6 7 8 9 0 a 1 0 0 1 0 0 0 0 0 0 b 0 0 0 0 1 1 0 0 0 0 c 0 1 0 0 0 0 0 0 0 0 d 1 0 0 1 0 0 1 0 0 0 e 1 0 1 1 1 0 1 0 1 0 f 1 1 1 0 0 0 1 0 0 0 g 1 0 0 0 0 0 1 0 0 1 Mã Cơ số 2 11111001 10100100 10110000 10011001 10010010 10000010 11111000 10000000 10010000 11000000 Cơ số 16 0xF9 0xA4 0xB0 0x99 0x92 0x82 0xF8 0x80 0x90 0xC0 Vậy ta có 1 mảng số 16 bit dùng hiển thị LED 7 thanh. //Số trong dãy số: 0 1 2 3 4 5 6 7 8 9 2> Mạch LED 7 thanh dùng proteus: Ta có thể vẽ mạch như sau.0xf9.0x90}. các bạn có thể chọn chân nối vào led 7 thanh tùy thích.

0x92. đầu VCC của led 7 thanh mình nối trở 220 .0xb0.330 Ôm rồi mới nối với nguồn.ở đây mình nối PORTB với 7 chân của led 7 thanh. Void main() { 4 Hoàng Sỹ Tân 0 1 2 3 4 5 6 7 8 9 .0x80.0xa4.j=0. nhưng các bạn khi làm mạch thật phải nhớ thêm điện trở vào nhé! 3> Lập trình: Do sử dụng PICC để lập trình cho PIC.0xf8.0x82. nên ta có thể lập trình code như sau: #use delay(clock=20000000) Int16 led_7_thanh[]={0xc0.0xf9.0x99.0x90}. để thuận tiện trong việc mô phỏng cho nhanh thì những bài sau mình sẽ không dùng điện trở hạn dòng nữa. //Số trong dãy số: Int i=0.

// hiển thị số thứ i trong mảng trên I++. If(i>9) i=0. Delay_ms(500).hex và nạp vào PIC. ta sẽ có mạch đếm từ 0-9 hiển thị led 7 thanh: 5 Hoàng Sỹ Tân . // đặt PORTB là output hết Output_b(led_7_thanh[i]). xuất file .While(1) // chương trình luôn chạy lặp lại { Set_tris_b(0xFF). } } Sử dụng đoạn code trên để lập trình.

Do đó chúng ta cần kĩ thuật quét LED. trong khi đó VĐK chỉ có 32 chân điều khiển. nếu có nhiều hơn LED 7 thanh sẽ không thể đủ chân được. Để điều khiển được chúng thì cần 14 chân của VĐK. nếu chúng ta có 2 con LED 7 thanh. sơ đồ nguyên lí như sau: 6 Hoàng Sỹ Tân . Khi đó.4> Kỹ thuật quét LED: Như đã biết.

Kỹ thuật quét LED như sau: Cho đầu ra của PIN_C0 và PIN_C1 bằng 0 . Tắt LED 1 bằng cách đặt PIN_C0 xuống mức 0. còn 7 chân kia nối tiếp vào PortB . chỉ cần nối chân nguồn của led 7 thanh vào tiếp chân Pin_C2. khi đó LED đầu sáng. thì chỉ mất 10 chân trong khi theo cách cũ là tốn 21 chân. Như vậy. khi đó Transistor thông. ta làm tương tự. theo sơ đồ này ta mất 9 chân của VĐK. khi đó LED sau sáng. khi đó Transistor thông. để tắt nguồn của LED.- Nối 7 chân của PORTB vào 2 LED 7 thanh Chân điều khiển nguồn của LED 7 thanh là các chân PIN_C0 và PIN_C1 được nối vào cực B của Transistor. Xuất số 4 ra PORTB. Lặp quá trình với một số lần nhất định. sao cho thời gian hiển thị LED này sáng đến LED kia sáng không quá lâu để mắt có thể nhìn thấy 2 LED sáng gần như 7 Hoàng Sỹ Tân . Xuất số 3 ra PORTB. cấp nguồn cho LED hàng chục. lợi hơn rất nhiều. Giả sử có 3 LED 7 thanh. Giả sử ta cần hiển thị số 34 ra 2 LED này. Tắt LED 2 bằng cách đặt PIN_C1 xuống mức 0. có tác dụng đóng ngắt nguồn cho LED 7 thanh. cấp nguồn cho LED hàng đơn vị. Đặt PIN_C1 lên 1. Đặt PIN_C0 lên 1.

Set_tris_c(0xA0). Từ việc tính toán thời gian phù hợp ta sẽ có kết quả đúng như ý muốn. //Số trong dãy số: Void main() { Int i=0. While(1) { For(i=0.delay_ms(10). // led 1 sang Output_low(PIN_C0).0x99.0xf9.đồng thời. //tat led 1 Output_high(PIN_C1). output_b(led_7_thanh[4]).0x82. Có nghĩa là mỗi LED phải nháy >24 lần/giây thì mới đạt điều kiện. Output_low(PIN_C1). Ví dụ code hiển thị số 34 như sau: #use delay(clock=20000000) Int16 led_7_thanh[]={0xc0.//tat led 2 } } } 0 1 2 3 4 5 6 7 8 9 8 Hoàng Sỹ Tân .0xb0.i<10.i++) { Output_low(PIN_C0). Set_tris_b(0xFF). output_b(led_7_thanh[3]).0xa4.delay_ms(10). //tat 2 led Output_high(PIN_C0).0xf8.0x90}. //led 2 sang Output_low(PIN_C1).0x80.0x92.

khi đó nếu ta thay 2 LED 7 thanh đó bằng 1 linh kiện có 2 LED 7 thanh như sau thì sẽ khắc phục được hiện tượng trên. ví dụ như là đếm từ 0 đến 99. Đây là hình mình làm khi kết hợp nhiệt độ. Từ đó các bạn có thể làm thêm bt về quét LED. 9 Hoàng Sỹ Tân .ở đây mình chưa sử dụng kỹ thuật quét LED: Nếu sử dụng 2 led 7 thanh như trên để quét LED thì có xảy ra việc LED bị nháy. có thể kết hợp nút bấm. mỗi lần bấm nút là số sẽ tăng hoặc giảm 1… Sau khi thành thạo kỹ thuật này.Qua bài này sẽ giúp bạn hiển thị được 2 số theo ý muốn. chúng ta kết hợp thêm ADC như là nhiệt độ để hiển thị ra.

Mọi người cố gắng nhé! 10 Hoàng Sỹ Tân . cách sử dụng LCD không liên quan tới bài tập lớn nên nếu tìm hiểu LCD sẽ mất thời gian hơn. hoặc là 1 bt làm thêm cho giai đoạn 1.Mình hi vọng các bạn sẽ thực hành sớm bài này để tuần sau chúng ta có thể làm với ADC được nhanh hơn. Sở dĩ mình giới thiệu cách này vì hầu hết các bài hiển thị nhiệt độ trên mạng đều hiển thị lên LCD.

You're Reading a Free Preview

Tải về
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->