![]() |
|
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 |
Nhập môn đệ tử
Tham gia ngày: Nov 2010
Bài gửi: 3
: |
vấn đề với mạch máy tính đơn giản
Em hiện đang học về kinh tế, không biết nhiều về điện tử, nhưng vì thấy thích nên có tham khảo quyển Newnes.Advanced.PIC.Microcontroller.Projects.in C và làm được mấy cái mạch dịch led đơn giản. Sau đó theo hướng dẫn của sách trên, em làm mạch máy tính đơn giản. Mô phỏng trên proteus đã chạy nhưng khi làm mạch thật thì chỉ hiện lên 16 ô màu đen ở dòng trên của LCD 16x2 chỉnh biến trở thì thấy độ sáng tối có thay đổi(em mô phỏng trong protues là lcd 16x1 nhưng ko mua được nên ẵm con 16x2 về). Em mượn cái VOM về test thử thì thấy các chân 17,18,23,24,25,26 của PIC tương ứng với các mức logic như mô phỏng trong protues, lcd tương ứng từ 1-14 là 010100_0000_0101 cũng giống trong protues, chân 15 em nối trở 330 nối nguồn, chân 16 nối đất(em mắc y chang con 16x1). em sắp thi học kì, định qua thi rồi tiếp tục làm tiếp, nhưng mạch không ra cứ ấm ức không tập trung ôn bài được rất rất mong các tiền bối chỉ giáo giúp em , em rất rất cảm ơn.
|
![]() |
![]() |
![]() |
#2 |
Nhập môn đệ tử
Tham gia ngày: Dec 2010
Bài gửi: 4
: |
Xin các bác giúp Em tìm lỗi
Em viết chương trính CCS C cho PIC8F4431. Đoạn code va mạch trong file đính kèm.Em muốn hiện cả 2 khối như kiểu đèn tín hiệu giao thông, xanh rồi dến đỏ ở 2 pha đường khác nhau. Nhưng khi mô phỏng thì nó chỉ hiện lần lượt xanh rồi đến đỏ ở từng pha mà không hiện đồng thời cả 2 pha. Mong các Bác sửa giúp.
#include <18F4431.h> #fuses HS,NOWDT,NOPROTECT,NOLVP #use delay(clock=20000000) int dvi1,truc1,dvi2,truc2,dvi3,truc3,dvi4,truc4; int billy[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7C,0x7,0x7F,0x6F }; int16 i,j,a,c,m,n,o,e ; void doi() { truc1=a/10; dvi1=a%10; truc2=c/10; dvi2=c%10; truc3=m/10; dvi3=m%10; truc4=n/10; dvi4=n%10; } void hien1() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b11111110); output_B(billy[dvi1]); delay_us(100); output_D(0b11111101); output_B(billy[truc1]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien2() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b111111011); output_B(billy[dvi2]); delay_us(100); output_D(0b111110111); output_B(billy[truc2]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien3() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b11101111); output_B(billy[dvi3]); delay_us(100); output_D(0b11011111); output_B(billy[truc3]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien4() { for(i=0;i<450;i++) { if(input(pin_E2)) { output_D(0b10111111); output_B(billy[dvi4]); delay_us(100); output_D(0b01111111); output_B(billy[truc4]); delay_us(100); } else output_B(billy[0]); delay_us(100); }} void hien12() { for(j=0;j<11;j++) { a=10-j; doi(); hien1(); if(a==0) break; } for(j=0;j<4;j++) { c=3-j; doi(); hien2(); if(c==0) break; } } void hien34() { for(j=0;j<9;j++) { m=8-j; doi(); hien3(); if(m==0) break; } for(j=0;j<6;j++) { n=5-j; doi(); hien4(); if(n==0) break; } } void main() { set_tris_E(0x00001100); set_tris_B(0x00); set_tris_D(0x00); set_tris_C(0x00); while(1) { hien12(); hien34(); } } |
![]() |
![]() |
![]() |
|
|