51與光敏電阻經(jīng)典程序_第1頁
51與光敏電阻經(jīng)典程序_第2頁
51與光敏電阻經(jīng)典程序_第3頁
51與光敏電阻經(jīng)典程序_第4頁
51與光敏電阻經(jīng)典程序_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、本程序是利用光敏電阻和51 單片機(jī)來控制led 燈亮滅#include<reg52.h>/ 包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存定義#include <intrins.h> / 包含 NOP 空指令函數(shù)_nop_();#include<LCD1602.h>#define AddWr 0x90/ 寫數(shù)據(jù)地址#define AddRd 0x91/ 讀數(shù)據(jù)地址sbit RST=P2A4;時鐘 加上后可以關(guān)掉 DS1302芯片輸出sbit Sda=P2P;/定義總線連接端口sbit Scl=P2A1;sbit dula=P2A6;sbit wela

2、=P2A7;bit ADFlag;/ 定義 AD 采樣標(biāo)志位unsignedcharcodeDatatab=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;data unsigned char Display8;/定義臨時存放數(shù)碼管數(shù)值/* 延時 程 序*/void mDelay(unsigned char j)unsigned int i;for(;j>0;j-)for(i=0;i<125;i+);/* 初 始 化 定 時 器1*/void Init_Timer1(void)TMOD |= 0x10;TH1=0xff;/* In

3、it value */TL1=0x00;/PT1=1;/* 優(yōu)先級 */EA=1;/* interupt enable */ET1=1;/* enable timer1 interrupt */TR1=1;/* 啟 動 IIC 總 線*/void Start(void)Sda=1;_nop_();Scl=1;_nop_();Sda=0;_nop_();Scl=0;/* 停 止 IIC 總 線*/void Stop(void)Sda=0;_nop_();Scl=1;_nop_();Sda=1;_nop_();Scl=0;/* 應(yīng) 答 IIC 總 線*/void Ack(void)Sda=0;II

4、C 總 線個字節(jié)_nop_();Scl=1;_nop_();Scl=0;_nop_();/* 非 應(yīng) 答*/void NoAck(void)Sda=1;_nop_();Scl=1;_nop_();Scl=0;_nop_();/* 發(fā) 送*/void Send(unsigned char Data)unsigned char BitCounter=8;unsigned char temp;dotemp=Data;Scl=0;_nop_();if(temp&0x80)=0x80)Sda=1;elseSda=0;Scl=1;temp=Data<<1;Data=temp;BitCo

5、unter-;while(BitCounter);Scl=0;讀入一個字節(jié)并返/*/unsigned char Read(void)unsigned char temp=0;unsigned char temp1=0;unsigned char BitCounter=8;Sda=1;doScl=0;_nop_();Scl=1;_nop_();if(Sda)temp=temp|0x01;elsetemp=temp&0xfe;if(BitCounter-1)temp1=temp<<1;temp=temp1;BitCounter-;while(BitCounter);return

6、(temp);/* 寫 入 DA 數(shù) 模 轉(zhuǎn) 換*/void DAC(unsigned char Data)Start();Send(AddWr); / 寫入芯片地址Ack();Send(0x40);/ 寫入控制位,使能DAC 輸出Ack();Send(Data); / 寫數(shù)據(jù)Ack();Stop();/* 讀 取 AD 模 數(shù) 轉(zhuǎn) 換*/unsigned char ReadADC(unsigned char Chl)/ 寫入芯片地址unsigned char Data;Start();Send(AddWr);Ack();Send(0x40|Chl);/ 寫入選擇的通道,本程序只用單端輸入,差

7、分部分需要自行添加/Chl 的值分別為 0、 1 、 2、 3,分別代表1-4 通道Ack();Start();Send(AddRd); / 讀入地址Ack();Data=Read(); / 讀數(shù)據(jù)Scl=0;NoAck();Stop();return Data; / 返回值void cmg(void)/ 數(shù)碼管鎖存函數(shù) 關(guān)時鐘 DS1302dula=1;P0=0x00;dula=0;wela=1;P0=0x00;wela=0;RST=0; / 關(guān)時鐘 DS1302/*/void main()unsigned char num;unsigned char ADtemp;InitLcd();mD

8、elay(20);Init_Timer1();cmg();while(1)/DA 數(shù)模輸出變量/ 定義中間變量/ 數(shù)碼管鎖存主程序ADtemp=ReadADC(2);if(ADtemp >=250)P1 = 0X00;else if(ADtemp <=250 && ADtemp >= 210)P1 = 0X80;else if(ADtemp <=210 && ADtemp >= 180)P1 = 0Xc0;else if(ADtemp <=180 && ADtemp >= 150)P1 = 0Xe0;el

9、se if(ADtemp <=150 && ADtemp >= 120)P1 = 0Xf0;else if(ADtemp <=120 && ADtemp >= 90)P1 = 0Xf8;else if(ADtemp <=90 && ADtemp >= 60)P1 = 0Xfc;else if(ADtemp <=60 && ADtemp >= 30) P1 = 0Xfe;/* 定 時 器 中 斷 程 序*/void Timer1_isr(void) interrupt 3 using

10、1/定時器 1 執(zhí)行數(shù)碼管動態(tài)掃描static unsigned int j;TH1=0xfb; / 重新賦值TL1=0x00;j+;if( j=200)j=0;ADFlag=1; / 定時置位 AD 采樣標(biāo)志位#include<reg52.h>#include<stdio.h>#include<intrins.h>sbit RS = P3A5;Pin4 sbit RW = P3A6; Pin5 sbit E = P3A4;Pin6 #define Data P0 / 數(shù)據(jù)端口unsigned char TempData8;unsigned charSeco

11、ndLine="unsigned charFirstLine ="void DelayUs(unsigned char us)/delay usunsigned char uscnt;uscnt=us>>1;/* Crystal frequency in 12MHz*/ while(-uscnt);void DelayMs(unsigned char ms)/delay Mswhile(-ms)DelayUs(250);DelayUs(250);DelayUs(250);DelayUs(250); void WriteCommand(unsigned char

12、c)DelayMs(5);/short delay before operationE=0;RS=0;RW=0;_nop_();E=1;Data=c;E=0;void WriteData(unsigned char c)DelayMs(5); /short delay before operationE=0;RS=1;RW=0;_nop_();E=1;Data=c;E=0;RS=0;void ShowChar(unsigned char pos,unsigned char c) unsigned char p;if (pos>=0x10)p=pos+0xb0; /是第二行則命令代碼高4

13、位為0xcelsep=pos+0x80; /是第二行則命令代碼高4 位為0x8WriteCommand (p);/write commandWriteData (c); /write datavoid ShowString (unsigned char line,char *ptr)unsigned char l,i;l=line<<4;for (i=0;i<16;i+)ShowChar (l+,*(ptr+i);/ 循環(huán)顯示 16 個字符void InitLcd()DelayMs(15);WriteCommand(0x38); /display modeWriteComma

14、nd(0x38); /display modeWriteCommand(0x38); /display modeWriteCommand(0x06); /顯示光標(biāo)移動位置WriteCommand(0x0c); /顯示開及光標(biāo)設(shè)置WriteCommand(0x01); /顯示清屏void disp(void) FirstLine2='0'+TempData0;FirstLine4='0'+TempData1;FirstLine3='.'FirstLine6='V'FirstLine9='0'+TempData2;FirstLine11='0'+TempData3;FirstLine10='.'FirstLine13='V'SecondLine2='0'+TempData4;SecondLine4='0'+TempData5;Se

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論