freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

智能家居警報(bào)系統(tǒng)設(shè)計(jì)物聯(lián)網(wǎng)實(shí)訓(xùn)設(shè)計(jì)報(bào)告-資料下載頁

2025-07-20 01:44本頁面
  

【正文】 /存儲(chǔ)器的讀地址sbit SDA=P3^7。 //AT24C02串行數(shù)據(jù) sbit SCL=P3^6。 //AT24C02串行時(shí)鐘 unsigned char _24C02Read(unsigned char l_address)。 //24C02讀函數(shù)void _24C02Write(unsigned char dat,unsigned char l_address)。 //24C02寫函數(shù)void I2C_write(unsigned char tmp)//I2C寫入一個(gè)8位二進(jìn)制數(shù),高位在前低位在后{ unsigned char i。 for(i=0。i8。i++){ SCL=0。 _nop_()。 _nop_()。 _nop_()。 SDA=(bit)(tmpamp。0x80)。 tmp=1。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 SCL=1。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 } SCL=0。}unsigned char I2C_read(void)////I2C讀取一個(gè)8位二進(jìn)制數(shù),也是高位在前低位在后{ unsigned char i,tmp。 tmp=0。 for(i=0。i8。i++){ SCL=0。 _nop_()。 _nop_()。 _nop_()。 //加入空指令增加穩(wěn)定性,這關(guān)系到頻率問題 SDA=1。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 SCL=1。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 tmp=1。 if(SDA==1) tmp++。 } SCL=0。 return tmp。 }void I2C_ACK(bit tmp) //根據(jù)tmp的0來決定應(yīng)答信號(hào){ SDA=tmp。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 SCL=1。 _nop_()。_nop_()。_nop_()。_nop_()。_nop_()。 SCL=0。 }void I2C_start(void) //看看I2C開始的波形,再對應(yīng)SDA、SCL的輸出{ SDA=1。 _nop_()。 SCL=1。 _nop_()。 SDA=0。 _nop_()。 SCL=0。 _nop_()。}void I2C_stop(void) //I2C結(jié)束{ SDA=0。 _nop_()。 SCL=1。 _nop_()。 SDA=1。 _nop_()。 SCL=0。 _nop_()。}unsigned char _24C02Read(unsigned char l_address){ unsigned char tmp=0。 I2C_start()。 //I2C讀數(shù)據(jù)的開始,到下面的結(jié)束是讀一地址的整個(gè)過程, I2C_write(W24C02)。 //向I2C總線發(fā)出讀取24C02的地址 I2C_ACK(0)。 //下面就得你們自己結(jié)合I2C串口協(xié)議進(jìn)行,先看看24C02數(shù)據(jù)手冊是怎么講I2C協(xié)議的 I2C_write(l_address)。//先寫入地址, I2C_ACK(1)。 I2C_stop()。 I2C_start()。 //再開始讀取數(shù)據(jù) I2C_write(R24C02)。 I2C_ACK(0)。 tmp=I2C_read()。 I2C_ACK(1)。 I2C_stop()。 //讀取一個(gè)地址的數(shù)據(jù)結(jié)束 delay(20)。 return tmp。}void _24C02Write(unsigned char dat,unsigned char l_address){ I2C_start()。 //下面是寫一地址數(shù)據(jù)的過程 I2C_write(W24C02)。 //先向總線發(fā)出寫24C02的地址 I2C_ACK(0)。 I2C_write(l_address)。 //寫入地址 I2C_ACK(0)。 I2C_write(dat)。 //然后寫入數(shù)據(jù) I2C_ACK(1)。 I2C_stop()。 delay(20)。}endifdefine _gsm_Hinclude include uchar sms1[]={AT+CMGF=1\r}。uchar sms2[]={AT+CMGS=13760727792\r}。uchar sms3=0x1A。void InitCom(void)。void gsm(uchar *sms)。//初始化串行口void InitCom(void){uchar THTL。THTL = 0xFD。ET1=0。SCON = 0x40。 //串口方式1,TMOD = 0x20。 //定時(shí)器1定時(shí)方式2TH1 = THTL。TL1 = THTL。TI = 0。TR1 = 1。 //啟動(dòng)定時(shí)器} void gsm(uchar *sms){ uchar i=0,j=0,k=0。 //InitCom()。 longdelay(10)。 while(sms1[i]!=39。\039。) { SBUF=sms1[i]。 while(!TI)。 TI=0。 i++。 } longdelay(10)。 while(sms2[j]!=39。\039。) { SBUF=sms2[j]。 while(!TI)。 TI=0。 j++。 } longdelay(10)。 while(sms[k]!=39。\039。) { SBUF=sms[k]。 while(!TI)。 TI=0。 k++。 } SBUF=sms3。 while(!TI)。 TI=0。}endififndef _key1_Hdefine _key1_Hinclude include code unsigned char key_tab[17]={0xed,0x7e,0x7d,0x7b, 0xbe,0xbd,0xbb,0xde, 0xdd,0xdb,0x77,0xb7, 0xee,0xd7,0xeb,0xe7,0XFF}。//鍵盤的讀取,我們采用分時(shí)掃描unsigned char l_key=0xff。 //定義變量,存放鍵值 unsigned char l_keyold=0xFF。 //做為按鍵松開否的憑證 void ReadKey(void)。 //掃描鍵盤 獲取鍵值void ReadKey(void) //讀鍵盤值{ unsigned char i,j,key。 j=0xfe。 key=0xff。 //設(shè)定初值 for (i=0。i4。i++){ P1=j。 //P1口低4位循環(huán)輸出0,掃描鍵盤 if ((P1amp。0xf0)!=0xf0){ //如果有鍵按下,P1高4位不會(huì)全為1, key=P1。 //讀取P1口,退出循環(huán),否則循環(huán)下次 break。 } j=_crol_(j,1)。 //此函數(shù)功能為左循環(huán)移位 } if (key==0xff){ //如果讀取不到P1口的值,比如是干擾,不做鍵值處理,返回 l_keyold=0xff。 return。 } if(l_keyold==key){ //檢測按鍵放開否,如 return。 } l_keyold=key。 //獲取鍵碼做為放開的憑證 for(i=0。i17。i++){ //查表獲得相應(yīng)的16進(jìn)制值存放l_key變量中 if (key==key_tab[i]){ l_key=i。 break。 } }//程序運(yùn)行到這里,就表明有鍵值被讀取存放于l_key變量中,主程序就可以檢測此變量做相應(yīng)外理。} endififndef _LCD1602_Hdefine _LCD1602_Hinclude include define uchar unsigned chartypedef bit BOOL 。 sbit rs = P0^5。sbit rw = P0^6。sbit ep = P0^7。void delay(uchar)。void longdelay(uchar)。void lcd_wcmd(uchar)。BOOL lcd_bz()。void lcd_pos(uchar)。void lcd_wdat(uchar)。void display(uchar,uchar *)。void lcd_init()。void delay(uchar ms){ // 延時(shí)子程序 uchar i。 while(ms) { for(i = 0。 i i++)。 }}void longdelay(uchar s) //長延時(shí){ while(s) { delay(80)。 }}BOOL lcd_bz(){ // 測試LCD忙碌狀態(tài) BOOL result。 rs = 0。 rw = 1。 ep = 1。 result = (BOOL)(P2 amp。 0x80)。 ep = 0。 return result。 }void lcd_wcmd(uchar cmd){ // 寫入指令數(shù)據(jù)到LCD// while(lcd_bz())。 rs = 0。 rw = 0。 ep = 0。 P2 = cmd。 ep = 1。 ep = 0。 }void lcd_pos(uchar pos){ //設(shè)定顯示位置 lcd_wcmd(pos | 0x80)。}void lcd_wdat(uchar dat) { //寫入字符顯示數(shù)據(jù)到LCD //while(lcd_bz())。 rs = 1。 rw = 0。 ep = 0。 P2 = dat。 ep = 1。 ep = 0。 }void lcd_init(){ //LCD初始化設(shè)定 lcd_wcmd(0x38)。 //function set delay(1)。 lcd_wcmd(0x38)。 //function set delay(1)。 lcd_wcmd(0x08)。 //display on/off delay(1)。 lcd_wcmd(0x01)。 //清除LCD的顯示內(nèi)容 delay(1)。 lcd_wcmd(0x06)。 //entry mode set delay(1)。 lcd_wcmd(0x0c)。 //開顯示,并顯示光標(biāo) delay(1)。}函數(shù)名稱:display()功能 :在LCD上顯示數(shù)組的數(shù)據(jù) ,打印模式說明 :先寫顯示地址,后寫顯示數(shù)據(jù)調(diào)用 :lcd_wcmd(), lcd_pos()入口參數(shù):pos 寫入的位置,q指向要寫入的數(shù)據(jù)所在的數(shù)組返回值 :無void display(uchar pos, uchar *q){ lcd_pos(pos)。 while(*q != 39。\039。) { delay(10)。 lcd_wdat(*q)。 q++。 } }42
點(diǎn)擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1