找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于1602LCD不能计数

[复制链接]
跳转到指定楼层
楼主
以下是我的程序,是毕业设计任务,想做一个LCD的24小时时钟计数器,但是仿真之后并不能计数,希望哪位大神指点指点!!!
#include<reg51.h>
#include<intrins.h>
#include<stdlib.h>
#define uchar unsigned char
#define  uint unsigned int
#define DelayNOP() {_nop_();_nop_();_nop_();_nop_();}  
//sbit K1=P1^0;
//sbit K2=P1^1;
sbit BEEP=P3^0;
sbit LCD_RS=P3^5;
sbit LCD_RW=P3^6;
sbit LCD_EN=P3^7;
void beep();
bit LCD_Busy_Check();
void LCD_Initialize();
void LCD_Set_POS(uchar);
void LCD_Write_Command(uchar);
void LCD_Write_Data(uchar);  
uchar code titlt_text[]={"--- jishiqi ---"};  //标题字符串
uchar data Multiply_str[]={"               "}; //乘法口诀表达式 //延时
uchar miao,fen,shi,miao_20;
void chuli();
void DelayMS(uint x)
{
  uchar i;   
  while(x--)
          for(i=0;i<120;i++);
}  
//显示函数,在LCD指定的行上显示字符串
void Display_string(uchar *str,uchar lineno)
{
   uchar k;
   LCD_Set_POS(lineno);     
   for(k=0;k<16;k++)
           LCD_Write_Data(str[k]);
}  void Get_random_Num_A_B()
{


   Multiply_str[1]= Multiply_str[2]=Multiply_str[3]=Multiply_str[4]
   =' ';
        Multiply_str[12]=miao%10+'0';     
        Multiply_str[11]=miao/10+'0';     
        Multiply_str[9]=fen%10+'0';     
        Multiply_str[8]=fen/10+'0';     
        Multiply_str[6]=shi%10+'0';     
        Multiply_str[5]=shi/10+'0';
//        if(c1==0)  
        //        Multiply_str[9]=' ';//当乘积的十位数(即数组中的第9位)为0时不显示
}

//1602LCD显示控制函数
bit LCD_Busy_Check()
{  
  bit Result;  
  LCD_RS=0;//寄存选择  
  LCD_RW=1;//读的状态选择
  LCD_EN=1;//开始读
  DelayNOP();  
  Result=(bit)(P0&0x80);
  LCD_EN=0;  
  return Result;
}  

void LCD_Write_Command(uchar cmd)
{  
    while(LCD_Busy_Check());//忙等待
    LCD_RS=0;
        LCD_RW=0;
        LCD_EN=0;
    _nop_();_nop_();
    P0=cmd;
        DelayNOP();
    LCD_EN=1;
        DelayNOP();
    LCD_EN=0;
}

void LCD_Write_Data(uchar str)
{  
   while(LCD_Busy_Check());  
   LCD_RS=1;
   LCD_RW=0;
   LCD_EN=0;
   P0=str;
   DelayNOP();
   LCD_EN=1;
   DelayNOP();
   LCD_EN=0;
}

void LCD_Initialize()
{  
    DelayMS(5);
        LCD_Write_Command(0x38);  //设置8位格式,2行,5x7
    DelayMS(5);
        LCD_Write_Command(0x0c); //整体显示,关光标,不闪烁
    DelayMS(5);
        LCD_Write_Command(0x06); //设定输入方式,增量不移位
        DelayMS(5);
        LCD_Write_Command(0x01); //清除屏幕显示
    DelayMS(5);
        TMOD=0X01;
        TH0=0X3C;
        TL0=0XB0;
        TR0=1;
        EA=1;
        ET0=1;
        Multiply_str[7]=Multiply_str[10]='-';
}  

void LCD_Set_POS(uchar Position)
{  
        LCD_Write_Command(Position | 0x80);
}

//蜂鸣器
void beep()
{  
   uchar i,j;  
   for(i=0;i<180;i++)
   {  
      for(j=0;j<50;j++);
          BEEP=!BEEP;
    }  
     DelayMS(300);
         BEEP=0;
}

//主程序

void main()
{  
    P0= P2=0xff;
    DelayMS(10);  
    LCD_Initialize();  //初始化LCD  
     Display_string(titlt_text,0x00);//在第一行显示标题
     while(1)
    {  
                
                   Get_random_Num_A_B();
                     Display_string(Multiply_str,0x40);
                               
    }
}
void chuli()
{
        if(miao_20==20)
        {
                miao_20=0;
                miao++;
                if(miao==60)
                {
                        miao=0;
                        fen++;
                        if(fen==60)
                        {
                                fen=0;
                                shi++;
                        }
                }
        }
}  
void t0() interrupt 1
{
        TH0=0X3C;
        TL0=0XB0;
        miao_20++;
}

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

使用道具 举报

沙发
ID:215745 发表于 2017-6-30 00:13 | 只看该作者
这是任务LCD的电路图

QQ图片20170630001237.png (50.39 KB, 下载次数: 58)

QQ图片20170630001237.png
回复

使用道具 举报

板凳
ID:215745 发表于 2017-6-30 00:16 | 只看该作者
可以显示“---jishuqi---”“00-00-00”但不能自动计数!无解,求答...
回复

使用道具 举报

地板
ID:123289 发表于 2017-6-30 00:54 | 只看该作者
楼主:“关于1602LCD不能计数”
LCD只能显示,没有计数功能!
回复

使用道具 举报

5#
ID:82765 发表于 2017-6-30 05:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

6#
ID:215745 发表于 2017-6-30 08:38 | 只看该作者
yzwzfyz 发表于 2017-6-30 00:54
楼主:“关于1602LCD不能计数”
LCD只能显示,没有计数功能!

但是不是可以将它做成一个时钟嘛,是可以的,我们课上都做过,不过我自己写程序出了问题!当然时钟的时间可能没那么准,但是就是这样一个道理,习惯叫计数了
回复

使用道具 举报

7#
ID:208445 发表于 2017-6-30 11:21 | 只看该作者
你的 chuli()函数没调用啊,当然不能变化了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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