Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
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