急需任意点阵字模提取软件,谢谢
/***************************************************** 16*128 LED点阵屏 C 程序 ****************************************************** 声明: 本程序供大家学习之用,用勿用于商业用途。
尊重版权。
编写:邓椿薪 时间:2006年1月20日 晚 邮箱:love2151@xinhuanet.com ******************************************************* //595连级输出数据,138行驱动。
P0_1为移动速度高速/*点阵显示汉字程串口输出字符数据, //P2口输出行扫描信号,P2_7输出595锁存信号。
*/ #define uchar unsigned char #define uint unsigned int #include #include uchar yid,h,d=12; //YID为移动计数器,H为行段计数器。
uint zimuo,zimuo1; //字模计数器 uchar BUFF[18]; //缓存 void in_data(void); //调整数据 void rxd_data(void); //发送数据 void in_data1(char h); void rxd_data1(void); void sbuf_out1(void); void sendsw(uchar k); //发送段代码 void sbuf_out(void); //16段扫描 void key(void); sbit AN1=P3^4; sbit AN2=P3^5; sbit clk=P3^3; unsigned code sw[16]={0x7f,0x6f,0x5f,0x4f,0x3f,0x2f,0x1f,0x0f,0xf7, 0xf6,0xf5,0xf4,0xf3,0xf2,0xf1,0xf0}; /*16行段码*/ /********************************************/ void main(void) { uchar i; zimuo1=sizeof(hanzi)-6*32;//(zishu+9)*32; yid=0; zimuo=0; while(1) { while(yid { for(i=0;izimuo1) //总数减7个字。
zimuo=0; } } void sbuf_out1() { char i; for(h=0;h{ in_data1(h); clk=1; rxd_data1(); if(h>=16) else i=h; sendsw(sw[i]); } } /******************************************************/ void in_data1(char h) { char s,i; if(h>=16) {i=(h-16); for(s=5;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后先字计数器 { // if(zimuo%32) BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*i]; //把第一个字模的第一个字节放入BUFF1中,第二个字模和第一个字节放入BUFF3中 BUFF[2*s]=hanzi[zimuo+0+32*s+2*i]; // 把第一个字模的第二个字节放入BUFF0中,第二个字模的第二个字节放入BUFF1中 } } else { i=h; for(s=5;s>=0;s--) //h为向后先择字节计数器,zimuoo为向后先字计数器 { // if(zimuo%32) BUFF[2*s+1]=hanzi[zimuo+1+32*s+2*i]; //把第一个字模的第一个字节放入BUFF1中,第二个字模和第一个字节放入BUFF3中 BUFF[2*s]=hanzi[zimuo+0+32*s+2*i]; // 把第一个字模的第二个字节放入BUFF0中,第二个字模的第二个字节放入BUFF1中 } } } /*******************************************************/ void rxd_data1(void) //串行发送数据 { char s; for(s=0;s { SBUF=255-BUFF[s];//把BUFF中的字节从大到小移位相或后发送输出。
while(!TI);TI=0; //等待发送中断 } } void sendsw(uchar k) { TI=0; SBUF=k; while(!TI);TI=0; clk=0; } void key(void) { uchar a,b; if(AN1==0) { for(a=0;a } if(AN1==0) {while(AN1==0) {} if(AN1) {d++; if(d>100) d=100; } } } if(AN2==0) {for(a=0;a } if(AN2==0) {while(AN2==0) {} if(AN2) {d--; if(d==0) d=1; } } } } 不是我写的,但我想会对你有用。
点阵取模软件生成的数组是什么
摘要:由于普通LED点阵显示屏动态显示常用的硬件扫描驱动,它是不是具有足够的灵活性,在某些场合,需要特殊的显示。
一个PC机与单片机通信,以实现灵活的显示屏动态显示和远程监控的设计方法,该方法可以在电脑上预览显示的内容。
关键词:LED动态显示,远程控制; 1引言LED点阵显示预览电子显示屏是一种微型电子技术,计算机技术,信息处理技术于一体的大型显示系统。
它以其色彩鲜艳,宽广的动态范围,亮度高,寿命长,工作稳定可靠等成为理想的选择众多显示媒体,以及户外工作。
还可以广泛应用于许多行业,军事,车站,宾馆,体育,新闻,金融,证券,广告和运输。
大多数的LED点阵显示系统自带字库。
显示和动态效果(主要是显示滚动)的实现主要依靠硬件扫描驱动,这种方法虽然更方便,但只有在按照预先设计的。
其实经常会遇到的特殊要求,如电梯操作说明向上和向下箭头栏显示一些的厂家在广告显示的的智能电表幅度商标的动态显示。
然后,在一般的显示系统,它是难以满足要求。
此外,由于存储器的限制,特殊字符或图案往往难以显示,而显示的内容不能被改变。
本文提出了一种PC机与单片机控制的LED显示系统通信。
该方法可显示的内容(包括中文字符和特殊图标),实时控制,以实现诸如闪动,滚动,打字的各种动态显示。
该方法还可以调整速度的动态显示,用户还可以显示在PC上的效果的预览,显示内容可的。
显示系统的远程控制,也可通过标准的RS232/485转换模块来实现。
2系统硬件设计系统的硬件设计是下位机显示控制微控制器的一部分。
主机电脑(PC)和MCU控制部分的接口是一个标准的RS232通信。
对于远程监控,只需增加RS232/485转换模块,可以与已经成熟的那部分的电路设计,它不再详细介绍了。
在图1中所示的特定的LED显示控制电路。
数据存储器的整个电路的单片机89C52,点阵6264,列驱动电路ULN2803线驱动电路TIP122,移位寄存器4094及附属电路。
电子屏的电路设计中,可以显示10个字符,40个8*8 LED点阵模块可以由16*160的矩形点阵。
AT89C52只有8k的存储空间,和显示的内容是由PC控制,这是不可能的预先制作的晶格存在微控制器要显示的内容,但仅由PC中所需的显示点阵数据的实时传递到微控制器并存储在缓冲器6264中。
电路使用的逐行扫描模式的显示。
删除20个字节点阵数据需要显示工作由MCU P1.2口,然后从缓冲器由列点阵数据输入比特后跟串行移位寄存器的输入到列的第一行,其相反的顺序的数据输入和显示的内容的顺序。
然后设置行点阵选通端P1.3 1,D-线的移位寄存器被设置为启用高,STR(4094 OE引脚连接到+5 V电平),从而使列移位寄存器中的数据并行输出到选通线。
下一行之前点阵显示的数据的延迟时间之后。
需要注意的是,每次只选通的字符或多个字符的显示行中的数据,是通过连续的逐行扫描来实现。
图3显示了设计的控制,我设计了一个PC控制多单片机显示系统,个人电脑的主要功能,包括对显示子系统的微控制器的选择,显示方式选择(包括静态,闪动,滚动,打字等。
)滚动方向(向上滚动和向下和左和右滚动),动态显示速度调节(即,闪烁的文本的频率,滚动速度,打字显示速度,等),要显示的内容的输入和显示预览。
微控制器通常是由一台PC机发出通过RS232/485串行接收机显示屏是指使用定时器中断信号线的扫描,每个中断的显示行,定时器中断时间为1.25ms,从而使整个画面刷新速率为50Hz,和因此,没有闪烁感。
动态显示速度调节,通常是改变定时器的中断,而当显示的方法是很慢的时候,很容易降低整个画面的刷新率,使屏幕闪烁。
因此,这种设计使用了作为“软定时器变量在程序中被命名为”软的定时方法,被用来设置两个动态的显示时间间隔。
定时器中断的呼叫计数达到设定值时,的呼叫的数量来改变显示内容。
为了确保正常的显示,软定时器设定必须大于整个屏幕的显示周期。
2.8 MS,整个屏幕的显示周期为20ms,考虑到余量的情况,软计时器的设定值被设定在大于30ms,每行的显示。
如此循环计数,就可以实现动态显示。
软定时器的设定是可以改变的,这可以通过上位机PC,LED动态显示速度调节显示的内容,也能保持流畅且无闪烁的感觉。
3.1单芯片动态显示静态控制上面提到的,闪动,滚动,打字显示,事实上,是单片机的定时器中断程序行扫描处理方法。
下面将分别说明如何实现这4种显示方式。
静态显示简单的定时器中断处理程序转移到相应的一行显示数据,然后选择线到线的显示,可以实现从显示缓冲区,等等,你可以显示的全部内容。
闪烁显示器类似,是一种软的定时器的定时间隔,行扫描线D端子的移位寄存器中的全部为0,使得整个屏幕不显示,为了确保黑色相等的时间和显示时间,以便实现中文字符或图标闪烁显示。
滚动显示要求需要在定期的时间间隔指定的方向的显示内容(由右至左的一招,例如),使得显示可以显示更多的内容。
出于这个原因,它是必要的下一个移动显示之前的缓冲区来改变显示的内容,从而完成相应的点阵数据的移位操作。
具体的操作方法是:设置一个显...
将图片上的文字转化成word文档的软件是什么,如何下载
1、这种软件都是属于ocr文字识别软件,有国产也有国外软件公司出品的,比如abbyy finereader,汉王等等什么是OCR:Optical Character Recognition,光学字符识别。
是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光学的方式将纸质文档中的文字转换成为黑白点阵的图像文件,并通过识别软件将图像中的文字转换成文本格式,供文字处理软件进一步编辑加工的技术。
如何除错或利用辅助信息提高识别正确率,是OCR最重要的课题,ICR(Intelligent Character Recognition)的名词也因此而产生。
衡量一个OCR系统性能好坏的主要指标有:拒识率、误识率、识别速度、用户界面的友好性,产品的稳定性,易用性及可行性等。
2、至于如何下载一般而言,这类软件都不是免费的。
当然破解版的另当别论。
另外,如果你购买扫描仪的话,有些ocr软件是附带赠送的
跪求16X16LED点阵汉字显示的原理图,s51单片机汇编源程序,汉...
展开全部 硬件资源: 1、一片AT89S51单片机2、由4个8*8点阵LED模块组成一个16X16点阵LED3、4个按键开关(功能预留)4、一个REST手动复位按键 注意:本电路板耗电较大,正常工作时LM7805稳压器比较烫手,有条件的客户可以加装散热器或者直接用5V/1A开关电源供电(跳过7805稳压器) 工作原理分析: 从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。
16*16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,1 6*16的点阵需要256/8=32个锁存器。
这个数字很庞大,因为我们仅仅是16*16的点阵,在实际应用中的显示屏往往要大得多,这样在锁存器上花的成本将是一个很庞大的数字。
因此在实际应用中的显示屏都不采用这种设计,而采用另一种称为动态扫描的显示方法。
动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如16行)的同名列共用一套列驱动器。
具体就1 6*16的点阵来说,把所有同l行的发光管的阳极连在一起,把所有同一列的发光管的阴极连在一起(共阳的接法),先送出对应第1行发光管亮灭的数据并锁存,然后选通第l行使其燃亮一定的时间,然后熄灭;再送出第2行的数据并镇存,然后选通第2行使其燃亮相同的时间,然后熄灭;-…?第16行之后,又重新燃亮第1行,腹轮回。
当这样轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形了。
采用扫描方式进行显示时,每行有一个行驱动器,各行的同名列共用一个列驱动器。
显示数据通常存储在单片机的存储器中,按8位一个字节的形式顺序排放。
显示时要把一行中各列的数据都传送到相应的列驱动器上去,这就存在一个显示数据传输的问题。
从控制电路到列驱动器的数据传输可以采用并行方式或串行方式。
显然,采用并行方式时,从控制电路到列驱动器的线路数量大,相应的硬件数目多。
当列数很多时,并行传输的方案是不可取的。
采用串行传输的方法,控制电路可以只用一根信号线,将列数据一位一位传往列驱动器,在硬件方面无疑是十分经济的。
但是,串行传输过程较长,数据按顺序一位一位地输出给列驱动器,只有当一行的各列数据都已传输到位之后,这一行的各列才能并行地进行显示。
这样,对于一行的显示过程就可以分解成列数据准备(传输)和列数据显示两个部分。
对于串行传输方式来说,列数据准备时间可能相当长.在行扫描周期确定的情况下,留给行显示的时间就太少了,以致影响到LED的亮度。
解决串行传输中列数据准备和列数据显示的时间矛盾问题,可以采用重叠处理的方法。
即在显示本行各列数据的同时,传送下一行的列数据。
为了达到重叠处理的目的,列数据的显示就需要具有锁存功能。
经过上述分析,可以归纳出列驱动器电路应具备的主要功能。
对于列数据准备来说,它应能实现串人并出的移位功能;对于列数据显示来说,应具有并行锁存的功能。
这样,本行已准备好的数据打入并行锁存器进行显示时,串并移位寄存器就可以准备下一行的列数据,而不会影响本行的显示。
硬件电路大致上可以分成单片机系统及外围电路、列驱动电路和行驱动电路三部分单片机系统及外围电路: 单片机采用89C51或其兼容系列的芯片,采用24MHz或更高频率的晶振,以获得较高的刷新频率,使显示更稳定。
单片机的串口与列驱动器相连,用来送显示数据。
P1口低4位与行驱动器相连,送出行选信号;P1.5~P1.7口则用来发送控制信号。
PO和P2口空着,在有必要时可以扩展系统的ROM和RAM。
列驱动电路: 列驱动电路由集成电路74HC595构成。
它具有一个8位串人并出的移位寄存器和一个8位输出锁存器的结构,而且移位寄存器和输出锁存器的控制是各自独立的,可以实现在显示本行各列数据的同时,传送下一行的列数据,即达到重叠处理的目的。
它的输入侧有8个串行移位寄存器,每个移位寄存器的输出都连接一个输出锁存器。
引脚SI是串行数据的输入端。
引脚SCK是移位寄存器的移位时钟脉冲,在其上升沿发生移位,并将SI的下一个数据打人最低位。
移位后的各位信号出现在各移位寄存器的输出端,也就是输出锁存器的输入端。
RCK是输出锁存器的打人信号,其上升沿将移位寄存器的输出打人到输出锁存器。
引脚G是输出三态门的开放信号,只有当其为低时锁存器的输出才开放,否则为高阻态。
SCLR信号是移位寄存器的靖0输入端,当其为低时移位寄存器的输出全部为o。
由于SCK和RCK两个信号是互相独立的,所以能够做到输人串行移位与输出锁存互不干扰。
芯片的输出端为QA~QH.最高位QH可作为多片74HC595级联应用时,向上一级的级联输出。
但因QH受输出锁存器打人控制,所以还从输出锁存器前引出了QH',作为与移位寄存器完全同步的级联输出。
行驱动电路: 单片机P1口低4位输出的行号经4/16线译码器4515译码后生成1 6条行选通信号线,再经过...
轮廓字形与点阵字形的区别是什么?
扫描文字,结果以图片格式(.bmp)存入电脑。
然后使用ORC识别系统进行转换,最终用WORD进行修改编辑。
下面教你如何使用ORC: OCR是英文Optical Character Recognition的缩写,翻译成中文就是通过光学技术对文字进行识别的意思, 是自动识别技术研究和应用领域中的一个重要方面。
它是一种能够将文字自动识别录入到电脑中的软件技术,是与扫描仪配套的主要软件,属于非键盘输入范畴,需要图像输入设备主要是扫描仪相配合。
现在OCR主要是指文字识别软件,在1996年清华紫光开始搭配中文识别软件之前,市场上的扫描仪和OCR软件一直是分开销售的,专业的OCR软件谠缧┦焙蚵舻帽壬?枰腔挂?蟆K孀派?枰欠直媛实奶嵘?琌CR软件也在不断升级,扫描仪厂商现在已把专业的OCR软件搭配自己生产的扫描仪出售。
OCR技术的迅速发展与扫描仪的广泛使用是密不可分的,近两年随着扫描仪逐渐普及和OCR技术的日臻完善,OCR己成为绝大多数扫描仪用户的得力助手。
一、OCR技术的发展历程 自20世纪60年代初期出现第一代OCR产品开始,经过30多年的不断发展改进,包括手写体的各种OCR技术的研究取得了令人瞩目的成果,人们对OCR产品的功能要求也从原来的单纯注重识别率,发展到对整个OCR系统的识别速度、用户界面的友好性、操作的简便性、产品的稳定性、适应性、可靠性和易升级性、售前售后服务质量等各方面提出更高的要求。
IBM公司最早开发了OCR产品,1965年在纽约世界博览会上展出了IBM公司的OCR产品——IBMl287。
当时的这款产品只能识别印刷体的数字、英文字母及部分符号,并且必须是指定的字体。
20世纪60年代末,日立公司和富士通公司也分别研制出各自的OCR产品。
全世界第一个实现手写体邮政编码识别的信函自动分拣系统是由日本东芝公司研制的,两年后NEC公司也推出了同样的系统。
到了1974年,信函的自动分拣率达到92%左右,并且广泛地应用在邮政系统中,发挥着较好的作用。
1983年日本东芝公司发布了其识别印刷体日文汉字的OCR系统OCRV595,其识别速度为每秒70~100个汉字,识别率为99.5%。
其后东芝公司又开始了手写体日文汉字识别的研究工作。
中国在OCR技术方面的研究工作相对起步较晚,在20世纪70年代才开始对数字、英文字母及符号的识别技术进行研究,20世纪70年代末开始进行汉字识别的研究。
1986年,国家863计划信息领域课题组织了清华大学、北京信息工程学院、沈阳自动化所三家单位联合进行中文OCR软件的开发工作。
至1989年,清华大学率先推出了国内第一套中文OCR软件--清华文通TH-OCR1.0版,至此中文OCR正式从实验室走向了市场。
清华OCR印刷体汉字识别软件其后又推出了TH-OCR 92高性能实用简/繁体、多字体、多功能印刷汉字识别系统,使印刷体汉字识别技术又取得重大进展。
到1994年推出的TH-OCR 94高性能汉英混排印刷文本识别系统,则被专家鉴定为“是国内外首次推出的汉英混排印刷文本识别系统,总体上居国际领先水平”。
上个世纪90年代中后期,清华大学电子工程系提出并进行了汉字识别综合研究,使汉字识别技术在印刷体文本、联机手写汉字识别、脱机手写汉字识别和脱机手写数字符号识别等领域全面地取得了重要成果。
具有代表性的成果是TH-OCR 97综合集成汉字识别系统,它可以完成多文种(汉、英、日)印刷文本、联机手写汉字、脱机手写汉字和手写数字的识别输入。
几年来,除清华文通TH-OCR外,其它如尚书SH-OCR等各具风格的OCR软件也相继问世,中文OCR市场稳步扩大,用户遍布世界各地。
可以说目前印刷体OCR的识别技术已经达到较高水平。
OCR产品已由早期的只能识别指定的印刷体数字、英文字母和部分符号,发展成为可以自动进行版面分析、表格识别,实现混合文字、多字体、多字号、横竖混排识别的强大的计算机信息快速录入工具。
对印刷体汉字的识别率达到98%以上,即使对印刷质量较差的文字其识别率也达到95%以上。
可识别宋体、黑体、楷体、仿宋体等多种字体的简、繁体,并且可以对多种字体、不同字号混合排版进行识别,对手写体汉字的识别率达到70%以上。
特别是我国的汉字OCR技术经过十几年的努力,克服了起步晚、汉字字符集异常庞大等困难,单字的识别速度(指在单位时间内所完成的从特征提取到识别结果输出的字数)可以达到70字/秒以上。
由于印刷体OCR汉字识别技术已经比较成熟,所以OCR产品被广泛地应用在新闻、印刷、出版、图书馆、办公自动化等各个行业。
专业型OCR产品多是面向特定的行业,即适用于每天需处理大量表格信息录入的部门,如邮政、税务、海关、统计等等。
这种面向特定行业的专业型OCR系统,格式较为固定,识别的字符集相对较小,经常与专用的输入设备结合使用,因此具有速度快、效率高等特点,比如邮件自动分拣系统等。
手写文稿的识别直到1996、1997年才开始有产品问世,而且是作为印刷文稿识别产品的一项附加功能提供的。
由于人写字的习惯千差万别,实现自由手写体识别相当困难,所以手写体OCR技术的使用领域是联机手写体识...
在一块8x8的LED点阵上循环显示0~9十个数字字符,时间间隔为1s。
#include sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit ENLED = P1^4;unsigned char code image[11][8] = {{0xC3, 0x81, 0x99, 0x99, 0x99, 0x99, 0x81, 0xC3}, //数字0{0xEF, 0xE7, 0xE3, 0xE7, 0xE7, 0xE7, 0xE7, 0xC3}, //数字1{0xC3, 0x81, 0x9D, 0x87, 0xC3, 0xF9, 0xC1, 0x81}, //数字2{0xC3, 0x81, 0x9D, 0xC7, 0xC7, 0x9D, 0x81, 0xC3}, //数字3{0xCF, 0xC7, 0xC3, 0xC9, 0xC9, 0x81, 0xCF, 0xCF}, //数字4{0x81, 0xC1, 0xF9, 0xC3, 0x87, 0x9D, 0x81, 0xC3}, //数字5{0xC3, 0x81, 0xF9, 0xC1, 0x81, 0x99, 0x81, 0xC3}, //数字6{0x81, 0x81, 0x9F, 0xCF, 0xCF, 0xE7, 0xE7, 0xE7}, //数字7{0xC3, 0x81, 0x99, 0xC3, 0xC3, 0x99, 0x81, 0xC3}, //数字8{0xC3, 0x81, 0x99, 0x81, 0x83, 0x9F, 0x83, 0xC1}, //数字9{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //全亮};void main(){EA = 1; //使能总中断ENLED = 0; //使能U4,选择LED点阵ADDR3 = 0;TMOD = 0x01; //设置T0为模式1TH0 = 0xFC; //为T0赋初值0xFC67,定时1msTL0 = 0x67;ET0 = 1; //使能T0中断TR0 = 1; //启动T0while (1);}/* 定时器0中断服务函数 */void InterruptTimer0() interrupt 1{static unsigned char i = 0; //动态扫描的索引static unsigned int tmr = 0; //1s软件定时器static unsigned char index = 9; //图片刷新索引TH0 = 0xFC; //重新加载初值TL0 = 0x67;//以下代码完成LED点阵动态扫描刷新P0 = 0xFF; //显示消隐switch (i){case 0: ADDR2=0; ADDR1=0; ADDR0=0; i++; P0=image[index][0]; break;case 1: ADDR2=0; ADDR1=0; ADDR0=1; i++; P0=image[index][1]; break;case 2: ADDR2=0; ADDR1=1; ADDR0=0; i++; P0=image[index][2]; break;case 3: ADDR2=0; ADDR1=1; ADDR0=1; i++; P0=image[index][3]; break;case 4: ADDR2=1; ADDR1=0; ADDR0=0; i++; P0=image[index][4]; break;case 5: ADDR2=1; ADDR1=0; ADDR0=1; i++; P0=image[index][5]; break;case 6: ADDR2=1; ADDR1=1; ADDR0=0; i++; P0=image[index][6]; break;case 7: ADDR2=1; ADDR1=1; ADDR0=1; i=0; P0=image[index][7]; break;default: break;}//以下代码完成每秒改变一帧图像tmr++;if (tmr >= 1000) //达到1000ms时改变一次图片索引{tmr = 0;if (index == 0) //图片索引10~0循环index = 10;elseindex--;}}