当前位置:首页 > 技术学院 > 热搜器件
[导读]LCD1602显示简单时钟程序

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code  table[]=" 2009/04/29 THU";
uchar code table1[]="TIME:00-00-00";
sbit lcd_rs=P3^0;
sbit lcd_rw=P3^1;
sbit lcd_en=P3^2;
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
uchar count,k1num;
char shi,fen,miao;
void delay(uchar z)
{
 uint x,y;
 for(x=z;x>0;x--)
 for(y=110;y>0;y--);
}
void write_com(uchar com)
{
 lcd_rs=0;
 lcd_en=0;
 lcd_rw=0;
 P0=com;
 delay(5);
 lcd_en=1;
 delay(5);
 lcd_en=0;
}
void write_data(uchar date)
{
 lcd_rs=1;
 lcd_en=0;
 lcd_rw=0;
 P0=date;
 delay(5);
 lcd_en=1;
 delay(5);
 lcd_en=0;
}
void write_fsm(uchar add,uchar date)
{
 uchar shi,ge;
 shi=date/10;
 ge=date%10;
 write_com(0x80+0x40+add);
 write_data(0x30+shi);
 write_data(0x30+ge);
}
void jiaxian()
{
  if(k1num!=0)
   {
   if(k2==0)
   {
    delay(5);
    if(k2==0)
    {
     while(!k2);
     if(k1num==1)
     {
      miao++;
      if(miao==60)
   
       miao=0;
       write_fsm(11,miao);
       write_com(0x80+0x40+11);
    
     }
           if(k1num==2)
     {
      fen++;
      if(fen==60)
       fen=0;
       write_fsm(8,fen);
       write_com(0x80+0x40+8);
           }
        if(k1num==3)
        {
        shi++;
      if(shi==24)
       shi=0;
       write_fsm(5,shi);
       write_com(0x80+0x40+5);
  
     }
   }
  }
 }
}
void jianxian()
{
 if(k1num!=0)
 {
  if(k3==0)
  delay(5);
  if(k3==0)
  {
   while(!k3);
   if(k1num==1)
   {
    miao--;
    if(miao==-1)
     miao=59;
     write_fsm(11,miao);
     write_com(0x80+0x40+11);
   }
   if(k1num==2)
   {
    fen--;
    if(fen==-1)
     fen=59;
     write_fsm(8,fen);
     write_com(0x80+0x40+8);
   }
   if(k1num==3)
   {
    shi--;
    if(shi==-1)
     shi=23;
     write_fsm(5,shi);
     write_com(0x80+0x40+5);
   }
  }
 }
}
void kbscan()
{
 if(k1==0)
 {
  delay(5);
  if(k1==0)
  {
   while(!k1);
   k1num++;
   TR0=0;
   if(k1num==1)
   {
    write_com(0x80+0x40+11);
    write_com(0x0f); 
   }
   if(k1num==2)
   {
    write_com(0x80+0x40+8);
   }
   if(k1num==3)
   {
    write_com(0x80+0x40+5);
   }
   if(k1num==4)
   {
    k1num=0;
    write_com(0x0c);
    TR0=1;
   }
  }
 }
  jiaxian();
  jianxian();
  
}

void init()
{
 uchar num;
 lcd_rw=0;
 lcd_en=0;
 shi=0;
 fen=0;
 miao=0;
 write_com(0x38);
 write_com(0x0c);
 write_com(0x06);
 write_com(0x01);
 write_com(0x80);
 for(num=0;num<15;num++)
 {
  write_data(table[num]);
  delay(5);
 }
 write_com(0x80+0x40);
 for(num=0;num<13;num++)
 {
  write_data(table1[num]);
  delay(5);
 }
 TMOD=0x01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=1;
}
void main()
{
 init();
 while(1)
 {
  kbscan();
  if(count==18)
 {
  count=0;
  miao++;
  if(miao==60)
  {
   miao=0;
   fen++;
   if(fen==60)
   {
    fen=0;
    shi++;
    if(shi==24)
    {
     shi=0;
    }
    write_fsm(5,shi);
   }
   write_fsm(8,fen);
  }
  write_fsm(11,miao);
 }
 
 }
}
void time0() interrupt 1
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 count++;
 
}

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

lcd1602液晶屏在很懂工业产品上都有应用,LCD1602能够能够同时显示32个字符,价格便宜,编程简单而且稳定可靠。lcd1602液晶屏是一种图形点阵显示器,显示原理简单易懂,都是液晶屏内部的液晶材料变化而显示不同的...

关键字: lcd1602 接线

  用户所编的显示程序,开始必须进行初始化,否则模块无法正常显示,下面介绍两种初始化方法:   1. 利用内部复位电路进行初始化   下面指令是在初始化过程中执行的。  

关键字: lcd1602

51单片机——LCD1602

关键字: 51单片机 lcd1602

一.接口LCD1602是很多单片机爱好者较早接触的字符型液晶显示器,它的主控芯片是HD44780或者其它兼容芯片。与此相仿的是LCD12864液晶显示器,它是一种图形点阵显示器,能显示的内容比LCD1602要丰富得多,除...

关键字: lcd1602 单片机 显示原理

程序要写出自己的风格********************************************************这是学习 msp430g2553 单片机时写的 1602 的程序****时间精确到us,...

关键字: lcd1602 msp430g2553

#include "lcd1602_driver.h"#include #include "typedef.h"#ifndef _LCD_1602_#define _LCD_160...

关键字: lcd1602 驱动程序 4线数据传输

/这个程序已经调试过了//下面调用实例////////////////////////////////////LCD1602读写头文件//四线驱动方式//////////////////////////////////#...

关键字: 51 lcd1602 四数据线驱动

平台:stm32f302, 屏幕: LCD16021 #ifndef __LCD1602_H__2 #define __LCD1602_H__3 #include "stm32f30x.h"4 vo...

关键字: lcd1602 驱动 stm32f302

给 STC89C51 安一个 LCD1602 液晶显示器。写一段程序,使得 STC89C51 有计时、显示功能。当给 STC89C51 一个连续的高电平时,单片机开始计时,同时在显示器上显示计时的秒数

关键字: lcd1602 stc89c51 液晶显示器

给 STC89C51 安一个 LCD1602 液晶显示器。写一段程序,使得 STC89C51 有计时、显示功能。当给 STC89C51 一个连续的高电平时,单片机开始计时,同时在显示器上显示计时的秒数

关键字: lcd1602 stc89c51 液晶显示器
关闭
关闭