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

正文內容

紅外報警器-單片機原理及應用課程設計-資料下載頁

2025-06-04 11:22本頁面
  

【正文】 signed int define schar signed char define ulong unsigned long sbit ir=P1^1。//位定義紅外按收引腳 sbit beep=P3^3。//位定義蜂鳴器控制引腳 void check_ir()。//申明查詢紅外函數。 void display_times()。//申明 顯示 函數 void serial_init()。//申明 串 口初始化 函數 void timestrans()。//申明次數拆解函數 void ring()。//申明報警函數。 unsigned char code smg_du[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28}。//定義“ 0~9“對應的數碼管段碼數組 unsigned char code smg_we[]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe}。//定義六位數碼管的位選碼 uchar timesdata[6]。//定義 timesdata數組,保存 16 進制數轉 10進制數的數據 . uint times。//定義全局變量 times,用于保存紅外發(fā)送的次數。 12 uchar receiveok。//定義一個接收完成標志位。 uchar serialdat。//定義一個串口接收變量,用于存放串口收到的數據。 uchar checkir。//定義一個查詢紅外的標志。 uchar ringflag。//定義一個報警標志。 void main ()//主函數 { COM8255=0x80。//初始化 8255 為工作 方式 0,端口為輸出方式 .... serial_init()。//串口工作初始化 .... while(1)//大循環(huán)。 { check_ir()。//查詢紅外。 if(!checkir) display_times()。//查詢后顯示已接收到紅外的次數。 if(ringflag)//如果報警標志開啟,則報警。 { ring()。 //報警。 } } } void serial_init()//申明 串口初始化 函數 { TMOD=0x20。//設置定 時器 1為工作方式 2 TH1=0xfD。 TL1=0xfD。//裝入初值 TR1=1。//啟動定時器 1 SM0=0。 SM1=1。//設置串口為工作方式 1 REN=1。//接收使能。 EA=1。//開總中斷。 ES=1。//串口中斷始能。 } 13 void check_ir() { if(!times)//當 times 為零時(即開機或復位) if(ir)。//等待第一次紅外。(第二次則不要等待,第二次 times 肯定不為 0了) if(!ir)//有紅外。 { times++。//times 加 1... } checkir=0。//關閉紅外查詢標志。(為后面與 A 機握手準備) } void display_times()//顯示 函數 { uchar i。 timestrans()。//先拆解。 for(i=0。i6amp。amp。(checkir==0)。i++)//查詢標志關閉時,才顯示。 { PB8255=smg_du[timesdata[i]]。//送段碼。 PA8255=smg_we[i]。//送位選碼。 delay_50us(10)。//延時點亮 PB8255=0xff。//消影。 } } void ring() { uchar i。 for(i=i0。i)//用于產生一定頻率的方波,始蜂鳴器發(fā)聲。 { beep=0。 delay_10us(8)。 beep=1。 14 delay_10us(8)。 } for(i=100。i0。i)//用顯示去延時,使產生滴滴間斷的報警聲。 display_times()。 } void serial() interrupt 4//串口發(fā) 送 函數 { RI=0。 serialdat=SBUF。//取收到的數據存 serialdat if(!serialdat) checkir=1。//如果口串口收到 0,則 checkir 標志開啟,即 A機中說的握手信號。(用于提示 B機跳出顯示去查詢紅外。) else//如果非零。 if(serialdattimes2)//接收到紅外次數與 A 機串口發(fā)來的次數相差 1的話 { ringflag=1。//報警標志開啟。 checkir=0。//將查詢標志關閉。 (因為報警時也要顯示。 ) } if(serialdat==255)//如果發(fā)的是 255,則清零。 { times=0。//times 計數器清零。 ringflag=0。//報警標志清零。 checkir=0。//紅外查詢清零。 } } void timestrans()//次數拆解函數 { timesdata[0]=times%10。//得到個位, timesdata[1]=times%100/10。//得到十位 timesdata[2]=times%1000/100。//得到百位。 }
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1