در این پروژه یک دماسنج دیجیتال با استفاده از سنسور LM35 و میکروکنترلر ۸۰۵۱ توسط کامپایلر Bascom 8051 و به زبان بیسیک راه اندازی شده است.
در این پروژه از میکروکنترلر AT89S51 استفاده شده است.
میکروکنترلرهای ۸۰۵۱ اسیلاتور داخلی ندارند برای همین از کریستال خارجی با فرکانس ۱۲MHz مطابق تصویر زیر استفاده شده است:
پایه Reset این میکروکنترلر نیز باید مطابق شکل زیر راه اندازی شود:
با فشردن تک سوییچ میکروکنترلر ریست شده و دوباره شروع به کار میکند.
سنسور دمای استفاده شده در این پروژه LM35 می باشد.
خروجی این سنسور از نوع آنالوگ می باشد و به ازای افزایش هر درجه سانتی گراد، خروجی را ۱۰ میلی ولت افزایش می دهد.
برای سنجش مقدار دما، باید خروجی این سنسور را بر حسب میلی ولت اندازه گیری کرده و این مقدار را بر ۱۰ تقسیم نماییم.
مثلا:
۳۷۰mV=37^C
209mV=20.9^C
برای سنجش میزان ولتاژ نیاز به یک مبدل آنالوگ به دیجیتال می باشد. ولی از آنجایی که میکروکنترلرهای ۸۰۵۱ از این قابلیت برخوردار نیستند برای این کار مجبور به استفاده از تراشه های ADC خارجی هستیم. در این پروژه از تراشه ADC0804 که یک مبدل آناوگ به دیجیتال ۸ بیتی است استفاده شده است.
در شماتیک این پروژه این تراشه برای ولتاژ مرجه +۵ ولت راه اندازی شده و نمونه گیری از ولتاژ ورودی با دقت ۸ بیت انجام می شود. و این یعنی اینکه مقدار اندازه گیری شده عددی بین ۰ تا ۲۵۶ خواهد بود. از آنجایی که عدد خوانده شده نسبت به ولتاژ ورودی خطی است پس می توان با یک نسبت تناسب ساده از عدد خوانده شده، مقدار ولتاژ ورودی را محاسبه کرد.
برنامه این پروژه به روش ساب روتین نوشته شده است و جنبه آموزشی سورس این پروژه شامل نحوه کد نویسی نیز می شود.
جهت مشاهده سورس این پروژه اینجا کلیک کنید.
تابع های این پروژه از قرار زیر است:
۱٫ Display_lcd_start_text:
2. Read_the_adc:
3. Convert
4. Display_lcd_1:
5. Display_lcd_2:
1. نمایش یک متن دلخواه بر روی LCD در زمان شروع به کار سیستم
۲٫ خواندن مقدار آنالوگ از تراشه ADC
3. تبدیل مقدار آنالوگ خوانده شده به واحد سانتی گراد
۴٫ نمایش مقدار دما بر روی LCD
5. نمایش مقدار ورودی بر حسب میلی ولت بر روی LCD
توجه: برنامه این پروژه در نسخه ۲٫۰٫۱۴٫۰ از کامپایلر Bascom 8051 نوشته شده است.
جهت دانلود کامپایلر Bascom 8051 v2.0.14.0 اینجا کلیک کنید. ( ۶MB )
اهداف آموزشی:
. • آشنایی با LCD کاراکتری و نحوه راه اندازی آن
. • آشنایی با توابع مربوط به LCD
. • آشنایی با تراشه ADC0804 و نحوه راه اندازی آن
محتویات فایل دانلود:
. • سورس برنامه با کامپایلر Bascom 8051
. • شبیه سازی پروژه با نرم افزار پروتیوس
جهت دانلود فایل های این پروژه اینجا کلیک کنید. ( ۱۵۲KB )
'*********************************************************** *
'* Title : Thermometer with LM35 *
'* Compiler : Bascom 8051 v2.0.14.0 *
'* Micro Contoroler : AT89S51 *
'* Clock frequency : 12.000000 MHz *
'* Last Updated : 2013/04/15 *
'***********************************************************
$regfile = "reg51.dat"
$crystal = 12000000
Config Lcdpin = Pin , Rs = P1.0 , E = P1.2 , Db4 = P1.4 , Db5 = P1.5 , Db6 = P1.6 , Db7 = P1.7
Config Lcd = 16 * 2
Cursor Off
Cls
Enable_adc Alias P0.0 : Enable_adc = 1
Dim W As Byte
Dim Input_mv As Single
Dim Temp As Single
Dim S As String * 16
Gosub Display_lcd_start
Do
Gosub Read_the_adc
Gosub Convert
Gosub Display_lcd_1
Gosub Display_lcd_2
Waitms 200
Loop
End
'***************************************
Display_lcd_start:
Cls
Locate 2 , 1 : Lcd "AVR PIC 8051"
Wait 2 : Cls : Waitms 200
Return
'***************************************
Read_the_adc:
Enable_adc = 0 : Waitms 10 : Enable_adc = 1
W = P2
Input_mv = W * 19.53125
Return
'**********************************************
Convert:
Temp = Input_mv / 10
Return
'**********************************************
Display_lcd_1:
Deflcdchar 0 , 7 , 5 , 7 , 32 , 32 , 32 , 32 , 32
Locate 1 , 1 : Lcd "Temp: " : S = Fusing(temp , "#.#") : Lcd S ; Chr(0) ; "C "
Return
'**********************************************
Display_lcd_2:
Locate 2 , 1 : Lcd "Input: " : S = Fusing(input_mv , "#.#") : Lcd S ; "mV"
Return