PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   MPASM (http://www.picvietnam.com/forum/forumdisplay.php?f=34)
-   -   Vấn đề về quét led 7 thanh (http://www.picvietnam.com/forum/showthread.php?t=6033)

telbook 29-03-2010 04:54 PM

Vấn đề về quét led 7 thanh
 
Em viết code để quét led 7 thanh đôi trong MPLAB IDE đã thành công, sử dụng PIC6F877a
KHi chuyển sang mô phỏng
Dùng 7 cổng portD để điều khiển các chân dữ liệu của led 7 thanh đôi chung anot
dùng portB chân RB4 và 5 nối qua trans để bật tắt led.
. Nếu em nối chỉ điều khiển 1 led 7 thanh thì kết quả đúng nhưng cứ nối để điều khiển 2 led 7 thanh thì lai k sáng.
Ai chỉ bảo giúp với

DSP 15-05-2010 10:09 PM

Trích:

Nguyên văn bởi telbook (Post 34556)
Em viết code để quét led 7 thanh đôi trong MPLAB IDE đã thành công, sử dụng PIC6F877a
KHi chuyển sang mô phỏng
Dùng 7 cổng portD để điều khiển các chân dữ liệu của led 7 thanh đôi chung anot
dùng portB chân RB4 và 5 nối qua trans để bật tắt led.
. Nếu em nối chỉ điều khiển 1 led 7 thanh thì kết quả đúng nhưng cứ nối để điều khiển 2 led 7 thanh thì lai k sáng.
Ai chỉ bảo giúp với

bạn post code lên mọi ng sẽ đóng góp cho.:D

thuc101 15-05-2010 10:54 PM

thu coi main cua minh nhu the nay nha con khai bao khuc trên ban tự viết đc chứ
minh hiển thi so 135 nè nối 7 chân led vào portd nhé con nguồn nối porte nhé
main()
{set_tris_d(0);
se_tris_e(0);
int8 x,y;
int8 led[10]=
{11000000,11111001,10100100,10110000,10010010,1000 0010,11111000,10000000,10010000}
x=135;
y=x%100;
while(true)
{
portd=led[a];
porte=1;
delay_ms(10);
portd=led[b];
porte=2;
delay_ms(10);
portd=led[c];
porte=4;
delay_ms(10);
}
}

trongtuan_1109 27-05-2010 10:21 AM

Trích:

Nguyên văn bởi thuc101 (Post 36045)
thu coi main cua minh nhu the nay nha con khai bao khuc trên ban tự viết đc chứ
minh hiển thi so 135 nè nối 7 chân led vào portd nhé con nguồn nối porte nhé
main()
{set_tris_d(0);
se_tris_e(0);
int8 x,y;
int8 led[10]=
{11000000,11111001,10100100,10110000,10010010,1000 0010,11111000,10000000,10010000}
x=135;
y=x%100;
while(true)
{
portd=led[a];
porte=1;
delay_ms(10);
portd=led[b];
porte=2;
delay_ms(10);
portd=led[c];
porte=4;
delay_ms(10);
}
}

Bạn có code Assembler up lên cho mình tham khảo với

huuquynh08 21-07-2010 12:08 AM

dem 00-99 va 99-00 dung 4 led
 
1 Attachment(s)
xem thu .nho thanks

unisa 01-09-2010 10:17 PM

Trích:

Nguyên văn bởi telbook (Post 34556)
Em viết code để quét led 7 thanh đôi trong MPLAB IDE đã thành công, sử dụng PIC6F877a
KHi chuyển sang mô phỏng
Dùng 7 cổng portD để điều khiển các chân dữ liệu của led 7 thanh đôi chung anot
dùng portB chân RB4 và 5 nối qua trans để bật tắt led.
. Nếu em nối chỉ điều khiển 1 led 7 thanh thì kết quả đúng nhưng cứ nối để điều khiển 2 led 7 thanh thì lai k sáng.
Ai chỉ bảo giúp với

mình đã làm ok quét led 7 đoạn bằng asm, mình cũng bị như bạn và khắc phục ok, nhưng bạn phải post code bạn lên mình mới chỉ chỗ sai cho bạn thấy đc :confused:

phamtrongvn 01-10-2010 08:32 PM

Em có đoạn code này, không biết nó sai ở đâu?
 
Em viết xong, và thử mô phỏng nó thì nó chạy lung tung hết, mọi người xem hộ nó sai ở đâu cái. em muốn sử dụng phương pháp quét led đẻ đỡ tốn chân

// viet chuong trinh cho led 7 doan hien thi tu 00 - 99 dieu khien bang RC0 va RC1 noi PORTB.
#include <16F877A.h>
#include <def_16f877a.h>
#bit RC0 = 0x07.0
#bit RC1 = 0x07.1
#use delay(clock=20000000)
const char ma7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};
char giaima (char x)
{
char y;
y = ma7seg[x];
return (y);
}
void hienthi(char chuc,dv)
{
PORTB=chuc; //hien thi hang chuc
RC1=1; //chon led hang chuc
delay_ms(10); //thoi gian tre
PORTB=dv; //hien thi hang don vi
RC0=1;
delay_ms(10);
}
void main()
{
char i=0; //khai bao bien dem
char chuc=0;
char dv=0;
char chuc7s;
char dv7s;
int j=0;
// khai bao PORTB va RC0 va RC1 la dau ra
TRISB=0;
TRISC0=0;
TRISC1=0;
while (true)
{
while (i<=99)
{
for (j=0;j<=99;j++)
{
chuc = i/10;
dv = i%10;
chuc7s = giaima(chuc);
dv7s = giaima(dv);
hienthi(chuc7s,dv7s );
}
j=0;
i++;
}
}
}


Các bác sửa giúp em với . nếu được thì mô phỏng luôn giúp em
Thanks!

theanh826 04-10-2010 05:05 PM

led 7 thanh
 
#include <16F877a.h>
//#device ADC=10
//#include <math.h>
//#include <string.h>
//#include <stdlib.h>
#define LED1 PIN_B4 //HANG NGHIN
#define LED2 PIN_B5 //HANG TRAM
#define LED3 PIN_B6 //HANG CHUC
#define LED4 PIN_B7 //HANG DON VI
#fuses hs, nowdt, put, nolvp, brownout
#use delay(clock=20000000)
int16 a,b,i,j,dv,chuc,tram,nghin,n;
void led7()
{
nghin=a/1000;
a=a%1000;
tram=a/100;
a=a%100;
chuc=a/10;
dv=a%10;
output_b(dv|0b10000000); //hien hang don vi
delay_us(1000);
output_b(chuc|0b01000000);//hien hang chuc
delay_us(500);
output_b(tram|0b00100000);//hien hang tram
delay_us(500);
output_b(nghin|0b00010000);//hien hang nghin
delay_us(500);
}
void main()
{
set_tris_b(0x00);//chon port b lam port dau ra
set_tris_d(0x00);//chon port b lam port dau ra
while(1)
{
n++;
a=n;
led7();
}
}
///mach da tes chay ok

theanh826 04-10-2010 05:13 PM

led 7 thanh
 
1 Attachment(s)
chuong trinh

heomoi0780 01-01-2011 09:46 PM

Trích:

Nguyên văn bởi theanh826 (Post 39089)
#include <16F877a.h>
//#device ADC=10
//#include <math.h>
//#include <string.h>
//#include <stdlib.h>
#define LED1 PIN_B4 //HANG NGHIN
#define LED2 PIN_B5 //HANG TRAM
#define LED3 PIN_B6 //HANG CHUC
#define LED4 PIN_B7 //HANG DON VI
#fuses hs, nowdt, put, nolvp, brownout
#use delay(clock=20000000)
int16 a,b,i,j,dv,chuc,tram,nghin,n;
void led7()
{
nghin=a/1000;
a=a%1000;
tram=a/100;
a=a%100;
chuc=a/10;
dv=a%10;
output_b(dv|0b10000000); //hien hang don vi
delay_us(1000);
output_b(chuc|0b01000000);//hien hang chuc
delay_us(500);
output_b(tram|0b00100000);//hien hang tram
delay_us(500);
output_b(nghin|0b00010000);//hien hang nghin
delay_us(500);
}
void main()
{
set_tris_b(0x00);//chon port b lam port dau ra
set_tris_d(0x00);//chon port b lam port dau ra
while(1)
{
n++;
a=n;
led7();
}
}
///mach da tes chay ok

với đoạn code trên cuả theanh826 thì nều muốn đếm chậm lại thì phải sửa lại chổ nào, xin các pác chỉ giúp?

vodich01 16-01-2011 04:57 PM

Cho mình hỏi cái mạch mô phỏng của theanh826 sao ko có nguồn, đường nối đất này nọ mà vẫn chạy được vậy.

JumboT 10-03-2011 10:57 AM

n++;
delay_ms("đặt gí trị thời gian vào đây thì phải !");
a = n;

tdm 10-03-2011 12:56 PM

Trích:

Nguyên văn bởi JumboT (Post 42340)
n++;
delay_ms("đặt gí trị thời gian vào đây thì phải !");
a = n;

n++;
delay_ms("đặt gí trị thời gian vào đây thì phải !");//chèn lệnh này coi chừng led nó nháy chóng cả mặt.
a = n;
Code:

while(1)
 {
  int16 bien;
  a=n;
  for(bien=0;bien<=đặt giá trị vào đây;bien++)
    {
      led7();
    }
    n++;
 
 }


lambaotrung 30-03-2012 01:05 AM

em chưa hiểu về nội tạng của bộ 6 con led7 đoạn đó.

vị dụ em muốn làm 1 mạch có 2 con led 7 đoạn đơn để hiển thi, dơn vị thui. hoặc hiển thi hàng chục, hàng trăm riêng biệt thi mình thế nào.

kidmaster08 02-09-2012 11:27 PM

để mô phỏng được chính xác bạn sử dung mạch nand 4011 rối qua điện trở 10k nối tiếp vào a nốt của đèn để điều khiển mở anốt. các chân dữ liệu nối trực tiếp vào abcdeg. ngoài ra bạn dùng loại led chung vỏ (6 led chẳng hạn).không dùng điều khiển anot bằng transistor bạn nhé.thân


Múi giờ GMT. Hiện tại là 07:36 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam