Upload
meghan
View
25
Download
6
Embed Size (px)
DESCRIPTION
Session 5. مطالب این جلسه:. معرفی 7segment ها و نحوه راه اندازی آنها Lcd های کارکتری و نحوه ارتباط دهی با میکرو. نمایشگر های seven segment. - PowerPoint PPT Presentation
Citation preview
Session 5
مطالب این جلسه:
7معرفیsegment آنها اندازی راه نحوه و هاLcd میکرو با دهی ارتباط نحوه و کارکتری های
seven segmentنمایشگر های
از ها سگمنت هم 8سون به ها دیود سر یک که اند شده تشکیل نوری دیود . سگمنت نوع دو شوند می استفاده مشترک سر عنوان به و اند شده وصل
: دارد مشترک وجود کاتد دیگری و مشترک آند آند. یک سگمنت سون درکاتد در و اند شده وصل همدیگر به ها دیود مثبت های سر تمام مشترک
. منفی سرهای تمام مشترک
انواع 7segment
Common Anode
با سگمنت سون این درکردن متصل صفر پایه هر
سگمنت کنترلر میکرو بهشد خواهد روشن متناظر
Common Cathode
با سگمنت سون این درکردن متصل یک پایه هر
سگمنت میکرو به شدهشد خواهد روشن متناظر
Example-5 7را ب�ر روي 9 ت�ا 0برنام�ه ای بنویس�ید ک�ه اع�دادsegment آن�د
.�ن�شان د�هد ي�ك ثا�نيه به �فاصله مشترك�
#include <mega32.h>#include <delay.h>unsigned char seven_seg_code(unsigned char num);void main(void){unsigned char i;DDRA=0xff;while (1) { for (i=0;i<10;i++) { PORTA=seven_seg_code(i); delay_ms(1000); } }}
جدول کدهای آند مشترک
num h g f e d c b a code
0 1 1 0 0 0 0 0 00xC0
1 1 1 1 1 1 0 0 10xF9
2 1 0 1 0 0 1 0 00xA4
3 1 0 1 1 0 0 0 00xB0
4 1 0 0 1 1 0 0 10x99
5 1 0 0 1 0 0 1 00x92
6 1 0 0 0 0 0 1 10x83
7 1 1 1 1 1 0 0 00xF8
8 1 0 0 0 0 0 0 00x80
9 1 0 0 1 1 0 0 00x98
Example-5unsigned char seven_seg_code(unsigned char num){unsigned char out;switch(num){case 0:out=0xc0;break;case 1:out=0xf9;break;case 2:out=0xa4;break;case 3:out=0xb0;break;case 4:out=0x99;break;case 5:out=0x92;break;case 6:out=0x83;break;case 7:out=0xf8;break;case 8:out=0x80;break;case 9:out=0x98;break;}return out;}
به میکرو کنترلر7SEGMENTاتصال
. روش شود می متصل میکروکنترلر به مختلفی روشهاي به سگمنت سونکدها که است این سون اول به مستقیم صورت به جدول مطابق را
. از استفاده دوم روش کنیم اعمال کد ICسگمنت مبدل سون BCDهای بهاست سگمنت
MAX7219, MAX7221,7448,7447,45114054,4055مانند:
مالتی پلکس کردن سون سگمنت ها
برای استفاده از چند سونسگمنت مالتی پلکس شده
تمامی پایه های دیتا را روی یک پورت قرار داده و پایه های
مشترک سون سگمنت ها را کنترل میکنیم.به این صورت که با فعال کردن آن پایه ی مشتر
ک وارسال اطالعات به 20سگمنت مورد نظر با توالی
میلی ثانیه .تمامی سگمنت ها باتوجه به خطای چشم انسان
.روشن به نظر میرسند
مالتی پلکس کردن سون سگمنت ها
استفاده از تکنیک رفریشینگ
Practice -2
1 7- مثال قبل را براي يكseg كاتد مشترك پياده سازي كنيد.
2 مثال قبل را با استفاده از -IC مبدل BCD به 7segment ، 7447.پياده سازي كنيد
3 7- با استفاده ازsegment كاتد مشترك و IC ، ثانيه 1 با فاصله زماني 9 تا 0 يك شمارنده 7448
بسازيد.4 برنامه اي بنويسيد كه عددي را از پورت -B
نمايش دهد.7segخوانده و برروي 5 ثانيه 1 با فاصله زماني 99 تا 0- يك شمارنده
بسازيد
LCD
LCDاستفاده از
:LCDصفحه نمایش
صفحه میکروکنترلرها برای خروجی ابزارهای ترین اصلی از یکیتوانیم LCDنمایش می آن وسیله به که باشد می کاراکتری
! دهیم نمایش را مختلف های رشته و کاراکترها
نحوه اتصال سخت افزاری:
شماره پین نشانه نام توصیف
1 VSS Power supply ی Lcdاست تغذیه زمین پایه2 VDD Power supply
ی تغذیه مثبت به +lcdپایه که ولت 4.5تا 5استمیشود وصل
3 VEE LCD Supply Voltageدرخشندگی پتانسومتر lcdپایه یک توسط مقاومت 5kکه یک 2.2kیا
میگردد تنظیم
4 RS Register select
پایه این های صفراگر پایه به وردی تا d0باشددیتایd7 شده محسوب کنترلی فرمان
پایه این های یک اگر پایه به ورودی دیتای تا d0باشدd7 میباشد چاپ برای کارکتر
5 RW Read/Write
روی بر میتوانیم کنیم صفر را پایه این و lcdاگر بنوسیمبافر میتوانیم کنیم یک را پایه این بخوانیم lcdاگر را
در: زمین avrنکته به مستقیما را پایه این ها موقعه بیشترمیدهند قرار نوشتن حالت در را آن و کرده وصل
6 E Read Write enableساز فعال پایین lcdپایه لبه یک سازی فعال نوع و است
میباشد رونده
78910
DB0DB1DB2DB3
Data bus 0-7
باس دیتا چهارم تا اول های است lcdبیتمد: از که هنگامی در کنیم 4نکته استفاده بیت
ماند می باز ها پایه این
11121314
DB4DB5DB6DB7
باس دیتا هشتم تا چهارم های است lcdبیتمد: از که هنگامی در کنیم 4نکته استفاده بیت
میشود استفاده ها پایه این از
15 Aآند حدود led backlightپایه مقاومتدر یک با به 47که اهم
+5v میشود وصل
16 Kکاتد وصل led backlightپایه زمین به که
میشود
آشنایی با توابع کتابخانه ای lcd.h:
روی بر کلمات و حروف نمایش که LCDبرای دارد وجود مختلفی های راهافزار نرم از توابع CodeVisionاستفاده داشتن اختیار در دلیل به
. بیشتر از توابع این باشد می تر آسان بسیار بقیه از الزم ای کتابخانهLCD پشتیبانی مختلف های ستون و ردیف تعداد با بازار، در موجود های
. کند می
void _lcd_ready();
void _lcd_write_data(unsigned char data);
Unsigned char lcd_read_byte(unsigned char addr);unsigned char lcd_init(unsigned char lcd_columns)void lcd_clear(void)void lcd_gotoxy(unsigned char x, unsigned char y)void lcd_putchar(char c)void lcd_puts(char *str)void lcd_putsf(char flash *str)
ای کتابخانه توابع با :lcd.hآشنایی
: پایین سطح توابع
1.void _lcd_ready();
شدن آماده منتظر میکروکنترلر شود، فراخوانی تابع این که LCDزمانی. شود می اطالعات دریافت برای
2.void _lcd_write_data(unsigned char data);
درون ثبات کردن مقداردهی برای تابع این . LCDاز این شود می استفادهتنظیمات کنترل برای تنظیمات LCDثبات تابع این کمک به و باشد LCDمی
. مراجعه بعد صفحه جدول به تنظیمات این مشاهده برای دهیم می تغییر راکنید
_lcd_ready(); //waits until the LCD module is ready for receiving data_lcd_write_data(0x0E); // روشن نما مکان و روشن نمایش
LCD:کد های فرمان
3 .void lcd_write_byte(unsigned char addr, unsigned char data);
متغیر یک توانیم می تابع این یک Charبوسیله که کنیم مقداردهی طوری را ! به دهیم نمایش را آن توانیم می تابع این بوسیله سپس شود، دلخواه کاراکتر
در نویسی فارسی برای مثال شود lcdعنوان استفاده میتواتد
4 .Unsigned char lcd_read_byte(unsigned char addr);
از را کاراکتر یک که تفاوت این با کند می عمل قبل تابع مشابه تابع LCDاین. گرداند برمی را دارد دربر را آن شکل که متغیر یک و خواند می
ای کتابخانه :lcd.hتوابع
flash byte char0[8]={0b0000000,0b0001111,0b0000011,0b0000101,0b0001001,0b0010000,0b0100000,0b1000000};
:lcd.hتوابع کتابخانه ای
: باال سطح توابع
1.unsigned char lcd_init(unsigned char LcdCollumns);
این lcdبرای مقدار دهی اولیه و تعیین تعداد ستون این تابع در ابتدای برنامه فراخوانی می شود.
) می برد و 0,0تابع مکان نمای چاپ را به خانه (همچنین مکان نمای چاپگر را غیر فعال می کند.
Example:
lcd_init(16)
:lcd.hتوابع کتابخانه ای
2.void lcd_clear();
! شود می پاک نمایش صفحه تابع این وسیله به
3.Void lcd_gotoxy(unsigned char x, unsigned char y);
به ( را چاپ نمای . X,Yمکان از) بعد برد می نظر موردشدن چاپ به شروع نقطه این از کاراکترها تابع این فراخوانی
! کنند میX :و ردیف: Yستون
Lcd_gotoxy(4,2)
:lcd.hتوابع کتابخانه ای
4.void lcd_putchar(char c);
استفاده می lcdبرای ارسال یک کارکتر به شود
Example :
lcd_putchar('a');
:lcd.hتوابع کتابخانه ای
5.void lcd_puts(char *str);
را strرشته باشد، می کارکترها از ای آرایه که را . که کنید توجه دهد می نمایش فعلی موقعیت در
رشته که کنیم می استفاده تابع این از strوقتی.RAMدرون باشد داشته قرار
Example:
sprintf(buffer, “tempreture= %d”, temp);
lcd_puts(buffer);
6.void lcd_putsf(char flash *str);
می strرشته نمایش فعلی موقعیت در را باشد، می کارکترها از ای آرایه که رارشته. که کنیم می استفاده تابع این از وقتی که کنید توجه Flashدرون strدهد
. باشد داشته قرار
: مثال برایlcd_clear(); // میکند پاک را نمای صفحهlcd_init(16); // خانه در را نما مکان میکند 0و0موقعیت اعالم و داده داریم 16قرار کارکترchar c = ‘|’; //Declares char c, and sets its value to ‘|’lcd_putchar(c); //Prints variable c on the LCDlcd_gotoxy(8,1); //Sets the new position for the cursor at (8,2)char str1[16] = “Hi…”; //Define a array of chars(string). Just like variable c This variable is stored in the microcontrollers RAM.lcd_puts(str1); //because str1 is stored in RAM we have to use lcd_puts()lcd_clear(); //Clears the LCD againlcd_putsf(“Hello Majid!”); //Prints “Hello Majid” on the LCD! we use lcd_putsf() because the string “AVR Rocks” is part of the code and wasn’t declared in the middle of the program.
ای کتابخانه :lcd.hتوابع
باید توسط دستورات اسمبلی lcd.hهمواه قبل از استفاده از کتابخانه : نکته در برنامه معرفی شود.به عنوان مثال دستور زیر lcdزیر پورت متصل به
است)c آدرس ریجستر پورت 0x15 است.(portc به lcdبیانگر اتصال #asm// اسمبلی زبان شروع.equ __lcd_port=0x15// نمایشگر به متصل پرت معرفی#endasm// اسمبلی زبان پایان
را در برنامه فراخوانی کنیمlcdحال مجاز هستیم کتابخانه #include <lcd. h>Lcd_init(20);
Example - 7 ك�اراكتر پنجم س�تون اول س�طر در ‘a عب�ارت اول س�تون دوم س�طر در و ’
�“CodeVisionAVR را �بر روي �يك ”LCD 2x16.نمايش ده�يد #include <mega16.h>
#asm .equ __lcd_port=0x1B ;PORTA #endasm #include <lcd.h> #include <delay.h> void main(void) {
lcd_init(16);
while (1) { lcd_clear(); lcd_gotoxy(5,0); lcd_putchar('a'); lcd_gotoxy(0,1); lcd_putsf("CodeVisionAVR"); delay_ms(200); }; }
Example-8 تابعي بنويس�يد ك�ه بص�ورت روان كلم�هCodeVision را ب�ر روي LCD دهد. نم�ايش
#include <mega16.h> // Alphanumeric LCD Module functions #asm .equ __lcd_port=0x1B ;PORTA #endasm #include <lcd.h> #include <delay.h> void main(void) { int i; lcd_init(16);
while (1) { for (i=0;i<7;i++) { lcd_clear(); lcd_gotoxy(i,0); lcd_putsf("CodeVision"); delay_ms(400); } }; }
ای کتابخانه :stdlib.hتوابع
ها کتابخانه این پرکاربرد درون تابع رشته برای چندین ساختن.ها باشد می موجود آنها با کار و
1.itoa(int n,char *str);
تابع اسکی nبیتی 16عدد این های کارکتر صورت به رامتغییر در و تعریف strدرآورده ای رشته صورت به که
( عدد ریزد می است (65535تا 0بین nشده است
2 .Ltoa(long int n , char *str);
تابع اسکی nبیتی 32عدد این های کارکتر صورت به رامتغییر در و تعریف strدرآورده ای رشته صورت به که
( عدد ریزد می است (4294967295تا 0بین nشده است
ای کتابخانه :stdlib.hتوابع3 .
void ftoa(float n, unsigned char decimals, char *str);
تابع اعشاری این در nعدد و آورده در اسکی های کارکتر صورت به راایی رشته . strمتغییر عدد این توسط که ارقامی تعداد دهد می قرار
متغیر توسط شود داده قرار رشته در است قرار decimalsاعشاری! شود می مشخص
4.
void ftoe(float n, unsigned char decimals, char *str);
تابع دار این توان و اعشاری مثل ) ) nعدد کارکتر 4.8e-6را صورت به راایی رشته متغییر در و آورده در اسکی . strهای تعداد دهد می قرار
شود داده قرار رشته در است قرار اعشاری عدد این توسط که ارقامیمتغیر !decimalsتوسط شود می مشخص
5.
rand();تا صفر بین تصادفی عدد یک تابع میکند 32767این تولید
Example-9 را با 999 بنویسید که به صورت صعودی شمار تا LCD را بر روی 999 تا 0برنامه یک شمارنده
ثانیه شمارش کند1تاخیر #include <mega32.h>//معرفی تراشه مورد نظر به کامپایلر#include <alcd.h>//استفاده از کتابخانه جدید کدویژن برای ال سی دی ها#include <delay.h>//ن به برنامه اضافه شودªچون از تابع تاخیری استفاده میکنیم باید کتابخانه ۀ#include <stdlib.h>//چون از تابع itoa استفاده میکنیم باید کتابخانه مورد نظر به برنامه اضافه شود
void main(void){در این مکان متغییر های محلی تعریف میشوند//unsigned int count;// گنجایش داشته باشد65535 باید تا 999این متغییر برای شمارش تا char show[3];// رقمی تعریف میشود3 برای نمایش یک عدد 3این متغییر از نوع رشته ای با طول
lcd_init(16);//پیکره بندی صفحه نمایش و بردن مکان نما به خط اول و ستون اول
while (1) { lcd_clear(); //تازه سازی صفحه نمایش lcd_putsf("counter:");//درج مستقیم عبارت مورد نظر بر روی ال سی دی for(count=0;count<1000;count++)// 999حلقه شمارشی برای شمارش اعداد تا { itoa(count,show);//تبدیل یک متغییر عددی معمولی به یک متغییر رشته ایی lcd_puts(show);//نمایش رشته مورد نظر بر روی ال سی دی delay_ms(1000);// ثانیه ایی1تااخیر lcd_gotoxy(8,0);//قرار دادن مکان نما در مکان مورد نظر برای تغییر اعداد بعد از یک ثانیه }
}}
ای کتابخانه :stdio.hتوابع
می زیادی کاربردی توابع دارای قبلی کتابخانه همانند کتابخانه اینآشنا آینده جلسات در سریال ارتباط قسمت در آنها اکثر با که باشد
با . کارکردن برای اما شد این lcdخواهیم قدرتمند بسیار تابع یک ها. است شده معرفی زیر در که دارد کتابخانه
1 .void sprintf(char *str, flash char *str, arg1, arg2 , . . . );
باید ایی رشته متغییر یک که مقصد نام ابتدا تابع این آرگومان درآخر , . در و نمایش برای نظرمان مورد قالب سپس میگردد ذکر باشد
آید , می شود تبدیل اسکی به باید محتوایشان که هایی متغییر نامقالب در فرمتی چه با نظر مورد متغییر کنید تعیین اینکه برای
بگیرید , کمک بعد صفحه جدول از شود ظاهر نمایش
کارکتر های کنترلی در printf:تابع
سریال خروجی در بندی فرمت با نمایش نحوه کارکتر کنترلی
مبنای در دار عالمت صحیح 10عدد %I
مبنای در دار عالمت صحیح 10عدد %d
مبنای در عالمت بدون صحیح 10عدد %u
کوچک حروف با علمی صورت به اعشاری عدد eنمایش %e
بزرگ حروف با علمی صورت به اعشاری عدد Eنمایش %E
اعشاری اعداد نمایش %f
کوچک حروف صورت به دیسیمال هگزا صورت به نمایش %x
بزرگ حروف صورت به دیسیمال هگزا صورت به نمایش %X
اسکی کارکتر یک نمایش %c
حافظه در شده ذخیره ای رشته متغییر RAMنمایش %s
حافظه در شده ذخیره ای رشته متغییر FLASHنمایش %p
عالمت % نمایش %%
codevision در:sprintfتنظیمات تابع
افزار :نکته نرم در هرگاهcodevision avr توابع از
printf یاsprintf کنیم استفادهتعیین را آن ویژگی باید
حجم . توابع این ضمن در نماییممی زیاد را برنامه تولیدی کد
کنند.
Example-10 را با تابع 9برنامه مثال sprintfبه صورت ساده تر بازنویسی کنید
#include <mega32.h>//معرفی تراشه مورد نظر به کامپایلر#include <alcd.h>//استفاده از کتابخانه جدید کدویژن برای ال سی دی ها#include <delay.h>//ن به برنامه اضافه شودªچون از تابع تاخیری استفاده میکنیم باید کتابخانه ۀ#include <stdio.h>//چون از تابع پرینت استفاده میکنیم باید کتابخانه آن را نیز به برنامه اضافه کنیم
void main(void){در این مکان متغییر های محلی تعریف میشوندunsigned int count;// گنجایش داشته باشد65535 باید تا 999این متغییر برای شمارش تا char show[3];// رقمی تعریف میشود3 برای نمایش یک عدد 3این متغییر از نوع رشته ای با طول
lcd_init(16);//پیکره بندی صفحه نمایش و بردن مکان نما به خط اول و ستون اول
while (1) { for(count=0;count<1000;count++)// 999حلقه شمارشی برای شمارش اعداد تا { sprintf(show,"counter:%u",count);//دستورات قالب بندی رشته ها برای چاپ عبارات مورد نظر در خروجی lcd_clear();//تازه سازی صفحه نمایش lcd_puts(show);//چاپ متغییر رشته ای بر روی ال سی دی delay_ms(1000);//تاخیر ا ثانیه ایی }
}}
:CodeVision AVRتنظیمات
قسمت بوسیله New ProjectدرCodeWizard:
استاندارد های کارکتر نمایش
برای که است هایی کارکتر استاندارد، کارکتر از کارکتری LCDمنظور های. باشند می بعد صفحه جدول مطابق انها تمامی اندکه شده تعریف قبل از
عدد یک مربوطه ستون و سطر در کارکتر هر ازای که 4به شده نوشته بیتیکه دهیم قرار هم کنار طوری را اعداد این ارزش 4اگر پر و ارزش کم بیت
از توانید می باشد نظر مورد کارکتر ستون و سطر با متناظر ترتیب بهروی بر کارکتر آن نمایش برای زیر کنید LCDفرمت استفاده
\x هگزادسیمال صورت به امده دست به عدد :متغیر کنید فرض صورت resمثال به را اهم حسب بر مقاومت یک مقدار
. با همراه مقاومت مقدار نمایش برای اینصورت در کند بیان صحیح عدد یک:Ωواحد) نویسیم( می چنین آن دنباله در
Sprintf(str,”resistance=%u\xf4”,res);
جدول کد های اسکی
Practice -3
روی- 1 بر را خود اسم که بنوسید ایی هر lcdبرنامه را ان و نوشته کارکتریms 200 دهد شیفت چپ سمت به
از- 2 شمار نزولی صورت به که بنوسید ایی شمارش 10تا 100000برنامه راروی بر را حاصل نظر . lcdکندو در ثانیه یک را شمارش فاصله دهد نمایش
بگیرید
اسم- 3 به دلخواه کلید یک زدن با که بنوسید ایی یک upبرنامه شمارشی مقدارنام به دلخواه کلید زدن با و یابد افزایش واحد downواحد یک حاصل
روی حاصل و یابد پورت LCDکاهش یه شود Dمتصل داده نمایش
پورت- 4 باینری مقدار حاصل که بنوسید ایی روی Aبرنامه بر و خوانده LCDراپورت به شده دهد Bمتصل نمایش