历史上的今天

今天是:2024年11月18日(星期一)

2019年11月18日 | PIC单片机开发板独立键盘扫描+蜂鸣器响+数码管 C程序代码

发布者:梦想学院 来源: 51hei关键字:PIC单片机  独立键盘  蜂鸣器  数码管 手机看文章 扫描二维码
随时随地手机看文章

/*

为自已写的独立键盘扫描+蜂鸣器响+数码管

犯的错:unsigned密写成了unsigner一直提示找不到a,b

  PORTD0=1;不行,要写成PORTD=0x01;才可以,经实验证得没有PORTD0没这个东西,应为RD0=1; 

  PORTD=0x03;不是第三个灯亮,而是0000 0011是两个灯亮

  PORTD=0x8则是0000 1000是第4个灯亮。。。。。出错因原进制转化,刚开始写程序进制转化混掉了。

*/

#include

#define uchar unsigned char

#define uint unsigned int

__CONFIG(0x3B31);

const unsigned char table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};  //数码管数组

uchar key_num;

void delay(uint x)  //延时函数

{

uint a,b;

for(a=x;a>0;a--)

  for(b=110;b>0;b--);

}

void scan();   //扫描键盘函数  声明

void didi(uchar num); //蜂鸣器响 函数 声明

void disp(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6,uchar num7); //数码管显示 声明

//-----------------------------------------------------------------------------------

void init()        //初始化函数

{

TRISA=0x00; 


TRISB=0xff;  


TRISC=0X00;


TRISD=0x00; 


TRISE=0x00;  


PORTC=0Xff;  


PORTD=0x00; 


}

//-------------------主函数-----------------------------------------------------------

void main()

{

init ();

while(1)

{

scan();   //扫描键盘

disp(key_num,2,3,4,5,6,7,8); //后面的直接传给数码管而第一个是几,我们要用键盘来检测,则第一个变量由key_num

}

}

//-------------------------------------------------------------------------------------


void didi(uchar num) //蜂鸣器函数,num响几声

{

uchar di_num; //di_num响几声

for(di_num=num;di_num>0;di_num--)

  {

  RE0=1;

  delay(100);

  RE0=0;

  delay(50);

  }

}

void scan()  

if(RB0==0)

  {

  delay(10); 


  if(RB0==0)

   {

   didi(1);

   while(!RB0); 


//   PORTD=0x01;  //若写成RD0=1;也可,不过呢,会出现灯亮了之后不会灭掉,还得加清零(灭灯)

   key_num=1;

   }

  }

if(RB1==0)

  {

  delay(10); 


  if(RB1==0)

   {

   didi(2);

   while(!RB1);


//   PORTD=0x02;

   key_num=2;

   }

  }

if(RB2==0)

  {

  delay(10); 


  if(RB2==0)

   {

   didi(3);

   while(!RB2);


//   PORTD=0x04;

   key_num=3;

   }

  }

if(RB3==0)

  {

  delay(10); 


  if(RB3==0)

   {

   didi(4);

   while(!RB3); 


//   PORTD=0x08;

   key_num=4;

   }

  }

}


//---------------------------数码管显示函数,数组------------------------------------------------

void disp(uchar num0,uchar num1,uchar num2,uchar num3,uchar num4,uchar num5,uchar num6,uchar num7)

{

PORTD=table[num0];

PORTA=0x00;  //第一个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num1];

PORTA=0x02;  //第二个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num2];

PORTA=0x04;  //第三个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num3];

PORTA=0x06;  //第四个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num4];

PORTA=0x08;  //第五个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num5];

PORTA=0x0A;  //第六个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num6];

PORTA=0x0c;  //第七个数码管选通

delay(2);  //延时,显示2ms


PORTD=table[num7];

PORTA=0x0e;  //第八个数码管选通

delay(2);  //延时,显示2ms

}


关键字:PIC单片机  独立键盘  蜂鸣器  数码管 引用地址:PIC单片机开发板独立键盘扫描+蜂鸣器响+数码管 C程序代码

上一篇:PIC单片机温感器DS18B20 C语言程序代码
下一篇:PIC单片机开发板:数码管动态扫描程序,显示静态效果

推荐阅读

  近日,神州控股旗下科捷物流在北京发布了“人机共舞2.0”立体高密度机器人智能仓,该技术采用“货到人”模式,将技术与现有物流业务流程充分融合,属国内首例。   神州控股科捷物流常务副总裁陈滔滔介绍,相较于业内传统地面机器人“货到人”系统,该机器人拣选系统运用天地轨运行自动控制技术,采取空中悬挂机器人模式,突破了传统机器人仅能在...
上周五,国电南瑞公告拟与亿嘉和三源电力共同出资设立国网瑞嘉智能机器人有限公司,新公司主要定位于从事电力作业机器人、特种车辆及带电作业工器具等相关软、硬件的研发、设计、生产、销售及服务。业内认为这将为泛在电力建设再添新动作。 公告显示,国电南瑞持有国网瑞嘉智能机器人有限公司40%的股权,亿嘉和与三源动力持股比例分别为40%和20%。 电...
作为国内知名AMOLED面板厂商,和辉光电可谓是含着“金钥匙”出生。近年来在上海国资委的大力支持下,和辉光电迎来快速发展。据Omdia统计,2019年度,和辉光电占据全球AMOLED市场出货量的4.57%,在国内仅次于京东方;在细分智能手机类AMOLED出货量方面,和辉光电以3.80%的份额位居全球第2名,仅次于三星电子。不过,出货量的快速增加并没有给和辉光电带来...
Arteris® IP推出Harmony Trace™️ Design Data Intelligence解决方案助力实现系统级芯片半导体设计自动追溯通过创建和维护不同系统之间的可追溯性,基于服务器的企业级应用可以提高系统质量,并实现更快的功能安全认证。美国加利福尼亚州坎贝尔2021年11月16日消息–业界领先的提供片上网络 (NoC)互连 IP和IP部署技术以加快SoC创建的系统级芯片(So...

史海拾趣

问答坊 | AI 解惑

求助 使用MC34063设计DC-DC变换器 急!!!

使用MC34063设计DC-DC变换器 参数要求如下; 1 交流输入15V 2 直流输出3~12V可调3   效率70%以上 4  输出纹波小于200mV 5 最大输出电流 500mA 且带过流保护。。 请把懂得的发上来,谢谢拉!!…

查看全部问答∨

8051单片机实践与应用

8051单片机实践与应用…

查看全部问答∨

求助!如何获取本地蓝牙设备的名称并修改

就是我的wince设备在被别的蓝牙设备(如蓝牙手机)搜索到的时候会有一个名称, 我现在想再本地去修改这个名称,该怎么做啊? 看了 MSDN 关于蓝牙这块的东西,始终没有找到,google也没有相关的介绍,求大家帮忙, 给个提示也行啊!…

查看全部问答∨

谁知道有IM字节的EEPROM吗?

谁知道有IM字节的EEPROM吗?…

查看全部问答∨

WinCE6.0下驱动程序中文件操作API有哪些?

大家好,第一次发帖。 最近在编写WinCE6.0下的驱动程序,想要在驱动程序中直接对文件进行操作,而不想在用户程序中读文件再用WriteFile或DeviceIOControl将数据传到驱动程序中,但没找到对应的API,求高手指导。谢谢了…

查看全部问答∨

Wince6.0下这样的窗体风格如何实现?

软件平台:wince6.0 硬件平台:UT-S3C6410开发板 我做了个控制音量的系统托盘程序,但是我向往窗口风格像XP下的那样,有立体的感觉 可是我的风格却只能这样,扁平的窗口 http://i3.6.cn/cvbnm/be/fb/90/8de0ce4c7163006c7feb4f5526a0ffc6.j ...…

查看全部问答∨

2440 camera 问题 急!!

请教2440的camera 驱动中Display_Cam_Image中用memcpy将P模式DMA buffer中拷到LCD 显示buffer中 memcpy((void *)(FRAMEBUF_BASE+ (240*pos_y + pos_x) + y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2); 1,2参数都是物理地址--WHY??? 为什么 ...…

查看全部问答∨

WINCE5.0如何更改点击触摸屏声音?

在wince 5.0下如何更改点击触摸屏的声音. 请帮忙,谢谢。…

查看全部问答∨

tlp521-1的1脚和2脚间一定要加电阻吗?加多大?有什么作用?急!!!

tlp521-1的1脚和2脚间一定要加电阻吗?加多大?有什么作用?急!!!…

查看全部问答∨

终于研发成功

终于研发成功,cpu是s3c2410,64M   SDRAM,网口为cs8900 flash(k9f1208 64m)   实现了只用nand flash 就可以启动引导vxworks. 公司送bsp及全套开发文档 ,另可配公司的开发板 有意着QQ联系641328010 请注明 arm…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved