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

正文內(nèi)容

基于單片機的萬年歷設(shè)計課程設(shè)計說明書(編輯修改稿)

2025-07-24 19:06 本頁面
 

【文章內(nèi)容簡介】 圖16 鬧鐘設(shè)置狀態(tài) 圖17 調(diào)時狀態(tài) 實物圖 圖18 正常工作狀態(tài)下 圖19 調(diào)時狀態(tài) 圖20 鬧鐘設(shè)置狀態(tài) 元器件清單 表1 元件清單元器件名稱型號規(guī)格數(shù)量備注單片機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都需要底座按鍵微動(脈沖)開關(guān)5開關(guān)按鍵(自鎖式)1三極管PNP(8550)1液晶LCD16021加16腳單排插座時鐘芯片DS13021加DIP8底座溫度傳感器DS18B201加3腳插座整流二極管1N40012橋堆2W101三端穩(wěn)壓器78051蜂鳴器BELL有源蜂鳴器1include //52單片機頭文件,規(guī)定了52單片機的寄存器和IO口等include //_nop_空指令及左右循環(huán)移位子函數(shù)庫 define uchar unsigned char //宏定義define uint unsigned int //宏定義sbit lcden=P2^6。 //定義下面通過lcden來操作P2^7口,1602液晶使能控制端sbit lcdwr=P2^5。 //定義下面通過lcdrw來操作P2^5口,1602讀寫選擇端sbit lcdrs=P2^4。 //定義選數(shù)據(jù)寄存器選指令寄存器控制端sbit sda=P1^1。 //定義DS1302數(shù)據(jù)總線sbit rst=P1^2。 //DS1320復(fù)位sbit sck=P1^0。 //定義時鐘總線sbit s1=P3^0。 //定義設(shè)置按鈕sbit s2=P3^1。 //定義調(diào)時按鈕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 }。 //要寫入1602液晶的數(shù)據(jù)uchar code alarm[]={ CLOCK SETTINGS }。 //要寫入1602液晶的數(shù)據(jù)uchar code alarm1[]={ : }。 //要寫入1602液晶的數(shù)據(jù)uchar code table1[]={ : : . }。 //字庫中的字可直接以外加號的形式直接寫入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。//*********************短暫延時********************************void delay0(uint z) { while(z)。}//*********************毫秒延時********************************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)。 //稍做延時 DQ = 0。 //單片機將DQ拉低 delay0(80)。 //精確延時 大于 480us DQ = 1。 //拉高總線 delay0(14)。 x=DQ。 //稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay0(20)。} //DS18B20讀一個字節(jié)uchar ReadOneChar(void){ unsigned char i=0。 unsigned char dat = 0。 for (i=8。i0。i){ DQ = 0。 // 給脈沖信號 dat=1。 DQ = 1。 // 給脈沖信號 if(DQ) dat|=0x80。 delay0(4)。 } return(dat)。}//DS18B20寫一個字節(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)。 // 跳過讀序號列號的操作 WriteOneChar(0x44)。 // 啟動溫度轉(zhuǎn)換 Init_DS18B20()。 WriteOneChar(0xCC)。 //跳過讀序號列號的操作 WriteOneChar(0xBE)。 //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 a=ReadOneChar()。 b=ReadOneChar()。 t=b。 t=8。 t=t|a。 tt=t*。 //將溫度的高位與低位合并 t= tt*10+。 //對結(jié)果進行4舍5入 return(t)。}/*********************蜂鳴器函數(shù)************************************************/void didi() { uchar i。 for(i=0。i60。i++) { BELL = 0。 delay(1)。 BELL = 1。 delay(1)。 }}/*****************向1602液晶中寫一個指令**************************************/void write_(uchar ){ lcdwr=0。 //lcdwr為讀寫控制端,lcdwr=0,這里可不寫 lcdrs=0。 //液晶rs接口為0時,寫指令,rs為1時寫數(shù)據(jù) P0=。 //將要寫的指令賦給P0口, delay(5)。 //由1602讀寫操作時序圖,先將指令賦給P0口,延時后將使能 lcden=1。 // 端lcden置高,再延時一段時間,然后將lcden置低,這樣指令 delay(5)。 // 就寫入到LCD了 lcden=0。}/****************************向液晶寫數(shù)據(jù)***************************************/void write_data(uchar date){ lcdrs=1。 //與寫指令類似,這里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點陣、8位數(shù)據(jù)接口模式 write_(0x0c)。 //開顯示、不顯示光標(biāo) write_(0x06)。 //寫一個字符后,地址指針加1 write_(0x01)。 //顯示清0 P0=0xff。}/*******************************************************************************/void gudingtime_1602(){ uchar num。 write_(0x80)。 //將指針指向初始位置 for(num=0。num16。num++) //循環(huán)函數(shù),用于將 2012 寫入液晶 write_data(table[num])。 write_(0x80+0x40)。 //將指針指向1602液晶的第二行 for(num=0。num16。num++) //功能與上同,用于將 : : 寫入 write_data(table1[num])。}void gudingtime_1602_1(){ uchar num1。 write_(0x80)。 //將指針指向初始位置 for(num1=0。num116。num1++) //循環(huán)函數(shù),用于將 2012 寫入液晶 write_data(alarm[num1])。 write_(0x80+0x40)。 //將指針指向1602液晶的第二行 for(num1=0。num116。num1++) //功能與上同,用于將 : : . 寫入 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ù)*********************************/void write_sfm(uchar add,uchar time)//用于在1602上顯示年、月、日、時、分、秒。Add為顯示位置,time為要顯示的內(nèi)容{ uchar shiwei,gewei。 shiwei=time/16。 //將從DS1302中讀取的BCD碼數(shù)據(jù)轉(zhuǎn)化成十六進制
點擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1