51单片机第7步_ctype.h库函数

本章重点学习ctype.h库函数

//介绍C51库函数ctype.h的使用;

#include <REG51.h>  //包含头文件REG51.h,使能51内部寄存器;

#include <ctype.h>

//bit isalpha( unsigned char value );

//检查输入参数value是否为英文字母,若是英文字母,则返回1,若不是英文字母,则返回0;

//bit isalnum(unsigned char value);

//检查输入参数value是否为英文字母或数字字符,若是英文字母或数字字符,则返回1;

//若不是英文字母或数字字符,则返回0;

//bit iscntrl (unsigned char value);

//控制字符的值域:0x00<=value<=0x1f或value=0x7f;

//若输入参数value为控制字符,则返回1,否则,返回0;

//isgraph (unsigned char value);

//"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

//若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

//isprint (unsigned char value);

//"打印字符"的值域:0x20<=value<=0x7e,包含空格字符值0x20;

//若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

//bit ispunct(unsigned char);

//输入参数:标点,空格或格式字符号;

//标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

//左右小括号( () ),左右中括号([]),左右大括号({});

//格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

//相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

//英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

//若输入参数为空格或32个标点和格式字符之一,则返回1;

//bit isdigit(unsigned char value);

//若输入字符为0~9的ascii码,则返回1,否则返回0;

//bit islower(unsigned char value);

//若输入参数value为小写英文字母,则返回1,否则返回0;

//bit isupper (unsigned char value);

//若输入参数value为大写英文字母,则返回1,否则返回0;

//bit isspace (unsigned char value);

//输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

//回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

//若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

//bit isxdigit (unsigned char value);

//输入参数:'0'~'9'或'A'~'F'或'a'~'f';

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

//unsigned char toint (unsigned char value value);

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

//unsigned char tolower (unsigned char value);和_tolower(c);

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

//_tolower(c)相当于( (c)-'A'+'a' );

//unsigned char toupper (unsigned char value);和_toupper(c);

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' );

//toascii(c);相当于( (c) & 0x7F );

//将第7位以上的所有位设置为0,使其结果值<=127,即为ascii码,不常使用;

//若输入参数为字节型数据,则只将最高位设置为0;

#include <stdio.h>  //包含头文件stdio.h

                    //_getkey();从串口读入一个字符;

                    //putchar();向串口发送一个字节;

                    //printf();向串口发送一串字节;

//函数功能:测试isalpha()函数;

void test_isalpha()

{ char s[]="a$bcd";

  if( isalpha(s[0]) )  //若输入参数是英文字母,则执行下面语句;

     printf( "isalpha('a')=1;\n" );  //输出:"isalpha('a')=1;"

  if( !isalpha(s[1]) )  //若输入参数不是英文字母,则执行下面语句;

     printf( "isalpha('$')=0;\n" );  //输出:"isalpha('$')=0;"

}

//函数功能:测试isalnum()函数;

void test_isalnum()

{ char s[]="b1#23acd";

  if( isalnum(s[0]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('b')=1;\n" );  //输出:"isalnum('b')=1;"

  if( isalnum(s[1]) )  //若输入参数是英文字母或数字字符,则执行下面语句;

     printf( "isalnum('1')=1;\n" );  //输出:"isalnum('1')=1;"

  if( !isalnum(s[2]) )  //若输入参数既不是英文字母也不是数字字符,则执行下面语句;

     printf( "isalnum('#')=0;\n" );  //输出:"isalnum('#')=0;"

}

//函数功能:测试iscntrl()函数;

void test_iscntrl()

{ unsigned char value;

  bit return_bit_value;

  value=0x7f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

                               //控制字符的值域:0x00<=value<=0x1f或value=0x7f;

  if(return_bit_value) printf( "iscntrl(0x7f)=1;\n" );  //输出:"iscntrl(0x7f)=1;"

  value=0x1f;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x1f)=1;\n" );  //输出:"iscntrl(0x1f)=1;"

  value=0x00;

  return_bit_value=iscntrl(value);  //若输入参数value为控制字符,则返回1;

  if(return_bit_value) printf( "iscntrl(0x00)=1;\n" );  //输出:"iscntrl(0x00)=1;"

  value=0x20;

  return_bit_value=iscntrl(value); //若输入参数value为控制字符,则返回1;

  if(!return_bit_value) printf( "iscntrl(0x20)=0;\n" );  //输出:"iscntrl(0x20)=0;"

}

//函数功能:测试isgraph()函数;

void test_isgraph()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isgraph(value);

     //若输入参数value为"可打印字符"(不包括空格),则返回1,否则,返回0;

     //"可打印字符"的值域:0x21<=value<=0x7e,不包含空格字符值0x20;

  if(return_bit_value) printf( "isgraph(0x7e)=1;\n" );  //输出:"isgraph(0x7e)=1;"

  value=0x21;

  return_bit_value=isgraph(value);

  if(return_bit_value) printf( "isgraph(0x21)=1;\n" );   //输出:"isgraph(0x21)=1;"

  value=' ';

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x20)=0;\n" );  //输出:"isgraph(0x20)=0;"

  value=0x7f;

  return_bit_value=isgraph(value);

  if(!return_bit_value) printf( "isgraph(0x7f)=0;\n" );   //输出:"isgraph(0x7f)=0;"

}

//函数功能:测试isprint()函数;

void test_isprint()

{ unsigned char value;

  bit return_bit_value;

  value=0x7e;

  return_bit_value=isprint(value);

     //若输入参数value为"打印字符"(包括空格),则返回1,否则,返回0;

     //可打印字符的值域:0x20<=value<=0x7e,包含空格字符值0x20;

  if(return_bit_value) printf( "isprint(0x7e)=1;\n" );//输出:"isprint(0x7e)=1;"

  value=' ';

  return_bit_value=isprint(value);

  if(return_bit_value) printf( "isprint(0x20)=1;\n" );   //输出:"isprint(0x20)=1;"

  value=0x7f;

  return_bit_value=isprint(value);

  if(!return_bit_value) printf( "isprint(0x7f)=0;\n" );  //输出:"isprint(0x7f)=0;"

}

//函数功能:测试isdigit()函数;

void test_isdigit()

{ unsigned char value;

  bit return_bit_value;

  value='0';

  return_bit_value=isdigit(value);  //若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(return_bit_value)printf( "isdigit('0')=1;\n" );  //输出:"iscntrl('0')=1;"

  value=0;

  return_bit_value=isdigit(value);//若输入字符为0~9的ascii码,则返回1,否则返回0;

  if(!return_bit_value)printf( "isdigit(0)=0;\n" ); //输出:"iscntrl(0)=0;"

}

//函数功能:测试ispunct()函数;

void test_ispunct()

{ unsigned char value;

  bit return_bit_value;

  value='~';

  return_bit_value=ispunct(value);

    //输入参数:标点,空格或格式字符号;

    //标点有:逗号(,),点句号(.),问号(?),冒号(:),分号(:),感叹号(!),左单引号(‘),

    //左右小括号( () ),左右中括号([]),左右大括号({});

    //格式字符:字符串控制符号("),字符控制符号('),加减号(+ -),百分号(%),井号(#),

    //相与符号(&),星号(*),前和后斜杠线(\ /),竖杠线(|),下划线(_),小老鼠符号(@),

    //英磅符号($),大于号(>),小于号(<),等于号(=);控制符号(^),波浪符号(~);

    //若输入参数为空格或32个标点和格式字符之一,则返回1;

  if(return_bit_value)printf( "ispunct('~')=1;\n" );  //输出:"ispunct('~')=1;"

  value='`';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('`')=1;\n" );   //输出:"ispunct('`')=1;"

  value='@';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct('@')=1;\n" );  //输出:"ispunct('@')=1;"

  value=' ';

  return_bit_value=ispunct(value);

  if(return_bit_value)printf( "ispunct(' ')=1;\n" );  //输出:"ispunct(' ')=1;"

}

//函数功能:测试islower()函数;

void test_islower()

{ unsigned char value;

  bit return_bit_value;

  value='a';

  return_bit_value=islower(value);

      //若输入参数value为小写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "islower('a')=1;\n" ); //输出:"islower('a')=1;"

  value='A';

  return_bit_value=islower(value);

  if(!return_bit_value)printf( "islower('A')=0;\n" );//输出:"islower('A')=0;"

}

//函数功能:测试isupper()函数;

void test_isupper()

{ unsigned char value;

  bit return_bit_value;

  value='B';

  return_bit_value=isupper(value);

   //若输入参数value为大写英文字母,则返回1,否则返回0;

  if(return_bit_value)printf( "isupper('B')=1;\n" );

  value='b';

  return_bit_value=isupper(value);

  if(!return_bit_value)printf( "isupper('b')=0;\n" );

}

//函数功能:测试isspace()函数;

void test_isspace()

{ unsigned char value;

  bit return_bit_value;

  value='\t'; //将水平制表符(0x09,即'\t')保存到value中;

  return_bit_value=isspace(value);

  //输入参数:空格符(0x20,即' '),水平制表符(0x09,即'\t'),垂直制表符(0x0b,即'\v'),

  //回车符(0x0d,即'\r'),换行符(0x0a即'\n')和送纸符(0x0c,即'\f'换页符);

  //若输入参数0x09<=value<=0x0d或value=0x20,则返回1,否则返回0;

  if(return_bit_value)printf( "isspace(0x09)=1;\n" );

  value='\n';   //换行符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0a)=1;\n" );

  value='\v';   //垂直制表符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0b)=1;\n" );

  value='\f';   //换页符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0c)=1;\n" );

  value='\r';   //回车符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(0x0d)=1;\n" );

  value=' ';   //空格符

  return_bit_value=isspace(value);

  if(return_bit_value)printf( "isspace(' ')=1;\n" );

}

//函数功能:测试isxdigit()函数;

void test_isxdigit()

{ unsigned char value;

  bit return_bit_value;

  value='A';

  return_bit_value=isxdigit(value);

 //若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回1,否则返回0;

  if(return_bit_value)printf( "isxdigit('A')=1;\n" );

  value='a';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('a')=1;\n" );

  value='0';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('0')=1;\n" );

  value='f';

  return_bit_value=isxdigit(value);

  if(return_bit_value)printf( "isxdigit('f')=1;\n" );

  value='G';

  return_bit_value=isxdigit(value);

  if(!return_bit_value)printf( "isxdigit('G')=0;\n" );

}

//函数功能:测试toint()函数;

void test_toint()

{ unsigned char return_bit_value;

  return_bit_value=toint('9');

//若输入参数'0'<=value<='9'或'A'<=value<='F'或'a'<=value<='f',则返回相应的16进制数据;

  printf("toint('9')=%#bx\n",return_bit_value);  //输出:"toint('9')=0x09;"

  return_bit_value=toint('A');

  printf("toint('A')=%#bx\n",return_bit_value); //输出:"toint('A')=0x0a;"

  return_bit_value=toint('a');

  printf("toint('a')=%#bx\n",return_bit_value);   //输出:"toint('a')=0x0a;"

}

//函数功能:测试tolower()函数;

void test_tolower()

{ unsigned char return_bit_value;

  return_bit_value=tolower('A');

//输入参数:'A'~'Z';

//将大写英文字母转换为对应的小写字母;

//注意:在tolower(value)中,若value的值不在'A'和'Z'之间,则不进行转换;

  printf("tolower('A')=%c\n",return_bit_value);

  return_bit_value=_tolower('Z');   //相当于( (c)-'A'+'a' )

  printf("_tolower('Z')=%c\n",return_bit_value);

}

//函数功能:测试toupper()函数;

void test_toupper()

{ unsigned char return_bit_value;

  return_bit_value=toupper('a');

//输入参数:'a'~'z';

//将小写英文字母转换为对应的大写字母;

//注意:在toupper(value)中,若value的值不在'a'和'z'之间,则不进行转换;

//_toupper(c)相当于( (c)-'a'+'A' )

  printf("toupper('a')=%c\n",return_bit_value);

  return_bit_value=_toupper('z');   //相当于( (c)-'a'+'A' )

  printf("_toupper('z')=%c\n",return_bit_value);

}

//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

void Serial_Port_Initialization()

{ SCON  = 0x50;  //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI

                 //SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;

                 //REN=1,使能接收;

  TMOD |= 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00

                //GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电平,才

                //可以启动Timer;

                //M11:M10=10,选择方式2,8位自动重装载; 

  TH1   = 221;  //TH1:  reload value for 1200 baud @ 16MHz

  TR1   = 1;    //启动Timer1;

  TI    = 1;    //发送UART的第一个字节,为下次发送做准备;

}

void main(void)

{ Serial_Port_Initialization(); //初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

  for(;;)

     { test_isalpha();  //测试isalpha()函数;

   test_isalnum();    //测试isalnum()函数;

   test_iscntrl();     //测试iscntrl()函数;

   test_isdigit();     //测试isdigit()函数;

   test_isgraph();    //测试isgraph()函数;

   test_isprint();     //测试isprint()函数;

   test_ispunct();    //测试ispunct()函数;

   test_islower();    //测试islower()函数;

   test_isupper();   //测试isupper()函数;

   test_isspace();   //测试isspace()函数;

   test_isxdigit();   //测试isxdigit()函数;

   test_toint();     //测试toint()函数;

   test_tolower();   //测试tolower()函数;

   test_toupper();   //测试toupper()函数;

 }

}

  • 18
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值