linux C语言实现把字符串转点阵图(非点阵字)

 我来答
折柳成萌
高粉答主

2018-06-26 · 繁杂信息太多,你要学会辨别
知道顶级答主
回答量:4.4万
采纳率:96%
帮助的人:6332万
展开全部
#include<reg51.h>//sbit A=P2^0;//sbit B=P2^1;//sbit C=P2^2;//sbit select=P2^3;sbit clk=P3^0; //595串行时钟端sbit da=P3^1; //595串行数据端sbit enable=P3^2;/************************************字库**********************************************/unsigned char code stable[]={/*-- 文字: 天 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x80,0x40,0x40,0x42,0x20,0x42,0x10,0x42,0x08,0x42,0x06,0x42,0x01,0xFE,0x02,0x42,0x04,0x42,0x08,0x42,0x10,0x42,0x30,0x42,0x60,0x42,0x20,0x40,0x00,0x00,/*-- 文字: 天 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x80,0x40,0x40,0x42,0x20,0x42,0x10,0x42,0x08,0x42,0x06,0x42,0x01,0xFE,0x02,0x42,0x04,0x42,0x08,0x42,0x10,0x42,0x30,0x42,0x60,0x42,0x20,0x40,0x00,0x00,/*-- 文字: 快 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x70,0x00,0x00,0xFF,0xFF,0x00,0x08,0x80,0xB0,0x40,0x88,0x30,0x88,0x0E,0x88,0x01,0xFF,0x06,0x88,0x08,0x88,0x30,0x88,0x60,0xF8,0xC0,0x80,0x40,0x80,0x00,0x00,/*-- 文字: 乐 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x20,0x00,0x18,0x40,0x0C,0xFC,0x07,0x44,0x12,0x44,0x20,0x44,0x40,0x46,0x3F,0xFA,0x00,0x42,0x00,0x43,0x02,0x43,0x0C,0x42,0x38,0x40,0x10,0x00,0x00,0x00,/*-- 文字: ! --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xF8,0xDF,0xFC,0xDF,0xFC,0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-- 文字: 欢 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x14,0x10,0x24,0x4C,0x44,0x43,0x84,0x43,0x64,0x2C,0x1C,0x20,0x20,0x10,0x18,0x0C,0x0F,0x03,0xE8,0x06,0x08,0x18,0x08,0x30,0x28,0x60,0x18,0x20,0x08,0x00,0x00,/*-- 文字: 迎 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x40,0x40,0x20,0x41,0x1F,0xCE,0x20,0x04,0x40,0x00,0x47,0xFC,0x42,0x04,0x41,0x02,0x40,0x02,0x5F,0xFC,0x40,0x04,0x42,0x04,0x44,0x04,0x43,0xFC,0x40,0x00,0x00,0x00,/*-- 文字: 来 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x20,0x00,0x20,0x80,0x10,0x84,0x10,0x84,0x08,0x94,0x04,0xA4,0x02,0xC4,0xFF,0xFF,0x01,0x84,0x02,0xC4,0x04,0xB4,0x08,0x94,0x18,0x84,0x30,0x84,0x10,0x80,0x00,0x00,/*-- 文字: 我 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x04,0x20,0x04,0x20,0x42,0x22,0x82,0x22,0x7F,0xFE,0x01,0x21,0x01,0x21,0x10,0x20,0x10,0x20,0x08,0xFF,0x07,0x20,0x1A,0x22,0x21,0xAC,0x40,0x20,0xF0,0x20,0x00,0x00,/*-- 文字: 的 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x7F,0xF8,0x10,0x8C,0x10,0x8B,0x10,0x88,0x3F,0xF8,0x00,0x40,0x00,0x30,0x00,0x8F,0x03,0x08,0x26,0x08,0x40,0x08,0x20,0x08,0x1F,0xF8,0x00,0x00,0x00,0x00,/*-- 文字: 空 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x10,0x40,0x0C,0x40,0x84,0x41,0x44,0x41,0x24,0x41,0x14,0x41,0x05,0x7F,0x06,0x41,0x04,0x41,0x14,0x41,0x24,0x41,0x44,0x40,0x84,0x40,0x14,0x00,0x0C,0x00,0x00,/*-- 文字: 间 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0xFF,0xF8,0x00,0x01,0x00,0x06,0x00,0x00,0x07,0xF0,0x04,0x92,0x04,0x92,0x04,0x92,0x04,0x92,0x07,0xF2,0x40,0x02,0x80,0x02,0x7F,0xFE,0x00,0x00,0x00,0x00,/*-- 文字: 天 --*//*-- 宋体12; 此字体下对应的点阵为:宽x高=16x16 --*/0x00,0x00,0x80,0x40,0x40,0x42,0x20,0x42,0x10,0x42,0x08,0x42,0x06,0x42,0x01,0xFE,0x02,0x42,0x04,0x42,0x08,0x42,0x10,0x42,0x30,0x42,0x60,0x42,0x20,0x40,0x00,0x00,};/*************************************************************************************** 行显示子程序 实质是给当前行中的所有列传送两字节的数据 ***************************************************************************************/void hang_disp(unsigned char temp1,unsigned char temp2){ unsigned char i; for(i=0;i<16;i++) { if(i==8)temp2=temp1; /***前8位即一字节传送完之后,传送该行的第二字节***/ if(temp2&0x01)da=1; /****数据从端口输出****/ else da=0; /****生成一上升沿,595上升沿接受数据****/ clk=0;clk=1;clk=0; temp2=temp2>>1; } enable=0;enable=1;enable=0; /****595并行输出使能****/}/*************************************************************************************** 清行子程序 如果没有清行程序,该行显示完转到下一行时595的输出还没有变,还是上一行的数据 ,因为程序中是先选定行,再向595传数据的,所以下一行开始时有一段时间是显示合一行的内容的,这段时间就是向595传两个字节数据的时间。/***************************************************************************************/void hang_clear(){ unsigned char i; for(i=0;i<16;i++) { da=0; /***595的输出连接的是点阵的阴极,所以让595输出高电平,可以使得该行的LED熄灭****/ clk=0;clk=1;clk=0; } enable=0;enable=1;enable=0;}/***************************************************************************************//***************************************************************************************/unsigned int count=0;unsigned char move=0;void disp(){ unsigned char i; unsigned int j; count++; for(i=0;i<16;i++) { P2=i; /*****选定行*****/ //hang_disp(stable[2*(i+move)],stable[2*(i+move)+1]); /***从字库中取数据****/ hang_disp(~stable[2*(i+move)],~stable[2*(i+move)+1]); /***从字库中取数据再取反,能实现反显****/ for(j=0;j<10;j++); /***显示和清零间加以延时,以便显示明显,可以自行调节,也可以去掉***/ hang_clear(); } if(count==10) /***调节移动的速度***/ { count=0; move++; if(move==192) /***调节移动的字数***n=move/16***/ { move=0; } } }/***************************************************************************************//***************************************************************************************/main(){ while(1) { disp(); }}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式