PIC Micro Controller টিউটোরিয়াল [পর্ব-০৭] :: LCD আদি অন্ত…।

দৈনন্দিন জীবনের ব্যস্ততা বেড়ে গেছে বহুগুনে, টেকটিউনসে লেখার জন্য সময় বের করা এখন আরও বেশি দুস্কর। আমার গত টিউন আর এই টিউনের মাঝে সময় ব্যবধান মনে হয় একটু বেশি হয়ে গেল। তাই বলে লেখা নিশ্চয়ই থেমে থাকবে না। হয়ত একটু দেরি হবে......।

যাই হোক আজকে আমরা কিভাবে Alphanumeric LCD চালনা করতে হয় তা দেখব। বাজারে বিভিন্ন ধরনের Alphanumeric এলসিডি পাওয়া যায়, এর মধ্যে সবচেয়ে বেশি ব্যবহৃত হয় 16x2 এলসিডি ডিসপ্লে। এখানে 16x2  বলতে বোঝানো হয়েছে, এই এলসিডিতে মোট দুইটি লাইন আছে এবং প্রতিটি লাইনে ১৬টি করে character প্রদর্শন করা যায়। তার মানে বুঝতেই পারছেন, এই LCD দিয়ে শুধুমাত্র বিভিন্ন ধরনের character প্রদর্শন করানো যাবে। কোন ধরনের ছবি আঁকাআঁকি এখানে সম্ভব না। character সংখ্যা বিভিন্ন ধরনের যেমন, 8, 16, 20, 24, 32, 40এবং লাইন সংখ্যা, 1, 2, 4রকমের হতে পারে। কি কি character প্রদর্শন করা যাবে তা আমি পরবর্তীতে বলব। এলসিডিগুলোর চেহারা নিচে থেকে দর্শন করে নেয়া যাক।

আমি আজকে যে এলসিডি নিয়ে আলোচনা করব সেটিতে Hitachi HD44780 এর compatible chip ব্যবহার করা হয়েছে। Hitachi HD44780 এর সাথে এই এলসিডির তেমন কোন পার্থক্য নাই।

আমাদের এলসিডি এর পিন সংখ্যা 16। যার মধ্যে 8টি ডাটা লাইন, তিনটি কন্ট্রোল লাইন, তিনটি পাওয়ার লাইন, এবং দুইটি পিন LED কে পাওয়ার দেয়ার জন্য। চলুন কোনটা কোন পিন দেখে নেয়া যাক।

কোন পিন কোন কাজ করতেছে তার একটা ছক নিচে দেয়া হল।

পিন নাম্বার

পিনের নাম

পিনের কাজ

1

VSS

গ্রাউন্ড পিন

2

VDD

পজেটিভ ভোল্টেজ সাপ্লাই

3

VEE

এলসিডি এর কনট্রাস্ট এডজাস্ট পিন

4

RS

রেজিস্টার সিলেক্ট পিন

5

R/W

Read/ Write সিলেক্ট পিন

6

E

Enable পিন

7

D0

Data Bit 0

8

D1

Data Bit 1

9

D2

Data Bit 2

10

D3

Data Bit 3

11

D4

Data Bit 4

12

D5

Data Bit 5

13

D6

Data Bit 6

14

D7

Data Bit 7

15

LED+

LED এর পজেটিভ সাপ্লাই

16

LED-

LED এর নেগেটিভ সাপ্লাই

1 নাম্বার পিনটি এলসিডি এর গ্রাউন্ড পিন। জিরো ভোল্ট বা প্রাউন্ডের সাথে এই পিনের সংযোগ দিতে হবে।

2 নাম্বার পিন এলসিডি এর পজেটিভ সাপ্লাই পিন। এলসিডি সাধারণত 5 Volt এ চলে। তবে 6 Volt বা 4.5 Volt এ এলসিডি চলতে পারে। কোন কোনটার ক্ষেত্রে তো 3 4.5 Volt ই যথেষ্ট। এলসিডি এর কারেন্ট কঞ্জাম্পসন খুবই কম, মাত্র কয়েক মিলি আম্পিয়ার।

3 নাম্বার পিন হচ্ছে এলসিডি এর কনট্রাস্ট পিন। এই পিনের মাধ্যমে এলসিডি এর কনট্রাস্ট পরিবর্তন করা যায়। কনট্রাস্ট পরিবর্তন করতে এই পিনে বিভিন্ন ভোল্টেজ প্রয়োগ করতে হয়। সাধারণত সাপ্লাই ভোল্টেজ কে একটি ভেরিয়েবল রেজিস্টর দিয়ে ভোল্টেজ ডিভাইড করে এই পিনের সাথে যুক্ত করা হয়। এতে  ভেরিয়েবল রেজিস্টর ঘুরিয়ে ইচ্ছা মত কনট্রাস্ট পরিবর্তন করা যায়।

4 নাম্বার পিনটিকে বলা হয় রেজিস্টার সিলেক্ট পিন। Alphanumeric LCD তে যে তিনটি কন্ট্রোল পিন রয়েছে এই পিনটি তার প্রথম পিন। এই পিনটিকে যদি low অর্থাৎ 0 ভোল্ট প্রয়োগ করা হয় তবে,  এলসিডি command মোডে থাকবে। মানে এলসিডি এর সেটিং পরিবর্তিত হবে। আর এই পিনটিকে যদি high অর্থাৎ 5 Volt প্রয়োগ করা হয় তবে এলসিডি বিভিন্ন character প্রদর্শন মোডে থাকবে।

এলসিডি এর 5 নাম্বার পিনটি হচ্ছে R/W বা Read/Write পিন। এই পিনটি এলসিডি এর দ্বিতীয় কন্ট্রোল পিন।  এলসিডিতে কোন command বা Character লিখতে এই পিনটিকে low অর্থাৎ 0 ভোল্ট প্রয়োগ করতে হয়। আর এলসিডি থেকে কোন কিছু read করতে এই পিনকে high অর্থাৎ  5 Volt প্রয়োগ করতে হয়।

6 নাম্বার পিনটি হচ্ছে Enable পিন। এই পিনটি এলসিডি এর দ্বিতীয় কন্ট্রোল পিন। এলসিডির ডাটা লাইনে ডাটা Send করলেই এলসিডি তা গ্রহন করবে না যতক্ষণ পর্যন্ত না এই পিনটিকে High থেকে Low করা হচ্ছে। একইভাবে এলসিডি থেকে কোন ডাটা Read করা যাবে না যতক্ষণ না এই পিনটি Low থেকে High হচ্ছে।

7 নাম্বার পিন থেকে 14 নাম্বার পিন পর্যন্ত এই 8 টি(D0-D7) পিন হচ্ছে এলসিডি এর ডাটা লাইন। এই পিনগুলোর মাধ্যমে 8 বিট ডাটা এলসিডি তে পাঠানো বা এলসিডি থেকে গ্রহন করা যায়। এই এলসিডিকে 4(Two nibble) Bit মোডেও চালানো যায়। সেক্ষেত্রে D4 থেকে D7 এই চারটি পিন ব্যবহার করতে হবে।

এবার এলসিডি নিয়ে মজার কিছু এক্সপেরিমেন্ট করা যাক। যাদের কাছে এলসিডি আছে তারা সরাসরি এক্সপেরিমেন্ট করতে পারেন অথবা Proteus এ সিমুলেশন করতে পারেন। Proteus সম্পর্কে আমি আমার চতুর্থ টিউটোরিয়ালে বিস্তারিত বলেছি।

তাহলে  চলুন নিচের সার্কিটের মত কানেকশন দিয়ে ফেলি।

Vss  এবং VDD পিন দুইটি সরাসরি যুক্ত করুন যথাক্রমে গ্রাউন্ডের এবং 5 ভোল্টের সাথে । VEE পিনটি একটি ভেরিয়েবল রেজিস্টরের সাথে চিত্রের মত করে কানেকশন দিন। RW পিনটি গ্রাউন্ড করা হয়েছে কারন আমরা এলসিডি থেকে কোন ডাটা রিড করব না বরং শুধুমাত্র রাইট করব। তাই RW পিনকে সবসময় low করে রাখা জরুরী। এছাড়া RW, E, D0 থেকে D7 এই দশটি পিনকে 4.7k ohm এর রেজিস্টর দিয়ে 5V এর সাথে যুক্ত করে pull high করা আছে এবং প্রতিটি পিনকে একটি সুইচের মাধ্যমে গ্রাউন্ড করা আছে। সুইচ On করলে পিনটি low অর্থাৎ  logical 0 এবং সুইচ Off করলে পিনটি high অর্থাৎ  logical 1 হবে। উপরের ছবিতে খেয়াল করে দেখুন Enable(6 number pin) এর সাথে যে সুইচটি ব্যবহার করা হয়েছে সেটি অন্যগুলো থেকে ভিন্ন। বাকি সুইচগুলো latched type অর্থাৎ প্রেস করলে অন হবে এবং আবার প্রেস করলে অফ হবে। আর Enable সুইচটি momentary action type অর্থাৎ প্রেস করলে অন হবে এবং ছেড়ে দিলে আবার একা একাই অফ হয়ে যাবে অনেকটা কলিং বেলের সুইচের মত। Enable পিনে এই ধরনের সুইচ ব্যবহারের কারন হচ্ছে, এলসিডি ডাটা ট্রান্সফার করে শুধুমাত্র এই পিনের high থেকে  low অথবা  low থেকে high ট্রাঞ্জিসনের সময়।

D0 থেকে D7 এই আটটি সুইচকে এমনভাবে বসাবেন যেন Most significant Bit (MSB) অর্থাৎ D7 বামে এবং least significant bit অর্থাৎ D0 ডানে থাকে।

এবার এলসিডিটি অন করা যাক।

Proteus এ Play Button চেপে simulation start করলেই এলসিডি অন হয়ে যাবে। যদি বাস্তবে এলসিডি নিয়ে কাজ করেন তবে কনট্রাস্ট এর ব্যপারে খেয়াল রাখতে হবে। বাস্তবে এলসিডি অন হওয়ার সাথে সাথে প্রথম লাইনে কতগুলো কালো বক্স প্রদর্শন করে। কোনকিছু প্রদর্শনের আগে প্রথমে এলসিডিকে কনফিগার করে নিতে হয়। কনফিগার করতে এলসিডিতে কিছু initialization command পাঠাতে হবে। এই কাজের জন্য এলসিডিকে command মোডে নেয়া প্রয়োজন। আমি আগেই বলেছি RS পিনের মাধ্যমে এলসিডির মোড পরিবর্তন করতে হয়। RS পিনটিতে 0 পাঠালে এলসিডি command মোডে এবং 1 পাঠালে এলসিডি Character মোডে পরিবর্তিত হয়। তাহলে এলসিডিতে command পাঠাতে RS সুইচকে অন করে RS পিনে logical 0 পাঠান। এবার আমরা D0 থেকে D7 পিনে ‘00001111’ ডাটা পাঠাবো। এর জন্য আপনাকে LSB এবং MSB এর পজিশন মেনে সুইচগুলো অন অথবা অফ করতে হবে।  ‘00001111’ ডাটা পাঠানোর জন্য কোন কোন সুইচ অন অথবা অফ রাখতে হবে তার একটা টেবিল নিচে দিয়ে দিলাম।

D7

D6

D5

D4

D3

D2

D1

D0

0

0

0

0

1

1

1

1

ON

ON

ON

ON

OFF

OFF

OFF

OFF

প্রয়োজনীয় সুইচ অন/অফ করা হয়ে গেলে এবার enable সুইচটি প্রেস করে ছেড়ে দিন।

এলসিডিতে কি কিছু দেখা যাচ্ছে!!! যদি কোন ভুল না করেন তবে এলসিডি এর বামে উপরের লাইনে কার্সার লাফাতে থাকবে। এলসিডি initialize করা হয়েছে।

এবার কিছু character লেখা যাক।  character লিখতে RS সুইচটিকে অফ করে RS পিনে logical 1 পাঠিয়ে এলসিডিকে character মোডে নেয়া যাক। অবশ্যই মনে রাখবেন, command মোডে এলসিডি কোন কিছু প্রদর্শন করবে না। সেটিং দিতে RS পিনকে 0 এবং Character লিখতে RS পিনকে অবশ্যই 1 করতে হবে। আমি এরপরে RS পিনকে কি করতে হবে তা  বলবনা, আপনাকে নিজে নিজে বুঝে নিতে হবে। যাই হোক এখন ডাটা লাইনে ‘01000001’ পাঠিয়ে enable সুইচটি প্রেস করে ছেড়ে দিন। BINGO!!!!  এলসিডিতে ‘A’ বর্নটা লেখা হয়ে গেছে তাইনা। এবার তো মিষ্টি খাবার পালা।

আপনারা এলসিডিতে ডাটা কিভাবে পাঠাতে হয় তা নিশ্চয়ই বুঝতে পারছেন।

Initialize করার জন্য প্রয়োজনীয় ডাটার একটা ছক নিচে দেয়া হল। আমি পরবর্তীতে এই টেবিলকে প্রয়োজন অনুসারে ভেঙ্গে ভেঙ্গে আলোচনা করব।

LCD Command Control Codes

Command

Binary

Hex

D7

D6

D5

D4

D3

D2

D1

D0

Clear Display

0

0

0

0

0

0

0

1

01

Display and Cursor Home

0

0

0

0

0

0

1

x

02 or 03

Character Entry Mode

0

0

0

0

0

1

I/D

S

01 to 07

Display On/Off and Cursor

0

0

0

0

1

D

U

B

08 to 0F

Display/Cursor Shift

0

0

0

1

D/C

R/L

x

x

10 to 1F

Function Set

0

0

1

8/4

2/1

10/8

x

x

20 to 3F

Set CGRAM Address

0

1

A

A

A

A

A

A

40 to 7F

Set Display Address

1

A

A

A

A

A

A

A

80 to FF

I/D:1=Increment*0=Decrement
S:1=Display Shift On0=Display Shift off*
D:1=Display On0=Display Off*
U:1=Cursor Underline On0=Cursor Underline Off*
B:1=Cursor Blink On0=Cursor Blink Off*
D/C:1=Display Shift0=Cursor Move
R/L:1=Right Shift0=Left Shift
8/4:1=8 bit interface*0=4 bit interface
2/1:1=2 line mode0=1 line mode*
10/7:1=5x10 dot format0=5x8 dot format*

*=initialization setting

x=don't care

আমি একটু আগে initialize করার জন্য উপরের টেবিলের Display On/Off and Cursor command  ব্যবহার করেছি। Display On/Off and Cursor  লাইনে D, U, B বলতে কি কি বোঝানো হয়েছে তা টেবিলের নিচের অংশে দেয়া আছে। যেমন, B:  1 = Cursor Blink On; 0 = Cursor Blink Off* এর মানে হচ্ছে B এর জায়গায় 1 দিলে Cursor Blink করবে আর 0 দিলে Cursor Blink করবে না, এরপর U এর জায়গায় 1 বসালে Cursor এর নিচে Underline হবে আর 0 দিলে হবে না এরকম। এখানে  * চিহ্ন দ্বারা বোঝানো হয়েছে এগুলো initialization setting. এছাড়া X হচ্ছে Don’t Care অর্থাৎ এখানে 0 বা 1 যাই দেন না কেন ব্যপার একই, কোন সমস্যা নাই।

খুব কাছ থেকে যদি এলসিডির Pixel গুলো খেয়াল করেন তাহলে দেখতে পাবেন তাতে, 5x8 টি ডট আছে আবার কোন কোন ডিসপ্লেতে 5x10 টা ডট থাকে।

এখন আপনার ডিসপ্লে কত ডটের বা আপনি কত বিটে(8 বিট অথবা 4 বিট) চালাবেন এবং আপনার ডিসপ্লে 2 লাইনের হলে দ্বিতীয় লাইন চালু বা বন্ধ করতে উপরের টেবিলের Function Set অংশটি ব্যবহার করতে হবে।

Command

Binary

D7

D6

D5

D4

D3

D2

D1

D0

Function Set

0

0

1

8/4

2/1

10/8

x

x

যেমন 5x8 টি ডট ওয়ালা 2 লাইনের এলসিডি 8 বিটে চালাতে যে command দিতে হবে তা হল 0111011, টেবিলের মাধ্যমে দেখি,

Command

Binary

D7

D6

D5

D4

D3

D2

D1

D0

Function Set

0

0

1

1

1

0

1

1

এখানে, যেহেতু এলসিডি 8 বিটে চালাবো তাই 8/4 = 1, দুই লাইনের এলসিডি বলে 2/1 = 1, এবং যেহেতু আমার Display এর ডট সংখ্যা 5x8 তাই 10/8 = 0 ব্যবহার করেছি। উপরের LCD command Control Codes টেবিলটি দেখলেই বুঝতে পারবেন।

আপনারা হয়তো খেয়াল করেছেন যে ডিসপ্লে initialize করার সাথে সাথে Cursor এলসিডির একদম প্রথম লাইনের প্রথম ঘরে অবস্থান করে। Character লিখলে তা প্রথম ঘর থেকে শুরু হয়। এখন যদি আপনাকে সরাসরি এলসিডির প্রথম লাইনের 9th ঘরে কোন character প্রদর্শন করতে হয় তাহলে কিভাবে করবেন।

এখানেই আপনাকে Display Addressing  ব্যবহার করতে হবে। এলসিডির একদম প্রথম লাইনের প্রথম ঘরের Address হচ্ছে, 00(Hexadecimal) এর পরেরটা 01 এভাবে 16 নাম্বার ঘরের Address হচ্ছে, 0F আর দ্বিতীয় লাইনের প্রথম ঘরের Address হচ্ছে, 40(Hexadecimal) এভাবে 16 নাম্বার ঘরের Address হচ্ছে 4F.

Row-1

Display position

1st

2nd

3rd

4th

5th

6th

7th

8th

9th

10th

11th

12th

13th

14th

15th

16th

Address(Hex)

00

01

02

03

04

05

06

07

08

09

0A

0B

0C

0D

0E

0F

Row-2

Display position

1st

2nd

3rd

4th

5th

6th

7th

8th

9th

10th

11th

12th

13th

14th

15th

16th

Address(Hex)

40

41

42

43

44

45

46

47

48

49

4A

4B

4C

4D

4E

4F

আমরা যদি উপরের LCD command Control Codes  টেবিলের Set Display Address command লক্ষ করি তাহলে  এলসিডির প্রথম লাইনের 10th  ঘরে Cursor নিতে চাইলে আমাদেরকে '10001001' command পাঠাতে হবে। কিভাবে এই  '10001001' সংখ্যাটি পেলাম তা বলছি এর আগে Set Display Address টেবিল দেখে নিন,

Command

Binary

D7

D6

D5

D4

D3

D2

D1

D0

Set Display Address

1

A

A

A

A

A

A

A

এখানে A বলতে Address বোঝানো হয়েছে। A এর জায়গায় শুধু এলসিডির বিভিন্ন ঘরের Address অনুসারে 0 অথবা 1 বসাতে হবে।

এখানে প্রথম(D7) ঘরে আপনাকে সবসময়ই 1 দিতে হবে এরপর আপনার কাঙ্খিত ঘরের address, এইক্ষেত্রে 10th ঘরের Address যেহেতু Hexadecimal নাম্বার সিস্টেমে  09, তাহলে 09 এর Binary হচ্ছে 1001 তাহলে D7 এর ঘরে 1 রেখে ডান থেকে D3,  D2, D1, D0 ঘরে 1001 বসিয়ে খালি ঘরগুলো 0 দিয়ে পুরন করে দিলে হচ্ছে, 10001001. টেবিলের মাধ্যমে দেখা যাক,

Command

Binary

Hex

D7

D6

D5

D4

D3

D2

D1

D0

89

Set Display Address

1

0

0

0

1

0

0

1

এখন এলসিডি কে সঠিকভাবে initialize করার পর command মোডে  '10001001' পাঠিয়ে দেখি কি দেখায়,

এবার এই Addressing আপনাদেরকে আরও সহজ করে বলি যেন মনে রাখতে সহজ হয়। এলসিডির একদম প্রথম লাইনের প্রথম ঘরের Address হচ্ছে 00(Hex) । এখন command লিখতে D7 ঘরে 1 রেখে command পাঠাতে চাইলে পুরো বাইনারি সংখ্যাটি দাড়াচ্ছে, 10000000. এই পুরো বাইনারি সংখ্যাটিকে যদি Hexadecimal এ কনভার্ট করি তাহলে দাড়াচ্ছে 80(Hex) । তারমানে সরাসরি 80(Hex) এর বাইনারি পাঠালে এলসিডির একদম প্রথম লাইনের প্রথম ঘরে লেখা যাবে। 81(Hex) এর বাইনারি পাঠালে পরের ঘরে এভাবে 16th ঘরে লিখতে 8F(Hex) এর বাইনারি পাঠিয়ে দিন। এত কিছু মনে রাখতে হবে না, শুধু মনে রাখুন এলসিডির প্রথম লাইনের প্রথম ঘরের Address হচ্ছে, Hexadecimal নাম্বার সিস্টেমে 80, এভাবে বাড়তে বাড়তে 16 তম ঘরের Address হবে, Hexadecimal নাম্বার সিস্টেমে 8F.

চলুন একটু মিলিয়ে দেখি 16তম ঘরের জন্য 8F পাঠালে হবে কি না। 16th ঘরের Address হচ্ছে 0F । এবার D7 ঘরে 1 রেখে পুরো বাইনারি সংখ্যাটি দাড়াচ্ছে 10001111, যাকে Hexadecimal রুপান্তর করলে হয় 8F.

Command

Binary

Hex

D7

D6

D5

D4

D3

D2

D1

D0

8F

Set Display Address

1

0

0

0

1

1

1

1

এভাবে দ্বিতীয় লাইনের প্রথম ঘরে লিখতে C0(Hex) এবং এভাবে এক এক করে 16 তম ঘরে লিখতে CF(Hex) command পাঠালেই হবে।

এছাড়াও Character Generator RAM(CG RAM) এর মাধ্যমে Custom character তৈরী করা যায়। অন্য কোনদিন এই বিষয়ে আলোচনা করব।

এবার  character  প্রদর্শন করার জন্য প্রয়োজনীয় ASCII ডাটা নিচের টেবিলে দেয়া আছে।

উপরের সার্কিট ডায়াগ্রামের Proteus File নিচে থেকে ডাউনলোড করে নিন। তাহলে আর কষ্ট করে আঁকতে হবে না।

Download

পরবর্তী টিউনে মাইক্রোকন্ট্রলার দিয়ে কিভাবে এলসিডি ড্রাইভ করবেন তা নিয়ে আলোচনা হবে, সেই পর্যন্ত সবার জন্য  শুভকামনা রইল।

Level 0

আমি Faisal। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 14 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 7 টি টিউন ও 110 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

Thank You BOSS … এই টিউন টা অনেক কাজে লাগবে

Level 2

Faisal ভাই আপনাকে অনেক ধন্যবাদ, আপনার এই বিষয়ে সুন্দর সব পোষ্ট এর জন্য। আমি আপনার মাইক্রোকন্ট্রলার নিয়ে লেখা প্রতিটি পোষ্ট কয়েক বার পড়েছি এবং অনুপ্রাণিত হয়েছি মাইক্রোকন্ট্রলার নিয়ে কাজ করার জন্য। আপনি প্রথম দিকে মেশিন ল্যংগুয়েজ নিয়ে ২/১ পোষ্ট করেছেন। সত্যি বলতে কি মেশিন ল্যংগুয়েজ নিয়ে কাজ করা একটু কঠিন পক্ষান্তরে সি/সি++ নিয়ে কাজ করা মেশিন ল্যংগুয়েজ এ কাজ করার চেয়ে অনেক সহজ, আপনার একটা পোষ্টএ লিখেছিলেন সি/সি++ নিয়ে লিখবেন। আমি তাকিয়ে আছি আপনার সি/সি++ নিয়ে লেখা পোষ্ট এর দিকে। ভাই আপনার পোষ্ট গুলো পড়ার পর আমি সি/সি++ এ কোডিং করার জন্য MPLAB IDE+HITECH-C, MiKroC ইন্সটল করি, কিন্ত সঠিক দিক নির্দেশনা খুজে না পাওয়াতে আগাতে পারছিনা। যদি আপনি এই বিষয়ে পোষ্ট দেন তাহলে সত্যিই অনেকের উপকার হয়, বিশেষ করে যারা মাইক্রোকন্ট্রলার শিখতে চায় তাদের। আপনি আমাকে কি 16f84a এর কোন বই এর লিংক দিতে পারবেন? আমি আসলে বুঝে উঠতে পারছিনা MPLAB IDE+HITECH-C, MiKroC কোনটা নিয়ে কাজ করব বই এর অভাবে।

ধন্যবাদ আপনার এই উদ্দোগের জন্য।

    Level 0

    আসলে Assembly language এ লেখার উদ্দেশ্য ছিল, Micro controller কিভবে কাজ করে সেটা আরও গভীরভাবে বোঝা। C তে প্রোগ্রামিং করলেও Micro controller কে বুঝতে Assembly সম্পর্কে ধারনা থাকা জরুরী। আমি চেষ্টা করবো আগামীতে Assembly এর সাথে MikroC শুরু করে একসময় Assembly বাদ দেয়ার। তবে তার আগে উদাহরণ এর মাধ্যমে 35 টা Instruction এর ব্যবহার দেখানোর চেষ্টা করবো।

    আমার মনে হয়, আপনি MikroC তে কাজ শুরু করতে পারেন। সবসময় MikroC এর Help ফাইল এর সাহায্য নিতে পারেন।

      Level 2

      @Faisal: ধন্যবাদ কষ্টকরে আমার লেখার উত্তর দেবার জন্য। ফয়সাল ভাই আমি নেট ঘেটে যতটুকু বুঝতে পেরেছি MPLAB IDE+HITECH-C এই combination টা মনে হয় সি/সি++ এর জন্য ভাল, আমি আপনার থেকে এই বিষয়ে অনেক কম জানি তাই ভুল হলে ক্ষমা করবেন। আমার কাছে ভাল মনে হবার কারন MPLAB IDE+HITECH-C (light ver.) দুটোই ফ্রি আর এই combination করা কাজটা খুব সম্ভবত Proteus এ simulation করা যায়। আমার ধারনা ভুল হতে পারে কারন আমি এখনও সি/সি++ এ coding করিনি শুধু তথ্য সংগ্রহ বা আপনার লেখা হতে অনুপ্রানিত হয়ে বিভিন্ন সাইট হতে শেখার চেষ্টা করছি।

      ধন্যবাদ।

        Level 0

        যদিও programming C তে করতে হবে কিন্তু আপনাকে অবশ্যই দেখতে হবে যে কোন কম্পাইলারের বিল্টইন লাইব্রেরি সমৃদ্ধ। সব রেডি থাকবে শুধু ব্যবহার করা, মানে সহজে যে লাইব্রেরি ব্যবহার করতে পারবেন। HITECH-C ব্যবহার করবেন আরও পরে যখন এক্সপার্ট হয়ে যাবেন। নিজেই ফাংশন বানিয়ে নিবেন।

        MikroC beginner দের কথা চিন্তা করে। আপনি MikroC এর ফোরাম এর সাহায্য নিতে পারবেন। MikroC নিজে আপনার প্রশ্নের উত্তর দিবে।

        এবার আসি Proteus এর ব্যপারে, Proteus খুব ই শক্তিশালী সফটওয়্যার। মাইক্রোকন্ট্রোলার সিমুলেট করতে আপনার শুধু প্রয়োজন হবে প্রোগ্রাম ফাইল। অর্থাৎ যেকোনো কম্পাইলার দিয়ে কম্পাইল(Built) করার পর Compiler যে *.HEX ফাইল তৈরি করবে ওইটা শুধু Proteus কে দেখিয়ে দিতে হবে।
        MikroC trial ভার্সন এর সমসা হল এটা আপনাকে 2kB এর বেশি প্রোগ্রাম করতে দিবে না। কিন্তু 2kB এর প্রোগ্রাম ফাইল তৈরি করতে যত বড় প্রোগ্রাম লিখতে হবে তা হবে অনেক জটিল।
        ট্রায়াল ভার্সন কে ফুল করতে গুগল এর সাহায্য নিন।

        শুরু করার জন্য MikroC সবচেয়ে বেশি উপযোগী।

          Level 2

          @Faisal: ধন্যবাদ ভাই, আপনার সুন্দর পরামর্শের জন্য। প্রতিটি টিউটোরিয়ালে আমি আপনার পাশে আছি, তবে সি এর টিউটোরিয়াল এর অপেক্ষায় থাকলাম।

          ধন্যবাদ।

Level 0

সত্যি এই টিউন টি খুব খুব ভাল লাগল…। কারন আমার পেশা electronics সামগ্রী repair করা। আর এই টিউনটি আমার খুব উপকারে লাগবে।

Level 0

আমার অনেক দিনের ইচ্ছে ছিল যে binary কোড ব্যবহার করে কোন প্রোগ্রাম করব। কারন এতদিন এই binary coding শুধু মাত্র পাঠ্য বই আর থিয়োরি অব্দি জেনেছি। এবার নিজের হাতে পরীক্ষা করে দেখব। আর আমার দোকানে একটি ডিভিডি এর lcd আছে জানি না ওইটি কত পিনের। কালকে দোকানে গিয়ে দেখে জানাব। ওইটি দিয়ে কি আপনার এই পদ্ধতি টি পরীক্ষা করা সম্ভব?

    Level 0

    অসংখ্য ধন্যবাদ কমেন্ট করার জন্য। Hitachi HD44780 এর compatible chip এর এলসিডি হলে পারবেন। অন্যথায় না। যাই হোক, একটা প্রশ্ন করি, আপনি কি বাংলাদেশি নাকি ইন্ডিয়ান।

Level 0

Hitachi HD44780 এর compatible chip এর এলসিডি হলে পারবেন…আচ্ছা বাজারের Normal LCD(16×2) গুলো কি হবে না…

    Level 0

    বাজারের Normal LCD(16×2) গুলোর প্রায় সবগুলোই Hitachi HD44780 এর জন্য লেখা Instruction এ কাজ করে।

Level 0

You r great Boss ……………sobar comments ar ans dissan…ভাই আপনার নাম্বার বা ইমেল আইডিটা কি দেওয়া যায়

Level 0

টেক টিউনসে থাকাটা এতদিনে সার্থক হল। আপনার পরের টিউনের জন্য চেয়ে থাকলাম। অসংখ্য ধন্যবাদ

Level 0

Faisal vai remote control fan regulator er project nea jodi ekta tune korten tahole khub khushi hotam.

    Level 0

    কিছুদিন অপেক্ষা করতে হবে ভাই। remote control fan regulator বানাতে micro controller এর যে সব ফিচার ব্যবহার করতে হবে সেগুলো নিয়ে আলোচনা শেষ হলে এটা নিয়ে লিখব। ধন্যবাদ।

      Level 0

      @Faisal: ধন্যবাদ ভাই। আপনি আসলেই Awesome.

Level 0

ফয়সল ভাই ডিজিটাল ঘড়ির (7 segment) জন্য যদি একটি assembly code দিতেন খুব ভাল হত।

    Level 0

    আগে 7 segment নিয়ে আলোচনা হোক তারপর না হয় ঘড়ি।

Level 0

ধন্যবাদ Faisal: ভাই ,——– r o chai , ———-
ভাই 4 digit dc volt meeter ar জন্য যদি একটি assembly code দিতেন খুব খুব ভাল হত।

Faisal vai, apnake onek onek Thanks, ami apnar proti tune khove monojog dia pori. Electronics ar proti amar agroho choto kal thake. Sob somoy nutun kisu banate iccha kora. Ami Microntroller niya kaj korta chai, tai apner tune gulu amar khove valo lage. next tune ar jonno opekhy roilam………. oh, apner sathe kotha bolte chi, jodi apner somoy hoy, tahole khove valo hoy.

টেক টিউনসে থাকাটা এতদিনে সার্থক হল।ভালো লাগলো ।অনেক শুভেচ্ছা রইলো ।

আমি একটা বিষয় জানতে চাছি ফয়সাল ভাই, আপনি যে PICkit2 দিলেন তা বানাতে কত সাম্ভাব্য খরচ লাগতে পারে?
আর সব পার্টস কি পাটুয়াতুলিতে পাওওা যাবে?

Level 0

ভাইজান আমি কি কোন ভাবে আপণার মেইল id পেতে পারি? আমার Id= [email protected] .আপণাকে আমার খুব প্রয়োজন.প্লিজ ভাই সাড়া দিয়েন.

seven segment LED এবং Dot Matrix LED Desplay Board’র উপর একটা Program লিখে বিস্তারিত জানাবেন দাদা।

প্রিয় টিউনার,

আপনাকে এই চেইনটি চলমান করার জন্য অনুরোধ করা গেল। দয়া করে আপনার চেইন টিউনটি নতুন পর্ব যুক্ত করুন এবং নিয়মিত আপডেট করুন। ধন্যবাদ।