1,数字电路里组合电路里面的译码器通常使能端的功能范围有什么

使能端有效,那该译码器才能工作啊

数字电路里组合电路里面的译码器通常使能端的功能范围有什么

2,12864显示图像为什么很慢

我估计你用的方法是,先用循环向lcd控制器写显示数据,然后再开图像显示的。你所说的慢,跟液晶一点关系没有。主要原因就是单片机向lcd控制器写数据速度比较慢,用了很长时间。http://bbs.elecfans.com/jishu_290983_1_1.html

12864显示图像为什么很慢

3,合作比竞争更能使文明进步 三辨问题 跪求 一针见血的 那种

合作即为合并所有的智慧的和谐共生局面,而竞争这是你死我活的互斥局面。

合作比竞争更能使文明进步 三辨问题 跪求 一针见血的 那种

4,谁用proteus仿真过12864啊 求解释啊

我仿真过。proteus里AMPIRE 128x64器件。它是最基本的12864了,基本控制指令就行。比实物要简单。网络上有个“大海橡树”的,他写了比较详细的关于它的教程。你可以找找。//************************************************************#define P0Data P0 //宏定义所接的数据端口,方便移植sbit RS=P2^0 ; //程序数据存储器选择:=0是程序存储器,=1是数据存储器sbit RW=P2^1 ; //读写控制选择:=0是写,=1是读sbit E=P2^2 ; //使能,初端口初始化外,在写指令数据前都要检测busy标志。sbit CS1=P2^3; //选中显示的芯片sbit CS2=P2^4; //64x64一块,总共左右两片#define AddressX 0xb8 //定义第0行#define AddressY 0x40 //定义第0列//************************************************************static void Delay1ms(uchar x); static void LcdWriteComOrData(uchar x,uchar content);//写指令或写数据static void LcdReadComBusy(void); //读指令,读数据没有用到,所以只是读指令中的忙标志static void ShowPicture(uchar (*p)[64]); //显示图片static void ShowChar(uchar p[][8][8]); //显示全屏字符static void ShowCharPage(uchar page,uchar p[2][8][8]); //输出单行的一串字符 static void ShowChinaChar(uchar x,uchar page,uchar range,uchar p[2][16]); //输出一个汉字static void ShowChinaSinger(uchar p[2][16]);static void ShowChina32(uchar p[4][8][2][16]); //满屏全32个汉字//************************************************************void _L12864Init(void) //用proteus仿真只用基本的7条指令/* 这段不需要,因为仿真用基本7条指令,而实际模块初始化要根据厂商提供的初始化规范做uchar i;for(i=0;i<5;i++) P0Data=0x30; //入口是8位接口,12864只能是8位的,不像L1602有四位的选择;RE=0(右起第2位),选择基本指令集,扩充指令不用。 RS=0; RW=0; E=1; //设置开始,至少450ns,执行指令时间差不多够了。 E=0; //设置结束 Delay1ms(3);//要求延时,这个延时比一般指令延时要长. 这里延时之前不要设置,防止中断打断设置 }*/LcdWriteComOrData(0,0x3f); //显示开 LcdWriteComOrData(0,0xc0); //定义起始行,这个指上下的64行从哪行开始,一般是0,有规律改变它,可以实现滚屏ShowPicture(TabPicture0) ;ShowChar(TabChar);ShowCharPage(6,TabCharPageX);ShowChinaChar(2,4,4,TabPicture0);ShowChinaSinger(TabPicture0);ShowChina32(TabChina32);}//************************************************************//满屏输出4行*8个共32个汉字static void ShowChina32(uchar p[4][8][2][16]) //这里把入口指针直接写明需要32个汉字uchar i,j,k;for(k=0;k<4;k++) //总共四行汉字 CS1=0;CS2=1; //选中左半屏 for(i=0;i<4;i++) LcdWriteComOrData(0,AddressX|(k<<1));LcdWriteComOrData(0,AddressY|(i<<4));for(j=0;j<16;j++) LcdWriteComOrData(1, p[k][i][0][j] );LcdWriteComOrData(0,AddressX|(k<<1)+1);LcdWriteComOrData(0,AddressY|(i<<4));for(j=0;j<16;j++) LcdWriteComOrData(1, p[k][i][1][j] ); } CS1=1;CS2=0;//选中右半屏 for(i=5;i<9;i++) LcdWriteComOrData(0,AddressX|(k<<1));LcdWriteComOrData(0,AddressY|((i-4)<<4));for(j=0;j<16;j++) LcdWriteComOrData(1, p[k][i][0][j] );LcdWriteComOrData(0,AddressX|(k<<1)+1);LcdWriteComOrData(0,AddressY|((i-4)<<4));for(j=0;j<16;j++) LcdWriteComOrData(1, p[k][i][1][j] ); } }}//************************************************************//在左上角显示一个汉字static void ShowChinaSinger(uchar p[2][16])uchar j;CS1=0;CS2=1;LcdWriteComOrData(0,AddressX) ; //页决定,这里决定这个汉字是在那一页显示,这里移1位的意思是,让方块汉字开始显示在偶数页上。LcdWriteComOrData(0,AddressY);for(j=0;j<16;j++) //输出每个汉字组成的上16个字节,下面一半显示下一页LcdWriteComOrData(1, p[0][j] ); LcdWriteComOrData(0,AddressX|1) ; //页决定,这里决定这个汉字是在那一页显示,这里移1位的意思是,让方块汉字开始显示在偶数页上。LcdWriteComOrData(0,AddressY);for(j=0;j<16;j++) //输出每个汉字组成的上16个字节,下面一半显示下一页LcdWriteComOrData(1, p[1][j] ); }//************************************************************//在任意屏页列输出单个汉字。static void ShowChinaChar(uchar x,uchar page,uchar range,uchar (*p)[16]) //输出一个汉字uchar j;x--,page--;range--; //把屏选、行、列习惯转为计算方式switch(x) //x决定输出的汉字在左半屏还是右半屏,0表示左半屏,1表示右半屏 case 0: CS1=0;CS2=1; break; case 1: CS1=1;CS2=0; break; default: ;}LcdWriteComOrData(0,AddressX|(page<<1) ); //页决定,这里决定这个汉字是在那一页显示,这里移1位的意思是,让方块汉字开始显示在偶数页上。LcdWriteComOrData(0,AddressY|(range<<4) ); //列决定,这里决定这个汉字开始在那一列显示。每16列一个位置,所以左移动4位。 for(j=0;j<16;j++) //输出每个汉字组成的上16个字节,下面一半显示下一页LcdWriteComOrData(1, p[0][j] ); LcdWriteComOrData(0,AddressX|(page<<1)+1);LcdWriteComOrData(0,AddressY|(range<<4) ); for(j=0;j<16;j++) //输出每个汉字组成的上16个字节,下面一半显示下一页LcdWriteComOrData(1, p[1][j] ); //注意这里如果写成指针形式*(p+1)[j]不等于p[1][j],通过*和[]的互换,得到*(*(p+1)+j)才是p[1][j]。 }//************************************************************//输出某一页(左半屏+右半屏)字符,字符来自于一个三维数值static void ShowCharPage(uchar page,uchar p[2][8][8]) //以三维数组的形式输出所有的字符uchar i,j; page--; //把习惯改为计算方式 CS1=0;CS2=1; LcdWriteComOrData(0,AddressX|page); LcdWriteComOrData(0,AddressY); //列数值清零 for(i=0;i<8;i++) for(j=0;j<8;j++) //输出每个字符组成的8个字节,横向的右半屏在下一组,所以这里k每次乘2 LcdWriteComOrData(1, p[0][i][j] ); CS1=1;CS2=0; //输出右半屏8个字符 LcdWriteComOrData(0,AddressX|page); //这行指令不能省,X地址寄存器在片选后是另一个HD61202的x寄存器 LcdWriteComOrData(0,AddressY); for(i=0;i<8;i++) for(j=0;j<8;j++) LcdWriteComOrData(1, p[1][i][j] ); //这里重点说明下,取模工具取数是纵向到底的 }//************************************************************//逐页横向显示字符,修改后也试用于更大屏幕static void ShowChar(uchar p[][8][8]) //以三维数组的形式输出所有的字符uchar i,j,k; //显示128x64屏幕就是有16块这样的8个一组的字符串,for(k=0;k<8;k++) //而192x64的屏幕有24个这样的8个一组的字符串 CS1=0;CS2=1; //输出左半屏8个字符 LcdWriteComOrData(0,AddressX|k); //行的改写不能太远,因为下次读写数据才修改页地址. LcdWriteComOrData(0,AddressY); //列数值清零 for(i=0;i<8;i++) for(j=0;j<8;j++) //输出每个字符组成的8个字节,横向的右半屏在下一组,所以这里k每次乘2 LcdWriteComOrData(1, p[k<<1][i][j] ); CS1=1;CS2=0; //输出右半屏8个字符 LcdWriteComOrData(0,AddressX|k); LcdWriteComOrData(0,AddressY); for(i=0;i<8;i++) for(j=0;j<8;j++) LcdWriteComOrData(1, p[(k<<1)+1][i][j] ); //这里重点说明下,取模工具取数是纵向到底的 } //因此这里上一块8个字符完了,就是右半屏的一块字符,因此这里三维k值加1}//************************************************************//左右半屏方式,显示图像static void ShowPicture(uchar (*p)[64])//显示一张图片,因为图片是没有字符那样的局部空间,一个整体uchar i,j; CS1=0;CS2=1; //显示左半屏 for(i=0;i<8;i++) LcdWriteComOrData(0,AddressX|i); //确定要显示的页 LcdWriteComOrData(0,AddressY); //确定要显示的初始列,不能丢,很重要 for(j=0;j<64;j++) LcdWriteComOrData(1, p[i<<1][j] ); //把i*2变成i<<1,乘法变成移位 } CS1=1;CS2=0; //换右半屏显示 for(i=0;i<8;i++) LcdWriteComOrData(0,AddressX|i); //page还从第0行开始LcdWriteComOrData(0,AddressY);for(j=0;j<64;j++) LcdWriteComOrData(1, p[(i<<1)+1][j]); }; }//***********************************************************static void LcdWriteComOrData(uchar x,uchar content)LcdReadComBusy(); //检测忙标志P0Data=content;E=0; //按照HD44780/KS0066控制器的脉冲时序走 if(x==0)else E=1; Delay1ms(1); //写程寄存器需要一段延时,执行也有延时。因为控制字写入之后,查书发现,执行至少需要40us,如果在E=1和0之间没有延时,程序不执行E=0; //这行和上一行Delay1ms(1)交换后,发现检测不到了,原因就是以上的延时问题。}//************************************************************static void LcdReadComBusy(void) //这种程序结构来自于网友大海橡树的程序P0Data=0; //准备读忙标志,用的是P0口,所以可以直接放低就可以了,如果用其他口,Px不能直接写0,必须先写1才能读入外部信息RS=0; //选择程序寄存器RW=1; //读E=1; //使能打开while( P0Data & 0x80 ) ; //如果是忙P0data与0x80就不等于0,所以while语句总是执行。E=0; //使能关闭}//***********************************************************//功能:12MHz下延时1ms标准程序,延时时间为 1ms*x,//输入:x ;最大为255,即最大范围255msstatic void Delay1ms(uchar x)uchar i,j; for(i=0;i<x;i++)for(j=0;j<=161;j++);}//***********************************************************上面是我写的驱动,你可以直接用。很久以前写的,现在再看了我自己写得太繁杂了,太啰嗦了。没必要,你可以在看懂的基础优化一下。采用的模块化编程,因此您建一个*.h文件再使用它比较好。

5,某厂生产的螺丝钉不合格率为001问一盒中应该装多少只才能使其中

103只,利用概率统计中的大数定律解答
103
500

6,如何详细的去使用12864液晶模块

文章开头备注:这一篇文章仅仅是对12864操作的一个具体介绍,仅限给刚刚接触12864的新手,大神请拍砖,文章写的比较散,建议新手先参考12864手册以及控制驱动器ST7920英文手册,在有个初步理解之后再次阅读该篇文章,将会有更加深层的认识。强烈建议仔细的阅读ST7920英文手册!细节内容里面有详细的介绍,中文的12864也大多是从中译过来的。本文是分为三个步骤来介绍12864的内部资源原理,指令集详细讲解,以及应用的例子。对于12864的所有操作概括起来就有4种:1)、读忙状态(同时会读出指针地址的内容),在初始化之后每次对12864的读写均要进行忙检测。2)、写命令:所有的命令可以去查看指令表,后续会讲解指令的详细用法。写地址也就是写指令。3)、写数据:操作的对象有DDRAM、CGRAM、GDRAM。4)、读数据:操作的对象也是DDRAM、CGRAM、GDRAM。对于12864的学习首先要去了解其内部资源,知道了它里面到底有哪些东西,你就可以更加方便的去使用它了。先简单介绍几个英文的名字:DDRAM:(Data Display Ram),数据显示RAM,往这里面写啥,屏幕它就会显示啥。CGROM:(Character Generation ROM),字符发生ROM。里面是存储了中文汉字的字模,也称之为中文字库,编码方式有GB2312(中文简体)和BIG5(中文繁体)。笔者所使用的是育松电子的QC12864B,讲解以此为例。CGRAM:(Character Generation RAM),字符发生RAM,12864内部是提供了64×2B的CGRAM,可以用于用户自定义4个16×16字符,每一个字符占用了32个字节。GDRAM:(Graphic Display RAM):图形显示RAM,这一块区域是用于绘图的,同理——往里面写啥,屏幕也就会显示啥,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的显示先是在CGROM中找到字模,然后再映射到屏幕上的,而往GDRAM中写数据时,图形的点阵信息每个点都用1bit来保存其显示与否。HCGROM:(Half height Character Generation ROM):半宽字符发生器,是字母与数字,也就是ASCII码。至于ICON RAM(IRAM):貌似现在市场上的12864没有该项功能,笔者也没有去找到它的应用资料,所以在这里不作介绍了。转载于12864液晶模块:http://www.hzjingxian.com/下面我们就围绕这上面列举的这列资源来展开对12864的讲解:DDRAM:笔者所使用的这块12864内部是有4行×32字节的DDRAM空间。但是在某一时刻,屏幕只能够显示2行×32字节的空间,那么剩余的这些空间呢?它们是可以用于缓存的,在实现卷屏显示时这些空间就能够派上用场了。DDRAM结构如下所示:80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH地址与屏幕显示的对应关系如下:第一行:80H、81H、82H、83H、84H、85H、86H、87H第二行:90H、91H、92H、93H、94H、95H、96H、97H 第三行:88H、89H、8AH、8BH、8CH、8DH、8EH、8FH第四行:98H、99H、9AH、9BH、9CH、9DH、9EH、9FH说明:红色部分的数据是归上半屏所显示,绿色部分的数据是归下半屏所显示。一般我们在用于显示字符使用的是上面两行的空间,也就是80H~8FH,90H~9FH,每一个地址的空间是2个字节,也就是1个字,所以它可以用于存储字符编码的空间总共就是128字节。因为每一个汉字的编码是2个字节,所以每一个地址就需要使用2个字节来存储一个汉字。当然如果将这2个字节拆开来使用也是可以的,那就是显示出2个半宽字符了。DDRAM内部所存储的数据都是字符的编码,可以写入的编码有ASCII码、GB2312码、BIG5码。笔者所使用的12864字库貌似不太全,字符的“数”都无法显示,而是显示出其他字符。如果显示长篇汉字文章就优点不太适合了。DDRAM数据的读写:所有的数据读写都应该是先送地址,然后再进行读写。对DDRAM写数据时,确保在基本的指令集下(使用指令0x30开启),然后写入地址,之后再连续的写入两个字节的数据。在读数据时,在基本指令集下先写地址,然后再假读一次,之后再连续读出2个字节的数据,读完之后地址指针自动加一,跳到下一个字,若需要读下一个字的内容,只需再执行连续读2个字节的数据。这里的假读需要注意,不光是读CGRAM需要假读,读其他的GDRAM、DDRAM都需要先假读一次,之后的读才是真读,假读就是读一次数据,但是不会存储该数据,也就是说送地址之后第一次读的数据时错误的,之后的数据才是正确的。(dummy为假读)关于编码在DDRAM中的存储需要说明的事项如下:1)、每次对于DDRAM的操作单位都是一个字,也就是2个字节,当往DDRAM写入数据时,首先要写地址,然后连续送入2个字节的数据,先送高字节的数据,再送低字节的数据。读数据时也是如此,先写地址,然后再读出高字节数据,再读出低字节的数据(读数据时请注意要先假读一次)。2)、显示ASCII码半宽字符时,往每个地址送入2个字节的ASCII编码,对应屏幕上的位置就会显示出2个半宽字符,左边的为高字节字符,右边的则为低字节字符。3)、显示汉字时,汉字编码的2个字节必须要存储在同一地址空间之中,不能够分开放在2个地址存放,否则显示的就不会是你想要的字符。每一个字中的2个字节自动结合查找字模并且显示字符。所以,如果我们往一个地址中写入的是一个汉字的2字节编码就会正确显示该字符,编码高字节存放在前一地址低字节,编码低字节存放在后一地址高字节,显然他们就不会结合查找字模,而是与各地址相应字节结合查找字模。4)、因为控制器ST7920提供了4个自定义字符,所以这4个自定义字符也是可以完全显示出来的,同样这4个自定义字符也是采用了编码的方式,但是这4个字符的编码是固定的,分别是0000H,0002H,0004H,0006H。如下图所示:上图只是把2个字符的CGRAM空间画出来,后续还会有2个字符。可以看到每一个字符都有16行16列,每一行使用了2个字节,因此一个字符所占用的空间是32字节,地址是6位的,4个字符的地址分别是:00H~0FH、10H~1FH、20H~2FH、30H~3FH。编码使用的是2个字节,可以看到有2个位是任意的,说明其实这4个字符的编码可以有多个,只是我们常用前面列举的4个编码。CGRAM: (数据读写)CGRAM的结构就是上面所示的了,这里再次补充一些读写CGRAM的内容,读写之前要先写地址,写CGRAM的指令为0x40+地址。但是我们在写地址时只需要写第一行的地址,例如第一个字符就是0x40+00H,然后连续写入2个字节的数据,之后地址指针就会自动加一,跳到下一行的地址,然后再写入2个字节的数据。其实编程实现就是写入地址,然后连续写入32个字节的数据。读数据也是先写首地址,然后假读一次,接着连续读32个字节的数据。GDRAM:(绘图显示RAM)绘图RAM的空间结构如下图所示:这些都是点阵,绘图RAM就是给这些点阵置1或者置0,可以看到其实它本来是32行×256列的,但是它分成了上下两屏显示,每一个点都对应了屏幕上的一个点。要使用绘图功能需要开启扩展指令。然后写地址,再读写出数据。GDRAM的读写:首先要说明对GDRAM的操作基本单位是一个字,也就是2个字节,就是说读写GDRAM时一次最少要写2个字节,一次最少读2个字节。写数据:先开启扩展的指令集(0x36),然后再送地址,这里的地址与DDRAM中的略有些不同,DDRAM中的地址就只有一个,那就是字的地址。而GDRAM中的地址就只有2个,分别是字地址(列地址/水平地址X)以及位地址(行地址/垂直地址Y),上图之中的垂直地址就是00H~31H,水平地址就是00H~15H,在写地址时要先写垂直的地址(行地址)再写水平地址(列地址),也就是说要连续写入两个地址之后,然后再连续写入2个字节的数据。如图中所示,左边的为高字节右边的为低字节。为1的点被描黑,为0的点则是显示出空白。这里就列举一个写地址的例子:写GDRAM地址指令的是0x80+地址。被加上的地址就是上面所列举的X和Y,假设我们要写第一行的2个字节,那么写入地址就是0x00H(写行地址)然后写0x80H(列地址),之后才连续的写入2个字节的数据(先高字节后低字节)。再如写屏幕右下角的2个字节,先写行地址0x9F(0x80+32),再写列地址0x8F(0x80+15),然后连续写入2个字节的数据。编程中写地址函数中直接用参数(0x+32),而就不必自己相加。读数据:首先开启扩展指令集,然后再写行地址、写列地址,假读一次,再连续读2字节的数据(先高字节后低字节)。读写时序:读写时序图如下:(上图为写,下图为读)时序图之中的信号引脚就是12864最主要的引脚,分别是:RS:命令/数据寄存器选择端WR:读写的控制端E:使能端DB7~DB0:数据端所有对于12864的操作基本都是围绕着几根引脚所展开的。包括写命令、写数据、读数据、读状态就是通过这一些引脚的高低电平搭配来实现的。根据时序图可以编写出相应的写命令函数、写数据函数、读数据函数、读状态函数。需要的注意的是有效数据出现的那段时间Tc必须合适,不能太短,否则就会造成读写失败。给出几个函数示例://忙检测,若忙则等待,最长等待时间为60msvoid busychk_12864(void)unsigned int timeout = 0;E_12864 = 0;RS_12864 = 0;RW_12864 = 1;E_12864 = 1;while((IO_12864 & 0x80) && ++timeout != 0); //忙状态检测,等待超时时间为60msE_12864 = 0;}//写命令子程序void wrtcom_12864(unsigned char com)busychk_12864();E_12864 = 0;RS_12864 = 0;RW_12864 = 0;IO_12864 = com;E_12864 = 1;delay_12864(50); //50us使能延时!!!注意这里,如果是较快的CPU应该延时久一些E_12864 = 0; }//读数据子程序unsigned char reddat_12864(void)unsigned char temp;busychk_12864();E_12864 = 0;IO_12864 = 0xff; //IO口置高电平,读引脚RS_12864 = 1;RW_12864 = 1;E_12864 = 1;delay_12864(50); //使能延时!!!注意这里,如果是较快的CPU应该延时久一些temp = IO_12864;return temp; }//写数据子程序void wrtdat_12864(unsigned char dat)busychk_12864();E_12864 = 0;RS_12864 = 1;RW_12864 = 0;E_12864 = 1;IO_12864 = dat;delay_12864(50); //使能延时!!!注意这里,如果是较快的CPU应该延时久一些E_12864 = 0; }其中,忙检测是必要的,当BF=1时,表示内部正在进行相关的操作,即:处于忙状态。在BF变回0之前ST7920不会接受任何指令。MCU必须要检测BF以确定ST7920内部操作是否已完成,然后才能够再发送指令。也可以使用延时来替代忙检测,但是需要延时足够的时间。盲检测实际就是读内部的状态寄存器,该寄存器最高位(D7)为忙标志BF,剩余的7位为地址指针的内容,所以在进行盲检测实际上也把地址指针中的地址读出来了。指令集:指令集是分为基本指令集以及扩展指令集,使用相应的指令集必须要先写相应指令表明后续指令均为该类指令。如使用基本指令集时,写指令(0x30),需要使用扩展指令集时写指令(0x34)切换到扩展指令集。一)基本的指令集(RE=0):(在使用扩展指令集时先写指令0x30,这使得RE=0)清屏指令(0x01):往DDRAM写满0x20,指针的地址写0x00。表现在屏幕上的就是显示空白。回车指令(0x02/0x03):地址指针内容写上0x00.进入模式:0 0 0 0 0 1 I/D S:设置读写数据之后光标、显示移位的方向。内部有2个可编程位,I/D表示读写一个字符后数据指针是加一还是减一。I/D=1指针加一,I/D=0指针减一。S=1开启整屏移动。S I/D= H H,屏幕每次左移一个字符。S I/D= H L ,屏幕每次右移一个字符。但是平时若不开启屏幕移动,这里说明一个概念,那就是屏幕移动,实际试验中若开启了屏幕移动你会发生显示是非常怪异的,说明如下:由于DDRAM的结构是下方表所示:上半屏 下半屏80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH在没有开启屏移时,屏幕是以表格第一来列作为参考起点的,然后前8列归为上半屏显示,后8列归为下半屏显示。如果此时向左屏移动一个字符,那么DDRAM内容与显示映射关系应变为:80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH可以看出实际上原来第三第四行开始的字符跑到了第一行第二行的末尾,一整个DDRAM的结构就是一种循环的结构,发生屏移时DDRAM与显示映射关系不断的在改变。但是这不太符合我们的阅读习惯,所以如果需要使用到该项功能还需编程校正之。显示、光标、闪烁开关:0 0 0 0 0 0 1 D C B:D=1: 显示开(Display) C=1: 光标开(Cursor) B=1: 光标位置闪烁开(Blink)。为0则就为关。光标显示移位控制:0 0 0 1 S/C R/L X X说明:LL:这时仅仅是将地址指针AC的值减1。在屏幕上表现出来的是光标左移一个字符。LH:这时仅仅是将地址指针AC的值加1。在屏幕上表现出来的是光标右移一个字符。HL:AC的指针不变,向左屏移动一个字符。这是DDRAM结构循环左移,80H接在8FH后面,90H接在9FH的后面。这与上面讲的屏移是一样的。HH:AC指针不变,向右屏移动一个字符。这是DDRAM结构循环右移,80H接在8FH后面,90H接在9FH后面。功能设置:0 0 1 DL X RE X X:(切换基本的指令集与扩展指令集)DL=1表示8为接口,DL=0表示4为接口。RE=1表示开启扩展指令,RE=0表示使用基本指令。开启基本指令则设置为0x30,开启扩展指令则设置为0x34。CGRAM地址设置:0x40+地址。地址范围是00H~3FH。前提是SR=0,即允许设置IRAM和CGRAM地址!!!DDRAM地址设置:只会有字地址。如下表所示。(注意DDRAM地址有4行×16字)如下所示:80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH所以在某一个时刻只能够显示出其中的2行。只有卷动显示才能够将另两行的数据显示出来。读忙标志(地址):同时忙标志和地址读出来。忙状态时,ST7920不会接受任何指令。按照时序图将RS置0,RW置1,然后读取状态寄存器。写RAM(DDRAM/CGRAM/GDRAM):写了控制逻辑(函数wrtcom_12864(地址);)之后,直接送数据(wrtdat_12864)。写完后地址指针根据进入模式中的设置加一或减一。写数据前先写地址,而写地址本身是一个写地址命令,然后再写数据。读RAM(DDRAM/CGRAM/GDRAM):记得先假读一次,后面的才是真读,假读之后不需要再假读了,除非重设了地址。二)扩展指令集(RE=1):(使用扩展指令集先写指令0x34,这使得RE=1)待机模式:0x01,不影响DDRAM,所以跟清屏指令不同,任何指令可以结束待机模式。卷动地址/IRAM地址允许设置:0 0 0 0 0 0 1 SR:SR=1:允许设置垂直卷动地址。SR=0:允许设置IRAM和CGRAM地址。设置卷动/IRAM地址:0x40+地址。(卷动地址为行地址,即纵向地址).这里讲解卷动,卷动就是上下滚屏,实现屏幕的垂直滚动。卷动地址:地址范围为0x00~0x63,共64行卷动地址其实就是垂直地址。每一个地址代表着DDRAM中的一行的像素点。卷动一次就是把该行所有点移到上半屏和下半屏幕最上方。80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FHA0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFHB0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH还是DDRAM的结构图,需要注意的是卷屏是分上半屏卷动和下半屏卷动,两屏之间没有关系,也就是DDRAM中左边红色部分在上半屏滚动,右边绿色部分在下半屏滚动。B0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H 的下一行是80H、81H、82H、83H、84H、85H、86H、87H也就是说左边是一个上下相接的循环结构。同理右边也是上下相接的循环结构。左边内存中的字符上下滚动。右边内存中的字符上下滚动,两者木有关系。要开启卷动,首先开启扩展指令集,然后允许卷动地址设置,再设置卷动地址。wrtcom_12864(0x34); //打开扩展指令wrtcom_12864(0x03); //允许输入卷动地址wrtcom_12864(0x40 + 地址 //设置卷动地址wrtcom_12864(0x30); //回到基本指令要实现全屏滚动,就必须使用循环不断地修改卷动地址。从00~63如此循环,但遗憾的是这也不符合我们的阅读习惯,后续的应用的中将讲解全屏滚动的实现方法。这里只是把卷动原理讲清楚。反白显示:0 0 0 0 0 1 R1 R0:R1、R0初始化的值为00。选择1~4任一行反白显示并可决定是否反白。如何开启反白显示:首先开启扩展指令(0x34),然后设置选中某一行设置反白显示(0x04+R1R0)。00为第一行,01为第二行,10为第三行,11为第四行。需要说明的是,这里的行是指DDRAM所有内存的行,而不是显示的行,屏幕只显示2行。所以如果我们开启第3第4行的反白显示,不卷动我们是看不到效果的。同时,如果我们开启第1行反白显示,那么在屏幕中第1行第3行都会反白显示,第2行则对应屏幕第2第4行,这一点需要注意。如何关闭反白显示:只需在此写一次地址即可关闭,也就说,第一次写第一开启反白,第二次写相同的地址关闭反白显示。wrtcom_12864(0x34); //反白显示试验wrtcom_12864(0x04); //开启反白显示delay_12864(60000); //延时delay_12864(60000); //延时wrtcom_12864(0x04); //关闭反白显示wrtcom_12864(0x30); //开启基本指令集扩展功能设置:0x36设置绘图显示开。当GDRAM写完了之后,写0x36则屏幕显示你所绘制的图形。0 0 0 0 1 DL x RE G x (RE=1扩展指令,G=1开绘图显示,DL=1表示8为接口)设置GDRAM地址:绘图时,需要将GDRAM的地址写入地址指针中,然后才能写入数据。连续写入两个字节,第一个为行地址(Y),第二个为列地址(X)。需要注意的是:写了数据之后,地址指针会自动加一(以字为单位),当到达该行的行尾时,指针下一次加一会使得地址指针跳回该行行首,也就说如果地址值为8FH时,下一次它就是80H(以第一行为例)。指针地址在本行之间循环。指令介绍完再讲下初始化过程,根据ST7920的手册提供的初始化步骤就可以了。初始化函数如下://延时子程序void delay_12864(unsigned int del)unsigned int i;for(i = 0; i < del; i++)}//初始化12864子函数void initial_12864(void)delay_12864(40000);RST_12864 = 1;RST_12864 = 0; //复位delay_12864(500);RST_12864 = 1;wrtcom_12864(0x30); //设置为基本指令集动作delay_12864(100);wrtcom_12864(0x30); //设置为基本指令集动作delay_12864(37);wrtcom_12864(0x08); //设置显示、光标、闪烁全关。delay_12864(100);wrtcom_12864(0x01); //清屏,并且DDRAM数据指针清零delay_12864(100000);wrtcom_12864(0x06); //进入模式设置}

7,口735要使商是两位数口最大能填几要使商是三口最小填几

口73?5要使商是两位数,口最大能填4要使商是三位数,口最小填5
第一问4第二问5再看看别人怎么说的。

8,口406要使商的末尾有0口里可以填多少有多少填多少

第1题,囗填的数能被2整除就行,填:2、4、6、8或0,都可以;第2题,囗填的数能使5+2+囗被3整除就行,填:2、5或8;第3题,囗填:0或5;第4题,囗填:3
祝你成功
6
如图:
如图

9,用232中继器最多能延长多少米可行吗

请看 武汉鸿伟光电E232Y RS-232无源隔离远程收发器特点? 高达95%串口窃电技术,无需外供电源? 电流环传输,支持TX、RX、GND三线制串口? 信号隔离,透明传输,波特率自适应,无需改动用户协议? 内置600W/ms抗雷击保护和15KV静电防护? 避免回路电压、浪涌、感应雷击、静电、热插拔损伤设备?  通信距离最远3km
简单介绍: 突破以太网100米限制,将距离延伸器至700米,两个串连可达1000米以上 关键特性: 1、采用 lre ( long- reacher ethernet )专用集成电路进行设计 2、无需协议转换,无需软件支持,在线插拔,即插即用 3、支持级联,成倍延长传输距离 详细介绍: 上海百智科技生产的网络延长器采用网络技术新成果——以太网长线驱动技术研制而成,仅用一个就可以使10m/100m以太网(包括adsl,hfc,fttb+lan接入等)以10m全双工速率传输达700米,使用简单,稳定可靠,一进四出,即插即用,可方便地实现交换机、集线器、路由器、网卡长距互联,也可作集线器用。如用两个爱藤网络延长器串联使用可使传输距离轻松达到1000米以上, 助您低成本迅速布置和管理分散型以太网或互联网。 网络延长器基本原理是通过信号整形,增加敏感度来实现距离延长的,其电压,波形完全符合以太网国际标准,不会对网络带来危害,请放心在五类或超五类非屏蔽网线上使用。 名词解释:网络延长器、网络信号放大器、网络中继器、网络延伸器、网线延长器、网线延伸器、爱藤网络延长器、网线信号放大器,网线信号延长器,以太网络信号放大器,gne-350-5r、om4205、爱藤extender gne-350-5r、ethernet extender、ethernet booster等属同一性能产品。

10,某厂生产的螺丝钉的不合格率为001问一盒中应装多少个才能使其中

如下图:这个问题问的缺妥,有1%的次品率,那无论装多少只都无法100%保证有100只合格品,只能说有100只合格品的占99.9%以上的这种说法。104只当中出现4个不合格品以下的概率有0.996,所以放104只可以是使100只合格品的概率达99.6%扩展资料定理:设A、B是互不相容事件(AB=φ),则:P(A∪B)=P(A)+P(B)-P(AB)推论1:设A1、 A2、…、 An互不相容,则:P(A1+A2+...+ An)= P(A1) +P(A2) +…+ P(An)推论2:设A1、 A2、…、 An构成完备事件组,则:P(A1+A2+...+An)=1 为事件A的对立事件。推论4:若B包含A,则P(B-A)= P(B)-P(A)推论5(广义加法公式):对任意两个事件A与B,有P(A∪B)=P(A)+P(B)-P(A∩B)
如下图:这个问题问的缺妥,有1%的次品率,那无论装多少只都无法100%保证有100只合格品,只能说有100只合格品的占99.9%以上的这种说法。104只当中出现4个不合格品以下的概率有0.996,所以放104只可以是使100只合格品的概率达99.6%扩展资料生物现象中有许多变量是服从或近似服从正态分布的,如家畜的体长、体重、产奶量、产毛量、血红蛋白含量、血糖含量等。许多统计分析方法都是以正态分布为基础的。此外,还有不少随机变量的概率分布在一定条件下以正态分布为其极限分布。因此在统计学中,正态分布无论在理论研究上还是实际应用中,均占有重要的地位。关于正态分布的概率计算,我们先从标准正态分布着手。这是因为,一方面标准正态分布在正态分布中形式最简单,而且任意正态分布都可化为标准正态分布来计算;另一方面,人们已经根据标准正态分布的分布函数编制成正态分布表以供直接查用。
这个问题问的缺妥,有1%的次品率,那无论装多少只都无法100%保证有100只合格品,只能说有100只合格品的占99.9%以上的这种说法.104只当中出现4个不合格品以下的概率有0.996,所以放104只可以是使100只合格品的概率达99.6%
每盒放多十个就可以降低不合格率

文章TAG:12864使能应延迟多少12864  使能  延迟  
下一篇
展开更多