锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

PIC单片机1X4独立键盘C语言程序

时间:2024-05-01 12:37:07

/*********************************************** 功能:1X4按键*** 实验内容:按下S1 S2 S3 S4 数码管分别显示出0 1 2 3*** 开发板连接方法:把J3的的跳线帽跳到1-2(左边)*********************************************/#include              //包含单片机内部资源预定义__CONFIG(0xFF32);//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡const unsigned char TABLE[] = {0x3f,0x6,0x5b,0x4f,0x66};int result;void delay();              //delay函数申明void init();               //I/O口初始化函数申明void scan();               //按键扫描程序申明void display(int x);       //显示函数申明/***************************************************************************** 名    称:main()* 功    能:* 入口参数:* 出口参数:****************************************************************************/void main(){       result = 0x8;               //开始时显示F        init();                                           //调用初始化函数        while (1)                         //死循环        {                scan();                      //调用按键扫描程序                display(result);             //调用结果显示程序        }}/***************************************************************************** 名    称:init()* 功    能:初始化* 入口参数:* 出口参数:****************************************************************************/void init(){        TRISB = 0X0F;          //设置B口低4位为输入        TRISD = 0;          //portd 输出        TRISC = 0xf0;        TRISA = 0;          //porta 输出        PORTA = 0x00;        //先关闭所有显示        PORTD = 0x0f;        PORTC = 0xff;       }/***************************************************************************** 名    称:scan()* 功    能:按键扫描* 入口参数:* 出口参数:****************************************************************************/void scan(){        if (RB0 == 0)               //判断B0是否按下                result = 0x1;        if (RB1 == 0)               //判断B1是否按下                result = 0x2;        if (RB2 == 0)               //判断B2是否按下                result = 0x3;        if (RB3 == 0)               //判断B3是否按下                result = 0x4;}/***************************************************************************** 名    称:display()* 功    能:结果显示* 入口参数:int x 要现实的数据* 出口参数:****************************************************************************/void display(int x){        switch (x)                //根据X值的不同,跳转到相应的部分处理        {        case 0x1:                PORTD = TABLE[0];PORTA = 0X3F;delay();break;          //B0        case 0x2:                PORTD = TABLE[1];PORTA = 0X3F;delay();break;          //B1        case 0x3:                PORTD = TABLE[2];PORTA = 0X3F;delay();break;          //B2        case 0x4:                PORTD = TABLE[3];PORTA = 0X3F;delay();break;          //B3        case 0x8:                PORTD = 0X71;PORTA = 0Xff;delay();break;                  //无按键下        }}/***************************************************************************** 名    称:delay()* 功    能:延时* 入口参数:* 出口参数:****************************************************************************/void delay()              {        int i;                  //定义整形变量        for (i = 600;i--;);     //延时}

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章