C8051F310
יואל כהן ואבי חיון:מנחים
http://site.2all.co.il/hayun/
מבנה הרכיב
♦
High speed 8051 µc core
¾ 70%מההוראות מתבצעות במחזור אחד או שניים מחזורי מכונה
¾ עד (Mega Instruction Per Second) 25 MIPSבתדר 25MHz
♦
Analog- Peripherals
♦
Digital I/O
¾ 29 PORT I/Oהמתואמים ל-
5v
תקשורת טורית –
¾ ק
uart,spi,smb
¾ 4טימרים
¾ PCA 5
¾ תכנות חיבור הפורטים-
crossbar
Analog-to-Digital
¾ 10 ADCסיביות
¾ עד 200KSPS
)(Kilo Sample Per Second
¾ עד 21כניסות אנלוגיות
בודדות או דיפרנציאליות
חיצוני או VDD
¾ Vrefח צונ
¾ חיישן טמפ' build in
משווים
משווים
ם
¾ 2משוו
¾ עם תכנות היסטרזיס וזמן
תגובה
¾ יכולים להיות מתוכנתים
כגורמי פסיקה
♦
On-Chip Debug
¾ Break points
¾ Single stepping
אבי חיון ויואל כהן
♦
Clock source
24.5MHzדיוק
¾ פנימי של 24 5MHz
2%
¾ חיצוני –גביש C,RC ,או
מחולל
♦
זכרון
¾ -16KB Flashתוכנית
¾ 256 +1024 –Ram
♦
מתח הפעלה
¾ 2 7 3 6v
2.7-3.6v
http://site.2all.co.il/hayun/
2
מאפיינים
Smallest ♦
3.6v עד2.7v ¾ מתח עבודה
(P0-8,P1-8,P2-8,P3-5
P0 8 P1 8 P2 8 P3 5)I/O פיני פורט29 – פינים32 ¾
Hi h speed
High
d 8051 µc core ♦
מההוראות מתבצעות במחזור אחד או שניים מחזורי70% ¾
מכונה
(בת רMega Instr
בתדר
Instruction
ction Per Second) 25 MIPS ¾ עד
25MHz
http://site.2all.co.il/hayun/
3
אבי חיון ויואל כהן
Configuration
http://site.2all.co.il/hayun/
4
אבי חיון ויואל כהן
Crossbar
♦
חלק מהפורטים
עוברים דרך מטריצת
חיבורים הניתנים
לתכנות ע"י מילות
בקרה
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
5
תכנות PORT I/O
A
♦ כל I/O PORTיכול להיות מתוכנת ל:
¾
¾
¾
¾
Open collector
Push- pull
Push
עם נגד pull-upפנימי ) הערה :לכל הפורטים(
כניסה אנלוגית
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
6
נתונים טכניים של PORT I/O
♦ ניתן להגיע לזרם מוצא במצב 1לוגי ל10mA-
IOH=10mA
OH 10 A
♦ במצב 0ללוגי זרם מוצא עד 25 A
25mA
IOL=25mA
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
7
חיבור לרכיבים הפועלים במתח 5v
♦ פורט של המעבד מסוגל לעמוד במתח של , 5vלכן פורט המשמש ככניסה מקבל את
הרמות הלוגיות הנדרשות כאשר הוא עובד עם רכיבי 5V
♦ פורט המשמש כמוצא מספק קרוב ל 0v-במצב 0לוגי ו 3v-במצב 1לוגי ,לכן צריך
לבדוק אם הרכיבים של 5vעומדים בתנאים הלוגים ובחסינות לרעש.
♦ במקרה ולא ניתן לתאם בין המעבד של 3vלבין רכיבי 5vע"י חיבור במצב open
) collectorקיימת אפשרות זו ע"י תכנות( עם נגד חיצוני
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
8
Oscillators
♦ ניתן לתכנות ע"י אוגרי בקרה
¾
¾
¾
CKפנימי או חיצוני
חיצוני
ש ,נגד-קבל ,קבל או מחולל ח צונ
גביש
חיצוני – גב
חבור ח צונ
CKפנימי ניתן לחלוקה ע"י מילת בקרה
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
9
On – Chip Debug
תקשורת עם הרכיב ע"י 2חוטים ) (C2להורדה והרצת התוכנית
♦ ק
♦ אפשרות להרצה בודדת – Single Step
♦ נקודות עצירה – Break Points
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
10
כרטיס הפיתוח C8051F310-DK -
LEDהמחובר לP3.3 -
חיבור לפורטים
לחצן המחובר לP0.7 -
חיבור טורי
משטח עבודה
MAX232
חיבור לDEBUG-
מייצב ל3V-
מעבד
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
11
סכימה חשמלית של הכרטיס
12
בניית פרויקט בעזרת תוכנות Ride7וConfig -
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
13
הרצת תוכנית ראשונה
♦ ניסוי הדגמה ראשון עם הכרטיס
♦ קלט -לחצן ופלט – LED
♦ הלחצן וה LED -מחוברים בכרטיס
♦ נכתוב תוכנית ב C -להבהוב ה LED-כל עוד הלחצן לחוץ
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
14
שלבי בניית קובץ project
.1פתיחת תוכנות הידור RIDE7ואתחול הרכיב config2
1
.2ע"י תוכנת config2נגדיר את מילות הבקרה לרכיב ,שייכתב לקובץ
unit310.c
.3נכתוב קובץ ב C -הכולל את הmain -
3
.4נצרף את שני הקבצים לproject -
.5נבצע הידור
ת ע"י ה DEBUGER -ע"י RIDE7
התוכנית
נריץץ את התוכנ
.6נר
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
15
תוכנית בשפת C
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
16
כתיבת פרויקט הכולל מספר קבצים
♦ הרעיון הוא לצרף קבצים קיימים המכילים פונקציות
Project
מכיל פונקציות
Fun1_file.c
Main
a _file.c
ec
Fun1_file.h
מכיל פונקציית
)(Init_Device
init310.c
Fun2_file.c
Fun2 file h
Fun2_file.h
מכיל הכרזה על
הפונקציות
והגדרת פורטים
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
17
פונקציות שונות
: מכילlcd_p.h
lcd p h ♦ קובץ
lcd_config();
// LCD אתחול
lcd_line(1,10);
// 10 במיקום1 הצבת סמן בשורה
lcd_string("abcd1234");
// הצגת מחרוזת במסך
cursor(0);
//cursor off
cursor(1);
//cursor on
lcd_clr();
// נקה מסך
lcd_display(‘x’);
// הצג תו
msec מכיל השהיה ללפי
ל
wait_msec.c
it
♦ קובץ
void T0_Wait_ms (unsigned int ms)
cm - מכיל מדידת מרחק בultrasonic.c
ultrasonic c ♦ קובץ
int read_distance()
(255 עד-255) PWM לפי ערךDC מכיל ויסות מהירות מנועmotor_pwm.c ♦ קובץ
motor_left(int pwm)
motor_right(int pwm)
http://site.2all.co.il/hayun/
18
אבי חיון ויואל כהן
LCD תוכנית להפעלת
#include <c8051f310.h>
#include <stdio.h>
// for sprintf
#include "lcd_p.h"
// for lcd function
extern Init_Device(); // init 310
[ ];
// use for LCD & sprintf
p
char str[30];
main()
{
float x=17.5;
x=17 5;
Init_Device();
lcd_config();
// init LCD
lcd_line(1,0);
// line 1 place 0
lcd_string(" ava nagila
");
lcd_line(2,0);
sprintf(str,"x=%2.2f x/2=%2.2f ",x,x/2);
lcd string(str);
lcd_string(str);
while(1);
}
http://site.2all.co.il/hayun/
19
אבי חיון ויואל כהן
סיביות10 ADC - ממיר אנלוגי לדיגיטלי
V+
VREF
Reference
Voltage
AIN
Digital Output
ADC
GroundReferenced
Input Signal
Output = (VIN / VREF) x 2N
Input Voltage
Output Code (10-bit)
>= VREF
1023 (0x03FF)*
VREF – 1 LSB
1023 (0x03FF)
½ VREF
512 (0x0200)
¼ VREF
256 (0x0100)
0V
0 (0x0000)
http://site.2all.co.il/hayun/
20
חיבור מתח כניסה אחד
המיוחס לאדמה
אבי חיון ויואל כהן
כניסה דיפרנציאלית
V+
VREF
AIN+
+
-1V
-
1V
AIN-
Digital Output
ADC
2V
Input Voltage
Output Code
(10 bit sign
(10-bit,
i extended)
t d d)
>= VREF
511 (0x01FF)*
VREF – 1 LSB
511 (0x01FF)
½ VREF
256 (0x0100)
0V
0 (0x0000)
- ½ VREF
-256 (0xFF00)
-VREF
-512 (0xFE00)
< -VREF
-512 (0xFE00)*
http://site.2all.co.il/hayun/
21
ערך המידע הדיגיטלי מקבל
ערכים חיובים ושלילים לפי הפרש
המתחים
אבי חיון ויואל כהן
דיאגראמת הממיר
♦ המידע האנלוגי עובר דרך MUX 2אנלוגיים הניתנים לתכנות ע"י מילות בקרה
♦ הכניסות של ה MUX-מתחברות לפורטים שונים ,חישן טמפ' פנימי ,אדמה,VREF ,
VDD
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
22
דוגמא לתכנות הADC -
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
23
זמנים בADC -
♦ התחלת המרה ע"י דגל או אחד הטיימרים
♦ זמן המרה שווה ל 10-פולסי שעון +זמן עקיבה
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
24
הרצת תוכנית עם ה ADC0 -לחיישן טמפ' LM35
נקבע:
Configק
♦ בעזרת תוכנת g
.1אפשור הממיר – Enable ADC0
.2התחלת המרה ע"י דגל AD0BUSY
.3קביעת כניסות ה , ADC-כניסה חיובית ל P1.7-וכניסה שלילית לאדמה
(3
של 3MHz
תדר ש
לעבור ת
אסור ע
) ADCס
של הC-
שעוןן ש
תדר שע
קובעים ת
.4ק ע
.5קובעים את Vrefל(3.3v) VDD -
תA
אנלוגית
סה P1.7אנלוג
הכניסה
קובעים את הכנ
.6קובע ם
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
25
פונקצית הADC0-
♦ פונקציה להפעלת הממיר
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
26
משווים
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
27
היטרזיס )חשל(
4דגלים של רגיסטרים
CPT0CN,CPT1CN
קובעים את ההיסטרזיס
ק
החיובי והשלילי בערכים:
0
5mv
10mv
20mv
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
28
זמני תגובה של המשווים
זמני תגובה נעים בין 100nsecועד 5200nsecתלוי במוד העבודה
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
29
טיימרים
♦ 4טימרים במצבי עבודה שונים
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
30
Timer0 and Timer1 mode0
אבל עם 16סיביות
modeהמונה עובד באותה צורה ,ל
♦ בd 1 -
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
31
Timer0 and Timer1 mode2 - autoreload
http://site.2all.co.il/hayun/
32
אבי חיון ויואל כהן
Only Timer0 mode3
♦ קיים בטיימר 0בלבד 2 ,מונים של 8סיביות המופעלים ע"י TR0,TR1
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
33
תוכנית – שימוש בטיימר להשהיה לפי msec
♦ נעבוד עם טיימר 0במוד עבודה של TMODE=0X01 16bit
♦ תדר השעון של המונה = תדר השעון מחולק ב12 -
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
34
שימוש בטיימר להשהיה של msec
♦ פונקצית השהייה בmsec -
טיימר 0נטען בערך T0=-2041
כלומר 2041מחזורי שעון של 0.49usecשנותן כמעט 1msec
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
35
L293D דוחף מנוע
4.5v-36v vcc2 ♦ מתח
600mA ♦ זרם מוצא עד
Vcc2
Q1
Q3
D1
D3
MOTOR
Q4
Q2
D2
http://site.2all.co.il/hayun/
36
אבי חיון ויואל כהן
D4
PWM 8 Bit
עבור מצב של חלוקה פי 12של תדר השעון נקבל תדירות PWM
Fpwm=24.5M/(12*256)=7975Hz
p
(
)
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
37
PWM קביעת
http://site.2all.co.il/hayun/
38
אבי חיון ויואל כהן
PWM פונקציה
ערך חיוביpwm=100 דוגמא עבור
PCA0CPH0=100
sbit PHASE
PHASE_MOTOR=P0^3;
MOTOR=P0^3;
motor(int pwm)
{
if(pwm>=0)
{
PCA0CPH0=pwm;
PHASE_MOTOR=1;
}
else
{
PCA0CPH0=pwm;
PHASE_MOTOR=0;;
}
}
http://site.2all.co.il/hayun/
39
אבי חיון ויואל כהן
PWM פונקציה
ערך שליליpwm= - 100 דוגמא עבור
PCA0CPH0=-100=256-100=156
PCA0CPH0
100 256 100 156
sbit PHASE_MOTOR=P0^3;
motor(int pwm)
{
if(pwm>=0)
{
PCA0CPH0=pwm;
PHASE MOTOR=1;
PHASE_MOTOR=1;
}
else
{
PCA0CPH0=pwm;
PHASE_MOTOR=0;
}
}
http://site.2all.co.il/hayun/
40
אבי חיון ויואל כהן
PWM 16 Bit
נקבל תדירות PWM
ל
חלוקה
ללא ל
עבור מצב שלל תדר השעון לל
Fpwm=24.5M/(65536)=373Hz
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
41
חישן אולטרסוניק SRF05
מהירות הקול באוויר היא 344m/sec :לכן הזמן שלוקח לגל הלוך וחזור
2 / 0 02/344 58
2x/v=0.02/344=58usec
1cmהוא:
1
עבור
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
42
פונקצית חישן אולטרסוניק
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
43
I2C BUS
I2C=Inter Integrated Circuit Bus
SDA - Serial Data line
SCK - Serial Clock line
: ♦ קוים
:♦ קצבים
Standard Mode -100Kbit/sec ¾ עד
Fast Mode - 400Kbit/sec ¾ עד
High-Speed Mode -3.4Mbit/sec
3 4Mbit/sec ¾ עד
http://site.2all.co.il/hayun/
44
אבי חיון ויואל כהן
פרוטוקול I2C
ולאחר מכן SCL
התחלת התקשורת – ) SDA START(Sיורד ל
ל
♦
♦ MASTERשולח כתובת הרכיב בגודל 7סיביות +ביט ’R/W
♦ ה MASTER-מקבל אישור ACK=0מהSLAVE-
♦ ה MASTER -קורא או כותב ל SLAVE-לפי ביט שנשלח ’R/W
♦ סיום התקשורת – )SCL STOP (Pעולה ולאחר מכן SDA
♦ במידה ויש המשך תקשורת ה– MASTERשולח )Repeated START (Sr
45
דוגמאות לרכיבי I2C
♦ PCF8591
סות D/A +
כניסות
4 A/Dכנ
♦ DS1621
רכיב טמפ' וטרמוסטט
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
46
RTC רכיב שעוןDS1307
47
http://site.2all.co.il/hayun/
אבי חיון ויואל כהן
מבנה הרכיב
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
48
DS1307 קריאה וכתיבה מהרכיב
♦ Data Write—Slave Receiver Mode
♦ Data Read—Slave Transmitter Mode
49
http://site.2all.co.il/hayun/
אבי חיון ויואל כהן
קולט ומשדרSLAVE -קריאה
♦ Data Read (Write Pointer, Then Read)—Slave Receive
and Transmit
50
http://site.2all.co.il/hayun/
אבי חיון ויואל כהן
שיטת התקשורת של המעבד C8051F310
♦
♦
♦
♦
טיימר 2משמש כמבוא שעון של התקשורת )אפשרי גם טיימר 0ו( 1-
טיימר 3משמש לזיהוי מצב שבו SCLנמצא זמן רב במצב 0לוגי)תקוע(
מלת
ולפי ל
שלב ל
המתקבלת אחרי כלל ל
ל
(i t
(interrupt
התקשורת משתמשת בפסיקה )t 7
סטאטוס ) (SMBOCNמתקדמים לשלב הבא )מכונת מצבים(
קובע פעולת הSMB -
רגיסטר SMBOCFק
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
51
פרוטוקול שליחה וקבלה של המעבד (MASTER) C8051F310
♦ MASTERשולח נתונים לSLAVE-
♦ MASTERמקבל נתונים מהSLAVE -
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
52
פונקציות לקריאה וכתיבה מהרכיב DS1307
פונקצית שליחת מידע לשעון DS1307
)void SMB_ByteWrite(unsigned char addr, unsigned char dat
♦ -addrכתובת ה RAM-הפנימי
♦ -datמידע הנשלח ל) RAM-תאריך ,שעה ,בקרה ,נתונים כללים(
פונקצית קריאת מידע מהשעון DS1307
)unsigned char SMB_ByteRead(unsigned char addr
♦ -addrכתובת ה RAM-הפנימי
♦ הפונקציה מחזירה נתון מה RAM-כמו שעה ותאריך
אבי חיון ויואל כהן
http://site.2all.co.il/hayun/
53
© Copyright 2025