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

正文內(nèi)容

基于單片機(jī)的可編程作息時(shí)間控制器的設(shè)計(jì)-資料下載頁

2024-10-23 08:10本頁面

【導(dǎo)讀】采用PIC16F877A單片機(jī)、主頻4MHZ晶振,通過按鍵STATE、TEN、UNIT控。一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,并通過簡單的串行接口與單片機(jī)進(jìn)行通信。調(diào)整,時(shí)鐘操作可通過AM/PM指示決定采用24或12小時(shí)格式。DS1302工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW。子函數(shù)都可以直接移植過去。

  

【正文】 輸出 TRISE0=0。 } //DS1302 時(shí)間控制有關(guān)函數(shù) 27 uchar time_read_1() //讀一個(gè)字節(jié) 函數(shù)子程序 { int j。 //設(shè)置循環(huán)變量 TRISB5=1。 //設(shè)置數(shù)據(jù)口方向?yàn)檩斎? for(j=0。j8。j++) //連續(xù)讀取 8bit { sclk=0。 //拉低時(shí)鐘信號(hào) time_rx=time_rx1。 //接收寄存器右移 1 位 time_rx7=i_o。 //把接收到的數(shù)據(jù)放到接收寄存器的最高位 sclk=1。 //拉高時(shí)鐘信號(hào) } TRISB5=0。 //恢復(fù)數(shù)據(jù)口方向?yàn)檩敵? sclk=0。 //拉低時(shí)鐘信號(hào) return(time_rx)。 //返回讀取到的數(shù)據(jù) } void time_write_1(uchar time_tx) //寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)子主程序 { int j。 //設(shè)置循環(huán)變量 for(j=0。j8。j++) //連續(xù)寫 8bit { i_o=0。 //先設(shè)置數(shù)據(jù)為 0 sclk=0。 //時(shí)鐘信號(hào)拉低 if(time_txamp。0x01) //判斷待發(fā)送的數(shù)據(jù)位是 0 或 1 { i_o=1。 //待發(fā)送數(shù)據(jù)位是 1 } time_tx=time_tx1。 //待發(fā)送的數(shù)據(jù)右移 1 位 sclk=1。 //拉高時(shí)鐘信號(hào) } sclk=0。 //寫完一 個(gè)字節(jié),拉低時(shí)鐘信號(hào) } void get_time() //讀取時(shí)間函數(shù)子程序 { int i。 //設(shè)置循環(huán)變量 rst=1。 //使能 DS1302 time_write_1(0xbf)。 //發(fā)送多字節(jié)讀取命令 for(i=0。i7。i++) //連續(xù)讀取 7 個(gè)字節(jié)數(shù)據(jù) { dateTime[i]=time_read_1()。 //調(diào)用讀取 1 個(gè)字節(jié)數(shù)據(jù)的函數(shù) delay(100)。 } rst=0。 //復(fù)位 DS1302 } void set_time() //設(shè)置時(shí)間函數(shù)子程序 28 { int i。 //定義循環(huán)變量 rst=1。 //使能 DS1302 time_write_1(0xbe)。 //時(shí)鐘多字節(jié)寫命令 for(i=0。i8。i++) //連續(xù)寫 8 個(gè)字節(jié)數(shù)據(jù) { time_write_1(presetTime[i])。 //調(diào)用寫一個(gè)字節(jié)函數(shù) delay(100)。 } rst=0。 //復(fù)位 } void ds1302_init() //DS1302 初始化函數(shù)子程序 { sclk=0。 //拉低時(shí)鐘信號(hào) rst =0。 //復(fù)位 DS1302 rst=1。 //使能 DS1302 time_write_1(0x8e)。 //發(fā)控制命令 time_write_1(0)。 //允許寫 DS1302 rst=0。 //復(fù)位 } //LCD1602 顯示控制有關(guān)函數(shù) void lcd_writeComd(uchar cmdChar) //寫命令函數(shù) { PORTC=cmdChar。 lcd_rs=0。 //該字節(jié)數(shù)據(jù)為命令,而不是數(shù)據(jù) lcd_rw=0。 //此次操作為寫,而不是讀 lcd_e=0。 //拉低使能信號(hào) delay(50)。 //保持使能信號(hào)為低一段時(shí)間 lcd_e=1。 //拉高使能信號(hào),建立 LCD 操作所需要的上升沿 } void lcd_init() //LCD 初始化函數(shù) { lcd_writeComd(0x01)。 //清除顯示 lcd_writeComd(0x38)。 //8 位 2 行 5*7 點(diǎn)陣 lcd_writeComd(0x0c)。 //顯示開,光標(biāo) 關(guān),光標(biāo)不閃爍 lcd_writeComd(0x06)。 //顯示光標(biāo)移動(dòng) } void lcd_writeData(uchar datx) //向 LCD 寫數(shù)據(jù)函數(shù) { PORTC=datx。 //待顯示數(shù)據(jù)送 PORTC 口 lcd_rs=1。 //該字節(jié)數(shù)據(jù)為數(shù)據(jù),而不是命令 29 lcd_rw=0。 //此次操作為寫,而不是讀 lcd_e=0。 //拉低使能信號(hào) delay(50)。 //保持使能信號(hào)為低一段時(shí)間 lcd_e=1。 //拉高使能信號(hào),建立 LCD 操作所需要的上升沿 } void lcd_writeAddress(uchar x,uchar y) //LCD 顯示函數(shù) { xamp。=0x0f。 //列地址限制在 015 yamp。=0x01。 //行地址限制在 01 if(y==0x00) lcd_writeComd(x|0x80)。 else lcd_writeComd((x+0x40)|0x80)。 } void lcd_dispDate(uchar y,uchar m,uchar d) { lcd_writeData(digit[2])。 lcd_writeData(digit[0])。 lcd_writeData(digit[y/16])。 lcd_writeData(digit[y%16])。 lcd_writeData(digit[11])。 lcd_writeData(digit[m/16])。 lcd_writeData(digit[m%16])。 lcd_writeData(digit[11])。 lcd_writeData(digit[d/16])。 lcd_writeData(digit[d%16])。 lcd_writeData(39。 39。)。 } void lcd_dispTime(uchar h,uchar m,uchar s) { lcd_writeData(digit[h/16])。 lcd_writeData(digit[h%16])。 lcd_writeData(digit[12])。 lcd_writeData(digit[m/16])。 lcd_writeData(digit[m%16])。 lcd_writeData(digit[12])。 lcd_writeData(digit[s/16])。 lcd_writeData(digit[s%16])。 } void lcd_dispWeek(uchar w) { uchar i。 30 for(i=0。i3。i++) //一共 16 字節(jié)數(shù)據(jù) lcd_writeData(weekstr[w1][i])。 //查表獲取數(shù) 據(jù)并調(diào)用寫一個(gè)字節(jié)數(shù)據(jù)函數(shù)送LCD 顯示 //lcd_writeData(digit[w1])。 } void lcd_dispTest(uchar w) { lcd_writeData(digit[w%16])。 } void lcd_clerTest(void) { lcd_writeData(39。 39。)。 } void lcd_dispNormal(void) { lcd_writeAddress(5,0)。 lcd_dispDate(dateTime[3],dateTime[4],dateTime[6])。 lcd_writeAddress(1,0)。 lcd_dispWeek(dateTime[5])。 lcd_writeAddress(6,1)。 lcd_dispTime(dateTime[2],dateTime[1],dateTime[0])。 } /********關(guān)于鍵盤控制函數(shù) **********/ void checkKey(void) { uchar dat,swl,gwl=9。 swl=(dateTime[test]/16)amp。0x0f。 if(test==2 amp。amp。 swl==1) gwl=2。 if(test==2 amp。amp。 swl==2) gwl=4。 if(test==4 amp。amp。 swl==1) gwl=2。 if(test==5 ) gwl=7。 if(test==6 amp。amp。 swl==3) gwl=1。 if(K2==0) { if(test!=5) //進(jìn)入鍵盤控制,星期 { dat=(dateTime[test]/16)amp。0x0f。 dat=dat+1。 if(datsw[test])dat=0。 presetTime[test]=(presetTime[test]amp。0x0f)+dat*16。 set_time()。 } while(K2==0)。 31 } if(K3==0) { dat=(dateTime[test])amp。0x0f。 dat=dat+1。 if(test==5) {if(datgwl)dat=1。} else {if(datgwl)dat=0。} if(test==0) presetTime[test]=presetTime[test]amp。0xf0。 else presetTime[test]=(preset
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1