找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用单片机程序控制12864的字体显示,括号里数字都啥意思

[复制链接]
跳转到指定楼层
楼主
ID:732410 发表于 2020-4-19 13:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5黑币
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(); //显示时间

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

使用道具 举报

沙发
ID:732410 发表于 2020-4-19 13:51 | 只看该作者
看了一些资料,有些上边说第一个数是行,第二个是列,然后是数组(文字)。但这里的很多第一个数都是一样的,第二个也是一样的。让我觉得在同一位置,后边的4*6什么的意思就更不明朗了
回复

使用道具 举报

板凳
ID:729982 发表于 2020-4-19 17:22 | 只看该作者
你不把那个write函数拿出来给我们看看,鬼知道那些参数是干嘛的?
回复

使用道具 举报

地板
ID:367369 发表于 2020-4-19 20:29 | 只看该作者
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有的同页
回复

使用道具 举报

5#
ID:74868 发表于 2020-4-19 20:34 | 只看该作者
zhouchun 发表于 2020-4-19 13:51
看了一些资料,有些上边说第一个数是行,第二个是列,然后是数组(文字)。但这里的很多第一个数都是一样的, ...

是字模数组
回复

使用道具 举报

6#
ID:732410 发表于 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);
}
回复

使用道具 举报

7#
ID:732410 发表于 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);
}
回复

使用道具 举报

8#
ID:732410 发表于 2020-4-19 22:37 | 只看该作者
game灬boy 发表于 2020-4-19 20:29
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有 ...

嗯嗯,感谢。但是还是有点懵,等审核过了,麻烦帮忙看看这几个函数。
回复

使用道具 举报

9#
ID:732410 发表于 2020-4-19 22:38 | 只看该作者
game灬boy 发表于 2020-4-19 20:29
你得看write-shuzi()函数里面怎么定义这些参数的;数字有相同的部分但是不是完全相同有的同行有的同列有 ...

嗯嗯,如果有时间,可以麻烦帮忙看一下新发的评论里边的这几个函数吗。
回复

使用道具 举报

10#
ID:282850 发表于 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功能。从用了拼音来说,原作者水平真不怎么样。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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