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

正文內(nèi)容

基于lcd1602電子時鐘課程設(shè)計報告(更新版)

2024-10-18 15:25上一頁面

下一頁面
  

【正文】 ay1ms(20)。 } void alarmhourset(void) //鬧鐘小時調(diào)整 { unsigned char value。 delay1ms(1)。 while(ADD==0)。 WriteSet1302(0x8e,0x00)。 Write_Address(0x0c)。 if(RED==0) { month。 month=(((datevalueamp。 29 if(CANL==0) { mode=0。 while(RED==0)。0x70)4)*10+(datevalueamp。 Write_(0x0c)。 WriteSet1302(0x80,timevalue)。 while(1) { if(ADD==0) { delay1ms(50)。 } } WriteSet1302(0x8e,0x80)。 display_Minute(minute)。 } } if(RED==0) { delay1ms(10)。 timevalue=ReadSet1302(0x83)。 26 delay1ms(5)。 while(RED==0)。 while(1) { if(ADD==0) { delay1ms(50)。 Write_Date(digit[k])。 Write_(0x0c)。//循環(huán)左移 delay1ms(70)。 Write_Address(0x4f)。 } void displaystar(void) //顯示歡迎界面 { unsigned char i,j。0x70)4)*10+(valueamp。 display_Hour(hours)。 minutes=(((valueamp。 } void display_Time(void) //顯示實時時間 { unsigned char value,day,month,year。 Write_Date(digit[i])。 Write_Address(0x08)。 j=month%10。 i=day/10。 } void display_Hour(unsigned char hour) //在液晶上顯示時 { unsigned char i,j。 delay1ms(1)。039。 Write_Date(39。 Write_Date(39。I39。 Write_Date(39。)。 Write_Date(39。 } void displaymainpart(void)//顯示液晶主要部分 ( 不變化部分 ) { Write_Address(0x01)。 21 delay1ms(1)。 _nop_()。 RW=0。 E=1。 E=0。 _nop_()。 /*液晶忙檢測 */ bit BusyTest(void) { bit result。 //根據(jù)寫日寄存器命令字,寫入日的初始值 WriteSet1302(0x88,((0/10)4|(0%10)))。 19 } void IntDS1302(void) //DS1302初始化 { unsigned char flag。 SCLK=0。 if(DATE==1) date|=0x80。 Write1302(date)。 SCLK=0。 SCLK=0。h++) { for(y=0。i++)。j1。 //DS1302數(shù)據(jù)輸入 sbit REST=P1^2。 15 b、正常顯示時 按下 K2 顯示當(dāng)前溫度并延時 5秒 ;報警時按 K4 退出。 ( 5)在報警時無聲音。 解決方案 。對于 電子時鐘的 制作,我們基于小系板來實現(xiàn),外接 顯示部分的1602LCD 液晶屏、溫度傳感部分 DS18B提供實時時間部分 DS130蜂鳴器、電源接口部分等 。 先根據(jù)仿真檢測當(dāng)中的元件是否符合電路的設(shè)計, 在 KeilC51 寫入程序并且修改 至編譯正確, 在 將寫好的程序入入到 Protues 軟件 單片機芯片上 ,進行仿真 。 設(shè)置 步驟 流程圖 如 圖 42所示 : 顯示歡迎界 面 按 K2? 顯示時間主要部分 清屏顯示實時時間 設(shè) 置 模 塊 清屏顯示當(dāng)前溫度 清屏顯示時間主要部分 清屏顯示‘ TIME UP’ 清屏顯示時間主要部分 實時 =鬧鐘? 鬧鐘開? 報 警 按 K4? 是 是 是 是 否 否 否 A A 否 初始化 開 始 10 圖 42 設(shè)置步驟流程圖 1602 液晶屏 1602 液晶屏是此設(shè)計的 主要 輸出 部分 ,有 2行顯示,每行 16 個字符,根 據(jù)寫入的位置而顯示,當(dāng)顯示歡迎界面時是流動的,整個屏幕向右移動。 報 警模塊采用單片機輸出 的 頻率從而使蜂鳴器發(fā)出聲音 。另外 1602有 2行顯示,每行顯示的字符數(shù)為 16個 , 可以用于顯示字母、數(shù)字、符號等,并具有簡單且功能較強的指令集,可以實現(xiàn)字符顯示、移動、閃爍等功能。 通過一定的電路可以將周圍環(huán)境的溫度變化轉(zhuǎn)化成電壓的變化,通過 AD 轉(zhuǎn)化器件將信號傳輸給單片機進行分析, 所以熱敏電阻需要的外部器件較多。 由于 設(shè)計 顯示信息比較 多 , 占用的系統(tǒng)資源少 ,操作方便。 C 。 具體的功能如下: ( 1)通過 DS1302 能夠準(zhǔn)確的計時,時間可調(diào)并在液晶 屏 上顯示出來。單片機以體積小、功能全、性價比高等諸多優(yōu)點,在工業(yè)控制、家用電器、通信設(shè)備、信 息處理、尖端武器等各種測控領(lǐng)域的應(yīng)用中獨占鰲頭,單片機開發(fā)技術(shù)已成為電子信息、電氣、通信、自動化、機電一體化等專業(yè)技術(shù)人員必須掌握的技術(shù)。 課程設(shè)計技術(shù)指標(biāo) ( 1) LCD 液晶 每行刷新顯示。 STC89C52RC使用經(jīng)典的 MCS51內(nèi)核,但做了很多的改進使得芯片具有傳統(tǒng) 51單片機不具備的功能 , 并且 可直接使用串口下載 。 方案( 2): 采用 DS1302 芯片 DS1302 是美國 DALLAS 公司推出的一種高性能、低功耗 、帶 RAM 的實時時鐘芯片。 因 熱敏電阻 需要的外部器件較多 ,而 DS18B20 在使用中 可以 不 接 任何外圍元件, 或者在單總線上接一個 的上拉電阻 , 所以 采用方案( 2)構(gòu)成本設(shè)計的實時溫度采集模塊。因此 晶振是造成 DS1302 工作不穩(wěn)定的主要因素。 電源接口如圖 36 所示: 圖 36 電源接口 四、 系統(tǒng)軟件設(shè)計 軟件設(shè)計是本設(shè)計的關(guān)鍵,軟件程序編寫的好壞直接影響著系統(tǒng)運行情況的良好。 通電后,進入歡迎界面,前后延時 ,,后顯示當(dāng)前實時時間,若按下按鍵 1就進入調(diào)節(jié)狀態(tài),此時在按下按鍵 1為設(shè)置時間狀態(tài),按下 按鍵 2 為設(shè)置最大溫度報警狀態(tài),按按鍵 3 為設(shè)置鬧鐘狀態(tài),按下按鍵 4 為退出調(diào)節(jié)狀態(tài);若按下按鍵 2則是顯示當(dāng)前溫度,5s后自動跳回顯示當(dāng)前實時時間。 六、 結(jié)論 這次課程設(shè)計達到了預(yù)期的 90%,有顯示實時時間和實時溫度,但是溫度的顯示不完全正確,在負數(shù)時有三個溫度值顯示錯誤,時間的設(shè)置邏輯比較啰嗦,沒有做到簡單化。后來下了很大的功夫且在老師及同學(xué)的指導(dǎo)下慢慢的進入了狀態(tài)。 解決方案: 通過修改溫度函數(shù)使其高位的零自動隱藏,但是 溫度在 16, 32, 48 度時仍然會出現(xiàn)錯誤,比實際的溫度高 16度,其余溫度值時 顯示 正確 。 在做課程設(shè)計的日子里得到了大量課內(nèi)外的知識鞏固 , 使得我們的動手能力和專業(yè)技能都有了很大的提高。 //歡迎界面 unsigned char code overtemperature[]={OVERTEMPERATURE!}。 //增加 sbit RED=P1^6。k1。i0。 for(j=0。i8。 } } void WriteSet1302(unsigned char cmd,unsigned char date) //根據(jù)相應(yīng)的命令輸入相應(yīng)的數(shù)據(jù) { REST=0。 } unsigned char Read1302(void) //讀取 1302數(shù)據(jù) { unsigned char i,date。 SCLK=0。 delaynus(2)。0x80) { //判斷時鐘芯片是否關(guān)閉 WriteSet1302(0x8E,0x00)。 //打開充電功能 選擇 2K電阻充電方式 WriteSet1302(0x8E,0x80)。 E=1。 E=0。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 Write_(0x06)。D39。 Write_Date(39。 delay1ms(1)。 Write_Address(0x42)。M39。 Write_Address(0x4A)。 Write_Address(0x06)。 i=second/10。 j=minute%10。 Write_Address(0x48)。 Write_Date(digit[i])。 Write_Date(digit[j])。 delay1ms(1)。 i=x/10。 seconds=(((valueamp。 display_Minute(minutes)。0x70)4)*10+(valueamp。 24 value=ReadSet1302(0x8D)。\039。) { Write_Date(displaywish[i])。 } void gbdisplay(unsigned char address) //時間調(diào)整時光標(biāo)閃爍 { Write_Address(address)。 i=x/100。 //防止多次觸發(fā) WriteSet1302(0x8e,0x00)。 while(ADD==0)。 delay1ms(1)。 break。0x0f))。 if(minute==0) minute=59。 if(minute=60) minute=0。 WriteSet1302(0x8e,0x00)。 while(ADD==0)。 Write_Address(0x4f)。 } void yearset(void) //調(diào)年 { unsigned char datevalue,year。 if(ADD==0) { year++。 delay1ms(5)。 } } WriteSet1302(0x8e,0x80)。 while(1) { if(ADD==0) { delay1ms(10)。 while(RED==0)。 Write_(0x0c)。0x70)4)*10+(datevalueamp。 delay1ms(300)。 delay1ms(5)。 if(ADD==0) { Write_(0x0c)。 while(RED==0)。 if(minutea59) minutea=0。 if(CANL==0) { delay1ms(500)。 delay1ms(500)。yearset()。} default:{break。 unsigned char time。time200。time200。 _nop_()。 if(DQ==1) dat=dat|0x80。i8。time++)。time++)。 35 } /*************在 1602液晶上顯示相關(guān)信息模塊 **********************/ /****************當(dāng)未檢測到 DS18B20時顯示信息模塊 ****************/ void Display_Error(void) { unsigned char i=0。 i=0。 } /*************溫度顯示模塊 ****************/ void Display_Explain(void) { unsigned char i=0。 } i=0。 Write_Address(0x4C)。.39
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1