給玲做口袋
表袋布10.5*16.5 /襯 9*15 各二
口袋布10.5*11.5 /襯 9*10 各二口袋皮檔片 8.5*3
二側圓弧角,利用0.7縫份圈畫出
陳大道
1/30
pic16f887 pickit3
注意專案資料夾的設立
#include<pic.h>
//#include<pic16f887.h>
main()
{
TRISD0=0;
RD0=1;
}
查表法用陣列存
資料空間指定char 8位元,int 16bit, long int 32bit
全域變數,區域變數
主程式,副程式
#include<pic.h>
//#include<pic16f887.h>
const char LED[8]={1,2,4,8,16,32,64};
char i;
long int j;
main()
{
TRISD=0b00000000;
PORTD=0b00000000;
while(1)
{
for(i=0;i<8;i++)
{
PORTD=LED[i];
for(j=0;j<98000;j++)
{}
}
}
}
-------------------------------------------------------
pic16f877.h內的宣告
// Register: TRISD
volatile unsigned char TRISD @ 0x088;
// bit and bitfield definitions
volatile bit TRISD0 @ ((unsigned)&TRISD*8)+0;
volatile bit TRISD1 @ ((unsigned)&TRISD*8)+1;
volatile bit TRISD2 @ ((unsigned)&TRISD*8)+2;
volatile bit TRISD3 @ ((unsigned)&TRISD*8)+3;
volatile bit TRISD4 @ ((unsigned)&TRISD*8)+4;
volatile bit TRISD5 @ ((unsigned)&TRISD*8)+5;
volatile bit TRISD6 @ ((unsigned)&TRISD*8)+6;
volatile bit TRISD7 @ ((unsigned)&TRISD*8)+7;
#ifndef _LIB_BUILD
volatile union {
struct {
unsigned TRISD0 : 1;
unsigned TRISD1 : 1;
unsigned TRISD2 : 1;
unsigned TRISD3 : 1;
unsigned TRISD4 : 1;
unsigned TRISD5 : 1;
unsigned TRISD6 : 1;
unsigned TRISD7 : 1;
};
} TRISDbits @ 0x088;
#endif
0206
按鈕有反彈跳,延遲時間
光耦合器要計算電阻值,避免燒掉,二極體0.7v就導通,太大會燒掉,看用交流電或直流
原本伺服驅動器的脈波輸入是5V,
如果要用24V,會經由PULL-HI_S的接點,
會多經過1個1K歐姆的電阻。
會讓流經過LED的電流控制在20mA左右。
如果是外接24V,(不透過PULL-HI_S)也會建議加電阻
#include<pic.h>
#define sw2 RB0
#define sw3 RA4
main()
{
TRISD=0b00000000;
PORTD=0b00000000;
TRISB0=1;
ANS12=0;
TRISA4=1;
int i;
while(1)
{
if(sw2==0)
{
for(i=1;i<1000;i++);
if(sw2==0)RD0=1;
}
else RD0=0;
if(sw3==0)
{
for(i=1;i<1000;i++);
if(sw3==0)RD1=1;
}
else RD1=0;
}
}
#include<pic.h>
#define sw2 RB0
#define sw3 RA4
main()
{
TRISD=0b00000000;
PORTD=0b00000000;
TRISB0=1;
ANS12=0;
TRISA4=1;
disp=0b00000001;
int i;
while(1)
{
if(sw2==0)
{
for(i=1;i<1000;i++);
if(sw2==0)
{
PORTD=disp;
disp=disp<<1;
if(sw2==0)disp=0b00000001;
}
}
else RD0=0;
if(sw3==0)
{
for(i=1;i<1000;i++);
if(sw3==0)RD1=1;
}
else RD1=0;
}
}
229
伺服馬達控制器
絕對位址相對位址
ALTP指令
LD X0
ALTP Y0
按一下X0,Y0=ON,再按一下,Y0=OFF,交替输出
0323
//* LCD exercise
#include <pic.h>
#include "MID_LCD.h"
const char LCD_Msg1[]="float point disp";
char LCD_Msg2[]= " NUMBER: ";
main()
{
float data;
int number;
OpenLCD();
LCD_Set_Cursor(0,0);
putrsLCD(LCD_Msg1);
LCD_Set_Cursor(0,1);
putsLCD(LCD_Msg2);
data=25.67;
number=(int)(data*100);
LCD_Set_Cursor(8,1);
put_Num_LCD(number);
while(1);
}//main
Temp_Char_100 = (The_Number - Temp_Char_1000*1000)/100 ;;//取百位數的數字
(The_Number%1000)/100
polling
for(i=0;i<9;i++);// 取樣時間 20us
GO_DONE=1; // GO=1Start A/D convert
共用體宣告
union {
int ADC_VALUE;
struct {
char ADC_L;
char ADC_H;
};
}ADC;
ADC.ADC_L=ADRESL;
ADC.ADC_H=ADRESH;
V=(ADC.ADC_VALUE/1023.0)*5.0;
ADC_value=(adh<<8)+ADCL;
++++++++++
// AN1為輸入 T1047IC溫度量測
#include <pic.h>
#include "MID_LCD.h"
// 有關底下詳細設定內容請參考 : pic16f887.h 裡的說明
__CONFIG ( FOSC_HS & WDTE_OFF & PWRTE_OFF & MCLRE_ON & CP_OFF & CPD_OFF &
BOREN_OFF & IESO_OFF & FCMEN_OFF & LVP_OFF );
__CONFIG ( BOR4V_BOR40V & WRT_OFF );
const char LCD_Msg1[]="Hi-Tech PICC ADC";
const char LCD_Msg2[]="V: T: ";
float V,T;
int number;
union {
int ADC_VALUE;
struct {
char ADC_L;
char ADC_H;
};
}ADC;
void main(void)
{
unsigned char i;
TRISA1=1;
ANS1 = 1; // Set RA0 which in ANSEL as AD input pin
ADFM=1; // 轉換的10位數字 向右排齊
VCFG1 = 0;
VCFG0 = 0;// Vref+=VDD=5, Vref-=VSS=0;
ADCS1=1;
ADCS0=0; // Tad=FOSC/32
CHS3=0;
CHS2=0;
CHS1=0;
CHS0=1; // CHS3:CHS0=0001, AN1為輸入 T1047IC溫度量測
ADON=1;
// ANSEL =0x01;// Set RA0 which in ANSEL as AD input pin
// ANSEL =0b00000001;
// ADCON1=0b10000000;// Right justified, Vref+ = Vdd, Vref- = Vss
// ADCON0=0b10000001;// Tad = Fosc/32, Select AN0, A/D on
OpenLCD();
LCD_Set_Cursor(0,0);
putrsLCD(LCD_Msg1);
LCD_Set_Cursor(0,1);
putrsLCD(LCD_Msg2);
// ADON=1; // AD 開始轉換
for(i=0;i<9;i++);// 取樣時間 20us
GO_DONE=1; // GO=1Start A/D convert
while(1)
{
// while(ADIF==1) //GO=0 End of convert
if(GO_DONE==0) //GO=0 End of convert
{
// ADIF=0;
ADC.ADC_L=ADRESL;
ADC.ADC_H=ADRESH;
V=(ADC.ADC_VALUE/1023.0)*5.0;
number=V*100;
LCD_Set_Cursor(2,1);
put_Num_LCD1(number);
T=(V/3.3)*100.0;
number=T*100;
LCD_Set_Cursor(10,1);
put_Num_LCD1(number);
GO_DONE=1; // GO=1Start A/D convert
}
}
}
老 師鄒重光
三菱plc
1/29