历史上的今天
返回首页

历史上的今天

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

正在发生

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

2019-11-18 来源:51hei

/*

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

犯的错: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

}


推荐阅读

史海拾趣

南晶电子(DGNJDZ)公司的发展小趣事

随着市场竞争的加剧,南晶电子意识到技术创新是企业发展的核心动力。公司投入大量研发资金,与多所高校和科研机构建立合作关系,共同研发新型半导体器件。经过不懈努力,南晶电子成功推出了一系列具有自主知识产权的高性能产品,赢得了市场的广泛认可。

Foxconn_Optical_Interconnect_Technologies__Inc.公司的发展小趣事

在发展过程中,南晶电子始终秉持合作共赢的理念。公司与上下游企业建立了紧密的合作关系,共同推动产业链的发展。同时,南晶电子还积极参与社会公益事业,为社会进步和发展贡献自己的力量。通过与各方的共同努力,南晶电子在电子行业树立了良好的企业形象和口碑。

思瑞浦微电子科技(3PEAK INCORPORATED)公司的发展小趣事

在产品质量和技术水平得到认可后,南晶电子开始积极拓展市场。公司参加了多场国内外电子展会,与众多客户建立了合作关系。同时,南晶电子还加大了营销力度,通过线上线下相结合的方式,提高了品牌知名度和市场占有率。在短短几年内,公司实现了从国内市场到国际市场的跨越式发展。

DELTA公司的发展小趣事

面对全球能源危机和环保意识的提高,Delta公司敏锐地捕捉到了能源管理市场的巨大潜力。于是,公司开始积极拓展能源管理业务,通过系统集成与解决方案,帮助客户提升效能、降低运营成本与资本支出。Delta的能源管理业务涵盖了工业自动化、太阳能、风能、车用电子与通讯电源等多个领域,为全球客户提供了全方位的能源管理解决方案。

ADI Electronics Inc公司的发展小趣事

随着全球化进程的加速,ADI也逐渐将业务拓展至全球范围。公司不仅在全球各地设立了研发中心和销售网络,还与众多国际知名企业建立了战略合作关系。这些合作不仅为ADI带来了更多的商业机会,也使其能够更好地了解全球市场的需求和趋势,为公司的长远发展奠定了坚实基础。

这五个故事展示了ADI Electronics Inc公司从创业初始到发展成为电子行业领军企业的过程。通过不断创新、并购重组和全球化拓展,ADI成功地在激烈的市场竞争中脱颖而出,成为一家备受尊敬的企业。

请注意,由于无法实时获取ADI的最新发展动态,上述故事中的部分细节可能已随时间发生变化。如需获取更详细和准确的信息,建议查阅ADI的官方网站或相关新闻报道。

Eon公司的发展小趣事

除了天然气业务外,E.ON还致力于电力市场的拓展。通过与其他电力公司的合作和并购,E.ON逐渐扩大了在欧洲电力市场的份额。特别是在2003年收购德国鲁尔天然气公司后,E.ON间接持有了俄天然气公司的股份,进一步巩固了其在欧洲能源市场的地位。

问答坊 | AI 解惑

用VHDL语言设计一般的与非门和集电极开路的与非门

在组合逻辑中,有时候需要使输出一脚的驱动能力加强,就要用集电极开路的输出引脚。 但是两者差别不大,只是在调用时,从不同的库中调用。 集电极开路的输入与非门电路调用STD库的std_ttloc包集合,二一般的输入与非门电路则调用std库的std-tll包 ...…

查看全部问答>

如何让机械表省电←省电精灵

如何让机械表省电←省电精灵c卡预付费电表控制器※电表倒转QQ:272208552 电话:13115998303 如何让插卡电表倒走,【网站打不开请点百度快照】如何使电表慢走 电表倒转的原因 ic卡电表偷电方法 电表节电器控制器电表控制器,电表干扰器:微电脑控表器 ...…

查看全部问答>

使用winio方式动态加载ctrl2cap.sys,无法createFile

各位高人我现在学习键盘过滤驱动,用ctrl2cap改的,可是我却不能动态加载,我使用winio的形式做,发现能启动服务,但是在services.msc中找不到(我用同样方式做的一个应用程序的服务,就可以找到). 但是却不能打开hanlde. HANDLE hDriver = CreateF ...…

查看全部问答>

EVB的打印问题,100分求助,在线急等~~

有一组数据,存放在文本文件里面,格式是: \"时间1\" \"数据1\" \"时间2\" \"数据2\"   .   .   . \"时间N\" \"数据N\" 要求打印相关数据的曲线图~~ 想了半天头都想痛了~给源代码的再加100分…

查看全部问答>

关于shell里面 d 查看内存数据命令的详细用法 ---在线等

关于shell里面 d 查看内存数据命令的详细用法,没有在网上查到,很困扰 只知道简单的使用 d 0x1231231这个命令,但是显示多长,何种格式显示如何设置就不清楚了…

查看全部问答>

verify failded?

哪位大哥能帮我看看这是出了什么问题啊,总是VERIFY FAILDE...        …

查看全部问答>

上海新成立物联网公司招募创业团队!!!-待遇:工资+奖金+上市期权

上海新成立物联网公司定位为物联网行业解决方案供应商,为行业客户提供物联网应用全面解决方案!美国上市公司投资、注册资金1000万,目标2年内上市待遇:工资+项目奖金+上市前分配期权现招聘创业团队,.NET方面开发人员,RF工程师、硬件工程师、mcu ...…

查看全部问答>

各位弄个CCD的兄弟们帮帮忙进来看看 实在是没办法了

我现在要用FPGA做一个 ICX274CCD 驱动 里面有AD9949,问题来了 AD9949里面的双采样SHP SHD    默认 SHP = 0X24 SHD = 0X00 可是我老觉得不对 我觉得SHP=0x18    而SHD = 0x56 才对 各位大哥 到底是用默认值还是要自己设定 ...…

查看全部问答>

求高手

本帖最后由 paulhyde 于 2014-9-15 04:27 编辑 有没有人平时比较空的,能帮助我解决一些问题啊,我在单片机方面不是很专业,需要一个师傅带着,我可以拜他为师,还请师傅不要嫌弃我,回一下我的帖吧!跪谢!!我的qq:335947998 加我的时候最 ...…

查看全部问答>

串口

调试串口时,把驱动库拷贝到工程下面了,但是uart.h无法找到sysctl.h文件或路径不对,等把路径定位到该工程时,出现main.c: Error: C3065E: type of input file \'com\' unknown问题,如何解决啊,高手们啊?…

查看全部问答>