找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2573|回復(fù): 1
收起左側(cè)

求改程序,加多一個(gè)英文字母A,用C語言

[復(fù)制鏈接]
ID:143939 發(fā)表于 2016-11-3 15:38 | 顯示全部樓層 |閱讀模式
#include "reg51.h"
#define uchar unsigned char
#define uint unsigend int
#define port P0
uchar table[]="0123456789";
uchar miaog=0,miaos=1,feng=1,fens=1,shig=1,shis=1;
sbit rs=P1^0;
sbit rw=P1^1;
sbit e=P2^5;
/***********************************
  ***00000  5*7  -> 0xff
  *****0** /5*8     0x40
  *****0**    0x40  ----> I
  *****0**    0x40  ---->
  *****0**    0x40
  *****0**    0x40
  ***00000    0x1f
  ??????????
***********************************/
code uchar ziku[]=
{
0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,0x00, //??“?”
0x0F,0x09,0x0F,0x09,0x0F,0x09,0x11,0x00, //??“?”
0x01,0x02,0x03,0x05,0x09,0x03,0x00,0x00, //??“?”???
0x00,0x00,0x1e,0x08,0x08,0x1e,0x08,0x08  //??“?”???
};
/*******************************
   ??lcd1602??   
*******************************/
uchar lcd_readcom()
{
  uchar temp;
  e=0;
  port=0xff;
  rs=0;
  rw=1;
  e=1;
  temp=port;
  e=0;
  return temp;
}
/***************************************
   ?? lcd ????         ??????
***************************************/
check_busy()
{
   uchar temp;
   do{
   temp=lcd_readcom();
     }while((temp&0x80)==0x80);
}
/*****************************************
      ?lcd????
*****************************************/
void lcd_writecom(uchar dat)
{
check_busy();
e=0;
port=dat;
rs=0;
rw=0;
e=1;
e=0;
}
/***************************************
   ??lcd??????
*****************************************/
uchar lcd_readdat()
{
  uchar temp;
  check_busy();
  e=0;
  port=0xff;
  rs=1;
  rw=1;
  e=1;
  temp=port;
  e=0;
  return temp;
}
/****************************************
       ?lcd????
****************************************/
void lcd_writedat(uchar dat)
{
check_busy();
e=0;
port=dat;
rs=1;
rw=0;
e=1;
e=0;
}
/****************************************
     ?lcd????
*****************************************/
void lcd_gets(char *dat)
{
while(*dat!=0)
{

lcd_writedat(*dat);
dat++;
}
}
/*****************************************
      ????????x y ??
******************************************/
void lcd_xy(uchar x,uchar y)
{
switch(y)
{
  case 0:lcd_writecom(0x80+x);break;//????X???
  case 1:lcd_writecom(0xc0+x);break;//0xc0==0x80+0x50 ????X???
  case 2:lcd_writecom(0x94+x);break;//
  case 3:lcd_writecom(0xd4+x);break;//4*20
}
}
/****************************************************
??????5*10  ??5*8 MODE=1 5*8  MODE=0 5*10
****************************************************/
add_custom_word(uchar *dat,uchar len,uchar mode)
{
  uchar n,m;
  for(n=0;n<len;n++)
    {
  if(mode)
  {
   lcd_writecom(0x40+8*n);
    for(m=0;m<8;m++)
       {
    lcd_writedat(*dat);
     dat++;
    }
   }
   else
    {
    lcd_writecom(0x40+10*n);
    for(m=0;m<10;m++)
       {
    lcd_writedat(*dat);
     dat++;
    }
   }
}
}
/********************************************
   ???lcd
********************************************/
void lcd_init()
{
lcd_writecom(0x01) ;//??
lcd_writecom(0x03) ;
lcd_writecom(0x3c) ;
lcd_writecom(0x40) ;
lcd_writecom(0x0c) ;
  add_custom_word(ziku,4,1); //????????
}
/********************************************
   1ms ??????????
********************************************/
void delay(uchar z)
{
  uchar x,y,a;
  for(x=z;x>0;x--)
    for(y=110;y>0;y--)
   for(a=1;a>0;a--) ;
}
/**********************************************
   ??? ????
***********************************************/
main()
{
lcd_init();

//lcd_xy(0,0);
//lcd_gets("  I LOVE YOU");
//lcd_xy(0,1);
//lcd_gets("Shang Hong Rui");
lcd_xy(2,0) ;
lcd_gets("2011");
lcd_xy(6,0) ;
lcd_writedat(2);
lcd_xy(7,0);
lcd_writedat(3);
lcd_xy(8,0) ;
lcd_gets("03");
lcd_xy(10,0);
lcd_writedat(1);
lcd_xy(11,0) ;
lcd_gets("06");
lcd_xy(13,0);
lcd_writedat(0);

lcd_xy(3,1) ;
lcd_gets("0");
lcd_xy(4,1) ;
lcd_gets("0");
lcd_xy(5,1) ;
lcd_gets(":");
lcd_xy(6,1) ;
lcd_gets("0");
lcd_xy(7,1) ;
lcd_gets("0");
lcd_xy(8,1) ;
lcd_gets(":");
lcd_xy(9,1) ;
lcd_gets("0");
lcd_xy(10,1) ;
lcd_gets("0");
while(1)
{

  //for(m=0;m<10;m++)
  lcd_xy(10,1);
  lcd_writedat(table[miaog]); //???
  delay(1000);
  miaog++;

  if(miaog==10)
  {
    miaog=0;
lcd_xy(9,1);
    lcd_writedat(table[miaos]);  //???
miaos++;
if(miaos==6)
{                     

   miaos=0;
   lcd_xy(7,1);
   lcd_writedat(table[feng]); //???
   feng++;
   if(feng==10)
    {
      feng=0;
   lcd_xy(6,1);
   lcd_writedat(table[fens]);  //???
   fens++;
   if(fens==6)
    {
     fens=0;
   lcd_xy(4,1);
   lcd_writedat(table[shig]);  //???
   shig++;
   if(shig==10)
    {
      shig=0;
      lcd_xy(3,1);
      lcd_writedat(table[shis]); //???
      shis++;
      if(shis==6)
       {
      shis=0;
    }

    }
    }
    }
}
  }
}

//lcd_xy(0,0);
//lcd_writedat(0);//???????,0?????? ,1??????,????
//lcd_xy(15,0);
//lcd_writedat(3); //???????  

}

回復(fù)

使用道具 舉報(bào)

ID:7485 發(fā)表于 2016-11-4 09:38 | 顯示全部樓層
往哪個(gè)地方加?

參照“l(fā)cd_xy(10,1) ;
       lcd_gets("0");”語句方式自己加。上面一句是地址(LCD上的位置),下面一行是字符,如lcd_gets("c");
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表