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

正文內(nèi)容

多功能萬年歷設(shè)計畢業(yè)論文-在線瀏覽

2025-08-08 22:19本頁面
  

【正文】 行供電。 圖10 電源模塊 鬧鐘電路設(shè)計本設(shè)計的鬧鐘電路直接采用PNP型三極管驅(qū)動蜂鳴器發(fā)聲,PNP型三極管飽和導(dǎo)通,蜂鳴器發(fā)聲,為高電平時不發(fā)聲,蜂鳴器就會發(fā)出各種音調(diào)的聲音。 圖11 鬧鐘電路 鍵盤輸入電路本系統(tǒng)設(shè)置了四個功能按鍵:KKKK4,如圖12所示。K1的功能:按一下進入陰歷顯示界面,按兩下進入模式選擇界面,按三下,退出模式選擇界面,回到主頁面。 圖12 鍵盤輸入電路3 軟件設(shè)計為了方便編寫、調(diào)試和增加可讀性,本設(shè)計的軟件部分采用C語言進行編寫。 主程序框圖圖13 主程序框圖 DS1302時間處理 DS1302在任何數(shù)據(jù)傳送時必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)的讀/寫可以用單字節(jié)或多字節(jié)的突發(fā)模式進行。(1)命令字節(jié)命令字節(jié)的格式如表3所示表3 DS1302的命令字節(jié)格式DD6 D5 D4 D3 D2 D1 D01RAMA4A3A2A1A0RDCKWR 每次數(shù)據(jù)的傳輸都是有命令字節(jié)開始的,這里的最高有效位必須是1。D1~D5定義片內(nèi)寄存器的地址。(2)數(shù)據(jù)輸入輸出(I/O)在控制指令字輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始,如下圖14所示。如下圖15所示。表4 DS1302的日歷、時鐘寄存器及其控制字寄存器名命令字取值范圍各位內(nèi)容寫操作讀操作76543210秒寄存器80H81H0059CH10SECSEC分鐘寄存器82H83H0059010MINMIN小時寄存器84H85H112或002312/24010APHRHR日期寄存器86H87H0128,29,30,310010DATEDATE月份寄存器88H89H0112000IOMMONTH周日寄存器8AH8BH010700000DAY年份寄存器8CH8DH009910YEARYEAR時間處理子程序流程圖如圖16所示,程序見附錄一。 圖17 溫度采集程序框圖 鍵盤掃描 鍵盤掃描子程序流程圖如圖18所示,按鍵功能說明詳見鍵盤輸入電路部分,程序則見附錄一。一首音樂是許多不同的音階組成的,而每個音階對應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對于單片機來產(chǎn)生不同的頻率非常方便,本設(shè)計中利用單片機的定時/計數(shù)器T0來產(chǎn)生這樣方波頻率信號,因此,我們只要把一首歌曲的音階對應(yīng)頻率關(guān)系弄正確即可。 公歷轉(zhuǎn)農(nóng)歷本設(shè)計采用的是按年查表法來實現(xiàn)公歷轉(zhuǎn)換成農(nóng)歷,這樣可最大限度地減少表格所占的程序空間。計算公歷日對應(yīng)的農(nóng)歷日期的方法:先計算出公歷日離當(dāng)年元旦的天數(shù),然后查表取得當(dāng)年的春節(jié)日期計算出春節(jié)離元旦的天數(shù),二者相減即可算出公歷日離春節(jié)的天數(shù),以后只要根據(jù)大小月和閏月信息,減一月天數(shù)調(diào)整一月農(nóng)歷月份,即可推算出公歷日所對應(yīng)的農(nóng)歷日期。公歷轉(zhuǎn)農(nóng)歷程序流程圖如圖19所示,程序見附錄一。本設(shè)計硬件系統(tǒng)相對簡單,使用方便。由于本人能力有限,程序還未能進一步優(yōu)化,為了節(jié)約成本,系統(tǒng)未能實現(xiàn)更多的功能,如農(nóng)歷年、天干地支和星期自動關(guān)聯(lián)等。 [9] [M].北京:電子工業(yè)出版社,.[10] 張齊,—基于C51的protues仿真(第2版)[M].北京:電子工業(yè)出版社,.附錄 附錄A 程序1/************使用LCD160DS1302時鐘芯片、DS18B20溫度傳感器完成該萬年歷**************/include include includeincludeincludeincludeincludeincludeincludedefine uint unsigned int //宏定義 define uchar unsigned charvoid open()。 //鍵盤掃描 void SetTime_Mode()。 //調(diào)日期void SetYear_Week_Mode()。 //鬧鐘設(shè)置 void SetTemp_Mode()。 //音樂初始化void Guangbiao_Flash()。/******************************日歷主函數(shù)************************************/void main(){ init()。 Read_RTC()。 //上電顯示函數(shù) write_(0x01)。 //時間處理 KeyScan()。amp。amp。amp。 if(alarm==1) alarm=0。 write_(0x80+0x00)。i15。 } InitialSound()。 continue。 //溫度轉(zhuǎn)換命令 display1(l_tmpdisplay,8)。 //顯示溫度 deal()。 display2(l_tmpdisplay,nongli)。 EA=0。 write_(0x80+0x03)。menu[select/2][i]!=39。i++) write_date(menu[select/2][i])。menu[3][i]!=39。i++) write_date(menu[3][i])。 } if(select==2||select==3) //調(diào)日期模式 { SetDate_Mode()。 } if(select==6||select==7||select==8) //鬧鐘設(shè)置 { SetRing_Mode()。 } } } }/***************END***********END******************************///////////////********************LCD相關(guān)程序***************************/sbit rs=P2^4。 //LCD讀寫選擇端 sbit e=P2^6。 //定義輸出管腳 void delay(uchar z)。 // LCD初始化函數(shù) void write_(uchar )。 //LCD寫數(shù)據(jù) void init() //LCD初始化函數(shù) { rw=0。//顯示模式的設(shè)置 delay(1)。//開顯示,光標(biāo)顯示 delay(1)。//光標(biāo)位置 delay(1)。 //清顯示 delay(1)。}void write_(uchar ) //LCD寫命令 { rs=0。 P0=。 e=1。 e=0。 rw=0。 delay(1)。 delay(1)。 }void delay(uchar z) //延時函數(shù) { uchar x,y。xz。y110。 } /***************END***********END******************************////////////***************時鐘芯片相關(guān)程序*************************/sbit rst=P3^5。 // 時鐘信號 sbit io=P3^4。//寫入一個字節(jié) void Write_Ds1302(uchar address,uchar dat)。 //讀取時間 void Read_RTC(void)。 //設(shè)定日歷 void time_date()。 //顯示時間 void display2(uchar *lp,uchar *lc)。uchar code table1[]=SUNMONTUEWEDTHUFRISATL。//寫入時鐘芯片的地址,順序同上 code uchar read_rtc_address[7]={0x81,0x83,0x85,0x87,0x89,0x8b,0x8d}。 void Write_Ds1302_Byte(uchar temp) //寫入一字節(jié)數(shù)據(jù) { uchar i。i8。 io=tempamp。 //每次傳輸?shù)妥止?jié) temp=1。 }}void Write_Ds1302(uchar address,uchar dat)//寫入 { rst=0。 sck=0。 rst=1。 //啟動 Write_Ds1302_Byte(address)。 //發(fā)送數(shù)據(jù) rst=0。 rst=0。 sck=0。 rst=1。 Write_Ds1302_Byte(address)。i8。 //每次傳輸?shù)妥止?jié) sck=1。 //右移一位 sck=0。 delay(1)。 sck=0。 sck=1。 io=0。 io=1。 return (time)。 p=read_rtc_address。i8。 p++。 Write_Ds1302(0x8E,0X00)。 //傳地址 for(i=0。i++) //8次寫入 年月日時分秒星期 { Write_Ds1302(*p,P1302[i])。 } Write_Ds1302(0x8E,0x80)。 l_tmpdisplay[0]=l_tmpdate[2]/16。0x0f。 //加入: l_tmpdisplay[3]=l_tmpdate[1]/16。0x0f。 l_tmpdisplay[6]=l_tmpdate[0]/16。0x0f。 //顯示2010的2 l_tmpdisplay[9]=0。 //年 l_tmpdisplay[11]=l_tmpdate[6]amp。 l_tmpdisplay[12]=10。 //月 l_tmpdisplay[14]=l_tmpdate[4]amp。 l_tmpdisplay[15]=10。 //日 l_tmpdisplay[17]=l_tmpdate[3]amp。 }void display1(uchar *lp,uchar lc) //顯示時間 { unsigned char i。 //液晶第一行顯示時間和星期 for(i=0。i++) { write_date(table0[lp[i]])。 } write_(0x80+0x0b)。 write_date(table1[1])。 break。 write_date(table1[4])。 break。 write_date(table1[7])。 break。 write_date(table1[10])。 break。 write_date(table1[13])。 break。 write_date(table1[16])。 break。 write_date(table1[19])。 break。 write_date(table1[1])。 break。 write_date(table0[alarm])。 //第二行顯示年 for(i=8。i++) { write_date(table0[lp[i]])。 }}void display2(uchar *lp,uchar *lc) { unsigned char i。 for(i=8。i++) { write_date(table0[lp[i]])。 } write_(0x80+0x0c)。 write_date(table1[1])。 break。 write_date(table1[4])。 break。 write_date(table1[7])。 break。 write_date(table1[10])。 break。 write_date(table1[13])。 break。 write_date(table1[16])。 br
點擊復(fù)制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1