شمارنده 3رقمي به زبان اسمبلي COUNTER
20 بهمن, 1388
نقشه پروگرامر سري 8051 100درصد عملي
21 بهمن, 1388بازدیدها: 2
|
1
|
VSS
|
—
|
زمين
|
جدول 1
|
|
2
|
VCC
|
—
|
منبع تغذيه
|
|
|
3
|
VEE
|
—
|
منبع تغذيه منترل درخشندگي
|
|
|
4
|
RS
|
I
|
اگرRS=0 باشد ثبات براي دريافت دستورالعمل انتخاب مي شود. (جدول 2)
اگر RS=1 باشد ثبات براي دريافت داده انتخاب مي شود.
|
|
|
5
|
R/W
|
I
|
نوشتن بر روي LCD يا خواندن از LCD
|
|
|
6
|
E
|
I
|
گذرگاه داده 8 بيتي
|
|
|
7
|
DB0
|
I/O
|
گذرگاه داده 8 بيتي
|
|
|
8
|
DB1
|
I/O
|
||
|
9
|
DB2
|
I/O
|
||
|
10
|
DB3
|
I/O
|
||
|
11
|
DB4
|
I/O
|
||
|
12
|
DB5
|
I/O
|
||
|
13
|
DB6
|
I/O
|
||
|
14
|
DB7
|
I/O
|
||
جدول2
| كد HEX | فرمان دستور العمل | كد HEX | فرمان دستور العمل |
| 1 | پاك كردن صفحه نمايش | E | نمايش روشن مكان نما روشن |
| 2 | بازگشت به مكان اول(شروع) | F | نمايش روشن مكان نما روشن چشمك بزند |
| 4 | كاهش مكان نما (جابجايي مكان نما به چپ) | 10 | جابجايي محل مكان نما به چپ |
| 6 | افزايش مكان نما (جابجايي مكان نما به راست) | 14 | جابجايي محل مكان نما به راست |
| 5 | جابجايي نمايش به راست | 18 | كل صفحه نمايش به چپ جابجا شود |
| 7 | جابجايي نمايش به چپ | 1C | كل صفحه نمايش به راست جابجا شود |
| 8 | نمايش خاموش مكان نما خاموش | C0 | مكان نما به آغاز خط دوم برود |
| A | نمايش خاموش مكان نما روشن | 38 | سازمان دهي 2 خط و ماتريس 5*7 |
| C | نمايش روشن مكان نما خاموش | — | — |
آدرس مكان نما در بعضي از LCD ها (كدها در مبناي هگز مي باشد)
| 8F | تا | 83 | 82 | 81 | 80 | آدرس شروع خط اول | LCD 2*16 |
| CF | تا | C3 | C2 | C1 | C0 | خط دوم | |
| 93 | تا | 83 | 82 | 81 | 80 | خط اول | LCD 1*20 |
| 93 | تا | 83 | 82 | 81 | 80 | خط اول | LCD 4*20 |
| D3 | تا | C3 | C2 | C1 | C0 | خط دوم | |
| 93 | تا | 83 | 82 | 81 | 80 | خط اول | LCD 2*16 |
| D3 | تا | C3 | C2 | C1 | C0 | خط دوم | |
| A7 | تا | 97 | 96 | 95 | 94 | خط سوم | |
| E7 | تا | D7 | D6 | D5 | D4 | خط چهرم | |
| A7 | تا | 83 | 82 | 81 | 80 | خط اول | LCD 2*40 |
| E7 | تا | C3 | C2 | C1 | C0 | خط دوم |
مثال LCD 1*16 برنامه اي بنويسيد كه ال سي دي عبارت MOHSEN GHASEMIAN را بر روي LCD نمايش دهد؟ سخت افزار: پايه هاي ديتا D0-D7 را به پورت ميكروكنترلر 8051 وصل مي كنيم و پايه هاي كنترلي را به صورت زير اتصال مي دهيم: E=P3.2 و R/S=P3.0 البته ما در طراحي سخت افزار آزادايم تا هر پورتي را به هر نحوي كه بخواهيم برنامه ريزي كنيم.MGH ابتدا برنامه را به صورت جزء به جزء مي نويسيم:
برنامه اصلي:
MOV DPTR,#600H
MOV R5,#00H
MOV R7,#80H
LOOP: CALL DATALCD
INC R7
INC R5
CJNE R7,#90H, LOOP
SJMP START
زير برنامه ها:
LCD: MOV A,#01H
CALL WRT
CALL DELAY
MOV A,#0EH
CALL WRT
CALL DELAY
RET
DATALCD: MOV A,R7
CALL WRT
CALL DELAY
MOV A,R5
MOVC A,@A+DPTR
CALL DATAWRT
CALL DELAY
RET
WRT: MOV P2,A
CLR P3.0
SETB P3.2
CLR P3.2
RET
DATAWRT: MOV P2,A
SETB P3.0
SETB P3.2
CLR P3.2
RET
DELAY: MOV R3,#08FH
MGH1: MOV R4,#0FFH
MGH2: DJNZ R4,MGH2
DJNZ R3,MGH1
RET
ORG 600H
"DB "MOHSEN GHASEMIAN
END
توضيح: زير برنامه LCD با توجه به اعدادي كه در جدول 2 گفته شده برنامه ريزي شده وظيفه اين زير برنامه پاك كردن صفحه نمايش است.MGH زير برنامه :DATALCDوظيفه اين زير برنامه اين است كه به حافظه ROM ميكرو رفته و با توجا به آدرس هاي كه ما به او ميدهيم اطلاعات اين خانه ها براي فرستادن به LCD از حافظه مي آورد. نكته هر بار وفقط يك خانه 8 بيتي كه معادل يك كاراكتر است را براي ما مي آورد پس ما بايد به تعدا كاراكتر هاي LCD اين برنامه تكرار نمايم كه در اين مثال با توجه به جدول خانه اولي يعني 80H را در R7 قرار داديم و به كمك يك دستور مقايسه اين زير برنامه را 16 بار تكرار مي كنيم تا جمله را براي ما بنويسد.MGH زيربرنامهWRT: وظيفه اين زير برنامه با توجه به جدول2 ثبات RS ال سي دي را صفر مي كند و اين بدين معني است كه LCD را براي گرفتن دستور العمل آماده مي كند.MGH زيربرنامهDATAWRT: وظيفه اين زير برنامه با توجه به جدول2 ثبات RS ال سي دي را يك مي كند و اين بدين معني است كه LCD را براي گرفتن ديتا آماده مي كند.(يك عدد كاراكتر)MGH زيربرنامهDELAY:اين زير برنامه برنامه تاخيري مي باشد كه در اصل مي توان با آن سرعت نوشت كاراكتر ها را تنظيم كرد.MGH مثال LCD 2*20 برنامه اي بنويسيد كه در خط اول عبارت MOHSEN GHASEMIN را بنويسد و در خط دوم عبارت WWW.PICPARS.COM را بنويسد؟ برنامه طبق مثال قبلي مي باشد و تنها دو زير برنامه به آن اضافه شده كه عبارت اند از: يك زير برنامه اي براي سازمان دهي LCD دوخطي. و زير برنامه دوم براي نوشتن روي خط دوم LCD مي باشد!MGH
برنامه اصلي:
START: CALL LINE1
CALL LCD
MOV DPTR,#600H
MOV R5,#00H
MOV R7,#80H
WRFAST8: CALL DATALCD
INC R7
INC R5
CJNE R7,#94H,WRFAST8
CALL LINE2
MOV DPTR,#700H
MOV R5,#00H
MOV R7,#0C0H
WRFAST9: CALL DATALCD
INC R7
INC R5
CJNE R7,#0D0H,WRFAST9
SJMP START
زير برنامه ها:
LCD: MOV A,#01H
CALL WRT
CALL DELAY
MOV A,#0EH
CALL WRT
CALL DELAY
RET
DATALCD: MOV A,R7
CALL WRT
CALL DELAY
MOV A,R5
MOVC A,@A+DPTR
CALL DATAWRT
CALL DELAY
RET
WRT: MOV P2,A
CLR P3.0
SETB P3.2
CLR P3.2
RET
DATAWRT: MOV P2,A
SETB P3.0
SETB P3.2
CLR P3.2
RET
DELAY: MOV R3,#08FH
MGH1: MOV R4,#0FFH
MGH2: DJNZ R4,MGH2
DJNZ R3,MGH1
RET
LINE1: MOV A,#38H
CALL WRT
CALL DELAY
MOV A,#0EH
CALL WRT
CALL DELAY
MOV A,#80H
CALL WRT
CALL DELAY
RET
LINE2: MOV A,#38H
CALL WRT
CALL DELAY
MOV A,#0EH
CALL WRT
CALL DELAY
MOV A,#0C0H
CALL WRT
CALL DELAY
RET
ORG 600H
DB "MOHSEN GHASEMIAN"
ORG 700H
DB "WWW.PICPARS.COM"
END
