PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   [HELP] Hiển thị từ 0-9 sử dụng VĐK 16F877A (http://www.picvietnam.com/forum/showthread.php?t=31758)

evigkarlek 01-02-2013 11:53 PM

[HELP] Hiển thị từ 0-9 (LED 7 thanh) sử dụng VĐK 16F877A
 
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

Trích:

Nguyên văn bởi evigkarlek (Post 80763)
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

Trích:

Nguyên văn bởi hungcdt_k49 (Post 80870)
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

Trích:

Nguyên văn bởi evigkarlek (Post 80877)
:)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

Trích:

Nguyên văn bởi pstin (Post 80942)
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

Code:

#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90},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/...ps39960fcd.png

pstin 03-03-2013 10:58 AM

Trích:

Nguyên văn bởi evigkarlek (Post 80982)
Code:

#include <16f877a.h>
#fuses HS,NOWDT
#use delay(clock=12000000)

int8 led7[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90},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/...ps39960fcd.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!.


Múi giờ GMT. Hiện tại là 10:52 AM.

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