找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问大佬们为啥我这个lcd不显示数字呢。代码附上——时钟程序

[复制链接]
跳转到指定楼层
楼主
电路仿真图已附上!!!
#include<reg52.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit rs=P3^2;
sbit wr=P3^3;
sbit lcden=P3^4;
uchar timecount=0;
void delay(uint i)
{
        uint a,b;
        for(a=i;a>0;a--) for(b=10;b>0;b--);
}

void write_com(uchar com) {
        P0=com;
        rs=0;
        lcden=0;
        delay(10);
        lcden=1;
        delay(10);
        lcden=0;
}
void write_date(uchar date) {
        P0=date;
        rs=1;
        lcden=0;
        delay(10);
        lcden=1;
        delay(10);
        lcden=0;
}
void init()
{
        wr=0;
        write_com(0x38);
        delay(20);
        write_com(0x0f);
        delay(20);
        write_com(0x06);
        delay(20);
        write_com(0x01);
        delay(20);
}

void main()
{
        uchar a,second=0,minute=0,hour=0;
        uchar table[8];
        TMOD|=0x01;
        while(1) {
                if(timecount>19) {
                        timecount=0;
                        second++;
                }
                if(second==60)
                {
                        second=0;
                        minute++;
                }
                if(minute==60) {
                        minute=0;
                        hour++;
                }
                if(hour==24)
                {
                        hour=0;
                }
                table[0]=hour/10+48;
                table[1]=hour%10+48;
                table[2]=58;
                table[3]=minute/10+48;
                table[4]=minute%10+48;
                table[5]=0;
                table[6]=second/10+48;
                table[7]=second%10+48;
                write_com(0x80);
                delay(20);
                for(a=0;a<8;a++) {
                        write_date(table[a]); delay(20);
                }
        }
}

void Time0 (void) interrupt 1{
        TH0=(65536-5000)/256;
        TL0=(65536-5000)%256;
        timecount++;
}

51hei截图20200518095946.jpg (81.42 KB, 下载次数: 25)

51hei截图20200518095946.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:749852 发表于 2020-5-18 11:19 | 只看该作者
回复

使用道具 举报

板凳
ID:584814 发表于 2020-5-18 12:38 | 只看该作者
时序问题,P0=date;不应该出现在第一行。
回复

使用道具 举报

地板
ID:572399 发表于 2020-5-18 12:55 | 只看该作者
stcx 发表于 2020-5-18 11:19
https://blog.csdn.net/main_h_/article/details/80419257

是我的接线错误吗?
回复

使用道具 举报

5#
ID:342822 发表于 2020-5-18 13:17 | 只看该作者
上拉电阻RP11脚接+5v
回复

使用道具 举报

6#
ID:716292 发表于 2020-5-18 14:36 | 只看该作者
编程上要写显示什么,建议搜一下别的学习一下
回复

使用道具 举报

7#
ID:213173 发表于 2020-5-18 15:06 | 只看该作者
楼主丢了不少语句,定时器中断根本没有开,定时器预装置也少写个0。


  1. #include<reg52.h>
  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;

  4. sbit rs=P3^2;
  5. sbit wr=P3^3;
  6. sbit lcden=P3^4;

  7. uchar timecount=0;

  8. void delay(uint i)
  9. {
  10.         uint a,b;
  11.         for(a=i;a>0;a--)
  12.                 for(b=10;b>0;b--);
  13. }

  14. void write_com(uchar com)
  15. {
  16.         P0=com;
  17.         rs=0;
  18.         lcden=0;
  19.         delay(10);
  20.         lcden=1;
  21.         delay(10);
  22.         lcden=0;
  23. }
  24. void write_date(uchar date)
  25. {
  26.         P0=date;
  27.         rs=1;
  28.         lcden=0;
  29.         delay(10);
  30.         lcden=1;
  31.         delay(10);
  32.         lcden=0;
  33. }
  34. void init()
  35. {
  36.         wr=0;
  37.         write_com(0x38);
  38.         delay(20);
  39.         write_com(0x0c);
  40.         delay(20);
  41.         write_com(0x06);
  42.         delay(20);
  43.         write_com(0x01);
  44.         delay(20);
  45. }

  46. void main()
  47. {
  48.         uchar a,second=0,minute=0,hour=12;  
  49.         uchar table[]="00:00:00";
  50.         TMOD=0x01;
  51.         TH0=(65536-50000)/256;
  52.         TL0=(65536-50000)%256;
  53.    TR0 = 1;
  54.         EA = 1;
  55.         ET0 = 1;
  56.         init();
  57.         for(a=0;a<8;a++)
  58.                 write_date(table[a]);
  59.         while(1)
  60.         {
  61.                 if(timecount>=20)
  62.                 {
  63.                         timecount=0;
  64.                         second++;
  65.                         if(second>=60)
  66.                         {
  67.                                 second=0;
  68.                                 minute++;
  69.                                 if(minute>=60)
  70.                                 {
  71.                                         minute=0;
  72.                                         hour++;
  73.                                         if(hour>=24)
  74.                                                 hour=0;
  75.                                 }
  76.                         }
  77.                 }
  78.                 table[0]=hour/10+'0';
  79.                 table[1]=hour%10+'0';
  80.                 table[3]=minute/10+'0';
  81.                 table[4]=minute%10+'0';
  82.                 table[6]=second/10+'0';
  83.                 table[7]=second%10+'0';
  84.                 write_com(0x80);
  85.                 delay(20);
  86.                 for(a=0;a<8;a++)
  87.                 {
  88.                         write_date(table[a]);
  89.                         delay(20);
  90.                 }
  91.         }
  92. }

  93. void Time0 (void) interrupt 1
  94. {
  95.         TH0=(65536-50000)/256;
  96.         TL0=(65536-50000)%256;
  97.         timecount++;
  98. }
复制代码



回复

使用道具 举报

8#
ID:572399 发表于 2020-5-20 14:18 | 只看该作者
taotie 发表于 2020-5-18 13:17
上拉电阻RP11脚接+5v

谢谢   已经可以了~~
回复

使用道具 举报

9#
ID:572399 发表于 2020-5-20 14:18 | 只看该作者
wulin 发表于 2020-5-18 15:06
楼主丢了不少语句,定时器中断根本没有开,定时器预装置也少写个0。

谢谢哥。。已经可以了~感谢
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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