攝像機(jī)電機(jī)的自動(dòng)控制,溫度采集 sbit inc=P3^4 //焦距增加值按鍵 sbit dec=P3^5 //焦距減少值按鍵 sbit m0=P1^6 //焦距電機(jī)正轉(zhuǎn)輸出 sbit m1=P1^5 //焦距電機(jī)反轉(zhuǎn)輸出 sbit rled=P1^2 //輸出至紅發(fā)光管 sbit gled=P1^3 //輸出至綠發(fā)光管 sbit out_drv=P1^4 //輸出負(fù)脈沖至驅(qū)動(dòng)板 sbit out_light=P3^1 //輸出控制220V光源繼電器 sbit out_fan=P3^0 //輸出控制12V風(fēng)扇繼電器 sbit check_tem=P3^6 //溫度檢測端 sbit check_light=P3^7 //光源檢測端
上傳時(shí)間: 2017-03-20
上傳用戶:a6697238
sbit DS1302_CLK = P3^4 //實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 sbit DS1302_IO = P3^3 //實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 sbit DS1302_RST = P3^5 //實(shí)時(shí)時(shí)鐘復(fù)位線引腳
上傳時(shí)間: 2017-08-18
上傳用戶:kikye
/*--------- 8051內(nèi)核特殊功能寄存器 -------------*/ sfr ACC = 0xE0; //累加器 sfr B = 0xF0; //B 寄存器 sfr PSW = 0xD0; //程序狀態(tài)字寄存器 sbit CY = PSW^7; //進(jìn)位標(biāo)志位 sbit AC = PSW^6; //輔助進(jìn)位標(biāo)志位 sbit F0 = PSW^5; //用戶標(biāo)志位0 sbit RS1 = PSW^4; //工作寄存器組選擇控制位 sbit RS0 = PSW^3; //工作寄存器組選擇控制位 sbit OV = PSW^2; //溢出標(biāo)志位 sbit F1 = PSW^1; //用戶標(biāo)志位1 sbit P = PSW^0; //奇偶標(biāo)志位 sfr SP = 0x81; //堆棧指針寄存器 sfr DPL = 0x82; //數(shù)據(jù)指針0低字節(jié) sfr DPH = 0x83; //數(shù)據(jù)指針0高字節(jié) /*------------ 系統(tǒng)管理特殊功能寄存器 -------------*/ sfr PCON = 0x87; //電源控制寄存器 sfr AUXR = 0x8E; //輔助寄存器 sfr AUXR1 = 0xA2; //輔助寄存器1 sfr WAKE_CLKO = 0x8F; //時(shí)鐘輸出和喚醒控制寄存器 sfr CLK_DIV = 0x97; //時(shí)鐘分頻控制寄存器 sfr BUS_SPEED = 0xA1; //總線速度控制寄存器 /*----------- 中斷控制特殊功能寄存器 --------------*/ sfr IE = 0xA8; //中斷允許寄存器 sbit EA = IE^7; //總中斷允許位 sbit ELVD = IE^6; //低電壓檢測中斷控制位 8051
上傳時(shí)間: 2013-10-30
上傳用戶:yxgi5
TLC2543是TI公司的12位串行模數(shù)轉(zhuǎn)換器,使用開關(guān)電容逐次逼近技術(shù)完成A/D轉(zhuǎn)換過程。由于是串行輸入結(jié)構(gòu),能夠節(jié)省51系列單片機(jī)I/O資源;且價(jià)格適中,分辨率較高,因此在儀器儀表中有較為廣泛的應(yīng)用。 TLC2543的特點(diǎn) (1)12位分辯率A/D轉(zhuǎn)換器; (2)在工作溫度范圍內(nèi)10μs轉(zhuǎn)換時(shí)間; (3)11個(gè)模擬輸入通道; (4)3路內(nèi)置自測試方式; (5)采樣率為66kbps; (6)線性誤差±1LSBmax; (7)有轉(zhuǎn)換結(jié)束輸出EOC; (8)具有單、雙極性輸出; (9)可編程的MSB或LSB前導(dǎo); (10)可編程輸出數(shù)據(jù)長度。 TLC2543的引腳排列及說明 TLC2543有兩種封裝形式:DB、DW或N封裝以及FN封裝,這兩種封裝的引腳排列如圖1,引腳說明見表1 TLC2543電路圖和程序欣賞 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上傳時(shí)間: 2013-11-19
上傳用戶:shen1230
#ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令 */ #define __ACTIVE_ 0x01 // 主機(jī)詢問從機(jī)是否存在 #define __GETDATA_ 0x02 // 主機(jī)發(fā)送讀設(shè)備請求 #define __OK_ 0x03 // 從機(jī)應(yīng)答 #define __STATUS_ 0x04 // 從機(jī)發(fā)送設(shè)備狀態(tài)信息 #define __MAXSIZE 0x08 // 緩沖區(qū)長度 #define __ERRLEN 12 // 任何通信幀長度超過12則表示出錯(cuò) uchar dbuf[__MAXSIZE]; // 該緩沖區(qū)用于保存設(shè)備狀態(tài)信息 uchar dev; // 該字節(jié)用于保存本機(jī)設(shè)備號 sbit M_DE = P1^0; // 驅(qū)動(dòng)器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效
標(biāo)簽: 485 RS 51單片機(jī) 通訊程序
上傳時(shí)間: 2014-12-26
上傳用戶:604759954
/通過DS18B20測試當(dāng)前環(huán)境溫度, 并通過數(shù)碼管顯示當(dāng)前溫度值, 目前顯示范圍: 0.0~ +99.9度 #include #include #define uchar unsigned char #define uint unsigned int #define DATAPORT P0 //定義P0口為Led數(shù)據(jù)口 //#define SETTEMP P1 //定義P1口為設(shè)定溫度 #define SELECT P2 //定義P2口為選擇信號 sbit L1 = P1^1; //燈作為電機(jī) sbit L2 = P1^2; sbit L3 = P1^3;
上傳時(shí)間: 2013-11-04
上傳用戶:liulinshan2010
C51 中的關(guān)鍵字關(guān)鍵字 用途 說明auto 存儲(chǔ)種類說明 用以說明局部變量,缺省值為此break 程序語句 退出最內(nèi)層循環(huán)case 程序語句 Switch 語句中的選擇項(xiàng)char 數(shù)據(jù)類型說明 單字節(jié)整型數(shù)或字符型數(shù)據(jù)const 存儲(chǔ)類型說明 在程序執(zhí)行過程中不可更改的常量值continue 程序語句 轉(zhuǎn)向下一次循環(huán)default 程序語句 Switch 語句中的失敗選擇項(xiàng)do 程序語句 構(gòu)成do..while 循環(huán)結(jié)構(gòu)double 數(shù)據(jù)類型說明 雙精度浮點(diǎn)數(shù)else 程序語句 構(gòu)成if..else 選擇結(jié)構(gòu)enum 數(shù)據(jù)類型說明 枚舉extern 存儲(chǔ)種類說明 在其他程序模塊中說明了的全局變量flost 數(shù)據(jù)類型說明 單精度浮點(diǎn)數(shù)for 程序語句 構(gòu)成for 循環(huán)結(jié)構(gòu)goto 程序語句 構(gòu)成goto 轉(zhuǎn)移結(jié)構(gòu)if 程序語句 構(gòu)成if..else 選擇結(jié)構(gòu)int 數(shù)據(jù)類型說明 基本整型數(shù)long 數(shù)據(jù)類型說明 長整型數(shù)register 存儲(chǔ)種類說明 使用CPU 內(nèi)部寄存的變量return 程序語句 函數(shù)返回short 數(shù)據(jù)類型說明 短整型數(shù)signed 數(shù)據(jù)類型說明 有符號數(shù),二進(jìn)制數(shù)據(jù)的最高位為符號位sizeof 運(yùn)算符 計(jì)算表達(dá)式或數(shù)據(jù)類型的字節(jié)數(shù)static 存儲(chǔ)種類說明 靜態(tài)變量struct 數(shù)據(jù)類型說明 結(jié)構(gòu)類型數(shù)據(jù)swicth 程序語句 構(gòu)成switch 選擇結(jié)構(gòu)typedef 數(shù)據(jù)類型說明 重新進(jìn)行數(shù)據(jù)類型定義union 數(shù)據(jù)類型說明 聯(lián)合類型數(shù)據(jù)unsigned 數(shù)據(jù)類型說明 無符號數(shù)數(shù)據(jù)void 數(shù)據(jù)類型說明 無類型數(shù)據(jù)volatile 數(shù)據(jù)類型說明 該變量在程序執(zhí)行中可被隱含地改變while 程序語句 構(gòu)成while 和do..while 循環(huán)結(jié)構(gòu)ANSIC 標(biāo)準(zhǔn)關(guān)鍵字關(guān)鍵字 用途 說明bit 位標(biāo)量聲明 聲明一個(gè)位標(biāo)量或位類型的函數(shù)sbit 位標(biāo)量聲明 聲明一個(gè)可位尋址變量
標(biāo)簽: C51
上傳時(shí)間: 2013-10-08
上傳用戶:waves_0801
這一顆,我們學(xué)習(xí)如何讓跑馬燈自動(dòng)按照我們預(yù)定的順序進(jìn)行。這種控制在工控場合經(jīng)常用到。這個(gè)程序里,我們預(yù)先定義了一個(gè)變化的順序speedcode,每跑一圈燈就根據(jù)預(yù)定設(shè)置的表格數(shù)據(jù)來決定下一圈的跑馬速度。這樣我們就實(shí)現(xiàn)了按照預(yù)定的順序自動(dòng)變化運(yùn)行。請看代碼:-----------------------------------#define uchar unsigned char //定義一下方便使用#define uint unsigned int#define ulong unsigned long#include <reg52.h> //包括一個(gè)52 標(biāo)準(zhǔn)內(nèi)核的頭文件sbit P10 = P1^0; //頭文件中沒有定義的IO 就要自己來定義了sbit P11 = P1^1;sbit P12 = P1^2;sbit P13 = P1^3;bit ldelay=0; //長定時(shí)溢出標(biāo)記,預(yù)置是0uchar speed=10; //設(shè)置一個(gè)變量保存跑馬燈的移動(dòng)速度uchar code speedcode[10]={3,1,5,12,3,20,2,10,1,4}; //10 個(gè)預(yù)定義的速度char code dx516[3] _at_ 0x003b;//這是為了仿真設(shè)置的//可編程自動(dòng)控制跑馬燈void main(void) // 主程序{uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預(yù)定的寫入P1 的值uchar ledi; //用來指示顯示順序uchar i;RCAP2H =0x10; //賦T2 的預(yù)置值0x1000,溢出30 次就是1 秒鐘RCAP2L =0x00;TR2=1; //啟動(dòng)定時(shí)器ET2=1; //打開定時(shí)器2 中斷EA=1; //打開總中斷
標(biāo)簽: 可編程 自動(dòng)控制 控制 跑馬燈
上傳時(shí)間: 2013-11-20
上傳用戶:ming529
#include<reg51.h>/*************************ds1302與at89s52引腳連接********************/sbit T_RST=P3^5; sbit T_CLK=P3^6; sbit T_IO=P3^7; sbit ACC0=ACC^0;sbit ACC7=ACC^7;unsigned char seg[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09}; //0~~9段碼 /******************DS1302:寫入操作(上升沿)*********************/ void write_byte(unsigned char da){ unsigned char i; ACC=da; for(i=8;i>0;i--) { T_IO=ACC0; T_CLK=0; T_CLK=1; ACC=ACC>>1; }} /******************DS1302:讀取操作(下降沿)*****************/unsigned char read_byte(void){ unsigned char i; for(i=0;i<8;i++) { ACC=ACC>>1; T_CLK = 1; T_CLK = 0; ACC7 = T_IO; } return(ACC); } /******************DS1302:寫入數(shù)據(jù)(先送地址,再寫數(shù)據(jù))***************************/ void write_1302(unsigned char addr,unsigned char da){ T_RST=0; //停止工作 T_CLK=0; T_RST=1; //重新工作 write_byte(addr); //寫入地址 write_byte(da); T_RST=0; T_CLK=1;}
上傳時(shí)間: 2014-01-17
上傳用戶:sglccwk
//芯片資料請到www.elecfans.com查找 //DS1820 C51 子程序//這里以11.0592M晶體為例,不同的晶體速度可能需要調(diào)整延時(shí)的時(shí)間//sbit DQ =P2^1;//根據(jù)實(shí)際情況定義端口 typedef unsigned char byte;typedef unsigned int word; //延時(shí)void delay(word useconds){ for(;useconds>0;useconds--);} //復(fù)位byte ow_reset(void){ byte presence; DQ = 0; //pull DQ line low delay(29); // leave it low for 480us DQ = 1; // allow line to return high delay(3); // wait for presence presence = DQ; // get presence signal delay(25); // wait for end of timeslot return(presence); // presence signal returned} // 0=presence, 1 = no part //從 1-wire 總線上讀取一個(gè)字節(jié)byte read_byte(void){ byte i; byte value = 0; for (i=8;i>0;i--) { value>>=1; DQ = 0; // pull DQ low to start timeslot DQ = 1; // then return high delay(1); //for (i=0; i<3; i++); if(DQ)value|=0x80; delay(6); // wait for rest of timeslot } return(value);} //向 1-WIRE 總線上寫一個(gè)字節(jié)void write_byte(char val){ byte i; for (i=8; i>0; i--) // writes byte, one bit at a time { DQ = 0; // pull DQ low to start timeslot DQ = val&0x01; delay(5); // hold value for remainder of timeslot DQ = 1; val=val/2; } delay(5);} //讀取溫度char Read_Temperature(void){ union{ byte c[2]; int x; }temp; ow_reset(); write_byte(0xCC); // Skip ROM write_byte(0xBE); // Read Scratch Pad temp.c[1]=read_byte(); temp.c[0]=read_byte(); ow_reset(); write_byte(0xCC); //Skip ROM write_byte(0x44); // Start Conversion return temp.x/2;}
上傳時(shí)間: 2013-11-03
上傳用戶:hongmo
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1