pic c语言按键程序,PIC单片机1X4独立键盘C语言程序

/********************************************

*** 功能: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--;); //延时

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值