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

正文內容

基于單片機的數(shù)字溫度計設計論文-資料下載頁

2025-06-27 19:28本頁面
  

【正文】 MAX232 Transistors1 Q5 PNP Miscellaneous3 K1K3 1 LS1 SPEAKER 1 X1 CRYSTAL 附錄2 全部程序清單include includeinclude //_nop_()。延時函數(shù)用define dm P0 //段碼輸出口define uchar unsigned chardefine uint unsigned intsbit DQ=P1^7。 //溫度輸入口sbit L1=P2^0。 //數(shù)碼管1sbit L2=P2^1。 //數(shù)碼管2sbit L3=P2^2。 //數(shù)碼管3sbit L4=P2^3。 //數(shù)碼管4sbit beep=P3^5。 //蜂鳴器sbit set=P1^4。 //溫度設置切換鍵sbit add=P1^5。 //溫度加sbit dec=P1^6。 //溫度減int temp1=0。 //顯示當前溫度和設置溫度的標志位為0 時顯示當前溫度uint h。uint temp。uchar r。uchar high=120,low=20。uchar sign。uchar q=0。uchar tt=0。uchar scale。uchar code ditab[16]={0x00,0x01,0x01,0x02, //溫度小數(shù)部分用查表法 0x03,0x03,0x04,0x04, 0x05,0x06,0x06,0x07, 0x08,0x08,0x09,0x09}。uchar code table_dm[12]={0x3f,0x06,0x5b,0x4f, //小數(shù)斷碼表 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x00,0x40}。uchar table_dm1[]={0xbf,0x86,0xdb,0xcf, //共陰LED 段碼表0 1 2 3 4 5 6 7 8 9 不亮 0xe6,0xed,0xfd,0x87, 0xff,0xef}。 //個位帶小數(shù)點的斷碼表uchar data temp_data[2]={0x00,0x00}。 //讀出溫度暫放uchar data display[5]={0x00,0x00,0x00,0x00,0x00}。 //顯示單元數(shù)據,共4 個數(shù)據和一個運算暫用void delay(uint t) // 延時函數(shù){for (。t0。t)。}void scan(){int j。for(j=0。j4。j++){switch (j){case 0: dm=table_dm[display[0]]。L4=0。delay(50)。L4=1。//小數(shù)case 1: dm=table_dm1[display[1]]。L3=0。delay(50)。L3=1。//個位case 2: dm=table_dm[display[2]]。L2=0。delay(50)。L2=1。//十位case 3: dm=table_dm[display[3]]。L1=0。delay(50)。L1=1。//百位 //else{dm=table_dm[b3]。w3=0。delay(50)。w3=1。}}}}ow_reset(void) //DS18B20 復位函數(shù){char presence=1。while(presence){while(presence){DQ=1。 //從高拉倒低_nop_()。_nop_()。DQ=0。delay(50)。 //50 usDQ=1。delay(6)。 //6 uspresence=DQ。 //presence=0 復位成功,繼續(xù)下一步}delay(45)。 //延時45 uspresence=~DQ。}DQ=1。 //拉高電平}void write_byte(uchar val) //DS18B20 寫命令函//向1WIRE 總線上寫1 個字節(jié){uchar i。for(i=8。i0。i){DQ=1。_nop_()。_nop_()。 //從高拉倒低DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //5 usDQ=valamp。0x01。 //最低位移出delay(6)。 //66 usval=val/2。 //右移1 位}DQ=1。delay(1)。}uchar read_byte(void) //DS18B20 讀1 字節(jié)函數(shù)//從總線上取1 個字節(jié){uchar i。uchar value=0。for(i=8。i0。i){DQ=1。_nop_()。_nop_()。value=1。DQ=0。_nop_()。_nop_()。_nop_()。_nop_()。 //4 usDQ=1。_nop_()。_nop_()。_nop_()。_nop_()。 //4 usif(DQ)value|=0x80。delay(6)。 //延時66 us}DQ=1。return(value)。}read_temp() //讀出溫度函數(shù){ow_reset()。 //總線復位delay(200)。write_byte(0xcc)。 //發(fā)命令write_byte(0x44)。 //發(fā)轉換命令ow_reset()。delay(1)。write_byte(0xcc)。 //發(fā)命令write_byte(0xbe)。temp_data[0]=read_byte()。 //讀溫度值的第字節(jié)temp_data[1]=read_byte()。 //讀溫度值的高字節(jié)temp=temp_data[1]。temp=8。temp=temp|temp_data[0]。 // 兩字節(jié)合成一個整型變量。return temp。 //返回溫度值}work_temp(uint tem) //溫度數(shù)據處理函數(shù)//二進制高字節(jié)的低半字節(jié)和低字節(jié)的高半字節(jié)組成一字節(jié),這個字節(jié)的二進制轉換為十進制后,就是溫度值的百、十、個位值,而剩下的低字節(jié)的低半字節(jié)轉化成十進制后,就是溫度值的小數(shù)部分{uchar n=0。if(tem6348) // 溫度值正負判斷{tem=65536tem。n=1。} // 負溫度求補碼,標志位置1display[4]=temamp。0x0f。 // 取小數(shù)部分的值display[0]=ditab[display[4]]。 // 存入小數(shù)部分顯示值display[4]=tem4。 // 取中間八位,即整數(shù)部分的值display[3]=display[4]/100。 // 取百位數(shù)據暫存display[1]=display[4]%100。 // 取后兩位數(shù)據暫存display[2]=display[1]/10。 // 取十位數(shù)據暫存display[1]=display[1]%10。 //個位數(shù)據r=display[1]+display[2]*10+display[3]*100。if(!display[3])//符號位顯示判斷{display[3]=0x0a。 //最高位為0 時不顯示if(!display[2]){display[2]=0x0a。 //次高位為0 時不顯示}}if(n){display[3]=0x0b。} //負溫度時最高位顯示}void xianshi(int horl) //設置溫度顯示轉換{int n=0。if(horl128){horl=256horl。n=1。}display[3]=horl/100。display[3]=display[3]amp。0x0f。display[2]=horl%100/10。display[1]=horl%10。display[0]=0。if(!display[3]){display[3]=0x0a。 //最高位為0 時不顯示if(!display[2]){display[2]=0x0a。 //次高位為0 時不顯示}}if(n){display[3]=0x0b。 //負溫度時最高位顯示}}void keyscan() //按鍵查詢程序{int temp1。 //最高溫度和最低溫度標志位if(set==0){while(1){delay(500)。//消抖if(set==0){temp1++。while(!set)scan()。}if(temp1==1){xianshi(high)。scan()。if(add==0){while(!add)scan()。high+=1。}if(dec==0){while(!dec)scan()。high=1。}}if(temp1==2){xianshi(low)。if(add==0){while(!add)scan()。low+=1。}if(dec==0){while(!dec)scan()。low=1。}scan()。}if(temp1=3){temp1=0。break。}}}}void BEEP(){if(r=high||rlow){beep=!beep。}else{beep=0。}}void main() //主函數(shù){dm=0x00。 //初始化端口L4=0。L3=0。L2=0。L1=0。for(h=0。h4。h++) //開機顯示0000{display[h]=0。}ow_reset()。 //開機先轉換一次write_byte(0xcc)。 //Skip ROMwrite_byte(0x44)。 //發(fā)轉換命令for(h=0。h100。h++) //開機顯示0000{scan()。}while(1){if (temp1==0){work_temp(read_temp())。 //處理溫度數(shù)據BEEP()。scan()。 //顯示溫度值keyscan()。}elsekeyscan()。}}附錄
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1