文档库 最新最全的文档下载
当前位置:文档库 › 字符串

字符串

字符串
字符串

第3题(10.0分)题号:412

功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

#include

main()

{

int length(char *p);

int len;

char str[20];

printf("please input a string:\n");

scanf("%s",str);

/***********SPACE***********/

len=length(【?】);

printf("the string has %d characters.",len);

}

/***********SPACE***********/

【?】(p)

char *p;

{

int n;

n=0;

while(*p!='\0')

{

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

}

return n;

}

答案:

1). str

2). length 或 int length

3). n++ 或 ++n 或 n=n+1 或 n+=1

4). p++ 或 ++p 或 p=p+1 或 p+=1

第5题(10.0分)题号:18

功能:将一个数组中的元素按逆序存放。

#define N 7

main ()

{

static int a[N]={12,9,16,5,7,2,1},k,s;

printf("\n the origanal array:\n");

for (k=0;k

printf("%4d",a[k]);

/***********SPACE***********/

for (k=0;k

{

s=a[k];

/***********SPACE***********/

【?】 ;

/***********SPACE***********/

【?】 ;

}

printf("\n the changed array:\n");

for (k=0;k

/***********SPACE***********/

【?】 ("%4d",a[k]);

}

答案:

1). k++ 或 k= k + 1 或 k+=1 或 ++k

2). a[k]=a[N-k-1] 或 a[k]=a[N-1-k] 或 a[k]=a[6-k] 或 *(a+k)=*(a+N-k-1) 或

*(a+k)=*(a+N-1-k] 或 a[k]=a[-1+N-k] 或 a[k]=a[-1-k+N] 或 a[k]=a[-k-1+N] 或 a[k]=a[-k+N-1] 或*(a+k)=*(a+N-k-1) 或 a[6-k]=s

3). a[N-k-1]=s 或 a[N-1-k]=s 或 a[6-k]=s 或 a[N -k -1]=s 或 *(a +N -k -1)=s

4). printf

第6题(10.0分)题号:425

功能:当输入“2,5”的时候输出为“2 5 5”

#include

#define max 100

main()

{

int f[max],i,j,k,m;

scanf("%d,%d",&k,&m);

/***********SPACE***********/

for(i=0;i<=【?】;i++)f[i]=0;

/***********SPACE***********/

f[【?】]=1;

for(i=k;i<=m;i++)

/***********SPACE***********/

for(j=i-k;j<=i-1;j++)f[i]【?】f[j];

printf("%d%10d%10d\n",k,m,f[m]);

}

答案:

1). m

2). k-1 或 k -1

3). += 或 =1+

第10题(10.0分)题号:433

功能:将字母转换成密码,转换规则是将当前字母变成其后的第四个字母,但W变成A、X变成B、Y变成C、Z变成D。小写字

母的转换规则同样。

#include

main()

{

char c;

/***********SPACE***********/

while((c=【?】)!='\n')

{

/***********SPACE***********/

if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))【?】;

/***********SPACE***********/

if((c>'Z'【?】c<='Z'+4)||c>'z') c-=26;

printf("%c",c);

}

}

答案:

1). getchar()

2). c+=4 或 c=c+4 或 c=4+c

3). &&

第11题(10.0分)题号:423

功能:考查字符串数组的应用。输出26个英文字母。

#include

void main (void)

{

char string[256];

int i;

/***********SPACE***********/

for (i = 0; i < 26; 【?】)

/***********SPACE***********/

string[i] = 【?】;

string[i] = '\0';

/***********SPACE***********/

printf ("the arrary contains %s\n",【?】);

}

答案:

1). i++ 或 ++i 或 i=i+1 或 i+=1

2). 'A' + i 或 i+'A' 或 65 + i 或 i+65

3). string

第12题(10.0分)题号:17

功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘

输入。

#include "stdio.h"

main()

{

char str[80],ch;

int i,k=0;

/***********SPACE***********/

gets(【?】);

ch=getchar();

/***********SPACE***********/

for(i=0;【?】;i++)

if(str[i]!=ch)

{

/***********SPACE***********/

【?】;

k++;

}

/***********SPACE***********/

【?】;

puts(str);

}

答案:

1). str

2). str[i]!='\0' 或 str[i]!=NULL 或 str[i]!=0 或 str[i]

3). str[k]=str[i] 或 *(str+k)=*(str+i) 或 str[k]=*(str+i) 或 *(str+k)=str[i]

4). str[k]='\0' 或 *(str+k)='\0' 或 str[k]=NULL 或 str[k]=0 或 *(str+k)=0 或*(str+k)=NULL

第15题(10.0分)题号:484

功能:识别输入的字符串,每个单词输出一行

#include

#include

void main()

{

int c;

int inspace;

/***********SPACE***********/

【?】;

while((c = getchar()) != '\n')

{

if(c == ' ' || c == '\t' || c == '\n')

{

/***********SPACE***********/

if(【?】) {

inspace = 1;

putchar('\n');

}

}

else

{

inspace = 0;

/***********SPACE***********/

【?】;

}

}

}

答案:

1). inspace = 0

2). inspace == 0

3). putchar(c)

第17题(10.0分)题号:418

功能:用函数调用方式,实现字符串的复制。

void string_copy(char *str_from, char *str_to)

{

int i=0;

/***********SPACE***********/

for(; (*(【?】)=*(str_from+i))!='\0'; i++) ;

}

main()

{

static char array_str1[20]="I am a teacher.";

char array_str2[20];

/***********SPACE***********/

【?】(array_str1, array_str2);

/***********SPACE***********/

【?】("array_str2=%s\n",array_str2);

}

答案:

1). str_to+i 或 i+str_to

2). string_copy

3). printf

第22题(10.0分)题号:30

功能:输入字符串,再输入一个字符,将字符串中与输入字符相同的字符删除。

#include "stdio.h"

void fun(char a[],char c)

{

int i,j;

/***********SPACE***********/

for(i=j=0; 【?】;i++)

if(a[i]!=c) a[j++]=a[i];

/***********SPACE***********/

【?】;

}

main()

{

char a[20],cc;

gets(a);

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

puts(a);

}

答案:

1). a[i] != '\0' 或 a[i] 或 a[i]!=NULL

2). a[j]='\0' 或 a[j]=NULL 或 a[j]=0

3). cc=getchar() 或 scanf("%c",&cc)

4). fun(a,cc)

第26题(10.0分)题号:486

功能:删除字符串中的数字字符。

例如:输入字符串:48CTYP9E6,则输出:CTYPE。

#include

/***********SPACE***********/

void fun (【?】)

{

char *p=s;

while(*p)

if((*p>='0')&&(*p<='9')) p++;

/***********SPACE***********/

else *s++=【?】;

/***********SPACE***********/

【?】;

}

main( )

{

char item[100] ;

printf("\nEnter a string: ");

gets(item); fun(item);

printf("\nThe string:\"%s\"\n",item);

}

答案:

1). char *s 或 char s[]

2). *p++

3). *s='\0' 或 *s=0

第28题(10.0分)题号:21

功能:将一个字符串中的前N个字符复制到一个字符数组中去,不许使用strcpy函数。

main ( )

{

char str1[80],str2[80];

int i,n;

/***********SPACE***********/

gets(【?】);

scanf("%d",&n);

/***********SPACE***********/

for (i=0; 【?】 ;i++)

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

printf("%s\n",str2);

}

答案:

1). str1

2). ii 或 i<=n-1 或 n-1>=i

3). str2[i]=str1[i] 或 *(str2+i)=*(str1+i) 或 *(str2+i)=str1[i] 或 str2[i]=*(str1+i)

4). str2[n]='\0' 或 str2[i]='\0' 或 str2[n]=0 或 str2[i]=0 或 *(str2+n)='\0' 或

*(str2+i)='\0' 或 *(str+n)=0 或 *(str2+i)=0

第31题(10.0分)题号:394

功能:用条件编译方法实现以下功能。输入一行电报文字,可以任

选两种方式输出,一种为原文输出;另一种将字母变成下

一个字母(如a变成b,C变成D,其他字符不变)输出。

#define CHANGE

main()

{

/***********SPACE***********/

char str[80],【?】=str;

int k;

printf("Input string:");

/***********SPACE***********/

gets【?】;

printf("Output string:");

#ifdef CHANGE

for(;*s!='\0';s++)

{

if(*s>='a'&&*s<='z'||*s>='A'&&*s<='Z')

{

(*s)++;

if(*s>'Z'&&*s<'Z'+2)

/***********SPACE***********/

【?】;

if(*s>'z')

/***********SPACE***********/

*s=【?】;

}

}

printf("%s\n",str);

#else

printf("%s\n",str);

#endif

}

答案:

1). *s

2). (str) 或 (s)

4). 'a'

第42题(10.0分)题号:452

功能:从键盘输入若干行字符,输入后把他们存储到一磁盘文件中。在从该文件中读出这些数据,将其中的小写字母转换

成大写字母后在屏幕上输出。

#include "stdio.h"

#define N 100

main()

{

FILE *fp;

char c,*p,s[N][20];

int i,n;

printf("n=");scanf("%d",&n);

/***********SPACE***********/

if(n<1【?】n>N) exit(0);

printf("Input%d string:\n",n);

for(i=0;i

scanf("%s",s[i]);

/***********SPACE***********/

fp=fopen("text",【?】);

for(i=0;i

{

p=s[i];

/***********SPACE***********/

while(*p!='\0')

if(!ferror(fp)) fputc(【?】,fp);

}

fclose(fp);

printf("\n");

/***********SPACE***********/

fp=fopen("text",【?】);

while((c=fgetc(fp))!=EOF)

{

if(c>'a'&&c<='z')c-+32;

putchar(c);

}

printf("\n");

fclose(fp);

}

答案:

1). ||

3). *p++

4). "r"

第50题(10.0分)题号:27

功能:统计一个字符串中的字母、数字、空格和其它字符的个数。

#include "stdio.h"

main ()

{

char s1[80];int a[4]={0};

int k;

/***********SPACE***********/

【?】;

gets(s1);

/***********SPACE***********/

【?】;

puts(s1);

for(k=0;k<4;k++)

printf("%4d",a[k]);

}

void fun(char s[],int b[])

{

int i;

for (i=0;s[i]!='\0';i++)

if ('a'<=s[i]&&s[i]<='z'||'A'<=s[i]&&s[i]<='Z')

b[0]++;

/***********SPACE***********/

else if (【?】)

b[1]++;

/***********SPACE***********/

else if (【?】 )

b[2]++;

else

b[3]++;

}

答案:

1). void fun(char s[],int b[])

2). fun(s1,a)

3). '0'<=s[i] && s[i]<='9' 或 s[i]>='0' && s[i]<='9' 或 '0'<=s[i] && '9'>=s[i] 或 s[i]>='0' && '9'>=s[i] 或 48<=s[i] && s[i]<=57 或 s[i]>=48 && s[i]<=57 或 48<=s[i] && 57>=s[i] 或

s[i]>=48 && 57>=s[i] 或 !( x < 48 || x > 57 ) 或 !( x < '0' || x > '9' )

4). s[i] == ' ' 或 s[i] == 32

第51题(10.0分)题号:406

功能:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串

以!结束。

#include "stdio.h"

#include

main()

{

FILE *fp;

char str[100];

int i=0;

/***********SPACE***********/

if((fp=fopen("test",【?】))==NULL)

{

printf("cannot open the file\n");

exit(0);

}

printf("please input a string:\n");

/***********SPACE***********/

gets(【?】);

while(str[i]!='!')

/***********SPACE***********/

{

if(str[i]>='a'&&【?】)

str[i]=str[i]-32;

fputc(str[i],fp);

i++;

}

/***********SPACE***********/

fclose(【?】);

fp=fopen("test","r");

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

答案:

1). "w"

2). str

3). str[i]<='z' 或 'z'>=str[i]

4). fp

第56题(10.0分)题号:461

功能:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件“test”中保存。输入的字符串

以!结束。

#include "stdio.h"

main()

{

FILE *fp;

char str[100],filename[10];

int i=0;

if((fp=fopen("test","w"))==NULL)

{

printf("cannot open the file\n");

exit(0);

}

printf("please input a string:\n");

gets(str);

/***********SPACE***********/

while(【?】)

{

if(str[i]>='a'&&str[i]<='z')

/***********SPACE***********/

【?】;

fputc(str[i],fp);

i++;

}

fclose(fp);

/***********SPACE***********/

fp=fopen("test",【?】);

fgets(str,strlen(str)+1,fp);

printf("%s\n",str);

fclose(fp);

}

答案:

1). str[i] != '!'

2). str[i]=str[i]-32 或 str[i]= str[i] -32

3). "r" 或 "wr" 或 "wr+"

第60题(10.0分)题号:19

功能:是将两个字符串连接为一个字符串,不许使用库函数strcat。#include "stdio.h"

#include "string.h"

main ( )

{

char str1[80],str2[40];

int i,j,k;

gets(str1);gets(str2);

puts(str1);puts(str2);

/***********SPACE***********/

【?】;

puts(str1);

}

JOIN(s1,s2)

char s1[80],s2[40];

{

int i,j;

/***********SPACE***********/

【?】;

/***********SPACE***********/

for (i=0; 【?】'\0';i++)

s1[i+j]=s2[i];

/***********SPACE***********/

s1[i+j]= 【?】 ;

}

答案:

1). JOIN(str1,str2)

2). j=strlen(s1) 或 for(j=0;s1[j]!='10';j++); 或 for(j=0;s1[j];j++);

3). s2[i]!= 或 *(s2 + i)!=

4). '\0' 或 NULL 或 0

第65题(10.0分)题号:5

功能:将一个字符串中下标为m的字符开始的全部字符复制成为另

一个字符串。

#include

void strcopy(char *str1,char *str2,int m)

{

char *p1,*p2;

/***********SPACE***********/

【?】;

p2=str2;

while(*p1)

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

}

main()

{

int i,m;

char str1[80],str2[80];

gets(str1);

scanf("%d",&m);

/***********SPACE***********/

【?】;

puts(str1);puts(str2);

}

答案:

1). p1= str1 + m

2). *p2++=*p1++ 或 *(p2++)=*(p1++) 或 *p2=*p1,p2++,p1++ 或 *p2=*p1++,p2++ 或*p2++=*p1,p1++

3). *p2='\0' 或 *p2=0 或 *p2=NULL

4). strcopy(str1,str2,m)

第67题(10.0分)题号:440

功能:先将在字符串s中的字符按正序存放到t串中,然后把s中的

字符按逆序连接到t串的后面。

#include

#include

#include

void fun (char *s, char *t)

{

int i, sl;

/***********SPACE***********/

sl = 【?】;

for(i=0; i

t[i] = s[i];

for (i=0; i

/***********SPACE***********/

t[sl+i] = 【?】;

/***********SPACE***********/

t[sl+i]=【?】;

}

main()

{

char s[100], t[100];

clrscr();

/***********SPACE***********/

printf("\nPlease enter string s:"); 【?】("%s",s);

fun(s, t);

printf("The result is: %s\n", t);

}

答案:

1). strlen(s)

2). s[sl-i-1] 或 s[ sl -i -1 ]

3). '\0' 或 0

4). scanf

第73题(10.0分)题号:485

功能:统计子字符串substr在字符串str中出现的次数。

例如:若字符串为"aaas lkaaas",子字符串为"as",则应输出2。

若字符串为"asasasa",子字符串为"asa",则应输出3

#include

fun (char *substr,char *str)

{

int i,j,k,num=0;

for(i=0; str[i]; i++)

for(j=i,k=0;substr[k]==str[j];k++,j++)

/***********SPACE***********/

if(substr[【?】]=='\0')

{

num++;

/***********SPACE***********/

【?】;

}

return num;

}

main()

{

char str[80],substr[80];

printf("Input a string:") ;

gets(str);

printf("Input a substring:") ;

gets(substr);

/***********SPACE***********/

printf("%d\n",【?】);

}

答案:

1). k + 1

2). break

3). fun(substr,str)

第82题(10.0分)题号:26

功能:删除一个字符串中的所有数字字符。

#include "stdio.h"

void delnum(char *s)

{

int i,j;

/***********SPACE***********/

for(i=0,j=0; 【?】'\0' ;i++)

/***********SPACE***********/

if(s[i]<'0'【?】 s[i]>'9')

{

/***********SPACE***********/

【?】;

j++;

}

s[j]='\0';

}

main ()

{

char *item;

printf("\n input a string:\n");

gets(item);

/***********SPACE***********/

【?】;

printf("\n%s",item);

}

答案:

1). s[i]!= 或 *(s+i)!= 或 *(i+s)!=

2). ||

3). s[j]=s[i] 或 *(s+j)=*(s+i) 或 s[j]=*(s+i) 或 *(s+j)=s[i]

4). delnum(item)

第86题(10.0分)题号:92

功能:将s所指字符串的正序和反序进行连接,形成一个新串放在t 所指的数组中。

例如:当s串为"ABCD"时,则t串的内容应为"ABCDDCBA"。

#include

#include

#include

void fun (char *s, char *t)

{

int i, d;

/***********SPACE***********/

d = 【?】;

/***********SPACE***********/

for (i = 0; i

t[i] = s[i];

for (i = 0; i

/***********SPACE***********/

t[【?】] = s[d-1-i];

/***********SPACE***********/

t[【?】] ='\0';

}

main()

{

char s[100], t[100];

clrscr();

printf("\nPlease enter string S:"); scanf("%s", s);

fun(s, t);

printf("\nThe result is: %s\n", t);

}

答案:

1). strlen(s)

2). i++ 或 i=i+1 或 i+=1 或 ++i

3). d+i 或 i+d

4). 2*d 或 d*2 或 i+d 或 d+i

第89题(10.0分)题号:444

功能:用指向指针的指针的方法对n个字符串排序并输出。

#include "string.h"

#define N 100

void sort();

main()

{

int i,n;

char **p,*str[N],name[N][20];

printf("n=");scanf("%d",&n);

/***********SPACE***********/

if(n<2【?】n>N) exit(0);

for(i=0;i

{

printf("name[%d]=",i);

/***********SPACE***********/ scanf("%s",【?】);

}

printf("String arry:\n");

for(i=0;i

{

p=str+i;

printf("%s\n",*p);

}

p=str;

sort(p,n);

printf("String sort:\n");

for(i=0;i

{

p=str+i;

printf("%s\n",*p);

}

getch();

}

/***********SPACE***********/

void sort(char 【?】,int n)

{

int i,j;

char *s;

for(i=0;i

for(j=i+1;j

if(strcmp(p[i],p[j])>0)

{

s=p[i];

/***********SPACE***********/

【?】;

p[j]=s;

}

}

答案:

1). ||

2). str[i]

3). **p

4). p[i]=p[j]

第110题(10.0分)题号:462

功能:把字符串中所有的字母改写成该字母的下一个字母,最后一个字母z改写成字母a。大字母仍为大写字母,小写字母

仍为小写字母,其它的字符不变。

例如:原有的字符串为:“Mn.123xyZ”,调用该函数后,串中的内容为:“No.123yzA”。

#include

#include

#include

#define N 81

main( )

{

char a[N],*s;

printf ( "Enter a string : " );

gets ( a );

printf ( "The original string is : " );

puts( a );

/***********SPACE***********/

【?】; while(*s)

{

if(*s=='z')

*s='a';

else if(*s=='Z')

*s='A';

else if(isalpha(*s))

/***********SPACE***********/

【?】;

/***********SPACE***********/

【?】;

}

printf ( "The string after modified : ");

puts ( a );

}

答案:

1). s=a

2). *s+=1 或 *s=*s+1 或 (*s)++ 或 ++(*s)

3). s++ 或 s=s+1 或 ++s 或 s= s + 1

第116题(10.0分)题号:489

功能:h_sequence 是一组由0和1组成的数列,它定义如下:

= 0

= 1

利用函数检测输入的字符串是否是h_sequence数列

#include

#define YES 1

#define NO 0

int h_sequence(char x[])

{

/***********SPACE***********/

int length = 【?】; int count;

int i;

for (count = 1, i = 0; count != 0 && i < length; i++) switch (x[i])

{

case '0':count--;

break;

case '1':count++;

break;

default:return NO;

}

/***********SPACE***********/

return 【?】&& i >= length; }

#include

C语言32个字符

关键字就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等 由ANSI标准定义的C语言关键字共32个: auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if while static 根据关键字的作用,可以将关键字分为数据类型关键字和流程控制关键字两大类。 1 数据类型关键字 A.基本数据类型(5个) void:声明函数无返回值或无参数,声明无类型指针,显式丢弃运算结果 char:字符型类型数据,属于整型数据的一种 int:整型数据,通常为编译器指定的机器字长 float:单精度浮点型数据,属于浮点数据的一种 double:双精度浮点型数据,属于浮点数据的一种

B .类型修饰关键字(4个) short:修饰int,短整型数据,可省略被修饰的int。 long:修饰int,长整形数据,可省略被修饰的int。 signed:修饰整型数据,有符号数据类型 unsigned:修饰整型数据,无符号数据类型 C .复杂类型关键字(5个) struct:结构体声明 union:共用体声明 enum:枚举声明 typedef:声明类型别名 sizeof:得到特定类型或特定类型变量的大小 D .存储级别关键字(6个) auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配

ArcGis符号库

ArcGis符号库 一、Arc Gis符号库产品 地图符号是地图的语言单位,通过对地图符号的解读,可以直观的了解地图所表达的地理信息。符号标准化既是组织数据生产的重要手段,又是科学管理数据的重要组成部分。建立标准的符号体系,对于实现数据的规范管理和社会化信息共享服务具有十分重要的意义。 经过近半年的突击准备,Map2Shp标准符号库产品即将与大家见面了,Map2Shp标准符号库是基于ARCGIS符号库体系建立的符合国内实际应用的标准化符号库产品,具有丰富完整的内容、合理的结构模式、科学的编码,符合标准的参数设置。每个符号均参照国家、部标准制作,并赋予编码。标准符号库产品附有使用说明,方便用户使用。 地形图标准图式符号库 符合国家标准GBT_200257-2006(7)国家基本比例尺地图图式,包括1:500、1:1000、1:2000地形图符号库;1:5000、1:10000地形图符号库;1:25000、1:50000、1:100000地形图符号库。 土地利用现状与土地利用规划符号库 符合TD/T1014-2007第二次全国土地调查规程的土地利用现状与土地利用规划符号库。包括土地分类、界线、地貌、地物、注记等300余种符号。 区域地质图图例符号库 符合国家标准GB958-99的1:50000区域地质图图例符号库,包含地质构造、岩石、岩相建造、工勘、矿产、地貌类型、地质灾害等各类图例符号3000余个。

二、自定义符号库制作

(一)软件环境 1) ArcMap 9.X 2) Font Creator 5.X (二)二维符号库制作方法 ArcGIS中制作二维符号库的方法可归结为以下四种: 1) 基于ArcMap中已有符号制作符号库 2) 基于图片制作符号库 3) 基于TrueType字体制作符号库 4) 多种方式组合制作符号 不论采用上述何种方法进行符号制作准备,最终都需要在ArcMap中Style. Manager进行符号制作。您可以打开ArcMap,从菜单Tools-〉Style. Manager 进入,如下图所示。

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

字符手册

目录 一.字符型模块的性能 (1) 二.基本原理 (2) 三.技术参数 (3) 四.时序特性 (4) 五.引脚、指功能 (5) 六.使用实例 (6) 七.使用注意事项 (7)

1.字符型模块的性能 重量轻:<100g; 体积小:<11mm厚; 功耗低:10—15mW; 显示内容:192种字符(5×7点字型); 32种字符(5×10点字型); 可自编8(5×7)或许(5×10)种字符; 指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求; 接口简单方便:可与8位微处理器或微控制器相联; 工作温度宽:0—50oC 可靠性高:寿命为50,000小时(25oC) 2.基本原理 2.1 液晶体 液晶板上排列着若干5×7或5×10点阵的字符显示位,每个显示位可显示1个字符,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类。 2.2 工作电路 图1是字符型模块的电路框图,它由KS0066、KS0065及几个电阻电容组成。KS0065是扩展显示字符用的(例如:16个字符×1行模块就可不用KS0065,16个字符×2行模块就要用1片KS0065)。 图1 接口方面,有8条数据,三条控线。可与微处理器或微控制相连,通过送入数据和指令,就可使模块正常工作,图2是模块和微处理器相连的例子。

图2 2.3 LCD驱动器和控制器 2.3a LCD驱动器KS0065 KS0065是用低功耗CMOS技术制造的大规模LCD驱动IC。它既可当行驱动用,也可以当列驱动用,由20×2Bin二进制移位寄存器、20×2Bin数据锁存器和20×2Bin驱动器组成(如图3所示)。BLOCKDIAGRAM △功能(FUNCTION) a 40通道点阵LCD驱动; b 可选择当做行驱动或列驱动; c 输入/输出信号:输出,能产生20×2个LCD驱动波型;输入,接 受控制器送出的串行数据和控制信号,偏压(V1—V6); △特性(FEATURES) a 显示驱动偏压低:静态~1/5;

1602液晶字符显示

1602液晶字符显示

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方

便地应用于市面上大部分的字符型液晶。 2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调

符号及其形式-索绪尔符号语言学

符号及其形式 ——浅析索绪尔论语言符号 北京大学艺术学院(MFA)艺术硕士 姓名:高明云

符号及其形式 ——浅析索绪尔论语言符号 摘要:本文通过对索绪尔符号学说中的能指与所指的概念和思想意义做了阐述,索绪尔建立的符号学是作为一种对人类社会使用符号的法则进行验就的学科,它与传统语言学对语言和言语的历史演变有一定的区别,在确认能指和所指概念的总概括性特点后,本文理论阐述用符号的任意性的方法进行分析。能指与所指因为具有总概括一切形式和内容的能力而成为具有形式化的符号语言要素,因此有他构造的符号学具有突破传统语言学和哲学的概念框架,将人类语言性和非语言性的思想交流活动作为整体的符号对象进行苗雪和处理的能力。 关键词:索绪尔;符号学;能指;所指;任意性;建筑实践

引 言 费尔迪南·德·索绪尔 Ferdinand de Saussure (1857—1913) 瑞士语言学家,是一位在语言学领域占据突出地位的学者,著作有《普通语言学教程》(1916年),在人类语言学领域开创了一场”哥白尼式的革命”,被誉为“现代语言学之父”。 其理论不仅影响到语言学领域罗曼·雅各布逊、古斯塔夫·纪饶姆、乔姆斯等人,更导致了西方现代语言学的建立于发展,而且直接成为西方结构主义---- 符号学运动的思想基础。对人类学、哲学、心理学和文艺批评等领域研究有深远的影响和帮助。《普通语言学教程》对二十世纪的语言学产生了及其深远的影响,并成为结构主义符号学的发端。 一、符号语言学的概论 索绪尔指出:“我们可以设想有一门研究生会生活中符号生命的科学……语言学不好是这门一般科学的一部分①。 在有些人看来,语言归结到它的基本原则,就是一种分类命名集,即一份跟同样多的事物相当的名词术语表③。假定有现成的、先于词而存在的概念,它没有告诉我们名称按本质是:声音还是心理的。 如:‘arbor ’与‘树’可以从这一方面考虑,也可以从 那一方面思考,最终会是使人想到名称和事物的联系是一种 非常简单的作业,约定俗成的习惯为:一种以木质味主题的 叶本植物。这种天真的看法却可以让我们接近这里,表明语言单位是一种由两项要素联合构成的双重的东西。② 语言符号所包含的两项要素都是心理的,索绪尔首次区分了语言和言语: 语言是言语能力的社会产物,是管理的综合,是抽象的、稳定的;言语是个人的行为,运用的手段是语言,是具体的多变的。 索绪尔认为语言符号最重要的性质是其具有任意性。 任意性是指“所指”与“能指”之间的关联是任意的,约定俗成的。他认为 ① 索绪尔《普通语言学教程》(p37)[M], 北京商务印书馆 ③ 马壮寰《索绪尔与言论要点分析》(p15), 北京大学出版社 ② 王一川《大学美学》第十章 符号及其形式(p143), 高等教育出版社 树 arboor

西工大电子技术课程设计-数字示波器显示字符

西北工业大学 西北工业大学 课程设计报告题目:通用示波器显示字符 学院: 自动化学院 班级: ********班 学生(学号): *** ********** 学生(学号): *** ********** 日期: 2014 年 1 月

摘要 本次课程设计的目的是在通用示波器上显示数字、字母和汉字,整个电路主要由计数器模块、EPROM存储模块、DAC转换模块以及运算放大电路和示波器等组成。 考虑到数字示波器的工作原理,我们采用了在X-Y工作模式下通过CH1、CH2分别输入X、Y两个电压信号的方式,在示波器上显示了出一系列位置与X、Y电压值大小有关的点。通过设置这些点的位置和排列方式,可以在示波器上显示数字、字母和汉字等字符。为此,我们先将要显示的字符进行点阵化处理,即用一个3232 大小的点阵作为背景,用其中的点来构成字符,并将这些点的X、Y坐标记录下来。显然,每个字符都可以用一系列的点的X、Y坐标来表示,也即将字符编码为这些坐标数据。 为了简化电路结构,我们将字符编码后的X、Y坐标数据分别保存在两片EPROM中。然后将74LS161接成十六进制计数器,并将其输出端与EPROM的地址端相连。当74LS161接入CP信号开始计数后,输入EPROM的地址码便不断增加,存储在EPROM中的数据便依次被读取出来。 最后,从EPROM中读出的数据还需经DAC转化,再经过LM324放大电路输出到示波器,在其上显示出一个个点。当CP信号的频率合适时,示波器上便形成了肉眼不易分辨出闪烁的字符。 由于函数发生器的频率与示波器的采样频率无法做到基本同步,通过EPROM 存储字符并显示的效果并不理想。我们对电路进行了改进,采用单片机来存储字符并显示,并获得了较好的效果。 通过以上方法,我们最终在示波器上显示了0—9Hz和四个汉字。 关键词:DAC转化、EPROM编码、示波器显示、字符显示技术、89C51单片机嵌入式系统

ArcGIS软件中地形图符号库制作及图形符号化的技术与方法_向红梅

ArcG IS 软件中地形图符号库制作及 图形符号化的技术与方法 向红梅 (长沙市勘测设计研究院,湖南长沙 410007) 摘要:文中以制作国家1B 500、1B 1000、1B 2000地形图图式符号库为实例,论述了A rc G I S 软件中制作地形图符号库及实行图形符号化的方法与技巧,并对点、线、面符号制作的关键环节及图形符号化的程序方法进行了阐述。 关键词:A rc G I S 软件;地形图符号;Sty le ;M anager ;图形符号化 中图分类号:P 208 文献标识码:B 文章编号:1001-358X(2008)02-0038-04 我院在使用A rc G I S 912建立长沙市空间基础数据应用系统过程中,按照5国家基本比例尺地形图图式第1部分:1B 5001B 10001B 2000地形图图式6(GB /T 2025712-2006)(以下简称/图式0),并补充了图式没有而我们设计的部分符号,设计制作了一套完整的1B 500、1B 1000、1B 2000地形图符号库,且有效地实现了地形图的符号化。1 ArcG I S 软件中图形符号管理机制 A rc G I S 是美国ESR I 公司开发的全球功能最强大的G I S 专业软件,具有强大的符号制作功能,由A rc M ap 来实现符号的制作和管理。 A rc M ap 的符号库为sty le 文件,一个style 文件包括了M arkerSy m bo ls(点)、L ine Sy m bo ls(线)、F ill Sy m bo ls(面)等22个符号子库。在Arc M ap 的Style M anager 中新建sty l e 文件,可用编辑工具制作style 文件中的各类符号。制作点、线、面符号时可以镶嵌使用字体符号或图片,字体符号来源于操作系统字体库中的任何字体文件,即C :\W I N DOW S \Fonts\*1ttf 文件,图片为bm p 格式的位图。 制作好的sty le 符号库可以存放到A rc GIS 安装路径的sty le 目录(即D:\Prog ra m F il e s \A rc G I S \S tyles)或其他目录下。用A rc M ap 新建地图文档(*1m xd)时,A rc G I S 自动添加Styles 目录下的ES -R I 1sty le 给此文档,还可手工添加(Add)其他sty le 符号库,点击某个图层,在"sy mbol selector"中选择一个符号,将此图层图形符号化。 由于A rc G I S 是美国的一个通用GIS 软件,所提供的是一些描述性符号,其形状和大小远不能满足我国各级比例尺地形图符号的要求,可以利用A rc -GIS 的符号管理机制和强大的开发功能制作地形图 符号库,从而实现空间数据的符号化。2 地形图符号库的设计和制作211 符号库制作的技术方案 地形图用三种方法表示空间地理事物,即不依、半依和依比例尺图形。设计表示地物地貌的地形图符号时,将其概括为点、线和面状符号[4] 。这三种符号虽然各自有不同的特点和用途,但是它们又是相互关联的,比如,线状符号中包含了点状符号,面状符号可由点状和线状符号来排列填充,形成了以点状符号为基石的符号体系。因此,在设计制作地形图符号时,以点状符号为主。 国家1B 500、1B 1000、1B 2000比例尺地形图共用一本图式,符号大体相同,设计制作符号库时,以1B 1000比例尺为基准,对有差异的个别符号进行补充。在进行图形符号化时,对1B 500比例尺地形图,按015比例符号化,对1B 2000比例尺地形图,按210比例符号化。 虽然A rc G I S 自带的部分符号可以经过修改、缩放、旋转和移动等操作达到地形图符号标准 [1] ,但是 地形图中绝大部分符号不能从A rc GIS 符号库中作简单变换来获取,需要按照图式规范制作符号库。考虑到从A rc G I S 符号库作缩放、旋转等变形操作难以控制符号的尺寸,采取按照图式规范,将地形图中所有符号按统一的尺寸标准制作一个完整的字体库(cs10001ttf),在A rc M ap 的Sty le M anager 中建立符号库(cs10001sty le),分别编制点、线、面符号。212 字体库的设计与制作 A rcGIS 中线状、面状符号制作都是基于点状符 38 第2期 2008年6月 矿 山 测 量M I NE S U RV E Y I NG N o 12 Jun 12008

1602字符型液晶显示器

1602字符型液晶显示器 在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用。在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。 1602字符型LCD简介: 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。下面以长沙太阳人电子有限公司的1602字符型液晶显示器为例,介绍其用法。一般1602字符型液晶显示器实物如图10-53: 图10-53 1602字符型液晶显示器实物图 1602LCD的基本参数及引脚功能: 1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图10-54所示:

图10-55 读操作时序 图10-56 写操作时序 1602LCD的RAM地址映射及标准字库表: 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,图10-57是1602的内部显示地址。

图10-57 1602LCD内部显示地址 例如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在对液晶模块的初始化中要先设置其显示模式,在液晶模块显示字符时光标是自动右移的,无需人工干预。每次输入指令前都要判断液晶模块是否处于忙的状态。 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如图10-58所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B (41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” 图10-58 字符代码与图形对应图

C语言32个字符的定义

C语言32个字符的定义 2009-03-01 21:49 auto :声明自动变量一般不使用 double :声明双精度变量或函数 int:声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明积存器变量 typedef:用以给数据类型取别名(当然还有其他作用) char :声明字符型变量或函数 extern:声明变量是在其他文件正声明(也可以看做是引用变量) return :子程序返回语句(可以带参数,也看不带参数) union:声明联合数据类型 const :声明只读变量 float:声明浮点型变量或函数 short :声明短整型变量或函数 unsigned:声明无符号类型变量或函数 continue:结束当前循环,开始下一轮循环 for:一种循环语句(可意会不可言传) signed:生命有符号类型变量或函数 void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)default:开关语句中的“其他”分支 goto:无条件跳转语句 sizeof:计算数据类型长度 volatile:说明变量在程序执行中可被隐含地改变 do :循环语句的循环体 while :循环语句的循环条件 static :声明静态变量 if:条件语句

转义字符的定义 SqlServer中Sql语句的转义字符的使用(Escape charator) WHERE ProductName LIKE '[2005]%' 如果这样,他就找第一个字符是2,0,5之中的任何一个,而实际上不是这样的 这个时候就应该用转义,ESCAPE 关键字 WHERE ProductName LIKE '/[2005/]%' ESCAPE '/' /后边的都不是通配符了,而是一个字符。 like '%50/%%' ESCAPE '/' % _ [] [^] NOT LIKE '415%' 二、VBScript 转义字符(Escape Character) 目前我所知道的VBScript需要的转义字符就只有一个“"”(西文双引号)。在字符串中如果需要输入“"”,会和程序中的“"”混淆。因此我们在字符串内遇到要用“"”时一般用“""”(两个西文双引号)或“'”(一个西文单引号)替换。^AF 我们的第一个VBScript做的是一个E-Mail地址,我们现在用HTML语法让它带有链接。 一、VBScript 常量(Constant)

1602字符手册

目录 一.字符型模块的性能???????????????????????????????????????1 二.基本原理???????????????????????????????????????????????2 三.技术参数???????????????????????????????????????????????3 四.时序特性???????????????????????????????????????????????4 五.引脚、指功能???????????????????????????????????????????5 六.使用实例???????????????????????????????????????????????6 七.使用注意事项???????????????????????????????????????????7

1.字符型模块的性能 重量轻:<100g; 体积小:<11mm厚; 功耗低:10—15mW; 显示内容:192种字符(5×7点字型); 32种字符(5×10点字型); 可自编8(5×7)或许(5×10)种字符; 指令功能强:可组合成各种输入、显示、移位方式以满足不同的要求; 接口简单方便:可与8位微处理器或微控制器相联; 工作温度宽:0—50oC 可靠性高:寿命为50,000小时(25oC) 2.基本原理 2.1 液晶体 液晶板上排列着若干5×7或5×10点阵的字符显示位,每个显示位可显示1个字符,从规格上分为每行8、16、20、24、32、40位,有一行、两行及四行三类。 2.2 工作电路 图1是字符型模块的电路框图,它由KS0066、KS0065及几个电阻电容组成。KS0065是扩展显示字符用的(例如:16个字符×1行模块就可不用KS0065,16个字符×2行模块就要用1片KS0065)。 图1 接口方面,有8条数据,三条控线。可与微处理器或微控制相连,通过送入数据和指令,就可使模块正常工作,图2是模块和微处理器相连的例子。

C语言字符串处理的库函数

C语言字符串处理的库函数 使用C语言字符串处理的库函数,务必包含头文件string.h,即#include 1、比较字符串大小函数 ---strcasecmp 忽略大小写---strcasecmp 1)忽略大小写 函数原型:int strcasecmp(const char*s1,const char*s2); 函数说明:用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异 2)忽略大小写—stricmp 函数原型:int stricmp(char*str1,char*str2); 函数说明:以大小写不敏感方式比较两个串 3)不忽略大小写—strcmp 函数原型:int strcmp(char*str1,char*str2); 函数说明:通过比较字串中各个字符的ASCII码,来比较参数Str1和Str2字符串,比较时考虑字符的大小写。 4)比较一部分—strncmpi

函数原型:int strncmpi(char*str1,char*str2,unsigned maxlen); 函数说明:比较字符串str1和str2的前maxlen个字符 ---memcmp 5)内存区域比较 )内存区域比较---memcmp 函数原型:int memcmp(void*buf1,void*buf2,unsigned int count)函数说明:比较内存区域buf1和buf2的前count个字节。Void*是指任何类型的指针。 )内存区域部分比较----memicmp Void*是指任何类型的指针。 6)内存区域部分比较 函数原型:int memicmp(void*buf1,void*buf2,unsigned int count)函数说明:比较内存区域buf1和buf2的前count个字节,但不区分大小写。 以上比较函数的返回值:若参数1中字符串和参数中2字符串相同则返回0; 若参数1中字符串长度大于参数2中字符串长度则返回大于0的值; 若参数1中字符串长度小于参数2中

液晶字符显示

液晶字符显示

————————————————————————————————作者:————————————————————————————————日期:

1.基本简介 LCD1602工业字符型液晶,能够同时显示16x02即32个字符。(16列2行) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。 目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 2.管脚功能 1602采用标准的16脚接口,其中: 第1脚:VSS为电源地 第2脚:VCC接5V电源正极 第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。 第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。 第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。 第6脚:E(或EN)端为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。 第7~14脚:D0~D7为8位双向数据端。 第15~16脚:空脚或背灯电源。15脚背光正极,16脚背光负极。 ⑶特性 3.3V或5V工作电压,对比度可调 内含复位电路 提供各种控制命令,如:清屏、字符闪烁、光标闪烁、显示移位等多种功能 有80字节显示数据存储器DDRAM

如何使用采用SPI Flash存储中文字符库的方法说明

如何使用采用SPI Flash存储中文字符库的方法说明 在嵌入式系统中,有时候需要中文字符来表示我们的某些信息,但是中文字符库本身占据空间比较大,因此有时候仅仅对系统中需要的字符进行编码,其它的则省掉,但是这样对于编程调用字符时是比较麻烦的,只能一个一个进行调用然户显示。然而,有时候在比较大的系统中需要很多的中文字符,如果还是对需要的进行一个个编码将显得非常费时,此时有必要采用一个字库来完成我们的工作。 在嵌入式系统中,用得比较多的是GBK2312B编码的字库(还有一个是Unicode编码),编码后得到的是一个字符数组,每一个中文字符对应多个字节(具体字节数看取模的大小),需要显示某个字符只需取得该字符的GBK内码,然后找到该字符对应数组中的地址,最后将这个字符对应的所有字节按照预定的格式写入液晶屏即可。这样操作带来的简便就是,你想显示某个字符只需以字符串的格式输入该字符然后调用显示函数就行了。这时有个问题出现了,7千多个字符编码后得占用多大空间啊? 大概有200KB,但是对于现在的MCU,本身自带的rom就很宝贵,另外MCU的ROM 越大其成本就越高。所以,如果将200kb的字库写入MCU将不太划算。不将字库存入MCU,就得存入另外一种介质中,这种介质可能是SD卡,SPI Flash。对于SD卡我没有试过,虽然容量大,但据说读取速度比较慢,另外封装较大,占板子面积,感觉适用与大的系统吧,比如MP3;而SPI flash, 体积小,容量也还可以,我所了解的也有8M的,可能还有更大容量的。好了,废话了这么多,那么本文接下来就绍如何用SPI flash做中文字库: 第一步,当然需要你将你所用的SPIflasn的初始化以及读写函数写好(我使用的W25X16,2M,传输速率最大74MHZ,很快的;板子主芯片STM32F103RBT6)。写函数:void W25X_Write_Bytes(uint32_t addr,u8* pBuffer, u16 nBytes) 注:W25X16写时,需要先擦除。读函数:void W25X_Read_Bytes(uint32_t addr, u8* pBuffer, u16 nBytes)第二步,编写串口传输函数,采用串口中断的方式,波特率设置为115200(测试没有问题),接收外部输入的一个字节后立马将其写入SPI FLASH。与之前两个字符表示一个字节的方法速度

字符液晶显示原理实例详解

1602详细资料和实例 1602字符液晶在实际的产品中运用的也比较多了,前几天留意了一下,发现宿舍门前的自动售水机就是采用的1602液晶进行显示的。而且对于单片机的学习而言,掌握1602的用法是每一个学习者必然要经历的过程。在此,我将使用1602过程中遇到的问题以及感受记录下来,希望能够给初学者带来一点指导,少走一点弯路。 所谓1602是指显示的内容为16*2,即可以显示两行,每行16个字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。 1602液晶的正面(绿色背光,黑色字体) 1602液晶背面(绿色背光,黑色字体)

另一种1602液晶模块,显示屏是蓝色背光白色字体 字符型LCD1602通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,引脚定义如下表所示:

HD44780内置了DDRAM、CGROM和CGRAM。 DDRAM就是显示数据RAM,用来寄存待显示的字符代码。共80个字节,其地址和屏幕的对应关系如下表: 也就是说想要在LCD1602屏幕的第一行第一列显示一个"A"字,就要向DDRAM的00H地址写入“A”字的代码(指A的字模代码,0x20~0x7F为标准的ASCII码,通过这个代码,在CGROM中查找到相应的字符显示)就行了。但具体的写入是要按LCD模块的指令格式来进行的,后面我会说到的。那么一行可有40个地址呀?是的,在1602中我们就用前16个就行了。第二行也一样用前16个地址。对应如下: DDRAM地址与显示位置的对应关系。 (事实上我们往DDRAM里的00H地址处送一个数据,譬如0x31(数字1的代码,见字模关系对照表)并不能显示1出来。这是一个令初学者很容易出错的地方,原因就是如果你要想在DDRAM的00H地址处显示数据,则必须将00H加上80H,即80H,若要在DDRAM的01H处显示数据,则必须将01H加上80H即81H。依次类推。大家看一下控制指令的的8条:DDRAM地址的设定,即可以明白是怎么样的一回事了),1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形(无汉字),如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H)(其实是1个地址),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”。

用符号形式写出下列命题

5. 用符号形式写出下列命题。 ⑴假如上午不下雨,我去看电影,否则就在家里读书或看报。 ⑵我今天进城,除非下雨。 ⑶仅当你走,我将留下。 解:⑴p:上午下雨;q:我去看电影;r:我在家读书;s:我在家看报;原命题符号化为:(?p→q)∧(p→r∨s)。 ⑵p:我今天进城;q:天下雨;原命题符号化为:?q→p。 ⑶p:你走;q:我留下;原命题符号化为:q→p。 3.构造下列命题公式的真值表,并求成真赋值和成假赋值。 ⑸((?p→(p∧?q))→r)∨(q∧?r) 解: ⑸((?p→(p∧?q))→r)∨(q∧?r)的真值表如表1.28所示。 表1.28 使得公式((?p→(p∧?q))→r)∨(q∧?r)成真的赋值是:000,001,010,011,101,110,111,使得公式((?p→(p∧?q))→r)∨(q∧?r)成假的赋值是:100。 4.用真值表证明下列等价式: ⑸p→(q→p)? ?p→(p→?q) 证明:证明p→(q→p)和?p→(p→?q)的真值表如表1.33所示。 表1.33

由上表可见:p→(q→p)和?p→(p→?q)的真值表完全相同,且都是永真式,所以p→(q →p)??p→(p→?q)。 ⑹?(p?q)?(p∨q)∧?(p∧q) 证明:证明?(p?q)和(p∨q)∧?(p∧q)的真值表如表1.34所示。 表1.34 由上表可见:?(p?q)和(p∨q)∧?(p∧q)的真值表完全相同,所以?(p?q)?(p∨q)∧?(p ∧q) ⑺?(p?q)?(p∧?q)∨(?p∧q) 证明:证明?(p?q)和(p∧?q)∨(?p∧q)的真值表如表1.35所示。 表1.35 由上表可见:?(p?q)和(p∧?q)∨(?p∧q)的真值表完全相同,所以?(p?q)?(p∧?q)∨(?p∧q)。 ⑻p→(q∨r)?(p∧?q)→r 证明:证明p→(q∨r)和(p∧?q)→r的真值表如表1.36所示。 表1.36

matlab的常用函数及函数库

表2.1基本矩阵和矩阵运算(elmat)(d) 基本矩阵zeros全零矩阵(m×n)logspace对数均分向量1×n维数组ones全一矩阵(m×n)Freqspace频率特性的频率区间 rand随机数矩阵(m×n)meshgrid画三维曲面时的X,Y网格randn正态随机数矩阵(m×n)Linspace均分向量(1×n维数组)Eye(n)单位矩阵(方阵)…(竖的)将元素按列取出排成一列 特殊变量和函数ans最近的答案inf Infinity(无穷大)eps浮点数相对精度NaN Not-a-Number(非数)realmax最大浮点实数flops浮点运算次数realmin最小浮点实数computer计算机类型 pi 3.14159235358579inputname输入变量名 i,j虚数单位size多维矩阵的各维长度length一维矩阵的长度 矩阵结构提取和变换cat*链接数组diag提取或建立对角阵 fliplr矩阵左右翻转ind2sub把元素序号变为矩阵下标flipud矩阵上下翻转sub2ind把矩阵下标变为元素序号repmat复制和排成矩阵tril取矩阵的左下三角部分reshape维数重组triu去矩阵的右上三角部分rot90矩阵整体逆时针旋转90° 特殊矩阵company Companion矩阵magic魔方矩阵 gallery Higham测试矩阵pascal Pascal矩阵 hadamard Hadamard矩阵rosser经典的对称特征值测试问题hankle Hankle矩阵Toeplitz Toeplitz矩阵 hilb Hilbert矩阵vander vandermonde矩阵 invhilb Hilbert逆矩阵wilkinson Wilkinson’s特征值测试矩阵表2.5简单的元素群运算 运算式输出结果z=x.*y z=41018 z=x.\y z=4.0000 2.5000 2.0000 z=x.^y z=132729 z=x.^2z=149 z=2.^[x y]z=248163264 注:x=[1,2,3]y=[4,5,6]

1602字符型液晶显示篇

1602字符型液晶显示篇 《电子制作》2008年1月站长原创,如需引用请注明出处 在日常生活中,我们对液晶显示器并不陌生?液晶显示模块已作为很多电子产品的通过器件,如在计算器?万用表?电子表及很多家用电子产品中都可以看到,显示的主要是数字?专用符号和图形?在单片机的人机交流界面中,一般的输出方式有以下几种:发光管?LED数码管?液晶显示器?发光管和LED数码管比较常用,软硬件都比较简单,在前面章节已经介绍过,在此不作介绍,本章重点介绍字符型液晶显示器的应用? 在单片机系统中应用晶液显示器作为输出器件有以下几个优点: 显示质量高 由于液晶显示器每一个点在收到信号后就一直保持那种色彩和亮度,恒定发光,而不像阴极射线管显示器(CRT)那样需要不断刷新新亮点?因此,液晶显示器画质高且不会闪烁? 数字式接口 液晶显示器都是数字式的,和单片机系统的接口更加简单可靠,操作更加方便? 体积小?重量轻 液晶显示器通过显示屏上的电极控制液晶分子状态来达到显示的目的,在重量上比相同显示面积的传统显示器要轻得多? 功耗低 相对而言,液晶显示器的功耗主要消耗在其内部的电极和驱动IC上,因而耗电量比其它显示器要少得多? 1 液晶显示简介 ①液晶显示原理 液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形?液晶显示器具有厚度薄?适用于大规模集成电路直接驱动?易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑?数字摄像机?PDA移动通信工具等众多领域? ②液晶显示器的分类 液晶显示的分类方法有很多种,通常可按其显示方式分为段式?字符式?点阵式等?除了黑白显示外,液晶显示器还有多灰度有彩色显示等?如果根据驱动方式来分,可以分为静态驱动(Static)?单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种? ③液晶显示器各种图形的显示原理: 线段的显示 点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应?例如屏的第一行的亮暗由RAM区的000H—00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,……(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线?这就是LCD显示的基本原理? 字符的显示 用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮?这样一来就组成某个字符?但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光

相关文档
相关文档 最新文档