找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2270|回复: 0
打印 上一主题 下一主题
收起左侧

单片机+ds12887+lcd1602代码与Proteus仿真图

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)

独立按键调节时间,年,月,日,星期

单片机源程序如下:
#include<reg52.h>
#define ds12887 P0
#define lcd P1
sbit dsas=P2^4;
sbit dsrw=P2^5;
sbit dsds=P2^6;
sbit dscs=P2^7;
sbit lcdrs=P2^0;
sbit lcde=P2^2;
sbit k1=P3^5;
sbit k2=P3^6;
sbit k3=P3^7;
#define uchar unsigned char
#define uint unsigned int
uchar houir,min,sad,qi,year, month,day,kai,kai1,kai2,ting;
void delay(uint x)
{
uchar y,z;
for(y=x;y>0;y--)
  for(z=110;z>0;z--);
}
uchar ds_read(uchar x)
{
uchar y;
dscs=0;
dsrw=1;
dsas=1;
dsds=1;
ds12887=x;
dsas=0;
dsds=0;
ds12887=0xff;
y=ds12887;
dsds=1;
dsas=1;
dscs=1;
return y;
}
void ds_write(uchar x,y)
{
dscs=0;
dsrw=1;
dsas=1;
dsds=1;
ds12887=x;
dsas=0;
dsrw=0;
ds12887=y;
dsrw=1;
dsas=1;
dscs=1;
}
void lcd_mingling(uchar x)
{
lcdrs=0;
lcde=0;
lcd=x;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void lcd_shuju(uchar x)
{
lcdrs=1;
lcde=0;
lcd=x;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void lcdlnit()
{
lcd_mingling(0x38);
lcd_mingling(0x0c);
lcd_mingling(0x06);
lcd_mingling(0x01);
lcd_mingling(0x80);
}
void dslnit()
{
ds_write(0x0a,0x20);
ds_write(0x0b,0x06);
ds_write(4,18);
ds_write(2,41);
ds_write(0,33);

ds_write(7,19);
ds_write(8,3);
ds_write(9,21);
ds_write(6,5);
}
void sfm()
{

houir=ds_read(4);
lcd_mingling(0x80);
lcd_shuju(houir/10+0x30);
lcd_shuju(houir%10+0x30);
lcd_shuju(':');
min=ds_read(2);
lcd_shuju(min/10+0x30);
lcd_shuju(min%10+0x30);
lcd_shuju(':');
sad=ds_read(0);
lcd_shuju(sad/10+0x30);
lcd_shuju(sad%10+0x30);
}
void nyr()
{
lcd_mingling(0x80+0x40);
lcd_shuju('2');
lcd_shuju('0');        
year=ds_read(9);
lcd_shuju(year/10+0x30);
lcd_shuju(year%10+0x30);
lcd_shuju('-');
month=ds_read(8);
lcd_shuju(month/10+0x30);
lcd_shuju(month%10+0x30);
lcd_shuju('-');
day=ds_read(7);
lcd_shuju(day/10+0x30);
lcd_shuju(day%10+0x30);
lcd_shuju('-');
lcd_shuju('-');
qi=ds_read(6);
lcd_shuju(qi+0x30);
}
void key()
{
if(k1==0)
{
  delay(20);
  if(k1==0)
  {
   while(!k1);
  
    kai++;
    if(kai==1)
    {
     ting++;
     lcd_mingling(0x80+6);
         lcd_mingling(0x0f);
    }
    if(kai==2)
    {
     lcd_mingling(0x80+3);
         lcd_mingling(0x0f);
    }
    if(kai==3)
    {
     lcd_mingling(0x80);
         lcd_mingling(0x0f);
    }
    if(kai==4)
    {
     lcd_mingling(0x80+0x40+8);
         lcd_mingling(0x0f);
    }
    if(kai==5)
    {
     lcd_mingling(0x80+0x40+5);
         lcd_mingling(0x0f);
    }
    if(kai==6)
    {
     lcd_mingling(0x80+0x40+2);
         lcd_mingling(0x0f);
    }
    if(kai==7)
    {
     lcd_mingling(0x80+0x40+12);
         lcd_mingling(0x0f);
    }
    if(kai==8)
    {
     lcd_mingling(0x80+1);
         lcd_mingling(0x0c);
     kai=0;
     ting=0;
     ds_write(0,sad);
     ds_write(2,min);
     ds_write(4,houir);
     ds_write(6,qi);
     ds_write(7,day);
     ds_write(8,month);
     ds_write(9,year);
    }
  }
}
if(kai==1)
{
  if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    sad++;
    if(sad==60)
     sad=0;
    lcd_shuju(sad/10+0x30);
    lcd_shuju(sad%10+0x30);
    lcd_mingling(0x80+6);
   
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(sad==0)
     sad=60;
    sad--;
     lcd_shuju(sad/10+0x30);
    lcd_shuju(sad%10+0x30);
    lcd_mingling(0x80+6);
   }
  }
}
if(kai==2)
{
    if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    min++;
    if(min==60)
     min=0;
    lcd_shuju(min/10+0x30);
    lcd_shuju(min%10+0x30);
    lcd_mingling(0x80+3);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(min==0)
     min=60;
    min--;
    lcd_shuju(min/10+0x30);
    lcd_shuju(min%10+0x30);
    lcd_mingling(0x80+3);
   }
  }
}
if(kai==3)
{
  if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    houir++;
    if(houir==24)
     houir=0;
    lcd_shuju(houir/10+0x30);
    lcd_shuju(houir%10+0x30);
    lcd_mingling(0x80);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(houir==0)
    houir=24;
   houir--;
   lcd_shuju(houir/10+0x30);
   lcd_shuju(houir%10+0x30);
   lcd_mingling(0x80);
      
   }
  }
}
if(kai==4)
{
    if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    day++;
    if(day==31)
     day=0;
    lcd_shuju(day/10+0x30);
    lcd_shuju(day%10+0x30);
    lcd_mingling(0x80+0x40+8);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(day==0)
     day=31;
    min--;
    lcd_shuju(day/10+0x30);
    lcd_shuju(day%10+0x30);
    lcd_mingling(0x80+0x40+8);
   }
  }
}
if(kai==5)
{
    if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    month++;
    if(month==12)
    month=0;
    lcd_shuju(month/10+0x30);
    lcd_shuju(month%10+0x30);
    lcd_mingling(0x80+0x40+5);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(month==0)
     month=12;
   month--;
    lcd_shuju(month/10+0x30);
    lcd_shuju(month%10+0x30);
    lcd_mingling(0x80+0x40+5);
   }
  }
}
if(kai==6)
{
    if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    year++;
    if(year==100)
     year=0;
    lcd_shuju(year/10+0x30);
    lcd_shuju(year%10+0x30);
    lcd_mingling(0x80+0x40+2);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(year==0)
     min=100;
    year--;
    lcd_shuju(year/10+0x30);
    lcd_shuju(year%10+0x30);
    lcd_mingling(0x80+0x40+2);
   }
  }
}
if(kai==7)
{
    if(k2==0)
  {
   delay(20);
   if(k2==0)
   {
    while(!k2);
    qi++;
    if(qi==8)
    qi=1;
    lcd_shuju(qi+0x30);   
    lcd_mingling(0x80+0x40+12);
   }
  }
  if(k3==0)
  {
   delay(20);
   if(k3==0)
   {
    while(!k3);
    if(qi==1)
     qi=8;
   qi--;
    lcd_shuju(qi+0x30);
    lcd_mingling(0x80+0x40+12);
   }
  }
}  
}
void main()
{
dslnit();
  lcdlnit();
  ds_write(0x0a,0x00);
  
  while(1)
  {  
   key();
   if(ting==0)
   {
    sfm();
    nyr();
    delay(200);
   }
  }
}  

全部资料51hei下载地址:
复习液晶时钟.zip (92.28 KB, 下载次数: 39)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表