1 pic18f4550簡介與實作 [相容模式] - chirkal.com.t · – mplab_ide_8_92 – mplabc18-v3.46...
TRANSCRIPT
-
1
PIC18F4520/50單晶片實務研習單晶片實務研習
使用僑高公司S-500實驗器
講師:杜勇進
1
講師:杜勇進
研習大綱
壹、PIC18F4520/50單晶片實務實驗貳、103年電腦硬體裝修乙級檢定講解與實作參、102年工科技藝競賽電腦修護題目講解與
實作
肆、Arduino 簡介與實作
2
-
2
單元壹:大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART3
CH-S500 (89S51/52 & PIC18F4520/50)
4CHIRKAL
-
3
4550 VS 4520
5CHIRKAL
PIC18F4520主要特性1/2
• � Flash Memory : 32K Bytes (10 萬次的重寫次數)‧ Data RAM : 1536 Bytes� Data RAM : 1536 Bytes
‧� EEPROM : 256 Bytes (100 萬次重寫能耐)
‧� Timer : 4 組
‧� CCP Module : x 1
‧� Enhanced CCP : x 1
‧� 串列通訊 : EUSART,IIC (I2C),SPI電壓比較器 2‧� 電壓比較器 : x 2
‧� AD轉換器 : 10-bit / 13CH
‧� Reset : POR,BOR,WDT,MCLR,Stack,Reset 指令
‧� I/O : 最多 36
6
-
4
PIC18F4520主要特性2/2
• 振盪模式– HS、XT、LP、HSPLL、EC 及 External RC– � HS、XT、LP、HSPLL、EC 及 External RC
• � 內建 RC 震盪 31KHz ~ 8MHz (具8種頻率選擇)• � 可使用 x4 PLL• � Clock Failure Monitoring• � Extended WDT : 4ms ~131Sec.• Programmable BOR (Software Enable)• � Programmable BOR (Software Enable)• � Power Done Mode• � Run、Idle、Sleep Mode
7
PIC18F4550主要特性
• 28/40/44-Pin, • High-Performance, • Enhanced Flash,• USB Microcontrollers with nanoWatt
Technology
8
-
5
Universal Serial Bus Features• USB V2.0 Compliant• Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s)Low Speed (1.5 Mb/s) and Full Speed (12 Mb/s)• Supports Control, Interrupt, Isochronous(同步) and Bulk(
大批) Transfers• Supports up to 32 Endpoints (16 bidirectional)• 1-Kbyte Dual Access RAM for USB• On-Chip USB Transceiver with On-Chip Voltage
RegulatorRegulator• Interface for Off-Chip USB Transceiver• Streaming Parallel Port (SPP) for USB streaming
transfers (40/44-pin devices only)::
9
Power-Managed Modes• Run: CPU on, peripherals on
Idl CPU ff i h l• Idle : CPU off , peripherals on• Sleep : CPU off , peripherals off• Idle mode currents down to 5.8 μA typical• Sleep mode currents down to 0.1 μA typical• Timer1 Oscillator : 1.1 μA typical , 32 kHz , 2Vμ yp• Watchdog Timer : 2.1 μA typical• Two-Speed Oscillator Start-up
10
-
6
Flexible Oscillator Structure• Four Crystal modes, including High Precision PLL
for USBfor USB• Two External Clock modes, up to 48 MHz• Internal Oscillator Block:
- 8 user-selectable frequencies, from 31 kHz to 8 MHz- User-tunable to compensate for frequency drift
• Secondary Oscillator using Timer1 @ 32 kHzDual Oscillator options allow microcontroller and• Dual Oscillator options allow microcontroller and USB module to run at different clock speeds
• Fail-Safe Clock Monitor:- Allows for safe shutdown if any clock stops
11
Peripheral Highlights1/2• High-Current Sink/Source: 25 mA/25 mA• Three External Interrupts Three External Interrupts• Four Timer modules (Timer0 to Timer3)• Up to 2 Capture/Compare/PWM (CCP) modules:
- Capture is 16-bit, max. resolution 5.2 ns (TCY/16)- Compare is 16-bit, max. resolution 83.3 ns (TCY)- PWM output: PWM resolution is 1 to 10-bit
• Enhanced Capture/Compare/PWM (ECCP) module:p p ( )- Multiple output modes - Selectable polarity- Programmable dead time- Auto-shutdown and auto-restart
12
-
7
Peripheral Highlights2/2• Enhanced USART module:
- LIN bus support- LIN bus support• Master Synchronous Serial Port (MSSP) module
supporting 3-wire SPI (all 4 modes) and I2CMaster and Slave modes
• 10-bit, up to 13-channel Analog-to-Digital Converter module (A/D) with ProgrammableConverter module (A/D) with Programmable Acquisition Time
• Dual Analog Comparators with Input Multiplexing
13
Special Microcontroller Features1/2
• C Compiler Optimized Architecture with optional Extended Instruction SetExtended Instruction Set
• 100,000 Erase/Write Cycle Enhanced Flash Program Memory typical
• 1,000,000 Erase/Write Cycle Data EEPROMMemory typicalFl h/D t EEPROM R t ti > 40• Flash/Data EEPROM Retention: > 40 years
• Self-Programmable under Software Control• Priority Levels for Interrupts
14
-
8
Special Microcontroller Features2/2
• 8 x 8 Single-Cycle Hardware Multiplier• Extended Watchdog Timer (WDT): Extended Watchdog Timer (WDT):
- Programmable period from 41 ms to 131s• Programmable Code Protection• Single-Supply 5V In-Circuit Serial
Programming™ (ICSP) via two pins• In-Circuit Debug (ICD) via two pins• Optional dedicated ICD/ICSP port (44-pin
devices only)• Wide Operating Voltage Range (2.0V to 5.5V)
15
相關系列差別
16CHIRKAL
-
9
PIC18F4550 架構圖 (一)
17CHIRKAL
PIC18F4550 架構圖 (二)
18CHIRKAL
-
10
接腳圖
PA: 0 ~ 6 PB: 0 ~ 7PC 0 6PC: 0 ~ 6PD: 0 ~ 7PE: 0 ~ 3 32+4=36 IO腳Vdd 2,
Vss 2
19CHIRKAL
4550 VS 4520
20CHIRKAL
-
11
PIC18F4520 程式位置配置
21CHIRKAL
IO Port規劃
建議使用LATx暫存器進行位元運算的操作
22CHIRKAL
-
12
為何要加入 LATx 的暫存器
• 消除 Read-Modify-Write 動作的風險
23
Oscillator Types
24CHIRKAL
-
13
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART25
環境建置
• 軟體– MPLAB_IDE_8_92– mplabc18-v3.46-windows-lite-installer.exe
• 硬體– PICkit2(燒錄)
PICkit3– PICkit3– ICD2(除錯、單步執行)– ICD3
26
-
14
CH-S500 (89S51/52 & PIC18F4520/50)
27CHIRKAL
上機步驟
建專案:選元件
28
-
15
選 C18 編譯器
29CHIRKAL
選擇專案位置及專案名稱
假設目錄為MyPIC\Lab1,專案名稱Hello
30
-
16
編輯原始程式
31CHIRKAL
建置(Build)
CHIRKAL32
CHIRKAL
-
17
設定燒錄器1/2
33
設定燒錄器2/2
34CHIRKAL
-
18
燒錄與執行
拿一條8 Pin 排線,RD(Port D)接至 LED
35
OSCCON: OSCILLATOR CONTROL REGISTER
36CHIRKAL
-
19
ADCON1: A/D CONTROL REGISTER 1
37CHIRKAL
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC18F中斷架構PIC18F計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART38
-
20
基礎實驗
• Lab1 :LED閃爍• Lab2 :按鍵控制LED花樣變化• Lab3 :七段顯示器• Lab4 :文字型LCD• Lab5 :LCD +鍵盤• Lab6 :8*8點矩陣• Lab7 :步進馬達
39
組態位元
40CHIRKAL
-
21
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC18F中斷架構PIC18F 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART41
PIC18F中斷架構
• 18F4520/50有兩個中斷向量點高優先權 >中斷向量位址0x0008– 高優先權==>中斷向量位址0x0008
– 低優先權==>中斷向量位址0x0018• 每個中斷源均可選擇其中斷優先權(二選一)• 每個中斷源均有獨立的中斷旗標(Flag)• 中斷旗標的清除==>自行用軟體清除• 每個中斷源均可Enable或Disable• 當然PIC18系列也可設定與PIC16Fxxx系列的中斷相容(關掉優先權的設定)
42
-
22
中斷優先權示意圖
43CHIRKAL
High Priority Interrupt Generation
44
-
23
Low Priority Interrupt Generation
45
中斷事件訊號
• 外部中斷:INT0,INT1,INT2• PORT B改變• TIMER 0• 週邊裝置:
– PSP(Parallel Slave Port)– AD(A/D Conversion)– RC(USART Receive)– TX(USART Transmit)– SSP(Master Synchronous Serial Port)– CCP1(Capture Compare PWM 1)– OSC(OScillator)– CM(Comparator)– EE(Data EEPROM/Flash Write Operation)– BCL(Bus Collision)– HLVD(High/LowVoltage Detect)– TMR3(Timer3)– CCP2(Capture Compare PWM 2)– USB
46
-
24
相關暫存器
• RCON:重置控制暫存器• INTCON:中斷控制暫存器1 • INTCON2:中斷控制暫存器2• INTCON3:中斷控制暫存器3• PIR1,PIR2:週邊裝置中斷旗號暫存器• PIE1,PIE2:週邊裝置中斷致能暫存器• IPR1,IPR2:中斷優先設定暫存器
47
interrupt source control bits
Each interrupt source has three bits to t l it ti Th f ti fcontrol its operation. The functions of
these bits are:– Flag bit to indicate that an interrupt event
occurred– Enable bit that allows program execution to
branch to the interrupt vector address when the flag bit is set
– Priority bit to select high priority or low priority
48
-
25
高優先中斷及其 ISR 的設定範例
49CHIRKAL
中斷的前置設定
50CHIRKAL
-
26
中斷處理程式 (ISR) 注意事項‧中斷函數無法傳遞參數
‧中斷所使用到的變數需加入 volatile 的宣告‧中斷所使用到的變數需加入 volatile 的宣告
‧中斷函數儘量不要使用 Local 變數,影響中斷響應時間
‧ISR 應越短越好,不要做太多的處理,可以設定Flag 後交給主程式處理
‧許多運算都會用到 tmpdata 節區,若 ISR 中有許多運算都會用到 tmpdata 節區 若 ISR 中有複雜的計算 (乘、除、比較的運算),就必須要save tmpdata 這個節區,避免與主程式的暫存資料相衝突。
‧新版的 C18,會自動儲存 tempdata51
中斷實驗
Lab1 :INT0中斷Lab2 :INT1中斷Lab3 :巢狀中斷Lab4 :多個同層中斷INT1_INT2
52
-
27
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART53
PIC18F 計時器架構
• Timer0:8/16 bit Counter• Timer1:16 bit Counter• Timer2:8 bit Counter及8 bit 週期暫存器• Timer3 :16 bit Counter(同 Timer1)
54
-
28
Timer0
• 8/16 bit Counter (16-bit mode 時,TMR0H 會在讀寫 TMR0L 時才真正的被讀TMR0H 會在讀寫 TMR0L 時才真正的被讀出或寫入 Timer0)
• 3 bit Prescaler(最大預除256)• 外部/內部來源溢位產生中斷• 溢位產生中斷
• 正緣/負緣
55
TIMER0 BLOCK DIAGRAM (8-BIT MODE)
56CHIRKAL
-
29
TIMER0 BLOCK DIAGRAM(16-BIT MODE)
57CHIRKAL
Timer0相關暫存器
58CHIRKAL
-
30
Timer1 • 16 bit Counter(由兩個可讀/寫的 8-bit 計數器串聯而成)• 2 bit Prescaler (預除器有四種選擇 :1, 2,4,or 8最
大預除(
大預除8)• 外部/內部來源• 正緣/負緣• 可由CCP模組重置的特殊事件觸發• 16-bit 模式的計數器或計時器
三種功能:計時器,同步模式計數器 ,非同步模式計數器( 睡眠模式下使用非同步時序喚醒 )( 睡眠模式下使用非同步時序喚醒 )
• 專用石英振盪電路可作為外部計數時序或第二系統時序 ( System Clock ) 選擇
• 當計數器或計時器產生溢位時 FFFFh to 0000h,即產生中斷
59
TIMER1 BLOCK DIAGRAM
60CHIRKAL
-
31
Timer1相關暫存器
61CHIRKAL
Timer 2 • 8 bit Counter• 8 bit 週期暫存器• 8 bit 週期暫存器• 2 bit Prescaler (最大預除16)• 4 bitPostscaler (最大預除16)• 外部/內部來源• 溢位產生中斷當PR2符合TMR2內容產生中斷信號• 當PR2符合TMR2內容產生中斷信號
• MSSP(SPI)模組可選擇使用TMR2輸出產生時序移位脈波
62
-
32
Timer 2• 8-bit 採比較模式的計時器有預除器及後除器之功能• 有預除器及後除器之功能
• TMR2 為一可讀 、寫並具有自動載入功能• 計時器(TMR2)會自動加一並與設定的值 (PR2)相比;若相等則送出訊號至後除器或產生中斷,並自動將計時器 (TMR2) 清除為零,重新計時
• PWM 模式下 是 Period & Duty 的基本頻率• 也可以當成MSSP(SPI) 傳送速率的設定
63
TIMER2 BLOCK DIAGRAM
64CHIRKAL
-
33
Timer2相關暫存器
65CHIRKAL
Timer3
• 16 bit Counter• 2 bit Prescaler (最大預除8)• 外部/內部來源• 溢位產生中斷• 正緣/負緣• 可由CCP模組重置的特殊事件觸發
66
-
34
TIMER3 BLOCK DIAGRAM
67CHIRKAL
Timer3相關暫存器
68CHIRKAL
-
35
CCP MODE – TIMER RESOURCE
69
Timer實驗• Lab1:Timer0 計時(0.524ms)
L b2 Ti 0 計時(0 5 )• Lab2:Timer0 計時(0.5sec)• Lab3:Timer1 計時—0.5sec• Lab4:利用C18函數庫• Lab5:Timer0與INT0中斷• Lab6:Timer0 計數中斷• Lab7:四位數七段多工掃描• Lab8:鍵盤掃描與四位數七段• Lab9:PWM
70
-
36
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART71
ADC• 使用 SAR 的轉換方式 ( 須設定 TAD )
13 組類比轉換多工輸入選擇 10 bit 解析度• 13 組類比轉換多工輸入選擇,10 bits 解析度• 類比輸入取樣時間:2.4 µS (信號源阻抗
-
37
ADC相關暫存器
• A/D Result High Register (ADRESH)• A/D Result Low Register (ADRESL)• A/D Control Register 0 (ADCON0)• A/D Control Register 1 (ADCON1)• A/D Control Register 2 (ADCON2)
73
ADCON0: A/D CONTROL REGISTER 0
74
-
38
ADCON1: A/D CONTROL REGISTER 1
75CHIRKAL
PIC18F4520 ADC 方塊圖
76CHIRKAL
-
39
C18--ADC 函數
• OpenADC • SetChanADC • SelChanConvADC • ConvertADC• BusyADC• ReadADC• CloseADC
77
OpenADC
config1 = ADC_FOSC_32 |ADC RIGHT JUST | ADC 2 TADADC_RIGHT_JUST | ADC_2_TAD ;
config2 = ADC_CH0 | ADC_INT_OFF |ADC_REF_VDD_VSS ;
portconfig = ADC_2ANA ; // analog: AN0->1 and remaining channels are digital// analog: AN0 1 and remaining channels are digital
OpenADC(config1, config2, portconfig);
78
-
40
ADC實驗
Lab1:光敏電阻的電壓顯示在LCDLab2:光線控制步進馬達轉動
79
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART80
-
41
JXD12864-13A LCM內部方塊圖
81CHIRKAL
並列時序圖
82CHIRKAL
-
42
串列時序圖
83
Reset Timing
84CHIRKAL
-
43
模組內部架構圖
85
命令解釋Display ON/OFF
CHIRKAL86
CHIRKAL
-
44
Display Start line Set
CHIRKAL87
CHIRKAL
Page Address Set
CHIRKAL88
CHIRKAL
-
45
Column Address Set
89CHIRKAL
Display Data Write /Read
90CHIRKAL
-
46
接腳介面說明
91CHIRKAL
硬體連接方式(並列方式)
92CHIRKAL
-
47
硬體連接方式(串列方式)
93CHIRKAL
串列模式發送資料
94CHIRKAL
-
48
95
相關副程式
• void delay1ms(int count);• void GLCD_DataSend(unsigned char ByteData);
void GLCD init so64128(void);• void GLCD_init_so64128(void);• void GLCD_wbyte(unsigned char ByteData); //寫入1個BYTE• void GLCD_clear_screen(); //清除繪圖型LCD//在某位置顯示一16*16字型• void GLCD_display_chinese_position(unsigned char *p, unsigned
char page_no, unsigned char y); //在某位置清除一16*16字型• void GLCD_clear_chinese_position(unsigned char page_no,
unsigned char y);unsigned char y); //在某位置顯示一5*7字型• void GLCD_display_number_position(unsigned char *p, unsigned
char page_no, unsigned char y); //在某位置清除一5*7字型• void GLCD_clear_number_position(unsigned char *p, unsigned
char page_no, unsigned char y); 96
-
49
編碼方式
配合Sunpls DM字型轉碼器可將圖形文字轉為數位編碼 其編碼方式可分為U t d數位編碼,其編碼方式可分為Up to down,Left to Right(由上至下,由左至右)以及Down to up,Left to Right (由下至上,由左至右)兩種編碼方式,在以下的範例中將介紹Up to Down ,Left to Right以及Down to Up ,Left to Right的編碼方式。
97
up to down left to right編碼方式
LSB1HSB0
LSB0
1byte 1 3 5 7up to down left to right編碼方式:
由上至下由左至右,因此第1個byte先被編碼出來,接下來為2、3、4…接著編碼,若把16*16點矩陣由中間切開我們
2
HSB1
1byte 4 616*16點矩陣由中間切開我們便能發現上排圖形由字碼1、3、5、7…所構成,下排則由2、4、6、8…所構成。
98
-
50
down to up left to right 編碼方式
2
LSB0HSB1
LSB1
1byte 4 6down to up left to right 編碼方式:
由下至上由左至右,因此第1個byte先被編碼出來,接下來為2、3、4…接著編碼,若把16*16點矩陣由中間切開我們
1 3
HSB0
1byte 5 716*16點矩陣由中間切開我們便能發現上排圖形由字碼2、4、6、8…所構成,下排則由1、3、5、7…所構成。
99
編碼差異
Up to down,Left to Right(由上至下,由左至右)以及DownUp to down,Left to Right(由上至下,由左至右)以及Down to up,Left to Right (由下至上,由左至右)兩種編碼方式的差異在於起始編碼位置不同,由此可知Up to down,Left to Right的編碼方式其位置1、3、5、7…可構成上半截圖型,2、4、6、8…則構成下半截圖形;Down to up,Left to Right則反之其位置2、4、6、8…可構成上半截圖型,1、3、5、7…則構成下半截圖形。下半截圖形
PS:我們所使用編碼方式為Down to Up,Left to Right。
100
-
51
128*64繪圖型LCD ¼圖形解析64 bit
X軸由第0bit
1 2 3 4page0
page1
1byte
1byte
16 bit 16 bit一16*16文字圖形所佔面積Y軸
5 6 7 8page2
page3
由上圖得知我們若欲寫入一16*16文字則起始位置由Y軸page0開始,X軸由第0bit開始,寫完1若欲寫2則X軸由第16bit接續寫入。 101
山-文字圖形編碼文字圖形編碼格式介紹 後
left to rightLSB1
先
down to up 綠色為 0 白色為 1以第二行0x7f為例
0111 1111HSB0
LSB0HSB1
編碼方式以down to up left to right所編出的字碼為:0x00,0x00,0x7f,0xf0,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x7f,0xfe,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x7f,0xf0,0x00,0x00,0x00,0x00
0x7f,0xf00111 1111
102
-
52
山-文字圖形編碼文字圖形編碼格式介紹 後
left to rightLSB0
先
up to down 綠色為 0 白色為 1以第二行0x7f為例
0111 1111HSB1
LSB1HSB0
編碼方式以up to down left to right 所編出的字碼為:0x00,0x00,0x0f,0xfe,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x7f,0xfe,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x0f,0xfe,0x00,0x00,0x00,0x00
0x0f,0xfe0111 1111
103
104
CHIRKAL
-
53
圖形編碼方式
105CHIRKAL
tu.c
106CHIRKAL
-
54
繪圖型LCD實驗
Lab1:一個中文字Lab2:四個中文字Lab3:阿拉伯數字及英文
107
大綱
PIC18F4550 簡介
環境建置
基礎實驗
VB6與PIC18F4550 USB 溝通與實作
108
-
55
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART109
VB初始畫面
• 偵測到USB
110
-
56
VB PIC
111CHIRKAL
HardwareProfile.h
112CHIRKAL
-
57
PIC 端的main
113CHIRKAL
PIC 要處理部份
114CHIRKAL
-
58
輸出入緩衝區
• VB輸出– OutputReportData(128)– SendBuffer()
• VB輸入ReadB ffer()– ReadBuffer()
115
VB要處理部份
116CHIRKAL
-
59
大綱
PIC18F4520/4550 簡介
環境建置環境建置
基礎實驗
PIC中斷架構PIC 計時器架構ADC架構繪圖型LCDVB6與4550溝通與實作
UART117
UART簡介
• PortC.6 for Tx• PortC.7 for Rx• 相關暫存器
– TXSTA, RCSTA, BAUDCON– Baud rate計算
TXREG 傳送暫存器– TXREG 傳送暫存器– RCREG 接收暫存器
118
-
60
UART實驗
Lab1:輪詢式傳送 -- 利用C18函數
Lab2:中斷式接收 -- 低優先權中斷
Lab3:PC端控制LED花樣變化
119
參考資料
• Microchip RTC講義 CCOM3101T v1.1.pdf• http://www.waitingforfriday.com/index.php/
Building_a_PIC18F_USB_device• http://www.rakeshmondal.info/• MPLAB C18 Compiler User’s Guide &
LibraryLibrary• Microchip RTC講義 TLS2118_TW.pdf• http://120.114.77.133/notes/CH-S500/index.htm
120
-
61
謝謝聆聽,敬請指教!!
121