336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 Dot Matrix (8x8)

http://isisproteus.blogspot.kr/2012/09/isis-proteus.html#!/2012/09/isis-proteus.html

사용하는 부품(=parts)

PIC16F84A

4009 NOT Gate (8개)

74LS138

4520 (8개) = 1개의 Module

총 5개의 Module = 8x5 = 40개 이용

 

 

 

P_Matrix.c

Open this C source in PCWHD

 


Experimentation

실제 구동

To check Bill of Material(=BOM), select the icon on toolbar in "$" symbol.

 

 

If you used some mudules in the circuit sheet,

you have to hit Ctrl+C & Ctrl+X to get into the modules to seek parts hidden under the modules.

(thay don't come up on the BOM, so you need to make an effort.)

만약 모듈화시켜서 회로를 꾸몄다면, Ctrl+C혹은 Ctrl+X를 눌러가며 일일이 찾는 수고를 해야한다.

왜냐하면 부품들이 BOM상에 나타나있지 않기때문이다.

Let's build a Dot Matrix based on parallel style.

'MCU Examples (PIC 기반)' 카테고리의 다른 글

Controlling Stepper Motor in FDD(=플로피디스크 드라이브)  (0) 2013.02.24
USB  (0) 2013.01.11
SD Card  (0) 2013.01.11
Using Relays with Microcontrollers  (0) 2013.01.03
Posted by ElectricShock
:
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

 

Syntax & Functions


문법 & 함수

http://www.ccsinfo.com/content.php?page=syntax-functions

 

ccs_c_manual.pdf

 

▼예제들 포함된 사이트

http://www.ccsinfo.com/content.php?page=compexamples


PCM (supports most PIC12 and PIC16 devices):

PCD (supports PIC24/dsPIC® DSC families):

간단한 학교 프로젝트의 경우는 PCM계열의 칩으로 마무리할 수 있다.



▼예제를 통해 CCSC 만의 문법이 어떻게 차이가 있는지 살펴보자.

문법공부를 따로하기 보다는 해당 예제를 통해 익히는게 효율적이다.

#include <16c74.h>                                    //칩 선언 #fuses HS,NOWDT,NOPROTECT                             //Freq. WDT, Code Protection 선언 #use delay(clock=20000000)                            //20MHz사용 #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) // Jumpers: 8 to 11, 7 to 12 #include <input.c> #byte port_b = 6 #define FOUR_PHASE TRUE #ifdef FOUR_PHASE byte const POSITIONS[4] = {0b0101, 0b1001, 0b1010, 0b0110}; #else byte const POSITIONS[8] = {0b0101, 0b0001, 0b1001, 0b1000, 0b1010, 0b0010, 0b0110, 0b0100}; #endif drive_stepper(BYTE speed, char dir, BYTE steps) { static BYTE stepper_state = 0; BYTE i; for(i=0; i<steps; ++i) { delay_ms(speed); set_tris_b(0xf0); port_b = POSITIONS[ stepper_state ]; if(dir!='R') stepper_state=(stepper_state+1)&(sizeof(POSITIONS)-1); else stepper_state=(stepper_state-1)&(sizeof(POSITIONS)-1); } } use_pot() { BYTE value; setup_adc(adc_clock_internal); set_adc_channel( 1 ); printf("rn"); while( TRUE ) { value=read_adc(); printf("%2Xr",value); if(value<0x80) drive_stepper(value,'R',8); else if(value>0x80) drive_stepper(128-(value-128),'F',8); } } use_switch(BYTE speed, char dir) { BYTE steps; printf("nrSteps per press: "); steps = gethex(); while(true) { while(input(PIN_B7)) ; drive_stepper(speed,dir,steps); while(!input(PIN_B7)) ; delay_ms(100); } } main() { byte speed,steps; char dir; setup_port_a(RA0_RA1_ANALOG); while (TRUE) { printf("nrSpeed (hex): "); speed = gethex(); if(speed==0) use_pot(); printf("nrDirection (F,R): "); dir=getc()|0x20; putc(dir); printf("nrSteps (hex): "); steps = gethex(); if(steps==0) use_switch(speed,dir); drive_stepper(speed,dir,steps); } }



Simple A/D

///////////////////////////////////////////////////////////////////////// //// EX_ADMM.C //// //// //// //// This program displays the min and max of 30 A/D samples over //// //// the RS-232 interface. The process is repeated forever. //// //// //// //// Configure the CCS prototype card as follows: //// //// Insert jumpers from: 11 to 17, 12 to 18 and 9 to 16 //// //// Use the #9 POT to vary the voltage. //// ///////////////////////////////////////////////////////////////////////// #include <16f877a.h> #fuses HS,NOLVP,NOWDT,PUT                    //HighSpeed, No Low Voltage Prgming, Power Up Timer #use delay(clock=20000000) #use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7) void main()

{ int i, value, min, max; printf("Sampling:"); setup_adc_ports( RA0_ANALOG ); setup_adc( ADC_CLOCK_INTERNAL ); set_adc_channel( 0 ); do

{ //Takes 30 samples from pin A0 min = 255; //and displays the min and max max = 0; //values for that 100ms period for(i = 0; i <= 30; ++i)

{ delay_ms(100); value = read_adc(); if(value < min) min = value; if(value > max) max = value; } printf("nrMin:%x MAX: %x", min, max); } while (TRUE);

}


'MPLAB > CCSC Syntax' 카테고리의 다른 글

Making Hex File  (0) 2013.01.23
Posted by ElectricShock
:
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

경로 에러

Message "1501" reads Specified search path doesn't exist.

In this case, you should adjust the path.

Project >> Edit Search Paths

 

'Mikro C Pro > Errors in Mikro C Pro' 카테고리의 다른 글

Can't open include file "???.h"  (0) 2014.12.08
Posted by ElectricShock
:

BLOG main image
잡동사니들(지극히 개인취향인...) (다른글에도 댓글 부탁해요♥) You May Leave English Messages on GuestBook. by ElectricShock

공지사항

카테고리

분류 전체보기 (782)
MiDi (2)
Programming(=프로그래밍) (3)
Animation (4)
Blender (3D Graphic Program.. (10)
Blendtuts.com (Series) (1)
Blender 기초 팁들 (2)
Processing (디지털미디어과) (2)
Music (1)
Books in the world (0)
Communication(CAN, UART, et.. (12)
MCU Examples (PIC 기반) (7)
Transistor (1)
Mikro C Pro (11)
Mikro Pascal (1)
Proton IDE (0)
Robot (0)
Swift 3D (1)
Dummies Series (1)
All about Hacking (0)
제2 외국어 (1)
PIC 해외서적들 (3)
AVR (25)
PIC (MikroC) (MPLAB) (4)
Assembly (2)
ARM (3)
Arduino (26)
PSpice (1)
Proteus ISIS (14)
CodeVision (2)
FPGA (15)
MPLAB (24)
PCB (the Procedure) (15)
3D Printer (5)
PICKIT3 (6)
Matlab (11)
RaspBerry PI (15)
BeagleBone (1)
Android Studio (17)
졸업작품 (172)
Korea History (0)
Issue(사회) (73)
Multimeter 리뷰 (1)
Oscilloscope (1)
A (34)
B (19)
J (6)
C (32)
P (12)
T (37)
H (12)
I (12)
M (44)
R (5)
E (5)
F (2)
D (9)
O (2)
L (7)
S (9)
W (2)
V (6)
G (14)
Visual C++ or Visual Studio (2)
Android App Development (0)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백