![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Nov 2010
Bài gửi: 23
: |
hỏi về quét 2 led 7 thanh
các anh ơi giúp em doạn code này với
em định cho 2 led đếm từ 00 đến 99 không dùng ngắt mà dùng delay nhưng khi chạy mô phỏng thì chỉ thấy nó nhấp nháy vài thanh của led thôi các anh kiểm tra code giúp em với em cam ơn #include <16F877A.h> #Fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(c) #use fast_io(d) int8 font[10]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; void main () { unsigned int8 i; set_tris_c(0); set_tris_d(0); output_d(0xff); while(1) { for(i=0;i<=100;i++); { output_d(0xfe); output_c(font[i/10]); delay_ms(50); output_d(0xfd); output_c(font[i%10]); delay_ms(50); } } } |
![]() |
![]() |
![]() |
#2 | |
Đệ tử 7 túi
Tham gia ngày: May 2005
Bài gửi: 258
: |
Trích:
for(i=0;i<=100;i++); bỏ dấu chấm phẩy đi tạo thêm vòng lặp nữa để đếm chậm lại. thay 2con tranzitor bằng cổng đảo. Code:
#include <16F877A.h> #Fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use delay(clock=20000000) #use fast_io(c) #use fast_io(d) const unsigned char font[]= {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; int8 i,a; void main () { set_tris_c(0); set_tris_d(0); output_d(0x00); while(1) { for(i=0;i<=100;i++) { for(a=0;a<=100;a++) { output_d(0xfe); output_c(font[i/10]); delay_ms(1); output_c(0xff); output_d(0xfd); output_c(font[i%10]); delay_ms(1); output_c(0xff); } } } }
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề. thay đổi nội dung bởi: tdm, 25-04-2011 lúc 03:31 PM. |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 5 túi
Tham gia ngày: Dec 2008
Nơi Cư Ngụ: Hà Nội
Bài gửi: 91
: |
Về chương trình bạn sửa như bác tdm đã chỉ giáo.
Còn về phần Mạch nguyên lý thì bạn dùng transitor hay cổng đảo cũng được, có điều bạn phải chú ý mã hóa kẻo bị đảo mã, nhưng theo mình bạn nên dùng transitor, như thế sau này sẽ dễ mở rộng cho những dự án cần dòng lớn hơn. Đồng thời bạn nên thêm trở hạn dòng vào các thanh cho LED. |
![]() |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Oct 2012
Bài gửi: 1
: |
các bác cho e hỏi thăm. e lập trình cho 16f877a quét led 7 đoạn giảm dần nhưng khi về đến 00 thì nó đứng yên số 1. bác xem thử code em sai chỗ nào. e mới học nghề thôi. em ko biết gửi mô phỏng lên như thế nào. các bác thông cảm. cám ơn nhiều
code: #include <16f877a.h> #use delay(clock=4000000) #Fuses NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT #use fast_io(d) #byte portd=0x08 #use fast_io(c) #byte portc=0x07 int8 i,j,k,m; Int8 bm[10]={0b00111111,0b00000110,0b01011011, 0b01001111,0b01100110,0b01101101,0b01111101, 0b00000111,0b01111111,0b01101111}; void main() { set_tris_d(0); Set_tris_c(0); while(1) { for(m=10;m>=0;m--) { for(k=0;k<=50;k++) { output_d(0b00000010); Output_c(bm[m/10]); delay_ms(40); output_c(bm[0]); output_d(0b00000001); Output_c(bm[m%10]); delay_ms(40); output_c(bm[0]) } } } } |
![]() |
![]() |
![]() |
#5 |
Nhập môn đệ tử
Tham gia ngày: Sep 2011
Bài gửi: 10
: |
mình có làm 1 cái đếm từ 0000>>9999 bạn xem thử được không
#include <16f877a.h> //#include< def_877a.h> #fuses hs,nolvp,nowdt,put #use delay(clock=20000000) #use fast_io(B) #use fast_io(C) int16 gian,i,j,dem,nghin,tram,chuc,dv; unsigned char MA7DOAN[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07,0x7F,0x6F}; void main () { set_tris_b(0x00); set_tris_c(0x00); while (1) { for(dem=0;dem<=9999;dem++) { gian=dem; nghin=dem/1000; dem=dem%1000; tram=dem/100; dem=dem%100; chuc=dem/10; dv=dem%10; for(j=0;j<=100;j++) { output_c(0xbf); output_b(MA7DOAN[dv]); delay_us(1000); output_c(0xdf); output_b(MA7DOAN[chuc]); delay_us(1000); output_c(0xef); output_b(MA7DOAN[tram]); delay_us(1000); output_c(0Xf7); output_b(MA7DOAN[nghin]); delay_us(1000); } dem=gian; } } } |
![]() |
![]() |
![]() |
#6 | |
Làm quen với PIC
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: Hcm
Bài gửi: 160
: |
Trích:
{ for(m=10;m>=0;m--) { bạn sửa thử là for(m=10;m=0;m--) hoặc for(m=10;m<1;m--) xem sao nha . |
|
![]() |
![]() |
![]() |
#7 |
Đệ tử 1 túi
Tham gia ngày: Feb 2011
Bài gửi: 16
: |
cai nayf co bac nao dung ngat timer khong post len xem
__________________
Nguyễn Văn Cương email :cuongadn90@gmail.com cuongadn90@yahoo.com.vn sdt 0973700862 |
![]() |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|