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

正文內(nèi)容

多功能電子時(shí)鐘系統(tǒng)設(shè)計(jì)畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2024-08-27 14:18本頁(yè)面

【導(dǎo)讀】社會(huì)的進(jìn)步與發(fā)展,把握和控制時(shí)間更是尤為重要。人們對(duì)數(shù)字鐘的要求也越來(lái)越高,多功能數(shù)字鐘不管在性能還是在樣式上都發(fā)生了質(zhì)的變化。數(shù)字鐘的設(shè)計(jì)方法有許多種,其所需要的外圍電路組成電子鐘;還可以利用單片機(jī)來(lái)實(shí)現(xiàn)電子鐘等等。有其特點(diǎn),其中利用單片機(jī)實(shí)現(xiàn)的電子鐘具有編程靈活,并便于功能的擴(kuò)展。因此本系統(tǒng)采用單片機(jī)作為數(shù)字鐘的核心控制器,讀取時(shí)鐘芯片的值,并通過(guò)。準(zhǔn)和秒表的切換。芯片,顯示模塊選用LCD1602,設(shè)置部分選用按鍵電路。在DS1602上顯現(xiàn)出來(lái)。

  

【正文】 _time2,write_time3。 // 秒。 uchar time[7]。 uchar ok_value,ii,ix,temp。 //************************************ //延時(shí)程序 //************************************ void delay(unsigned int N) { unsigned int i。 for(i=0。iN。i++)。 } void Time0_init(void) //定時(shí)器初始化 { TMOD=0x01。 //定時(shí)器設(shè)置 TH0=(6553610000)/256。 //定時(shí)器 0 賦初值 TL0=(6553610000)%256。 EA=1。 //開(kāi)總中斷 ET0=1。 //開(kāi)定時(shí)器 0 中斷 TR0=1。 //開(kāi)始計(jì)數(shù) } void int0() interrupt 1 //秒表中斷 { TH0=(6553610000)/256。 TL0=(6553610000)%256。 dingshi_timer1++。 if(KEY_STOP==0) {dingshi_flag=0。dingshi_timer=0。dingshi_flag_up=0。write_time1=write_time2=write_time3=0。} if(dingshi_timer1=10) { if(set_sel==2) { if(dingshi_flag) {dingshi_timer1=0。 dingshi_timer++。} if(dingshi_timer=9999) {dingshi_timer=0。} if((dingshi_flag_up==1)amp。amp。(KEY_UP==0)) { delay(10)。 write_time1 = dingshi_timer。 } if((dingshi_flag_up==2)amp。amp。(KEY_UP==0)) { delay(10)。 write_time2 = dingshi_timer。 } if((dingshi_flag_up==3)amp。amp。(KEY_UP==0)) { delay(10)。 write_time3 = dingshi_timer。 } } }} //************************************ //LCD1602 測(cè)忙 //************************************ void check_busy(void) { while(1) { P0=0xff。 E=0。 _nop_()。 RS=0。 _nop_()。 _nop_()。 RW=1。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 _nop_()。 _nop_()。 if((P0amp。0x80)==0) { break。 } E=0。 } } //************************************ //LCD1602 寫命令 //************************************ void write_mand(uchar tempdata) { E=0。 _nop_()。 _nop_()。 RS=0。 _nop_()。 _nop_()。 RW=0。 P0=tempdata。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 E=0。 _nop_()。 _nop_()。 check_busy()。 } //************************************ //LCD1602 寫數(shù)據(jù) //************************************ void write_data(uchar tempdata) { E=0。 _nop_()。 _nop_()。 RS=1。 _nop_()。 _nop_()。 RW=0。 P0=tempdata。 _nop_()。 _nop_()。 E=1。 _nop_()。 _nop_()。 E=0。 _nop_()。 _nop_()。 check_busy()。 } //************************************ //初始化 LCD1602 //************************************ void init_lcd1602() { write_mand(0x01)。 delay(5)。 //清除屏幕 write_mand(0x38)。 delay(5)。 //功能設(shè)定( 8 位, 2 行, 5*7 點(diǎn)陣式) write_mand(0x0c)。// //顯示器 ON,光標(biāo) OFF,閃爍OFF write_mand(0x06)。 //地址加 1 delay(5)。 } void display(void) { uchar i。 write_mand(0x80)。 for(i=0。i16。i++) { write_data(first_line[i])。 } write_mand(0xc0)。 for(i=0。i16。i++) { write_data(second_line[i])。 } } /*DS1302 的操作 */ define uint unsigned int define uchar unsigned char define nop _nop_ define SECOND 0 define MINUTE 1 define HOUR 2 define DAY 3 define MONTH 4 define WEEK 5 define YEAR 6 define WRITE_PROTECT 0x8E define WRITE_CURRENT 0x90 //include //include //include //向 DS1302 某地址寫 1 字節(jié)的數(shù)據(jù) /命令 void write_B(uchar addr,uchar ucda) { uchar i,temp。 sclk=0。 //清零時(shí)鐘總線 rst=0。 //CE 引腳為低,數(shù)據(jù)傳送中止 nop()。 rst=1。//打開(kāi)數(shù)據(jù)傳送 //CE 引腳為高,邏輯控制有效 for(i=0。i8。i++) //寫命令 8 位 { sclk=0。 temp=addr。 io=(bit)(tempamp。0x01)。 //每次傳輸?shù)妥止?jié) addr=1。 //右移一位 sclk=1。 //上升沿寫入 nop()。 nop()。 } for(i=0。i8。i++) //寫數(shù)據(jù) 8 位 { sclk=0。 temp=ucda。 io=(bit)(tempamp。0x01)。 ucda=1。 sclk=1。 //上升沿寫入 nop()。 nop()。 } rst=0。 } //從 ds1302 某地址讀數(shù)據(jù) /*在最后一個(gè)數(shù)據(jù)發(fā)送完了后,該脈沖的 下降沿就會(huì)輸出數(shù)據(jù)的第一位! */ uchar read_B(uchar addr) { uchar i,temp,dat1,dat2。 rst=0。 sclk=0。 rst=1。 for(i=0。i8。i++) { sclk=0。 temp=addr。 io=(bit)(tempamp。0x01)。 addr=1。 sclk=1。 //上升沿寫入 nop()。 } for(i=0。i8。i++) { bit7=io。 sclk=1。 //下降沿讀取數(shù)據(jù) sclk=0。 nop()。 ACC=1。 } rst=0。 dat1=ACC。 //BCD 與十六進(jìn)制轉(zhuǎn)化 dat2=dat1/16。 dat1=dat1%16。 dat1=dat1+dat2*16。 return dat1。 } //設(shè)置 ds1302 的時(shí)間 /* 秒,分,時(shí),日,月,周,年 注意順序; sel= 0 1 2 3 4 5 6*/ //從 ds1302 讀出 1 字節(jié)的數(shù)據(jù)顯示到屏幕 x,y 上; /* 秒,分,時(shí),日,月,周,年 sel= 0 1 2 3 4 5 6 */ //20200921 WEEK1 235689 //23:23:23 S: 01:34:67 void dis_1302(uchar sel) { uchar shi,ge,temp,num。 temp=read_B(0x81+sel*2)。 //讀的是 BCD 碼 //BCD 碼轉(zhuǎn)化為十進(jìn)制 //BCD 要轉(zhuǎn)化為十進(jìn)制 num=((tempamp。0x70)4)*10+(tempamp。0x0f)。//num 為十進(jìn)制 shi=num/10。 ge=num%10。 if(sel==0) //秒 { LCD_0=LCDData[shi]。 LCD_1=LCDData[ge]。 second_line[13]=LCD_0。 second_line[14]=LCD_1。 if((num49)amp。amp。(alarm_flag)) //時(shí)鐘整點(diǎn)報(bào)時(shí)響應(yīng) ..... { if((num==50)||(num==52)||(num==54)||(num==56)||(num==58)) {ALARM_BEEP=0。} if((num==51)||(num==53)||(num==55)||(num==57)) {ALARM_BEEP=1。} if(num==59) { ALARM_BEEP=0。 delay(5)。 ALARM_BEEP=1。 delay(5)。 } } } if(sel==1) //分 { if(num==59) {alarm_flag=1。} else{alarm_flag=0。} LCD_0=LCDData[shi]。 LCD_1=LCDData[ge]。 second_line[10]=LCD_0。 second_line[11]=LCD_1。 } if(sel==2)//時(shí) { LCD_0=LCDData[shi]。 LCD_1=LCDData[ge]。 second_line[7]=LCD_0。 second_line[8]=LCD_1。 } if(sel==3)//日 { LCD_0=LCDData[shi]。 LCD_1=LCDData[ge]。 first_line[8]=LCD_0。
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1