找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我下载的程序显示在12864里面都是乱码是怎么回事

[复制链接]
跳转到指定楼层
楼主

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

#define p0 P0
uchar code table1[]={"μ±Ç°Î¶è:"};
uchar code table2[]={"ÂíàÕ¸ê±ú1¤×÷êò!"};
uchar code table3[]={"éãê϶è"};
uchar code table4[]={"Æ«¸ß"};
uchar code table5[]={"êêòË"};
uchar code table6[]={"Æ«μí"};

sbit ds = P1^4;
sbit rs=P2^5;
sbit rw=P2^6;
sbit en=P2^7;
void delay(uint k)  //Ñóê±oˉêy
{
        uint i,j;        
        for(i=0;i<k;i++)
        for(j=0;j<121;j++);
}

void wcode(uchar c)    //D′Ãüáî
{

        rs=0;
        rw=0;
        en=0;
        P0=c;
        delay(5);
        en=1;
        delay(5);
        en=0;
        delay(5);
}
void wdata(uchar date)  //D′êy¾Y
{

        rs=1;
        rw=0;
        en=0;
        P0=date;
        delay(5);
        en=1;
        delay(5);
        en=0;
        delay(5);
}
void init()      //128643õê¼»ˉ      
{
        wcode(0x30);
        delay(5);
        wcode(0x0c);
        delay(5);
        wcode(0x01);
        delay(5);

}
//=========================================1820===============
void dsInit()
{
     //¶Ôóú11.0592MHzê±Öó, unsigned intDíμÄi, ×÷ò»¸öi++2ù×÷μÄê±¼ä′óóúÎa8us
    unsigned int i;  
    ds = 0;
    i = 100;   //à-μíÔ¼800us, ·ûoÏD-òéòaÇóμÄ480usòÔéÏ
    while(i>0) i--;
    ds = 1;    //2úéúò»¸öéÏéyÑØ, ½øèëμè′yó|′e×′ì¬
    i = 4;
     while(i>0) i--;
}


void dsWait()
{
     unsigned int i;
     while(ds);  
      while(~ds);  //¼ì2aμ½ó|′eÂö3å
     i = 4;
     while(i > 0) i--;
}

bit readBit()
{
   unsigned int i;
    bit b;
    ds = 0;
    i++;   //Ñóê±Ô¼8us, ·ûoÏD-òéòaÇóÖáéù±£3Ö1us
    ds = 1;
    i++; i++;  //Ñóê±Ô¼16us, ·ûoÏD-òéòaÇóμÄÖáéùÑóê±15usòÔéÏ
    b = ds;
    i = 8;
    while(i>0) i--;  //Ñóê±Ô¼64us, ·ûo϶áê±Ï¶2»μíóú60usòaÇó
    return b;
}
unsigned char readByte()
{
    unsigned int i;
    unsigned char j, dat;
    dat = 0;
    for(i=0; i<8; i++)
    {
        j = readBit();
        //×îÏè¶á3öμÄêÇ×îμíλêy¾Y
        dat = (j << 7) | (dat >> 1);
   }
    return dat;
}

void writeByte(unsigned char dat)
{
    unsigned int i;
    unsigned char j;
    bit b;
    for(j = 0; j < 8; j++)
    {
        b = dat & 0x01;
       dat >>= 1;
        //D′"1", ½«DQà-μí15usoó, Ôú15us~60usÄú½«DQà-¸ß, ¼′íê3éD′1
        if(b)   
        {
            ds = 0;
            i++; i++;  //à-μíÔ¼16us, ·ûoÅòaÇó15~60usÄú
           ds = 1;   
           i = 8; while(i>0) i--;  //Ñóê±Ô¼64us, ·ûoÏD′ê±Ï¶2»μíóú60usòaÇó
        }
        else  //D′"0", ½«DQà-μí60us~120us
        {
           ds=0;
          i=8; while(i>0) i--;  //à-μíÔ¼64us, ·ûoÅòaÇó
            ds=1;
           i++;i++;  //Õû¸öD′0ê±Ï¶1y3ìòѾ-3¬1y60us, Õaàï¾í2»óÃÏñD′1ÄÇÑù, ÔùÑóê±64usáË
       }
    }
}

//ÏòDS18B20·¢Ëíζè×a»»Ãüáî
void sendChangeCmd()
{
    dsInit();   
    dsWait();   
    delay(1);   
    writeByte(0xcc); //D′èëìø1yDòáDoÅÃüáî×Ö Skip Rom
    writeByte(0x44); //D′èëζè×a»»Ãüáî×Ö Convert T
}

//ÏòDS18B20·¢Ëí¶áè¡êy¾YÃüáî
void sendReadCmd()
{
    dsInit();
    dsWait();
    delay(1);
    writeByte(0xcc); //D′èëìø1yDòáDoÅÃüáî×Ö Skip Rom
    writeByte(0xbe); //D′èë¶áè¡êy¾Yáî×Ö Read Scratchpad
}
//»ñè¡μ±Ç°Î¶èÖμ
int getTmpValue()
{
    unsigned int tmpvalue;
    int value; //′æ·ÅζèêyÖμ
    float t;
    unsigned char low, high;
    sendReadCmd();
    //á¬Dø¶áè¡á½¸ö×Ö½úêy¾Y
    low=readByte();
    high=readByte();
    //½«¸ßμíὸö×Ö½úoÏ3éò»¸öÕûDαäá¿
    //¼ÆËã»úÖD¶Ôóú¸oêyêÇàûóÃ21Âëà′±íê¾μÄ
    //èôêǸoÖμ, ¶áè¡3öà′μÄêyÖμêÇóÃ21Âë±íê¾μÄ, ¿éÖ±½ó¸3Öμ¸øintDíμÄvalue
    tmpvalue=high;
    tmpvalue<<=8;
    tmpvalue|=low;
    value=tmpvalue;  
    t=value*0.0625;
    value=t*100+(value>0?0.5:-0.5);
    return value;
}
void display(int v)
{
    unsigned char count;
    unsigned char datas[5];
    datas[0]=v/10000;
    datas[1]=v%10000/1000;
    datas[2]=v%1000/100;
    datas[3]=v%100/10;
    datas[4]=v%10;

    wcode(0x88+5);
    if(v<0)
    {
        wdata('-');
    }
    else
    {
        wdata(' ');
    }
    if(datas[0]!=0)
    {
     wdata('0'+datas[0]);
    }
    for(count=1; count<5;count++)
    {
        wdata('0'+datas[count]);
        if(count==2)
        {wdata('.');}                      
    }     
  }               

void temperaturealarm(int b)
{unsigned char i;
if(b>=3300){wcode(0x98+1);
             for(i=0;i<4;i++)
             {wdata(table4[i]);
             }
           }
else if(2200<=b&b<3300){wcode(0x98+1);
             for(i=0;i<4;i++)
             {wdata(table5[i]);
              }
             }

else if(b<2200){wcode(0x98+1);
               for(i=0;i<4;i++)
               {wdata(table6[i]);}   
            }
}

void main()
{      
unsigned char i=0;
init();
delay(200);
wcode(0x80+0x00);
for(i=0;i<16;i++)
{wdata(table2[i]);
}
  wcode(0x88);
for(i=0;i<10;i++)
{wdata(table1[i]);
}
wcode(0x98+0x05);
for(i=0;i<6;i++)
{wdata (table3[i]);}

while(1)
{
  display(getTmpValue());
  temperaturealarm(getTmpValue());
  sendChangeCmd();
}
}

IMG_20170429_222340_HDR.jpg (1.76 MB, 下载次数: 47)

IMG_20170429_222340_HDR.jpg

快12864温度.zip

22.45 KB, 下载次数: 5

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

使用道具 举报

沙发
ID:96682 发表于 2017-4-30 01:36 | 只看该作者
把下面双引号中改成中文或英文都可以,但不可太长
uchar code table1[]={"μ±Ç°Î¶è:"};
uchar code table2[]={"ÂíàÕ¸ê±ú1¤×÷êò!"};
uchar code table3[]={"éãê϶è"};
uchar code table4[]={"Æ«¸ß"};
uchar code table5[]={"êêòË"};
uchar code table6[]={"Æ«μí"};
回复

使用道具 举报

板凳
ID:111634 发表于 2017-4-30 07:39 | 只看该作者
本帖最后由 zl2168 于 2017-4-30 17:45 编辑

网上下载的程序大都有bug。
LCD12864显示屏显示汉字
AMPIRE 12864型LCD显示屏简介
⑴ 引脚功能    …
⑵ 显示屏数据结构    …
汉字编码
⑴ 汉字编码概述    …
⑵ 汉字点阵显示代码    …
⑶ 汉字点阵取模软件    …
电路和应用程序    …
⒋ Keil调试    …
⒌ Proteus仿真    …
Proteus仿真一下,确认有效。
实验25 LCD12864显示屏显示.rar (60.48 KB, 下载次数: 5)
以上摘自张志良编著《80C51单片机实用教程——基于Keil CProteus》高等教育出版社ISBN 978-7-04-044532-9


仿真电路和Hex文件能在高等教育出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。











回复

使用道具 举报

地板
ID:157057 发表于 2017-4-30 09:49 | 只看该作者
你贴的程序的都是乱码,还是转换一下吧。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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