基于c语言和55单片机在实现lcd1602多功能时间显示完全程序(不完全是显示时间这么简单内容摘要:
ek[3*week1])。 lcd_wrcmd(0x91)。 } } else if(ii==5) //sw2=OK { year=year_h*16+year_l。 month=month_h*16+month_l。 date=date_h*16+date_l。 lcd_wrcmd(0x0c)。 set_time()。 lcd_wrcmd(1)。 display(0xc3,str_su)。 //Successful for(n=0。 n1500。 n++) delay(250)。 lcd_wrcmd(1)。 state=2。 //clock()。 break。 } else if(ii==6) //sw1=Exit { lcd_wrcmd(1)。 state=2。 //clock()。 break。 } }}//********************yy************fghfghfghfg****************************//***************dfghshjhyrj*******hhfgh*******************************************//**********************************************************************void write_up(uchar ad,uchar dat)//写时分秒函数{ uchar s,g。 s=dat/10。 g=dat%10。 lcd_wrcmd(0x80+ad)。 lcd_wrdata(0x30+s)。 lcd_wrdata(0x30+g)。 }void write_down(uchar add,uchar date)//写时分秒函数{ uchar si,ge。 si=date/10。 //分解一个2位数的十位和个位 ge=date%10。 lcd_wrcmd(0x80+0x40+add)。 //设置显示位置 lcd_wrdata(0x30+si)。 //送去液晶显示十位 lcd_wrdata(0x30+ge)。 //送去液晶显示个位}stopwatch()//秒表{ uchar ii,ss=1。 lcd_wrcmd(0x80+6)。 //写出时间显示部分的两个冒号 lcd_wrdata(39。 :39。 )。 delay(5)。 lcd_wrcmd(0x80+9)。 lcd_wrdata(39。 :39。 )。 delay(5)。 lcd_wrcmd(0x80+12)。 lcd_wrdata(39。 :39。 )。 delay(5)。 write_up(13,swa)。 write_up(10,sec)。 //分别送去液晶显示 write_up(7,min)。 write_up(4,hou)。 lcd_wrcmd(0x80+0x40+6)。 //写出时间显示部分的两个冒号 lcd_wrdata(39。 :39。 )。 delay(5)。 lcd_wrcmd(0x80+0x40+9)。 lcd_wrdata(39。 :39。 )。 delay(5)。 lcd_wrcmd(0x80+0x40+12)。 lcd_wrdata(39。 :39。 )。 delay(5)。 write_down(13,haomi)。 write_down(10,mi)。 //分别送去液晶显示 write_down(7,fe)。 write_down(4,sh)。 while(1) { ii=key()。 if(ii==2) //sw5=down { ss++。 if(ss==3)ss=1。 //ss=3=1 if(ss==1) { TR1=1。 lcd_wrcmd(0xc0)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 lcd_wrcmd(0x80)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 } else if(ss==2) { TR0=1。 lcd_wrcmd(0x80)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 lcd_wrcmd(0xc0)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 } } else if(ii==1) //sw6=up { ss++。 if(ss==3)ss=1。 //ss=3=1 if(ss==1) { lcd_wrcmd(0xc0)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 lcd_wrcmd(0x80)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 } else if(ss==2) { lcd_wrcmd(0x80)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 lcd_wrcmd(0xc0)。 lcd_wrdata(39。 39。 )。 lcd_wrdata(39。 39。 )。 } } else if(ii==5)//sw2=关闭秒表 { if(ss==2) { TR0=0。 break。 } else if(ss==1) { TR0=0。 break。 } } else if(ii==6)//sw1=CLR+menu+ready { TR0=0。 fe=0。 mi=0。 sh=0。 haomi=0。 hour=0。 min=0。 sec=0。 swa=0。 write_down(13,0)。 write_down(10,0)。 write_down(7,0)。 write_down(4,0)。 write_up(13,0)。 write_up(10,0)。 write_up(7,0)。 write_up(4,0)。 lcd_wrcmd(1)。 state=2。 //clock()。 break。 } } }set_alarm()//设置闹钟{ uchar ii,ss=1,hour_h,hour_l,minute_h,minute_l。 uchar hour_temp,minute_temp。 uint n。 if(ap==0) { hour_h=alarm_hour[0]/10。 hour_l=alarm_hour[0]%10。 hour_temp=alarm_hour[0]。 minute_h=alarm_minute[0]/10。 minute_l=alarm_minute[0]%10。 minute_temp=alarm_minute[0]。 } else { hour_h=alarm_hour[1]/10。 hour_l=alarm_hour[1]%10。 hour_temp=alarm_hour[1]。 minute_h=alarm_minute[1]/10。 minute_l=alarm_minute[1]%10。 minute_temp=alarm_minute[1]。 } lcd_wrcmd(1)。 lcd_wrcmd(0x84)。 lcd_wrdata(0x30+hour_h)。 lcd_wrdata(0x30+hour_l)。 lcd_wrdata(39。 :39。 )。 lcd_wrdata(0x30+minute_h)。 lcd_wrdata(0x30+minute_l)。 lcd_wrcmd(0x0f)。 display(0xc0,str_ok)。 //39。 ok39。 display(0xce,str_exit)。 //39。 39。 lcd_wrcmd(0x85)。 while(1) { ii=key()。 if(ii==4) //sw3=right { ss++。 if(ss==3)ss=1。 //ss=3=1 if(ss==1)lcd_wrcmd(0x85)。 //ss=1为校hour状态 else if(ss==2)lcd_wrcmd(0x88)。 //ss=2为校min状态 } else if(ii==3) //sw4=left { ss++。 if(ss==3)ss=1。 //ss=3=1 if(ss==1)lcd_wrcmd(0x85)。 //ss=1为校hour状态 else if(ss==2)lcd_wrcmd(0x88)。 //ss=2为校min状态 } //校时程序块 else if(ii==1)//sw6=add+1操作 { if(ss==1)//小时 { hour_temp++。 if(hour_temp23) { hour_temp=0。 } hour_h=hour_temp/10。 hour_l=hour_temp%10。 lcd_wrcmd(0x84)。 lcd_wrdata(0x30+hour_h)。 lcd_wrdata(0x30+hour_l)。 lcd_wrcmd(0x85)。 } else if(ss==2)//分钟 { minute_temp++。 if(minute_temp59) { minute_temp=0。 } minute_h=minute_temp/10。 minute_l=minute_temp%10。 lcd_wrcmd(0x87)。 lcd_wrdata(0x30+minute_h)。 lcd_wrdata(0x30+minute_l)。 lcd_wrcmd(0x88)。 } } else if(ii==2)//sw5=down1操作 { if(ss==1) { hour_temp。 if(hour_temp==0xff) { hour_temp=23。 } hour_h=hour_temp/10。 hour_l=hour_temp%10。 lcd_wrcmd(0x84)。 lcd_wrdata(0x30+hour_h)。 lcd_wrdata(0x30+hour_l)。 lcd_wrcmd(0x85)。 } else if(ss==2) { minute_temp。 if(minute_temp==0xff) { minute_temp=59。 } minute_h=minute_temp/10。 minute_l=minute_temp%10。 lcd_wrcmd(0x87)。 lcd_wrdata(0x30+minute_h)。 lcd_wrdata(0x30+minute_l)。 lcd_wrcmd(0x88)。 } } else if(ii==5)//sw2=resdy+menu+pause { f=1。 if(ap==0) { alarm_hour[0]=hour_h*10+。基于c语言和55单片机在实现lcd1602多功能时间显示完全程序(不完全是显示时间这么简单
相关推荐
1、生蛋白饮料是以花生为原料制成的一种植物蛋白饮料,富含蛋白质、脂肪、钙、磷、铁等元素和维生素 2,胡萝卜素、尼克酸、维生素 E,以及脑磷脂、卵磷脂等营养成分,是有发展前景的一种营养保健饮料。 1 工艺流程花生筛选烘烤脱皮浸泡磨浆过滤煮浆配料均质灌装封口杀菌成品2 操作要点选料选择颗粒饱满、无损伤、无霉变的花生原料,并除去杂质。 烘烤在 130高温下烘烤 10 分钟,以钝化花生仁中的脂肪氧化酶
比较麻烦,本设计采用间接连接方式, 在此重点讨论 8位总线方式。 其电路图如图。 陕西理工学院毕业论文 (设计 ) 第 13 页 共 55 页 图 LCD1602 与单片机的间接连接电路 如图所示, LCD 的 8 位数据总线与 AT89C51 的 P1 口相连,三个控制端口 RS、 R/W 和 E 分别接 AT89C51 的 、 、 ,根据程序设计的不同也可选用 P3口的其它管脚。 VL 是
covert1(TL,39。 L39。 )。 LCD_Print(0,1,TempBuffer0)。 } if(%5==0) { ISendStr(AT24C02,0,amp。 TemperatureA,2)。 } 22 } } 各模块子程序 [1]温度测试程序: Ds18b20: include include include unsigned char tt[2]。 sbit DQ1 =
):内部时钟电路反向放大器输入端,接外部晶振的一个引脚。 XTAL2(Pin19):内部时钟电路反向放大器输出端,接外部晶振另一个引脚。 3)控制引脚( 4 根) RST/VPP(Pin9):复位引脚,引脚上出现 2 个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31)
的电路框图 a b a y clk clk1 clk sell(02) r clk g y tim1(03) timh(03) r clk g y timl(03) timh(03) clk y ≥ 1 sel(02) do(03) d1(03) q(03) d2(03) d3(03) d(03) 1 amp。 clkyk sel fen clk xiaopro no fen2 amp。