PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 07-04-2012, 12:58 AM   #1
mrsin
Đệ tử 2 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 34
:
Hiện thị số dùng ic 74HC595 + pc 16f877a

Em chỉ muốn hiện thị số lên thôi mà không được, dưới đây là code và mạch mô phỏng = protues, mong anh chị sửa giúp em. thanks
File Kèm Theo
File Type: rar hienthi.rar (32.1 KB, 153 lần tải)
mrsin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2012, 10:25 AM   #2
bnthang
Đệ tử 3 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 58
:
Chương trình này chạy rồi, nhưng bảng mã giải mã led 7 đoạn còn sai nên hiển thị chưa đúng, bạn sửa lại cho đúng nhé
File Kèm Theo
File Type: rar hienthi.rar (66.5 KB, 174 lần tải)
__________________
Mừng năm mới, khuyến mãi đặc biệt giảm giá 20% tất cả các kit từ ngày 01/01/2013 đến ngày 30/03/2013 -> số lượng có hạn nhé.
DT: 0983.548.514.
www.picdevelopmenttool.webs.com
www.smart-house.webs.com
www.robot3t.com
bnthang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2012, 11:24 AM   #3
mrsin
Đệ tử 2 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 34
:
Trích:
Nguyên văn bởi bnthang View Post
Chương trình này chạy rồi, nhưng bảng mã giải mã led 7 đoạn còn sai nên hiển thị chưa đúng, bạn sửa lại cho đúng nhé
cám ơn bnthang nhưng em muốn biết code của em sai chổ nào thôi để biết đường lần sau còn sửa nữa, em mới học lập trình ah mong anh chị trong diễn dàn giúp em
tks!!1
mrsin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2012, 03:00 PM   #4
bnthang
Đệ tử 3 túi
 
Tham gia ngày: Apr 2010
Bài gửi: 58
:
Code của bạn thiếu lệnh dịch bit. Sau khi bạn dịch bit 7 ra chân DS thì bạn dịch bit 6 lên vị trí bit 7 "shift_left(data,1,1);" Dịch số 1 xang bên trái vào biến data. Hoặc dùng lệng data<<=1;
__________________
Mừng năm mới, khuyến mãi đặc biệt giảm giá 20% tất cả các kit từ ngày 01/01/2013 đến ngày 30/03/2013 -> số lượng có hạn nhé.
DT: 0983.548.514.
www.picdevelopmenttool.webs.com
www.smart-house.webs.com
www.robot3t.com
bnthang vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-04-2012, 03:49 PM   #5
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi mrsin View Post
Em chỉ muốn hiện thị số lên thôi mà không được, dưới đây là code và mạch mô phỏng = protues, mong anh chị sửa giúp em. thanks
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bi ts=9) //Baud_min=4800 Baud_max=115200
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=8)


// Dinh nghia cac chan cho ket noi 74595
//#bit SCL=0x08.7
//#bit DATA=0x08.6
//#bit SCK=0x08.5
#define SCL RD5//đổi lại cho phù hợp phần cứng
#define DATA RD6
#define SCK RD7//đổi lại cho phù hợp phần cứng
#byte TRISD =0x88
void quet(unsigned char x);
unsigned int num=1;

unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x9 0};//ma led 7
void quet(unsigned char x)
{
int i,temp;
for(i=0;i<8;i++)
{
temp=x;//gan bien
temp=temp&0x80;//lay ra bit dau tien (bit 7)
if(temp==0x80)//so sanh bit
DATA=1; //bang 1 thi xuat vao chip =1
else
DATA=0; //nguoc lai bang 0
x*=2; //dich bit lay bit trong so thap
SCK=0; //tao xung tren chan 11
SCK=1; //1 xung dua vào 1 bít
}
SCL=0; //xuat du lieu ra output
SCL=1;
}

void main()
{
TRISD=0x00;//thiếu dòng này
num=5;
while(1)
{
quet(~ma[num]);//đảo lại mã cho phù hợp phần cứng
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 08-04-2012, 09:57 PM   #6
mrsin
Đệ tử 2 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 34
:
cám ơn anh tdm nha em sửa theo anh va chạy được rồi
Tiện đây em mở rộng thêm 1 tý là hiển thị 4 số VD:1234
em cũng viết rùi cũng không chạy mong anh sửa giúp em
File Kèm Theo
File Type: rar hien thi tren 4 led 7 doan.rar (34.0 KB, 40 lần tải)
mrsin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2012, 12:13 AM   #7
hoc_picpicpic
Đệ tử 6 túi
 
Tham gia ngày: Feb 2009
Bài gửi: 127
:
code chạy ok này
File Kèm Theo
File Type: rar hien thi tren 4 led 7 doan.rar (53.8 KB, 128 lần tải)
hoc_picpicpic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2012, 04:14 PM   #8
tdm
Đệ tử 7 túi
 
Tham gia ngày: May 2005
Bài gửi: 258
:
Trích:
Nguyên văn bởi mrsin View Post
cám ơn anh tdm nha em sửa theo anh va chạy được rồi
Tiện đây em mở rộng thêm 1 tý là hiển thị 4 số VD:1234
em cũng viết rùi cũng không chạy mong anh sửa giúp em
viết gì mà phức tạp thế.
chỉ thế này thôi:
Code:
#include <16F877A.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=20000000)
//#use rs232(baud=9600,parity=N,xmit=PIN_B5,rcv=PIN_B2,bits=9) //Baud_min=4800 Baud_max=115200
//#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)


// Dinh nghia cac chan cho ket noi 74595
//#bit SCL=0x08.7
//#bit DATA=0x08.6
//#bit SCK=0x08.5
#define SCL RD5
#define DATA RD6
#define SCK RD7
#byte TRISD =0x88
void quet(unsigned char x);
void DCB(void);
unsigned int donvi,chuc,tram,nghin;
 int16 num;
unsigned char ma[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//ma led 7
void quet(unsigned char x)
{
int i,j,k,u,temp1,temp2,temp3,temp4;
  for(i=0;i<8;i++)
   {
   temp1=x;//gan bien
   temp1=temp1&0x80;//lay ra bit dau tien (bit 7)
   if(temp1==0x80)//so sanh bit
   DATA=1;    //bang 1 thi xuat vao chip =1
   else
   DATA=0;    //nguoc lai bang 0
   x*=2;   //dich bit lay bit trong so thap
   SCK=0;   //tao xung tren chan 11
   SCK=1;   //1 xung dua vào 1 bít
   }
}
void chot()
{
SCL=0;   //xuat du lieu ra output
SCL=1;
}
void DCB(void)
{
nghin=num/1000;
tram=(num%1000)/100;
chuc=(num%100)/10;
donvi=num%10;
}

void main()
{
trisd=0x00;
num=9875;
DCB();
quet(ma[donvi]);
quet(ma[chuc]);
quet(ma[tram]);
quet(ma[nghin]);
chot();
while(1)
{
}
}
__________________
viết chương trình cho vdk chạy ổn định là cả một vấn đề.
tdm vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-04-2012, 09:28 PM   #9
mrsin
Đệ tử 2 túi
 
Tham gia ngày: Mar 2012
Bài gửi: 34
:
Cách anh tdm ngắn gọn nhỉ cám ơn anh nhiều
Và giờ nếu em mở rộng lên 8 hay 16 con số thì thuật toán của cái code đó như thế nào vậy anh
mrsin vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-05-2012, 10:46 PM   #10
thuong_123
Nhập môn đệ tử
 
Tham gia ngày: Apr 2012
Bài gửi: 5
:
Chào anh"tdm". Anh giải thích cho em 2 dòng lệnh này nhé, em chưa hiểu lắm. thank anh.
temp=temp&0x80;
x*=2;
thuong_123 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


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


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam