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

正文內(nèi)容

單片機(jī)課程設(shè)計(jì)_多功能定時器(已修改)

2025-09-08 21:33 本頁面
 

【正文】 多功能定時裝置 1 單片機(jī)課程設(shè)計(jì) 多功能定時器 一、設(shè)計(jì)目的: 在理論學(xué)習(xí)的基礎(chǔ)上,通過完成一個涉及 MCS51 單片機(jī)多種資源應(yīng)用并具有綜合功能的小系統(tǒng)目標(biāo)板的設(shè)計(jì)與編程應(yīng)用; 能夠?qū)﹄娮与娐?、電子元器件、印制電路板等方面的知識進(jìn)一步加深認(rèn)識,在軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高; 使學(xué)生增進(jìn)對單片機(jī)的感性認(rèn)識,加深對單片機(jī)理論方面的理解。使學(xué)生掌握單片機(jī)的內(nèi)部功能模塊的應(yīng)用,如定時器 /計(jì)數(shù)器、中斷、片內(nèi)外存貯器、I/O 口、串行口通信等; 使學(xué)生了解和掌握單片機(jī)應(yīng)用系統(tǒng)的軟硬件設(shè)計(jì)過程、方 法及實(shí)現(xiàn),為以后設(shè)計(jì)和實(shí)現(xiàn)單片機(jī)應(yīng)用系統(tǒng)打下良好基礎(chǔ)。 二、設(shè)計(jì)功能說明 數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對時,分,秒,數(shù)字顯示的計(jì)時裝置,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來了極大的方便,而且大大地?cái)U(kuò)展了鐘表的報(bào)時功能。數(shù)字鐘已成為人們?nèi)粘I钪械谋匦杵?,本設(shè)計(jì)可實(shí)現(xiàn)如下功能: 使用實(shí)時時鐘芯片寫入及讀取時間 用 LCD 顯示,可顯示年、月、日、時、分、秒、星期、農(nóng)歷日期、節(jié)日 選擇蜂鳴器電路,實(shí)現(xiàn)兩個鬧鐘設(shè)置和事件提示功能 實(shí)現(xiàn)時鐘校正功能, 12 小時 /24 小時切換功能 顯示當(dāng)前時間為上午時間或下午時間 整點(diǎn)報(bào)時功能 按鍵功能如下: 對顯示時間的設(shè)置 按鍵 0:進(jìn)入設(shè)置模式,實(shí)現(xiàn)秒( S)、分( M)、時( H)、年( Y)、月( m)、日( D)、星期( W)設(shè)置的切換,并在 LCD 右下角顯示所設(shè)置的項(xiàng)目,當(dāng)各項(xiàng)目設(shè)置完畢后,再按下按鍵 0 則返回主界面正常顯示時間; 按鍵 1:每按一次按鍵 1,對所設(shè)置的時間加 1,當(dāng)設(shè)置的時間超過它的最大值時,該項(xiàng)自動為 0,例如:當(dāng)設(shè)置秒為 59 時,秒自動清零; 按鍵 2:每按一次按鍵 :2,對所設(shè)置 的時間減 1,當(dāng)設(shè)置的時間小于 0 時,該項(xiàng)自動為它的最大值; 按鍵 3:設(shè)置完成后的確認(rèn)鍵并可按此鍵中途退出設(shè)置,時間按用戶設(shè)置值正常計(jì)時; 多功能定時裝置 2 按鍵 7:實(shí)現(xiàn)時鐘校正功能, 12 小時 /24 小時切換功能。 對鬧鐘的設(shè)置 按鍵 4:進(jìn)入鬧鐘 1 的設(shè)置,并在 LCD 右上方顯示“ CLOCK1”并通過按鍵 0、 2 設(shè)置用戶所需鬧鐘時間,完成鬧鐘 1 的設(shè)置后,通過按鍵 0 進(jìn)入鬧鐘 2 的設(shè)置,并在 LCD 右上方顯示“ CLOCK2”,若無需設(shè)置鬧鐘 2,則通過按鍵 3 退出鬧鐘設(shè)置,返回主界面正常顯示時間; 按鍵 5:設(shè)置鬧鐘是否開啟,例如:當(dāng)設(shè)置鬧 鐘 1 為開啟狀態(tài)時,在 LCD 右上方顯示“ *CLOCK1”當(dāng)鬧鐘,并在返回主界面后顯示“ C1”表示鬧鐘 1 開啟; 三、整體設(shè)計(jì)思路 這部分主要介紹工作安排和整體設(shè)計(jì)的思想。工作過程規(guī)劃如下: 熟悉硬件 了解各引腳功能 完成整體電路圖 認(rèn)真學(xué)習(xí) C 語言 分塊設(shè)計(jì)各部分電路 將分塊的電路組合 確定結(jié)構(gòu)和思路 綜合各程序完成整體程序 調(diào)試程序,進(jìn)行修改 完成 編輯各個程序模塊 對程序編譯,下板測試 對測試中的問題再調(diào)試 多功能定時裝置 3 四、主程序流程圖 上電初始化 顯示時間初值 與鬧鐘時間相同? 整點(diǎn)? 不響 Keyvalue=getkey() Key=0? Key=1? 是否開啟? 響鈴 不響 報(bào)時 進(jìn)入時間設(shè)置 各設(shè)置項(xiàng)加一 Y Y N Y N Y Y N N N N 多功能定時裝置 4 Key=2? Key=3? Key=4? Key=5? Key=7? 結(jié)束 各設(shè)置項(xiàng)減一 退出設(shè)置回到主界面繼續(xù)計(jì)時 鬧鐘設(shè)置 鬧鐘已開啟? 關(guān)閉鬧鐘 開啟鬧鐘,顯示 * 12/24 進(jìn)制的轉(zhuǎn)換 Y Y Y Y Y Y N N N N N 多功能定時裝置 5 五、電氣原理圖(見附圖) 六、實(shí)驗(yàn)程序 鍵盤程序( Keyprocess) 鍵盤與 848 相連接,采用矩陣鍵盤的方式 P2用于列掃描, P1用于行掃描,經(jīng)過消抖及等待鍵釋放的程序,將最終正確的結(jié)果置于 getkey()。程序?qū)崿F(xiàn)如下: include void KeyDelay(unsigned int KeyJsTime)。 //鍵盤掃描延時函數(shù)聲明 unsigned char GetKey()。 //掃描后獲取鍵值 unsigned char GetKey() { static unsigned char KeyHaveFree=1。 static unsigned int KeyJs=0。 unsigned char temp,KeyTemp=0xff。 P1amp。=0xf0。 P2amp。=0xf0。 // 將低四位置零做 I/O 口 temp=P1amp。0x0f。 if(KeyHaveFree) { if(temp!=0x0f) { KeyDelay(1000)。 //延時消除抖動 if(temp==(P1amp。0x0f)) //延時后確認(rèn)是否有鍵按下,并獲取具體鍵值 { P2|=0x0e。 switch(P1amp。0x0f) { case 0x0e:KeyTemp=3。break。 case 0x0d:KeyTemp=7。break。 case 0x0b:KeyTemp=11。break。 case 0x07:KeyTemp=15。break。 case 0x0f:break。 default:KeyTemp= 0x80。break。 } 多功能定時裝置 6 P2amp。=0xf0。 P2|=0x0d。 switch(P1amp。0x0f) { case 0x0e:KeyTemp= 2。break。 case 0x0d:KeyTemp= 6。break。 case 0x0b:KeyTemp= 10。break。 case 0x07:KeyTemp= 14。break。 case 0x0f:break。 default:KeyTemp= 0x81。break。 } P2amp。=0xf0。 P2|=0x0b。 switch(P1amp。0x0f) { case 0x0e:KeyTemp= 1。break。 case 0x0d:KeyTemp= 5。break。 case 0x0b:KeyTemp= 9。break。 case 0x07:KeyTemp= 13。break。 case 0x0f:break。 default:KeyTemp= 0x82。break。 } P2amp。=0xf0。 P2|=0x07。 switch(P1amp。0x0f) { case 0x0e:KeyTemp= 0。break。 case 0x0d:KeyTemp= 4。break。 case 0x0b:KeyTemp= 8。break。 case 0x07:KeyTemp= 12。break。 case 0x0f:break。 default:KeyTemp= 0x83。break。 } KeyHaveFree=0。 //LCDPrintNumber(6,11,5,KeyTemp)。 } } } else { KeyJs++。 if(KeyJs70) 多功能定時裝置 7 { KeyHaveFree=1。 KeyJs=66。 } if(temp==0x0f){KeyHaveFree=1。KeyJs=0。} KeyTemp=0xf0。 } return KeyTemp。 } void KeyDelay(unsigned int KeyJsTime) { unsigned char temp。 unsigned int JsKeyDelay。 for(JsKeyDelay=0。JsKeyDelayKeyJsTime。JsKeyDelay++)temp++。 } Lcd 程序 (1602) include sbit RS=P3^6。 sbit RW=P3^5。//位定義 sbit EN=P3^3。 void delay(unsigned int z)。延時函數(shù)聲明 void write_(unsigned char )。LCD 顯示位置函數(shù)聲明 void write_data(unsigned char date)。寫數(shù)據(jù)函數(shù)聲明 void init()。 void init() //初始化 { RS=0。 RW=0。 EN=0。 write_(0x38)。 write_(0x0f)。 write_(0x06)。 } void delay(unsigned int z) //延時函數(shù) 延時時間 =Z*110 { unsigned int x,y。 for(x=z。x0。x) for(y=110。y0。y)。 } P3:控制位 P0:數(shù)據(jù)位 RW=0:寫允許 RW=1:讀允許 RS=0:寫地址 RS=1:寫數(shù)據(jù) P0口 =: P0 口輸出顯示位置的地址 P0口 =data: P0 口輸出數(shù)據(jù)的地址 EN=1:從 1602 顯示到 LCD 屏 EN=0:關(guān)掉顯示以便顯示下一個數(shù)據(jù) 多功能定時裝置 8 void write_(unsigned char ) // { RS=0。 RW=0。 P0=。 delay(5)。 EN=1。 delay(5)。 EN=0。 } void write_data(unsigned char date) { RS=1。 RW=0。 P0=date。 delay(5)。 EN=1。 delay(5)。 EN=0。 } iic 程序( RTC) //實(shí)時時鐘 include void iic_start(void)。 void iic_stop(void)。 void iic_ack(void)。 bit read_ack(void)。 void iic_nack()。 unsigned char get_byte(void)。 void out_byte(unsigned char dd)。 void IIC_Delay_us(unsigned int times)。 void ReadTime(unsigned char TIME[7])。 void SetTime(unsigned char TIME[7])。 void Sw
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1