PDA

View Full Version : Làm sao hiển thị số thập phân ra LED 7 đoạn?


delux
06-10-2008, 01:33 PM
Như chúng ta đã biết PIC16 ko hỗ trợ lệnh nhân và chia như 8951,do đó ko thể sd phương pháp chia lấy nguyên và lấy dư được.
Điều đó dẫn đến khó khăn cho việc hiển thị ra LED 7 đoạn của 1 số thập phân có 2 chữ số trở lên...

Vậy sư huynh nào đã nghiên cứu qua ,làm ơn gợi ý cho em với (pp đơn giản, dễ hiểu nhất)
Đang làm đề tài,tới đây thì bí....

Many thanks

namqn
06-10-2008, 06:39 PM
Như chúng ta đã biết PIC16 ko hỗ trợ lệnh nhân và chia như 8951,do đó ko thể sd phương pháp chia lấy nguyên và lấy dư được.
Điều đó dẫn đến khó khăn cho việc hiển thị ra LED 7 đoạn của 1 số thập phân có 2 chữ số trở lên...

Vậy sư huynh nào đã nghiên cứu qua ,làm ơn gợi ý cho em với (pp đơn giản, dễ hiểu nhất)
Đang làm đề tài,tới đây thì bí....

Many thanks
Tùy thuộc vào ngôn ngữ lập trình mà bạn đang dùng, sẽ có cách hiện thực yêu cầu của bạn khác nhau. Theo như bạn mô tả, tôi đoán là bạn đang dùng hợp ngữ, vì các ngôn ngữ lập trình cấp cao cho PIC đều hiện thực những phép toán mà bạn đã nêu.

Với hợp ngữ, piclist có một thư viện các hàm toán học đã được cộng đồng xây dựng sẵn, link ở đây: http://www.piclist.com/techref/microchip/math/basic.htm. Tùy theo yêu cầu cụ thể của bạn mà bộ thư viện này có thể được vận dụng một cách thích hợp.

Thân,

vinhteo
06-10-2008, 06:42 PM
ban cu dung con 7447 la co the goi truc tiep so thap phan ra led 7 doan ma ko can nhan chia gi het! ok.

delux
07-10-2008, 09:27 AM
ban cu dung con 7447 la co the goi truc tiep so thap phan ra led 7 doan ma ko can nhan chia gi het! ok.

Bạn nhầm rồi.
Con IC 7447 là IC chuyển từ mã BCD ra mã hex của LED 7 đoạn chừ ko phải chuyền trực tiếp từ mả hex (or decimal) của thanh ghi (or data) ra LED 7 đoạn
Do đó muốn sd IC 7447 bạn phải có thao tác chuyển mã hex của thanh ghi (data đầu vào) sang mã BCD.Muốn vậy cũng phải thực hiện phép chia nguyên và chia dư....
Thực chất của IC 7447 là một chương trình thay thế cho việc tra bảng thôi....
Bạn hiểu ý mình chứ?

Nhưng dù sao cũng cảm ơn bạn đã đưa ra 1 hướng giải quyết

Many thanks

delux
07-10-2008, 09:47 AM
Tùy thuộc vào ngôn ngữ lập trình mà bạn đang dùng, sẽ có cách hiện thực yêu cầu của bạn khác nhau. Theo như bạn mô tả, tôi đoán là bạn đang dùng hợp ngữ, vì các ngôn ngữ lập trình cấp cao cho PIC đều hiện thực những phép toán mà bạn đã nêu.

Với hợp ngữ, piclist có một thư viện các hàm toán học đã được cộng đồng xây dựng sẵn, link ở đây: http://www.piclist.com/techref/microchip/math/basic.htm. Tùy theo yêu cầu cụ thể của bạn mà bộ thư viện này có thể được vận dụng một cách thích hợp.

Thân,

Anh Nam có thể giúp đở e nhiều hơn được ko?
Thanks so much

picpen
07-10-2008, 01:51 PM
Mình đã làm cái này rùi ! lúc đầu tưởng rễ nhưng loay hoay mãi mới song
Tuy nhiên để giả quyết bài toán này mình phải dùng ngôn ngữ C để lập trình ( CCS )
Với hợp ngữ thì sẽ khó hơn nhiều và mình cũng chưa viết được bằng hợp ngữ
Nếu bạn dùng C thì PM cho mình .ok

delux
07-10-2008, 02:50 PM
Mình viết bằng hợp ngữ : ASM trong MPLAB

Xin mọi người giúp đỡ !

delux
07-10-2008, 06:31 PM
Haha...
Cảm ơn anh Nam,cảm ơn mọi người...
Tôi đã làm được rồi....Viết bằng ASM...
Yeaahhh.....

namqn
07-10-2008, 06:56 PM
Haha...
Cảm ơn anh Nam,cảm ơn mọi người...
Tôi đã làm được rồi....Viết bằng ASM...
Yeaahhh.....
Sẽ tốt hơn nữa nếu bạn chia sẻ những gì đã học hỏi được với cộng đồng.

Thân,

love_ac
07-10-2008, 08:56 PM
Thực ra bạn có thể chia sẻ cho các bạn đi sau thì hay.Việc hiển thị ra led7 thanh chỉ chú ý ba đặc điểm:(sử dụng kiểu tra bảng)
-Thanh ghi PC(program counter)
-Lệnh addwf để add giá trị w-register đến PC
-Lện retlw giúp trả về giá trị mã (số hiển thị ra led)
ví dụ :
nhanma:
addwf PC,f; cong gia tri w vao pc
retlw 0x2f; code cho so 0
...
retlw 0x5f; code cho so 9
và khi nhận mã thì
movlw 0x03; muon xuat ra led7 so 4
call nhanma
movwf portd ;dua ra post[p]
mã trên chỉ là mình ví dụ thôi nhé

stargreen1001
17-11-2009, 10:44 PM
hic, mình cũng đang gặp vấn đề này, mình làm hiển thị ra 5 led 7 đoạn, giá trị được lấy từ timer1 trong hai thanh ghi tmr1l va tmr1h, có vẻ như rất dài, mình viết bằng asm

special_one
18-11-2009, 10:22 PM
Mình đã làm cái này rùi ! lúc đầu tưởng rễ nhưng loay hoay mãi mới song
Tuy nhiên để giả quyết bài toán này mình phải dùng ngôn ngữ C để lập trình ( CCS )
Với hợp ngữ thì sẽ khó hơn nhiều và mình cũng chưa viết được bằng hợp ngữ
Nếu bạn dùng C thì PM cho mình .ok
chào bạn!minh cũng mới chuyển wa pic nên còn hơi gà.bn co thể gửi cho minh vài ví dụ xuất led7 đoạn k, cảm ơn bạn trước ah dùng CCS nha!