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

正文內(nèi)容

基于單片機的自行車速度里程表的設(shè)計-資料下載頁

2025-06-27 20:04本頁面
  

【正文】 e_sec = 0。 //計時器秒鐘數(shù)unsigned char time_min = 0。 //計時器分鐘數(shù)unsigned char time_hour = 0。 //計時器小時數(shù)unsigned char timer0_num = 0。 //定時器0的50ms中斷次數(shù)unsigned char timer1_num = 0。 //定時器1的50ms中斷次數(shù)unsigned char distance_num = 0。 //檢測到的卡片個數(shù)unsigned char dst_one_sec = 0。 //1s內(nèi)檢測到的卡片個數(shù)unsigned char distance_10m_num = 0。 //10m內(nèi)檢測到的卡片個數(shù)unsigned char bit1_code,bit2_code,bit3_code,bit4_code。unsigned int speed = 0。 //速度unsigned int distance = 0。 //里程unsigned int v_distance = 0。 //累積距離unsigned int time = 0。 //時間unsigned int time_real = 2。 //累積時間unsigned int v_speed = 0。 //平均速度unsigned int dis_value。 //顯示數(shù)值// void delayms(unsigned char ms)// 1ms延時函數(shù) { unsigned char i。 while(ms) { for(i = 0。 i 120。 i++)。 }} void main(){//初始化 P0 = 0xff。 //關(guān)數(shù)碼管 P2 = 0xff。 TMOD=0x11。//定時器0、1,工作方式1,16位 TH0 = 0x3c。 TL0 = 0xaf。 //定時器0設(shè)定50ms定時初始值 TH1 = 0x3c。 TL1 = 0xaf。 //定時器1設(shè)定50ms定時初始值 TR0 = on。 //開放定時器0 TR1 = on。 //開放定時器1 IP = 0x0b。 //中斷優(yōu)先級控制,INT1為低優(yōu)先級,其它為高優(yōu)先級 IE = 0x8f。 //開放外部中斷0、外部中斷定時器0、定時器1 IT0=1。 //外部中斷0下降沿觸發(fā) IT1=1。 //外部中斷1下降沿觸發(fā) dis_index = 0x00。 dis_digit = 0xef。//數(shù)碼管驅(qū)動程序 while(1) { P0 = 0xff。 P2 = 0xff。 if((dis_key==on)amp。amp。(!sleep)) { if (dis_mod==speed_mod) {dis_value = speed。} //里程模式,顯示路程 if (dis_mod==distance_mod) {dis_value = distance。} //速度模式,顯示速度 if (dis_mod==v_speed_mod) {dis_value = v_speed。} //平均速度模式,顯示平均速度 if (dis_mod==time_mod) {dis_value = time。} //計時器模式,顯示時間 if (dis_mod==v_distance_mod) {dis_value = v_distance。} //特定距離模式,顯示兩個特定地之間的距離 bit4_code = dis_value % 10。 //顯示最低位 dis_value /= 10。 bit3_code = dis_value % 10。 //顯示次低位 dis_value /= 10。 bit2_code = dis_value % 10。 //顯示次高位 dis_value /= 10。 if(dis_value!=0) //最高位滅零 {bit1_code = dis_value % 10。} //顯示最高位 else {bit1_code = 10。} dis_buf[0] = dis_code[bit4_code]。 dis_buf[1] = dis_code[bit2_code]4。 //加小數(shù)點 dis_buf[2] = dis_code[bit3_code]。 dis_buf[3] = dis_code[bit1_code]。 P0 = dis_buf[dis_index]。 P2 = dis_digit。 dis_digit *= 2。 //顯示下一位 if(dis_digit==0xf0) {dis_digit=0xef。} dis_index++。 dis_index amp。= 0x03。 // 4個數(shù)碼管全部掃描完一遍之后,再回到第一個開始下一次掃描 delayms(1)。 } } }//等距檢測中斷函數(shù)void int0_int() interrupt 0{ distance_num++。 dst_one_sec++。}//模式切換中斷函數(shù)void int1_int() interrupt 2{ delayms(10)。 if(!key_n) { if(dis_keyamp。amp。(dis_mod==time_mod)) {time_key = !time_key。} //暫停/繼續(xù)計時 key = on。 //按鍵按下標志位開啟 sleep = off。 //退出睡眠模式 dis_key = on。 //顯示開關(guān)開啟 time_wait = 0。 //開始定時 }}//速度、里程定時刷新中斷函數(shù)void timer0_int() interrupt 1{ TH0 = 0x3c。 TL0 = 0xaf。 //設(shè)定50ms定時初始值 timer0_num++。 if(timer0_num==20) { timer0_num = 0。 //定時1s后重新定時 distance_10m_num = distance_num / N。 //求行駛了多少個10米的距離 //其中,N=10/(*R/N*dst_one_sec) distance_num = distance_num % N。 distance = distance + distance_10m_num。 //每秒刷新一次行駛距離 if(time_key) {v_distance = v_distance + distance_10m_num。} //如果啟動計時器每秒刷新一次累積距離 if(distance=65000) {distance = 0。} if(v_distance=65000) {v_distance = 0。} if(dst_one_sec2) { n++。 if(n10) { n = 1。 speed = 0。 //10s內(nèi)檢測到卡片數(shù)小于2,速度為0 sleep = on。 //開啟睡眠模式 } } else { sleep = off。 //關(guān)閉睡眠模式 speed = speed_n * dst_one_sec。 //計算速度,speed=**R/N*dst_one_sec/speed_n*100 ,speed n為刷新一次速度的時間 //其中,R為車輪的半徑,N為車輪內(nèi)安裝的卡片數(shù), //,100表示顯示到小數(shù)點后兩位 //最高時速為160km/h,超過此速度時dst_one_sec溢出 n = 1。 //每刷新一次速度重新確定刷新周期 dst_one_sec = 0。 //重新檢測1s內(nèi)的行車距離 } }}//定時關(guān)閉數(shù)碼管中斷函數(shù)void timer1_int() interrupt 3{ TH1 = 0x3c。 TL1 = 0xaf。 //設(shè)定50ms定時初始值 timer1_num++。 if(timer1_num==20) //每秒鐘刷新一次時間值跟平均速度值 { timer1_num = 0。 if(time_hour) {time = time_hour * 100 + time_min。} //計時超過1小時時的計時方式 else {time = time_min * 100 + time_sec。} //計時在1小時內(nèi)的計時方式//********************按鍵按下后判斷是否為模式切換操作************************ if(key==on) //按鍵按下時執(zhí)行這段 { time_wait++。 if(time_wait==3) { if(!key_n) //按鍵按下超過3秒 { dis_mod++。 //切換顯示模式 if(dis_mod==5) {dis_mod = 0。} //五種模式 } } if(time_wait==6) { if((!key_n)amp。amp。(dis_mod==distance_mod)) //在計時器模式切換到里程模式后 //繼續(xù)保持按鍵按下超過3秒 {dis_cut = off。} //關(guān)閉節(jié)能模式 if((!key_n)amp。amp。(dis_mod==time_mod)) //在計時器模式切換到計時器模式后 //繼續(xù)保持按鍵按下超過3秒 {dis_cut = on。} //開啟節(jié)能模式 if((!key_n)amp。amp。(dis_mod==v_distance_mod)) //在計時器模式切換到特定距離模式后 //繼續(xù)保持按鍵按下超過3秒 { time_sec = 0。 time_min = 0。 //計時器復(fù)位 time_hour = 0。 time_real = 2。 time_key = off。 //停止計時 v_distance = 0。 //重新記錄距離 } } if(time_wait==10) { key = off。 dis_key = on^dis_cut。 //10s后根據(jù)節(jié)省模式?jīng)Q定是否關(guān)閉數(shù)碼管 } } if(time_key) //計時開關(guān)開啟,開始計時 { time_sec++。 //記錄秒數(shù) if(time_sec==60) //每分鐘轉(zhuǎn)化一次時間格式 { time_sec = 0。 time_min++。 //記錄分鐘數(shù) if(time_min==60) { time_min = 0。 time_hour++。 //記錄小時數(shù) if(time_hour==12) //12小時制格式 {time_hour = 0。} } } time_real = time_hour * 3600 + time_min * 60 + time_sec。 //計算時間 }/***************************計算平均速度*****
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1