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

正文內(nèi)容

基于單片機(jī)的萬(wàn)年歷設(shè)計(jì)課程設(shè)計(jì)說(shuō)明書(shū)(編輯修改稿)

2025-07-24 19:06 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 圖16 鬧鐘設(shè)置狀態(tài) 圖17 調(diào)時(shí)狀態(tài) 實(shí)物圖 圖18 正常工作狀態(tài)下 圖19 調(diào)時(shí)狀態(tài) 圖20 鬧鐘設(shè)置狀態(tài) 元器件清單 表1 元件清單元器件名稱(chēng)型號(hào)規(guī)格數(shù)量備注單片機(jī)STC89C521加DIP40底座晶振1(DS1302外部晶振)1加2腳底座排阻(9引腳)1P0口的上拉電阻USBUSB電源接口1可調(diào)電阻10K1LCD1602背光調(diào)節(jié)電阻10K6390歐21K或1004電解電容 1000uF1100uF210uF5非極性電容433pF2發(fā)光二極管紅色LED2電源電池3V電池電子1都需要底座按鍵微動(dòng)(脈沖)開(kāi)關(guān)5開(kāi)關(guān)按鍵(自鎖式)1三極管PNP(8550)1液晶LCD16021加16腳單排插座時(shí)鐘芯片DS13021加DIP8底座溫度傳感器DS18B201加3腳插座整流二極管1N40012橋堆2W101三端穩(wěn)壓器78051蜂鳴器BELL有源蜂鳴器1include //52單片機(jī)頭文件,規(guī)定了52單片機(jī)的寄存器和IO口等include //_nop_空指令及左右循環(huán)移位子函數(shù)庫(kù) define uchar unsigned char //宏定義define uint unsigned int //宏定義sbit lcden=P2^6。 //定義下面通過(guò)lcden來(lái)操作P2^7口,1602液晶使能控制端sbit lcdwr=P2^5。 //定義下面通過(guò)lcdrw來(lái)操作P2^5口,1602讀寫(xiě)選擇端sbit lcdrs=P2^4。 //定義選數(shù)據(jù)寄存器選指令寄存器控制端sbit sda=P1^1。 //定義DS1302數(shù)據(jù)總線(xiàn)sbit rst=P1^2。 //DS1320復(fù)位sbit sck=P1^0。 //定義時(shí)鐘總線(xiàn)sbit s1=P3^0。 //定義設(shè)置按鈕sbit s2=P3^1。 //定義調(diào)時(shí)按鈕sbit s3=P3^2。 //定義確定按鈕sbit s4=P3^3。sbit DQ =P2^0。 //定義DS18B20通信端口sbit ACC0=ACC^0。sbit ACC7=ACC^7。sbit BELL=P1^4。char fen,shi,miao,ri,yue,nian,zhou,s1num,s2num,s4num,flag1,flag2,lshi,lfen。uchar code table[]={ 2013 }。 //要寫(xiě)入1602液晶的數(shù)據(jù)uchar code alarm[]={ CLOCK SETTINGS }。 //要寫(xiě)入1602液晶的數(shù)據(jù)uchar code alarm1[]={ : }。 //要寫(xiě)入1602液晶的數(shù)據(jù)uchar code table1[]={ : : . }。 //字庫(kù)中的字可直接以外加號(hào)的形式直接寫(xiě)入uchar code table2[]={ Wan Nian Li !}。 //歡迎界面uchar code table3[]={Wo Men Jie Zuo!!}。 //歡迎界面//*****************星期編碼表**********************************uchar code Weeks[][3]={{SUN},{MON},{TUE},{WED},{THU},{FRI},{SAT},{SUN}}。uchar i,j。//*********************短暫延時(shí)********************************void delay0(uint z) { while(z)。}//*********************毫秒延時(shí)********************************void delay(uint z) { uint x,y。 for(x=z。x0。x) for(y=110。y0。y)。}//DS18B20初始化函數(shù)void Init_DS18B20(void){ unsigned char x=0。 DQ = 1。 //DQ復(fù)位 delay0(8)。 //稍做延時(shí) DQ = 0。 //單片機(jī)將DQ拉低 delay0(80)。 //精確延時(shí) 大于 480us DQ = 1。 //拉高總線(xiàn) delay0(14)。 x=DQ。 //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗 delay0(20)。} //DS18B20讀一個(gè)字節(jié)uchar ReadOneChar(void){ unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i){ DQ = 0。 // 給脈沖信號(hào) dat=1。 DQ = 1。 // 給脈沖信號(hào) if(DQ) dat|=0x80。 delay0(4)。 } return(dat)。}//DS18B20寫(xiě)一個(gè)字節(jié)void WriteOneChar(unsigned char dat){ unsigned char i=0。 for (i=8。 i0。 i){ DQ = 0。 DQ = datamp。0x01。 delay0(5)。 DQ = 1。 dat=1。 }}//DS18B20讀取溫度uint ReadTemperature(void){ unsigned char a=0。 unsigned char b=0。 unsigned int t=0。 float tt=0。 Init_DS18B20()。 WriteOneChar(0xCC)。 // 跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0x44)。 // 啟動(dòng)溫度轉(zhuǎn)換 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過(guò)讀序號(hào)列號(hào)的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度 a=ReadOneChar()。 b=ReadOneChar()。 t=b。 t=8。 t=t|a。 tt=t*。 //將溫度的高位與低位合并 t= tt*10+。 //對(duì)結(jié)果進(jìn)行4舍5入 return(t)。}/*********************蜂鳴器函數(shù)************************************************/void didi() { uchar i。 for(i=0。i60。i++) { BELL = 0。 delay(1)。 BELL = 1。 delay(1)。 }}/*****************向1602液晶中寫(xiě)一個(gè)指令**************************************/void write_(uchar ){ lcdwr=0。 //lcdwr為讀寫(xiě)控制端,lcdwr=0,這里可不寫(xiě) lcdrs=0。 //液晶rs接口為0時(shí),寫(xiě)指令,rs為1時(shí)寫(xiě)數(shù)據(jù) P0=。 //將要寫(xiě)的指令賦給P0口, delay(5)。 //由1602讀寫(xiě)操作時(shí)序圖,先將指令賦給P0口,延時(shí)后將使能 lcden=1。 // 端lcden置高,再延時(shí)一段時(shí)間,然后將lcden置低,這樣指令 delay(5)。 // 就寫(xiě)入到LCD了 lcden=0。}/****************************向液晶寫(xiě)數(shù)據(jù)***************************************/void write_data(uchar date){ lcdrs=1。 //與寫(xiě)指令類(lèi)似,這里lcdrs設(shè)為1 P0=date。 delay(5)。 lcden=1。 delay(5)。 lcden=0。}/*****************************初使化1602液晶************************************/void init_1602(){ lcdwr=0。 lcden=0。 write_(0x38)。 //設(shè)置LCD為16*2顯示、5*7點(diǎn)陣、8位數(shù)據(jù)接口模式 write_(0x0c)。 //開(kāi)顯示、不顯示光標(biāo) write_(0x06)。 //寫(xiě)一個(gè)字符后,地址指針加1 write_(0x01)。 //顯示清0 P0=0xff。}/*******************************************************************************/void gudingtime_1602(){ uchar num。 write_(0x80)。 //將指針指向初始位置 for(num=0。num16。num++) //循環(huán)函數(shù),用于將 2012 寫(xiě)入液晶 write_data(table[num])。 write_(0x80+0x40)。 //將指針指向1602液晶的第二行 for(num=0。num16。num++) //功能與上同,用于將 : : 寫(xiě)入 write_data(table1[num])。}void gudingtime_1602_1(){ uchar num1。 write_(0x80)。 //將指針指向初始位置 for(num1=0。num116。num1++) //循環(huán)函數(shù),用于將 2012 寫(xiě)入液晶 write_data(alarm[num1])。 write_(0x80+0x40)。 //將指針指向1602液晶的第二行 for(num1=0。num116。num1++) //功能與上同,用于將 : : . 寫(xiě)入 write_data(alarm1[num1])。}/**************************顯示初始化界面函數(shù)*************************************/void displaystar(void) { uchar i。 write_(0x80)。 for(i=0。i16。i++) write_data(table2[i])。 write_(0x80+0x40)。 for(i=0。i16。i++) write_data(table3[i])。}/***************************顯示時(shí)間、日期子函數(shù)*********************************/void write_sfm(uchar add,uchar time)//用于在1602上顯示年、月、日、時(shí)、分、秒。Add為顯示位置,time為要顯示的內(nèi)容{ uchar shiwei,gewei。 shiwei=time/16。 //將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成十六進(jìn)制
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1