标题: 用单片机程序控制12864的字体显示,括号里数字都啥意思 [打印本页]

作者: zhouchun    时间: 2020-4-19 13:38
标题: 用单片机程序控制12864的字体显示,括号里数字都啥意思
void dis_shijian() //显示时间
{
write_shu16(0,0*8,shi,0);   //时,来自1302
write_shuzi(1,0*2,2*8,fuhao[1],0); //:
write_shu16(0,3*8,fen,0);   //分,来自1302
write_shuzi(1,0*2,5*8,fuhao[1],0); //:
write_shu16(0,6*8,miao,0);   //秒,来自1302
write_yhanzi(2,0,5*16,qita[6])


/******************显示时间函数***************************/
void dis_shijian_set() //显示时间
{
write_shu16(0*2,0*8,0x20,0);
write_shu16(1*2,2*8,shi,0);
write_shu16(1*2,6*8,fen,0);
write_shu16(1*2,10*8,miao,0);
write_shu16(0*2,2*8,nian,0);
write_shu16(0*2,6*8,yue,0);
write_shu16(0*2,10*8,ri,0);
write_yhanzi(1,4,5*16,xingqi[week]);   
}
/************初始化设置显示*****************/
void init_12864_set1()
{
   //年
write_yhanzi(1,0,4*16,qita[1]);   //月
write_yhanzi(1,0,6*16,qita[2]);   //日
write_yhanzi(1,2,2*16,qita[3]);   //时
write_yhanzi(1,2,4*16,qita[4]);   //分
write_yhanzi(1,2,6*16,qita[5]);   //秒
write_yhanzi(2,4,3*16,qita[6]);   //星期
dis_shijian_set(); //显示时间

作者: zhouchun    时间: 2020-4-19 13:51
看了一些资料,有些上边说第一个数是行,第二个是列,然后是数组(文字)。但这里的很多第一个数都是一样的,第二个也是一样的。让我觉得在同一位置,后边的4*6什么的意思就更不明朗了
作者: 我未曾来过    时间: 2020-4-19 17:22
你不把那个write函数拿出来给我们看看,鬼知道那些参数是干嘛的?
作者: game灬boy    时间: 2020-4-19 20:29
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有的同页
作者: lgjdqm    时间: 2020-4-19 20:34
zhouchun 发表于 2020-4-19 13:51
看了一些资料,有些上边说第一个数是行,第二个是列,然后是数组(文字)。但这里的很多第一个数都是一样的, ...

是字模数组
作者: zhouchun    时间: 2020-4-19 21:23
我未曾来过 发表于 2020-4-19 17:22
你不把那个write函数拿出来给我们看看,鬼知道那些参数是干嘛的?

uchar code shuzi[10][16]={
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,/*"0",0*/
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*"1",1*/
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*"2",2*/
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*"3",3*/
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*"4",4*/
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*"5",5*/
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,/*"6",6*/
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,/*"7",7*/
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,/*"8",8*/
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00};/*"9",9*/

/**********************************************************
*函数名: write_shu16
*功能:在12864上显示16进制数据
*说明:
*输入:无
*返回:无
**********************************************************/
void write_shu16(uchar x,uchar y,uchar dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/16],fanbai);
write_shuzi(1,x,y+8,shuzi[dat%16],fanbai);
}
void write_shu18b20(uchar x,uchar y,uint dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/100%10],fanbai);
write_shuzi(1,x,y+8,shuzi[dat/10%10],fanbai);
write_shuzi(1,x,y+24,shuzi[dat%10],fanbai);
}
void write_shu123(uchar x,uchar y,uchar dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/16],fanbai);
write_shuzi(1,x,y+8,shuzi[dat%16],fanbai);
}
作者: zhouchun    时间: 2020-4-19 22:36
/***********************写汉字函数**********************/
void write_yhanzi(uchar n,uchar x,uchar y,uchar  * p)
{
uchar i,j,nm,m;
m=0xb8+x;
for(j=0;j<n;j++)
{          
  if((16*j+y)<64)
  {
   cs1=1;cs2=0;nm=0x40+y+16*j;  
  }
  else
  {
   cs1=0;cs2=1;nm=0x40+y+16*(j-4);  
  }
  write_com(m);
  write_com(nm);
  for(i=0;i<16;i++)
  {
   write_data(*p);p++;
  }
  write_com(m+1);
  write_com(nm);
  for(i=16;i<32;i++)
  {
   write_data(*p);p++;
  }
}
}

void write_yhanzi_fanbai(uchar n,uchar x,uchar y,uchar  * p,uchar fanbai)
{
uchar i,j,nm,m;
m=0xb8+x;
for(j=0;j<n;j++)
{
  if((16*j+y)<64)
  {
   cs1=1;cs2=0;nm=0x40+y+16*j;  
  }
  else
  {
   cs1=0;cs2=1;nm=0x40+y+16*(j-4);  
  }
  write_com(m);
  write_com(nm);
  for(i=0;i<16;i++)
  {
   if(fanbai==0)
   write_data(*p);
   else        
   write_data(~(*p));
   p++;
  }
  write_com(m+1);
  write_com(nm);
  for(i=16;i<32;i++)
  {
   if(fanbai==0)
   write_data(*p);
   else        
   write_data(~(*p));
   p++;
  }
}
}

/***********************写数字函数**********************/
void write_shuzi(uchar n,uchar x,uchar y,uchar  * p,uchar fanbai)
{
uchar i,j,nm,m;
m=0xb8+x;
for(j=0;j<n;j++)
{   
  if((8*j+y)<64)
  {
   cs1=1;cs2=0;nm=0x40+y+8*j;  
  }
  else
  {
   cs1=0;cs2=1;nm=0x40+y+8*(j-8);  
  }
  write_com(m);
  write_com(nm);
  for(i=0;i<8;i++)
  {
   if(fanbai==0)
   write_data((*p));
   else
   write_data(~(*p));
   p++;
  }
  write_com(m+1);
  write_com(nm);
  for(i=8;i<16;i++)
  {
   if(fanbai==0)
   write_data((*p));
   else
   write_data(~(*p));
   p++;
  }
}
}

/**********************************************************
*函数名: write_shu16
*功能:在12864上显示16进制数据
*说明:
*输入:无
*返回:无
**********************************************************/
void write_shu16(uchar x,uchar y,uchar dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/16],fanbai);
write_shuzi(1,x,y+8,shuzi[dat%16],fanbai);
}
void write_shu18b20(uchar x,uchar y,uint dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/100%10],fanbai);
write_shuzi(1,x,y+8,shuzi[dat/10%10],fanbai);
write_shuzi(1,x,y+24,shuzi[dat%10],fanbai);
}
void write_shu123(uchar x,uchar y,uchar dat,uchar fanbai)
{
write_shuzi(1,x,y,shuzi[dat/16],fanbai);
write_shuzi(1,x,y+8,shuzi[dat%16],fanbai);
}
作者: zhouchun    时间: 2020-4-19 22:37
game灬boy 发表于 2020-4-19 20:29
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有 ...

嗯嗯,感谢。但是还是有点懵,等审核过了,麻烦帮忙看看这几个函数。
作者: zhouchun    时间: 2020-4-19 22:38
game灬boy 发表于 2020-4-19 20:29
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有 ...

嗯嗯,如果有时间,可以麻烦帮忙看一下新发的评论里边的这几个函数吗。
作者: f556    时间: 2020-4-20 15:02
write_yhanzi(uchar n,uchar x,uchar y,uchar  * p)参数(n写几个, x行坐标,y列坐标, *p数据指针)
write_shuzi(uchar n,uchar x,uchar y,uchar  * p,uchar fanbai)参数(n写几个, x行坐标,y列坐标, *p数据指针,是否翻白显示,一般1、0)
你所引用的程序相当不好,Function定义一般要说明参数意义、参数取值范围,Function功能。从用了拼音来说,原作者水平真不怎么样。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1