基于单片机多功能电子钟电路的设计毕业论文内容摘要:
} //写入数据: d for (i = 0。 i 8。 i ++) { if (d amp。 0x01) { SDA=1。 } else { 22 SDA=0。 } SCK=1。 SCK=0。 d = d 1。 } RST=0。 //停止 DS1302 总线 } //*************************从 DS1302 读出一字节数据 unsigned char Read1302(uchar addr) { unsigned char i。 unsigned char temp。 unsigned char dat1=0。 unsigned char dat2=0。 SCK=0。 RST=1。 //写入目标地址: addr for (i = 0。 i 8。 i ++) { if (addr amp。 0x01) { SDA=1。 } else { SDA=0。 } SCK=1。 SCK=0。 23 addr = addr 1。 } //输出数据: temp for (i = 0。 i 8。 i ++) { temp = temp 1。 if (SDA) { temp |= 0x80。 } else { temp amp。 = 0x7F。 } SCK=1。 SCK=0。 } RST=0。 //停止 DS1302 总线 dat2 = temp/16。 // 数据进制转换 dat1 = temp%16。 dat1 = dat2*10+dat1。 return dat1。 } /*****************************1602 显示******************************************/ void write_add(uchar add) //1602 控制字 { RS=0。 P0=add。 EN=1。 24 delay(5)。 EN=0。 } void write_date(uchar date) //1602 显示字 { RS=1。 P0=date。 EN=1。 delay(5)。 EN=0。 } void writesfm(uchar add,uchar date) //1602 显示时分秒 { uchar s,g。 s = date/10。 g = date%10。 write_add(0x80+0x40+add)。 write_date(0x30+s)。 write_date(0x30+g)。 } void writenyr(uchar add,uchar date) //1602 显示年月日 { uchar s,g。 s=date/10。 g=date%10。 write_add(0x80+0x00+add)。 write_date(0x30+s)。 write_date(0x30+g)。 } void writexi(uchar a) 25 { write_add(0x80+0x00+11)。 if(a==1) { for(i=0。 i3。 i++) { write_date(xi1[i])。 delay(5)。 } } if(a==2) { for(i=0。 i3。 i++) { write_date(xi2[i])。 delay(5)。 } } if(a==3) { for(i=0。 i3。 i++) { write_date(xi3[i])。 delay(5)。 } } if(a==4) { for(i=0。 i3。 i++) { 26 write_date(xi4[i])。 delay(5)。 } } if(a==5) { for(i=0。 i3。 i++) { write_date(xi5[i])。 delay(5)。 } } if(a==6) { for(i=0。 i3。 i++) { write_date(xi6[i])。 delay(5)。 } } if(a==7) { for(i=0。 i3。 i++) { write_date(xi7[i])。 delay(5)。 } } } void writefuhao(void) //写符号 27 { write_add(0x80+0x00+2)。 write_date(table[2])。 delay(10)。 write_add(0x80+0x00+5)。 write_date(table[2])。 delay(10)。 write_add(0x80+0x40+2)。 write_date(time1[2])。 delay(10)。 write_add(0x80+0x40+5)。 write_date(time1[2])。 delay(10)。 } void Speak1() //闹铃 { alarm = 0。 smiao = Read1302(r_Sec)。 sfen = Read1302(r_Min)。 sshi = Read1302(r_Hou)。 snian = Read1302(r_Yea)。 syue = Read1302(r_Mou)。 sri = Read1302(r_Day)。 sxi = Read1302(r_xi)。 writefuhao()。 writesfm(0,sshi)。 writesfm(3,sfen)。 writesfm(6,smiao)。 writenyr(0,snian)。 writenyr(3,syue)。 28 writenyr(6,sri)。 writexi(sxi)。 delay(500)。 alarm = 1。 delay(500)。 } void Speak2() { alarm=0。 delay(500)。 Normal()。 delay(500)。 Normal()。 alarm=1。 } void Normal() //正常显示时间功能 { smiao = Read1302(r_Sec)。 sfen = Read1302(r_Min)。 sshi = Read1302(r_Hou)。 snian = Read1302(r_Yea)。 syue = Read1302(r_Mou)。 sri = Read1302(r_Day)。 sxi = Read1302(r_xi)。 //读取时间数据 if((nshi==sshi)amp。 amp。 (nfen==sfen)) //闹钟铃响 { for(i=0。 i2。 i++) { key5()。 if(b==0) 29 { Speak1()。 } } } //关闭蜂鸣器 if((sshi==0||sshi==1||sshi==2||sshi==3 ||sshi==4||sshi==5||sshi==6||sshi==7 ||sshi==8||sshi==9||sshi==10||sshi==11 ||sshi==12||sshi==13||sshi==14||sshi==15 ||sshi==16||sshi==1||sshi==18||sshi==19 ||sshi==20||sshi==21||sshi==22||sshi==23) amp。 amp。 (sfen==0)amp。 amp。 (smiao==0)) { Speak2()。 //整点报时 } alarm=1。 //关闭蜂鸣器 writefuhao()。 writesfm(0,sshi)。 writesfm(3,sfen)。 writesfm(6,smiao)。 writenyr(0,snian)。 writenyr(3,syue)。 writenyr(6,sri)。 writexi(sxi)。 } /***********************按键程序 *********************************/ void key() //闹钟时的按键功 能 { 30 if(k1==0) { delay(10)。 if(k1==0) { n++。 while(!k1)。 if(n==1) { write_add(0x0f)。 write_add(0x80+0x40+4)。 //写 shi } if(n==2) { write_add(0x0f)。 write_add(0x80+0x40+7)。 //写 fen } if(n==3) { n=0。 nfen=fen。 nshi=shi。 //确认 write_add(0x0c)。 //光标不闪烁 } } } if(k2==0) { delay(10)。 if(k2==0) 31 { while(!k2)。 if(n==1) { shi++。 if(shi==24) shi=0。 writesfm(4,shi)。基于单片机多功能电子钟电路的设计毕业论文
相关推荐
VCC( 40 脚)和 VSS( 20 脚)为供电端口,分别接 +5V 电源的正负端。 P0~P3 为可编程通用 I/O 脚,其功能用途由软件定义,在本设计中, P0 端口( 32~39 脚)被定义为 N1 功能控制端口,分别与 N1的相应功能管脚相连接, 13 脚定义为 IR 输入端, 10 脚和 11 脚定义为 I2C 总线控制端口,分别连接 N1 的 SDAS( 18 脚)和 SCLS(
ei2=P1^1。 sbit Been=P1^2。 sbit AN1=P3^3。 sbit AN2=P3^4。 sbit AN3=P3^5。 sbit AN4=P3^6。 sbit AN5=P3^7。 sbit D1=P1^3。 sbit D2=P1^4。 sbit D3=P1^5。 sbit D4=P1^6。 sbit D5=P1^7。 unchar table[]={0x3f, 0x06,
作键盘时,单片机的电源端才能得到 3V 电源,否则.单片机处于节电工作方式。 开锁步骤如下:首先按下键盘上的开锁按键,然后利用键盘上的数字键 0- 9 输入密码,最后按下确认键。 当用户输入一密码后,单片机自动识码,如果识码不符,则报警。 只有当识码正确,单片机才能控制电子锁内的微型继电器吸台。 当继电器吸台以后带动锁杆伸缩,这时,锁勾在弹簧的作用下弹起,完成本次开锁。 开锁以后
类科技的进步,科技改变生活,从设计中,我们还可以发现单片机在控制系统中无限的潜力,只要我们改变控制器中的程序,可以控制不同的设备,体现了集成芯片的共享性,可节约大量的的硬件资源。 当然,该系统还存 在不完善之处,它只是显现了一些基本功能,其开发潜力还很大,不如温度测试、计时、记费等功能,这有待以后继续开发 通过此次多功能数字钟设计制作,我们将从书本上学到的知识应用于实践,虽然过程中遇到了一些困难
} //写入数据: d for (i = 0。 i 8。 i ++) { if (d amp。 0x01) { SDA=1。 } else { 22 SDA=0。 } SCK=1。 SCK=0。 d = d 1。 } RST=0。 //停止 DS1302 总线 } //*************************从 DS1302 读出一字节数据 unsigned char
and count y level used f ield det ect ion + agr icult ural t r acing I I dim ension code + super mar ket sales plat for m of agr icult ur al Super docking mode, gr eatly t o im pr ove spr ing papaya