找回密码
 立即注册

QQ登录

只需一步,快速开始

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

C语言程序及51指令集

[复制链接]
跳转到指定楼层
楼主
本帖最后由 happy112 于 2016-6-4 19:47 编辑






部分程序展示:
[code]#include "stdio.h"
#include "graphics.h"
#define  uchar unsigned char
FILE *fp;
uchar data[2][32];
unsigned int  total[2]={0,0};
char table[16]={'0','1','2','3','4','5','6','7','8','9',
        'A','B','C','D','E','F'};
void getzm(void)
{
  int i,j,k;
  uchar dot[16][2];
  for (i=0;i<16;i++)
  {
    {for (j=0;j<2;j++)
      dot[j]=fgetc(fp);  /* 读汉字字模 */
    }
  }
  for (j=0;j<2;j++)
  { k=0;
   for (i=0;i<16;i++)
   {
    if(dot[j]<16) {data[j][k]='0'; k++;
             data[j][k]=table[dot[j]];
             k++;}
      else  {data[j][k]=table[((dot[j]&0xf0)>>4)];
         k++;
         data[j][k]=table[(dot[j]&0x0f)];
         k++;}
    total[j]+=dot[j];
   }
      total[j]+=16;
  }
}
void intok(void)
{ int x,y,ad;
  char add[5];
  char cha;
   if((fp=fopen("zk2000.hex","a"))==NULL)
   { printf("cannot open file\n");
     exit(1);
   }
   printf("起始地址:");
    scanf("%x",&ad);
    for(x=0;x<2;x++)
  { y=0;
    add[0]=table[(ad&0xf000)>>12];
    add[1]=table[(ad&0x0f00)>>8];
    add[2]=table[(ad&0x00f0)>>4];
    add[3]=table[ad&0x000f];
    add[4]='\0';
    fputs(":10",fp);
    fputs(add,fp);printf("%s ",add);getch();
    fputs("00",fp);
    while(y<32) {cha=putc(data[x][y],fp);putchar(cha);y++;}
    total[x]+=ad;ad+=16;
    for(y=0;y<256;y++)
    {  if(((total[x]+y)%256)==0)
    {if(y<16) { putc('0',fp); putc(table[y],fp); }
     else {putc(table[y/16],fp); putc(table[y%16],fp);}
     break;
    }
    }
    putc(13,fp);putc(10,fp);printf("\n");
    total[x]=0;
  }
  fclose(fp);
}
void hanzzk(char *hz) /* 提取汉字字模 */
{
  long offset1;
  char *s=hz;
  if ((fp=fopen("d:\\ucdos\\hzk16","rb"))==0) {
    printf("Can not open the file\n");
    exit(1);
  }
  while(*s!='\0') {
    offset1=(long)((*s+95)*94+(*(s+1)+95))*32;
    /* 因汉字二内码127, 95=256-(160+1). */
    fseek(fp,offset1,SEEK_SET);
    getzm();
    s+=2;
  }
  fclose(fp);
  intok();
}
main()
{
  char hz[3];
  char zn='y';
  while(zn=='y')
   {printf("请输入汉字:");
    scanf("%s",hz);
    hanzzk(hz);
    printf("还有其它字吗?(y/n)");
    zn=getchar();
    zn=getchar();
   }
}

0.png (61.43 KB, 下载次数: 102)

0.png

单片机书.rar

3.38 MB, 下载次数: 59, 下载积分: 黑币 -5

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

使用道具 举报

沙发
ID:33634 发表于 2016-6-4 21:37 | 只看该作者
谢谢分享,下载看看
回复

使用道具 举报

板凳
ID:86090 发表于 2016-6-7 19:54 | 只看该作者
下了 ,谢谢 !!!
回复

使用道具 举报

地板
ID:126041 发表于 2016-6-10 01:19 | 只看该作者
这些资料都不错
回复

使用道具 举报

5#
ID:1066763 发表于 2023-9-15 16:07 | 只看该作者
下了,细细读一下,学习中。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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