PDA

View Full Version : [HELP] Hiển thị từ 0-9 sử dụng VĐK 16F877A


evigkarlek
01-02-2013, 11:53 PM
Thực sự là hết cách rồi em mới phải viết bài này, mong các pro ra tay *cứu giúp*. Chả là mai em phải nộp bài báo cáo về:
-Thiết kế mạch mô phỏng
-Viết chương trình mô phỏng hiển thị các số 0,1,...,9 trên Led 7 thanh sử dụng VĐK 16F877A
Và tình hình là. .nghiên cứu cũng lâu rồi, mà sự hiểu biết thì có hạn, thời gian thì lại gấp rút quá. Ai giúp em với. .

Cho em cái mạch Protues + với cái code trên CCS. .

Em cảm ơn rất nhiều ạ

hungcdt_k49
21-02-2013, 09:29 PM
Thực sự là hết cách rồi em mới phải viết bài này, mong các pro ra tay *cứu giúp*. Chả là mai em phải nộp bài báo cáo về:
-Thiết kế mạch mô phỏng
-Viết chương trình mô phỏng hiển thị các số 0,1,...,9 trên Led 7 thanh sử dụng VĐK 16F877A
Và tình hình là. .nghiên cứu cũng lâu rồi, mà sự hiểu biết thì có hạn, thời gian thì lại gấp rút quá. Ai giúp em với. .

Cho em cái mạch Protues + với cái code trên CCS. .

Em cảm ơn rất nhiều ạ

dễ thui mà, mạch thì đấu trực tiếp portb vào led7 thông qua trở khoảng 220.
code nè
#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0x9f,0xa4......},i,so; //gì nữa kô nhớ lắm, bạn tự tính nhé các số từ 0 đến 9
void main()
{
set_tris_b(0);
while(1)
{
for(i=0;i<10;i++)
{
output_b(led[i]);
delay_ms(500);
}
}
}

evigkarlek
22-02-2013, 03:42 PM
dễ thui mà, mạch thì đấu trực tiếp portb vào led7 thông qua trở khoảng 220.
code nè
#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0x9f,0xa4......},i,so; //gì nữa kô nhớ lắm, bạn tự tính nhé các số từ 0 đến 9
void main()
{
set_tris_b(0);
while(1)
{
for(i=0;i<10;i++)
{
output_b(led[i]);
delay_ms(500);
}
}
}
:)mình học CN mà học môn này nên nhiều thứ mới mẻ quá, tks bạn nhiều nha

hungcdt_k49
25-02-2013, 03:58 AM
:)mình học CN mà học môn này nên nhiều thứ mới mẻ quá, tks bạn nhiều nha

Không có gì. có gì bạn cứ hỏi

daiduongub
27-02-2013, 11:02 AM
mình cũng đang bắt đầu học môn vi điều khiển, nhưng xem ra môn này khó học quá. muốn học mà không biết bắt đầu từ đâu. mọi người cho mình hỏi muốn hiểu về con pic 16f84 thì đọc những gì, các phần để viết 1 chương trình code như thế nào? thank các ban nhiều.

pstin
28-02-2013, 10:05 AM
Vi điều khiển thực ra rất dễ với những ứng dụng thông thường!,..dân trung cấp là có thể lập trình và ứng dụng vi điều khiển, gọi là "dạy nghề" đó!!.
Nhưng vấn đề là bạn không biết đi từ đâu và tạo thành một mạch thực tế như thế nào,..thế thì lại rất rắc rối!..
Tốt hơn hết là kiếm một người bạn đã học và làm mạch thật,..trong vòng vài chục phút bạn sẽ gỡ được những cái thắc mắc...còn cái việc hiểu sâu về vấn đề và "sáng kiến" những cái mới thì đòi hỏi một thời gian dài và sự thông minh của bạn!!...
PIC tốt hơn là bắt đầu từ 16F877A vì con này cơ bản đã đầy đủ các "sọt" code và những ứng dụng mẫu cơ bản,..cầu nối giữa Pic đời mới và Pic đời cũ!!!..

hungcdt_k49
02-03-2013, 11:34 AM
Vi điều khiển thực ra rất dễ với những ứng dụng thông thường!,..dân trung cấp là có thể lập trình và ứng dụng vi điều khiển, gọi là "dạy nghề" đó!!.
Nhưng vấn đề là bạn không biết đi từ đâu và tạo thành một mạch thực tế như thế nào,..thế thì lại rất rắc rối!..
Tốt hơn hết là kiếm một người bạn đã học và làm mạch thật,..trong vòng vài chục phút bạn sẽ gỡ được những cái thắc mắc...còn cái việc hiểu sâu về vấn đề và "sáng kiến" những cái mới thì đòi hỏi một thời gian dài và sự thông minh của bạn!!...
PIC tốt hơn là bắt đầu từ 16F877A vì con này cơ bản đã đầy đủ các "sọt" code và những ứng dụng mẫu cơ bản,..cầu nối giữa Pic đời mới và Pic đời cũ!!!..

mình cũng chỉ là người mới bắt đầu thôi. Học pic trước hết phải học qua các cái cơ bản về nó như datasheet, cấu trúc thanh ghi..... mới bắt đầu lên mô phỏng bằng proteus, học CCS để lập trình. PIC 16f877a có riêng 1 cuốn sách viết về nó đấy. bạn lên mạng mà tìm tài liệu

hungcdt_k49
02-03-2013, 11:37 AM
nhân tiện đây cho mình hỏi, giao tiếp cảm biến siêu âm srf05 dùng 18f4431. Mình viết code nhưng không rõ sai ở chỗ nào.

#include <18f4431.h>
#fuses HS,NOWDT,NOLVP,NOPROTECT,NOPUT,NODEBUG
#use delay(clock=12000000)
int8 a,b,c,led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0},tram,chuc,dv,i,j,k;
float s,kc;
int16 time;
#define rc6 pin_C6
#INT_TIMER0
void trantimer1()
{
set_timer1(0);
}
#INT_EXT1
void ngatngoai1()
{
set_timer1(0);
}
void ngatngoai2()
{
time=get_timer1();
kc=(time*4*4)/(12*58);// cong thuc nay da dung chua?????????????????????????????????
}
void hienthi()
{
if(kc>=100)
{
dv=9;
chuc=9;
tram=9;
}
else
{
dv=(int8)kc%10;
chuc=(int8)(kc/10)%10;
tram=(int8)(kc/100)%10;
}
output_b(led[dv]);
}
void trigger()
{
output_high(Pin_C6);
delay_us(12);
output_low(Pin_C6);
}
void main()
{
set_tris_b(0);
set_tris_c(0);
enable_interrupts(INT_EXT1);
enable_interrupts(INT_EXT2);
enable_interrupts(INT_TIMER0);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_4);
EXT_INT_EDGE(1,L_TO_H);
EXT_INT_EDGE(2,H_TO_L);
enable_interrupts(global);
while(1)
{
trigger();
delay_ms(50);
}
}

evigkarlek
02-03-2013, 09:16 PM
#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0},i,so;

void main()
{
set_tris_b(0);
while(1)
{
for(i=0;i<10;i++)
{
output_b(led[i]);
delay_ms(500);
}
}

Ai cho hỏi chút code trên để hiển thị 0-9 trên LED 7 thanh có đúng ko, (port B)

Sao mình chạy trên CCS nó lại báo lỗi:
http://i1236.photobucket.com/albums/ff458/evig_karlek/untitled-1_zps39960fcd.png

pstin
03-03-2013, 10:58 AM
#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0},i,so;

void main()
{
set_tris_b(0);
while(1)
{
for(i=0;i<10;i++)
{
output_b(led[i]);
delay_ms(500);
}
}

Ai cho hỏi chút code trên để hiển thị 0-9 trên LED 7 thanh có đúng ko, (port B)

Sao mình chạy trên CCS nó lại báo lỗi:
http://i1236.photobucket.com/albums/ff458/evig_karlek/untitled-1_zps39960fcd.png

Thiếu 1 cái móc ngoặc kép của hàm main nên bị lỗi đó!!!,..
Nếu bạn có mạch thật, bạn cứ nạp cho chạy, thay đổi thời gian delay lâu hơn,..cỡ 1-2 giây,..để xem có đúng mã led 7 đoạn hay không!?.
Tốt hơn là dùng protues mô phỏng đi!.