这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » LCD1602数字钟

共24条 2/3 1 2 3 跳转至
助工
2011-12-15 19:47:10     打赏
11楼

数码管滚动显示
数码管滚动显示字符--PASS-ALL---















程序:
#include<reg52.h>
#include<intrins.h>
#include<stdio.h>
unsigned char shift,j=0;
//unsigned char code table[]={0xbf,0xbf,0xbf,0xbf,0x8c,0x88,0x92,0x92,0xbf,0x88,0xc7,0xc7,0xbf,0xbf,0xbf,0xbf}; // --PASS-ALL--
unsigned char code table[]={0x40,0x40,0x40,0x40,0x73,0x77,0x6d,0x6d,0x40,0x77,0x38,0x38,0x40,0x40,0x40,0x40}; // --PASS-ALL--
//unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void delay(unsigned int del)
{
unsigned int x,y;
 for(x=del;x>0;x--)
 for(y=119;y>0;y--)
  ;
}

void display(void);
void main()
{

char k;
P0=0xFF;
P2=0xFF;

while(1)
{
for(j=0;j<9;j++)
{
for(k=0;k<125;k++)
display();
}
delay(1000);
P0=0xFF;
P2=0xFF;
}

}

void display(void)
{
 char i;
 //shift=0xfe;
 shift=7;
 for(i=7; i>=0; i--)
  {
  P0=table[i+j];
  P2=shift;
  //shift=(shift<<1)|0x01;
  if(shift>0) shift--;
  else shift=7;
  delay(1);
  }

  P2=0xff ;
}


助工
2011-12-16 16:42:13     打赏
12楼

2011-12-04      定时器应用
使用定时器0,使P1.5口接的发光二级管每秒钟闪烁一次

#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char
sbit led1=P1^5 ;
uchar num;
void main()
{
TMOD=0X00;
TH0=(8192-5000)/32;
TL0=(8192-5000)%32;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(num==200)
{
num=0;
led1=~led1;
}
}
}
void T0_time() interrupt 1
{
 TH0=(8192-5000)/32;
 TL0=(8192-5000)%32;
 num++;

}


助工
2011-12-17 09:08:28     打赏
13楼
 考六级啦

助工
2011-12-17 11:37:34     打赏
14楼
四级还没过的好伤心!

助工
2011-12-19 11:42:19     打赏
15楼
2011-12-10      LCD1602液晶显示

液晶1602显示
显示1:字符“ABCDEFGHIJLMNOP"
                       “abcdefghijklmnop"
显示2:字符”come on eewp "
                     "come from nwnu"








助工
2011-12-19 11:51:11     打赏
16楼

#include "1602.h"
uchar code table1[]="   come on eewp ";
uchar code table2[]="come from nwnu ";

void main(void)
{
uchar i;
init();

for(i=0;i<16;i++)
{
LCD_disp_char(i,1,table1[i]);
//delay(20);
}
for(i=0;i<16;i++)
{
LCD_disp_char(i,2,table2[i]);
//delay(20);
}
while(1);

}


助工
2011-12-19 19:31:23     打赏
17楼
数字钟展示




助工
2011-12-19 19:35:09     打赏
18楼

数字钟部分程序,代时间调整端

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;

int i,s,m,h;
uchar num,flag;

void delay(uint del)
{
uint x,y;
 for(x=del;x>0;x--)
 for(y=119;y>0;y--)
  ;
}

void t0_init(void)
{
 flag=0;
 TMOD=0X01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=0;
}

void display(int s,m,h)
{
。。。。。。。。 
}
 void main(void)
{
t0_init();
TR0=1;
while(1)
 {
  if(k1==0)
   {
    delay(50);
  if(k1==0)
   {
    flag++;
    if(flag==4) flag=0;
   }while(k1==0);
 }
    
 switch(flag)
 {
 case 1:
       TR0=0;
       if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      s++;
      if(s>=60) s=0;
     }
   }while(k2==0);
    if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      s--;
      if(s<=0) s=59;
     }
   }while(k3==0);
    break;
 case 2:
       TR0=0;
    if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      m++;
      if(m>=60) m=0;
     }
   }while(k2==0);
    if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      m--;
      if(m<=0) m=59;
     }
   }while(k3==0);
    break;
 case 3:
        TR0=0;
       if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      h++;
      if(h>=23) h=0;
     }
   }while(k2==0);
   if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      h--;
      if(h<=0) h=23;
     }
   }while(k3==0);
   break;
 default:
     TR0=1;
  break;

 }
 
   display(s,m,h);
  }
}


void timer0() interrupt 1  using 0
{

 num++;
 if(num==20)
  {
    num=0;
    s++;
     if(s>=60)
      {
     s=0;
     m++;
       if(m>=60)
        {
          m=0;
          h++;
           if(h>=24)
            {
              h=0;
            }
           }
       }
   }
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
}

 


助工
2011-12-19 19:35:44     打赏
19楼

数字钟部分程序,代时间调整端

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P3^2;
sbit k2=P3^3;
sbit k3=P3^4;

int i,s,m,h;
uchar num,flag;

void delay(uint del)
{
uint x,y;
 for(x=del;x>0;x--)
 for(y=119;y>0;y--)
  ;
}

void t0_init(void)
{
 flag=0;
 TMOD=0X01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=0;
}

void display(int s,m,h)
{
。。。。。。。。 
}
 void main(void)
{
t0_init();
TR0=1;
while(1)
 {
  if(k1==0)
   {
    delay(50);
  if(k1==0)
   {
    flag++;
    if(flag==4) flag=0;
   }while(k1==0);
 }
    
 switch(flag)
 {
 case 1:
       TR0=0;
       if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      s++;
      if(s>=60) s=0;
     }
   }while(k2==0);
    if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      s--;
      if(s<=0) s=59;
     }
   }while(k3==0);
    break;
 case 2:
       TR0=0;
    if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      m++;
      if(m>=60) m=0;
     }
   }while(k2==0);
    if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      m--;
      if(m<=0) m=59;
     }
   }while(k3==0);
    break;
 case 3:
        TR0=0;
       if(k2==0)
     {
      delay(50);
    if(k2==0)
     {
      h++;
      if(h>=23) h=0;
     }
   }while(k2==0);
   if(k3==0)
     {
      delay(50);
    if(k3==0)
     {
      h--;
      if(h<=0) h=23;
     }
   }while(k3==0);
   break;
 default:
     TR0=1;
  break;

 }
 
   display(s,m,h);
  }
}


void timer0() interrupt 1  using 0
{

 num++;
 if(num==20)
  {
    num=0;
    s++;
     if(s>=60)
      {
     s=0;
     m++;
       if(m>=60)
        {
          m=0;
          h++;
           if(h>=24)
            {
              h=0;
            }
           }
       }
   }
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
}

 



助工
2011-12-20 17:31:50     打赏
20楼
点阵显示
点阵单行单列扫描显示



共24条 2/3 1 2 3 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]