| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 8799 人关注过本帖
标题:求助51单片机LCD1602数字显示的问题
取消只看楼主 加入收藏
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
结帖率:83.33%
收藏
已结贴  问题点数:20 回复次数:2 
求助51单片机LCD1602数字显示的问题
程序代码:
#include<stc15.h>
#include<intrins.h>
#include<gpio.h>
#define uchar unsigned char
#define uint  unsigned int
#include<lcd1602.h>

//uint m,f,s;     //秒、分、时
uint m1,m2;     //秒的个位、十位
uint f1,f2;     
uint s1,s2;
uint aa;
uchar dis1[]={0x30,0x30,0x3a,0x30,0x30,0x3a,0x30,0x30};
uint i;

void Delay1ms()        //@11.0592MHz
{
    unsigned char i, j;

    _nop_();
    _nop_();
    _nop_();
    i = 11;
    j = 190;
    do
    {
        while (--j);
    } while (--i);
}

void Delayxms(uint x)
{
    uint i;
    for(i=0;i<x;i++)
    {
        Delay1ms();
    }
}

 void init()
{
    TMOD=0x01;                //计数器T0计数
    TH0=(65536-50000)/256;    //设置T0  50ms定时的初始值
    TL0=(65536-50000)%256;
    EA=1;                    //开放CPU中断
    ET0=1;                    //允许外部中断
    TR0=1;                    //定时器开始计时
    aa=0;
    m1=0;
}

void timer0() interrupt 1
{
    TH0=(65536-50000)/256; //每50MS产生一次中断,给寄存器装初值并累加aa
    TL0=(65536-50000)%256;
    aa++;
}

void time_add()
{
    /*m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
    lcd_data(0x30+0x30+0x3a+0x30+0x30+0x3a+0x30+0x30);*/
    if(aa==20)
    {
        aa=0;
        m1++;
        if(m1>9)
        {
            m1=0;
            m2++;
            if(m2>5)
            {
                m2=0;
                f1++;
                if(f1>9)
                {
                    f1=0;
                    f2++;
                    if(f2>5)
                    {
                        f2=0;
                        s1++;
                        if(s1>9)
                        {
                            s1=0;
                            s2++;
                            if(s2>5)
                            {
                                m1=0;
                                m2=0;
                                f1=0;
                                f2=0;
                                s1=0;
                                s2=0;
                            }
                        }
                    }
                }
            }
        }
    }
}

void main()
{
    gpio();
    lcd_init();      //初始化
    Delayxms(20);
    m1=0,m2=0,f1=0,f2=0,s1=0,s2=0;
    init();      //定时器
    while(1)
    {
        time_add();
        dis1[7]=m1+'0';
        dis1[6]=m2+'0';
        dis1[4]=f1+'0';
        dis1[3]=f2+'0';
        dis1[1]=s1+'0';
        dis1[0]=s2+'0';
        i=0;
        while(i<8)
        {
            lcd_start(4+i);
            lcd_data(dis1[i]);
            i++;
        }
    }
}

请问红色部分的代码是怎么回事?是加上'0'就能将数字转换成ASCII码了吗?
2016-06-28 19:01
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
dis1[7]=m1+'0';
dis1[6]=m2+'0';
dis1[4]=f1+'0';
dis1[3]=f2+'0';
dis1[1]=s1+'0';
dis1[0]=s2+'0';


这里
2016-06-28 19:02
ID不见了
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2016-5-10
收藏
得分:0 
回复 3楼 hu9jj
那如果我想其他的字符也能正常显示,我应该怎么做啊?
2016-06-29 09:59
快速回复:求助51单片机LCD1602数字显示的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.013909 second(s), 9 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved