单片机学习——独立按键之三

发布者:剑戟辉煌最新更新时间:2016-01-20 来源: eefocus关键字:单片机  独立按键 手机看文章 扫描二维码
随时随地手机看文章
题目:按下16个矩阵键盘依次在数码管上显示1-16的平方。如按下第一个显示1,第二个显示4...
解决方案:(C语言编程)
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar bai,shi,ge,num,temp;
uint shu;
sbit le=P3^6;
void delay(uint a);
void dis();
void display(uchar ba,uchar sh,uchar g);
uchar code tabledu[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,
0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x89,0x86,0xc7,0xc7,0xc0,0xff};
uchar code tablewe[]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main()
{
 while(1){ 
  P1=0xfe;
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
   delay(5);
   temp=P1;
   temp=temp&0xf0;
   while(temp!=0xf0)
   {
     temp=P1;
     switch(temp)
              {
      case 0x7e:shu=16 ;break;
      case 0xbe:shu=15 ;break;
      case 0xde:shu=14 ;break;
      case 0xee:shu=13 ;break;
              }
     while(temp!=0xf0)
     {
      temp=P1;
      temp=temp&0xf0;
     }
     shu=shu*shu;
   }
  }
  bai=shu/100;
        shi=shu%100/10;
      ge=shu%10;
  display(bai,shi,ge);
  P1=0xfd;
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
   delay(5);
   temp=P1;
   temp=temp&0xf0;
   while(temp!=0xf0)
   {
     temp=P1;
     switch(temp)
              {
      case 0x7d:shu=12 ;break;
      case 0xbd:shu=11 ;break;
      case 0xdd:shu=10 ;break;
      case 0xed:shu=9 ;break;
              }
     while(temp!=0xf0)
     {
      temp=P1;
      temp=temp&0xf0;
     }
     shu=shu*shu;
   }
  }
  bai=shu/100;
        shi=shu%100/10;
   ge=shu%10;
  display(bai,shi,ge);
  P1=0xfb;
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
   delay(5);
   temp=P1;
   temp=temp&0xf0;
   while(temp!=0xf0)
   {
     temp=P1;
     switch(temp)
              {
      case 0x7b:shu=8 ;break;
      case 0xbb:shu=7 ;break;
      case 0xdb:shu=6 ;break;
      case 0xeb:shu=5 ;break;
              }
     while(temp!=0xf0)
     {
      temp=P1;
      temp=temp&0xf0;
     }
     shu=shu*shu;
   }
  }
  bai=shu/100;
        shi=shu%100/10;
   ge=shu%10;
  display(bai,shi,ge);
  P1=0xf7;
  temp=P1;
  temp=temp&0xf0;
  while(temp!=0xf0)
  {
   delay(5);
   temp=P1;
   temp=temp&0xf0;
   while(temp!=0xf0)
   {
     temp=P1;
     switch(temp)
              {
      case 0x77:shu=4 ;break;
      case 0xb7:shu=3 ;break;
      case 0xd7:shu=2 ;break;
      case 0xe7:shu=1 ;break;
              }
     while(temp!=0xf0)
     {
      temp=P1;
      temp=temp&0xf0;
     }
     shu=shu*shu;
   }
  }
  bai=shu/100;
        shi=shu%100/10;
      ge=shu%10;
  display(bai,shi,ge); 
    }
}
void display(uchar ba,uchar sh,uchar g)
{
 le=1;
 P2=tablewe[1];
 le=0;
 le=1;
 P0=tabledu[ba];
 le=0;
 delay(5);
 le=1;
 P2=tablewe[2];
 le=0;
 le=1;
 P0=tabledu[sh];
 le=0;
 delay(5);
 le=1;
 P2=tablewe[3];
 le=0;
 le=1;
 P0=tabledu[g];
 le=0;
 delay(5);
}
void delay(uint a) {
 uint i,j;
 for(j=a;j>0;j--)
     for(i=250;i>0;i--);
}
关键字:单片机  独立按键 引用地址:单片机学习——独立按键之三

上一篇:单片机学习——独立按键之四
下一篇:单片机学习——独立按键之二

推荐阅读最新更新时间:2024-03-16 14:44

单片机基础之PIC单片机之I/O控制
I/O控制对于单片机而言是最基础最核心的东西,其实单片机除了AD DA 转换之外的事情。其他大部分的事情I/O口都能做的到。I/O控制简单却能千变万化。 单片机在大部分应用中做的事情,莫过于 输入高低电平 ,输出高低电平。就是通过这简单的控制电平来实现大多数的应用控制。 什么是I/O口? 什么是I/O 就是 IN/OUT 就是 输入/输出。 I/O具体能做什么呢? 如果你是刚刚步入电子的新手,那你最好要知道一下I/O口具体能做什么。感性的认识对你的学习是很有帮助的。I/O口输出一个高(低)电平可以用来点亮一个LED灯,可以接通过一个继电器,来开启电机,来开启音响。开启许多的东西,也可以用于通信等等。输入一个高(
[单片机]
<font color='red'>单片机</font>基础之PIC<font color='red'>单片机</font>之I/O控制
单片机_rom_ram,程序容量之迷
引言 单片机的内存有大小之分,内存大的相对较贵,如何选择大小,是个头疼问题,此文是自己在编程过程中遇到和ram,rom大小有关的问题。 1.单片机中xdata 和data xdata是指片外的ram数据,data是指内部的ram数据。 而STC15中会有逻辑在外,实际在内的ram。如下图: 图1 上图摘自stc15的手册中,如果你的单片机ram只有128个字节,所以选择Memory Model时乖乖选择:Small。如下图: 图2 因为Large 模式,会选择外部ram存放和读取数据,你只有内部ram,所以程序会死(实践中我的串口通讯失效)。 所以官方建议: Memory Model : Speci
[单片机]
<font color='red'>单片机</font>_rom_ram,程序容量之迷
[单片机框架][bsp层][nrf51822][nrf51422][nrf51802][bsp_key] KEY配置和使用
按键的基本原理是设置单片机IO口(PB0-PB3)为输入状态,如DDRB = 0XF0(方向寄存器,“1”为输出,“0”为输入); 单片机一直检测按键端口(PB0-PB3)的状态,当端口为低电平时(即按键按下),实行相应的动作(比如控制LED灯)。 原理就是这么回事,但是正真实现时,按键会有抖动,要进行按键去抖,下图为按键按下时的抖动图。 按键实行一个动作过程是需要一定时间的,一般为100mS-1S左右,而一个单片机执行一个机器周期的时间很短,时钟为10MH的周期为0.1μs,这样按键每一次动作程序就会多次检测按键,出现误判(一次按下,多次动作)。 /********************************
[单片机]
单片机方案开发注意事项及如何挑选PIC单片机进行学习
  要对PIC单片机进行编程,你需要了解特定的开发工具的基本构件,例如配置寄存器,总线和存储器类型。理解C编程语言、汇编语言等单片机开发语言等。此外,选择正确的软件开发工具集还可以使升级更加容易和快捷。   许多PIC的基础内存体系结构是哈佛体系结构,该体系结构广泛应用于英特尔8051单片机中。哈佛结构具有一个用于存储程序命令的存储空间,并为运行内存额外分配空间,单独的存储空间(可以是片上闪存,ROM,RAM或外部芯片)通常可以提高程序执行速度。   在对单片机方案开发之前,我们必须明确将要用于设计的PIC单片机。其中,8位PIC是一个不错的选择,因为它们的成本通常低于16位和32位MCU,并具有足够的外设集(例如A/D转
[单片机]
基于AT89S51单片机的PWM专用信号发生器的设计
   1 引言   涡流无损检测作为无损检测应用最广泛的方法之一,具有传感器结构简单、灵敏度高、测量范围大、不受油污等介质影响、抗干扰能力强等优点,已被广泛应用于冶金、机械、化工、航空等多个工业部门。然而由于受趋肤效应的影响,常被限制在对导体表面及亚表面层的检测上,这使其检测应用范围受到了很大的限制。但是,若检测线圈在脉冲激励作用下,因脉冲信号中含有丰富、连续的频率成分,所以检测线圈中所得到的信息不仅包含了被检测    试件的表面、亚表面信息,还包含其深度信息,能够对材质以及缺陷进行定量评价。而脉冲信号的波形、频率、幅值、占空比等参数的改变对检测结果有着不同的影响。因此为了获得不同的脉冲激励下的检测结果。特制作了这一专用高精度
[单片机]
基于AT89S51<font color='red'>单片机</font>的PWM专用信号发生器的设计
单片机C语言程序设计:ADC0809数模转换与显示
ADC0809 数模转换与显示c语言程序 /*名称:ADC0809数模转换与显示 说明:ADC0809采样通道3输入的 模拟量,转换后的结果显示在数码管上。 */ #include《reg51.h》 #defineucharunsignedchar #defineuintunsignedint //各数字的数码管段码(共阴) ucharcodeDSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbitCLK=P1^3;//时钟信号 sbitST=P1^2;//启动信号 sbitEOC=P1^1;//转换结束
[嵌入式]
51单片机是冯诺依曼结构还是哈佛结构?
简介:有人说51地址线复用,就是冯诺依曼结构。很多入门的书上基本上都说:由运算器、控制器、存储器、输入设备、输出设备组成的系统 都叫冯氏结构。 也有的说:“程序存储器的数据线地址线”与“数据存储器的数据线地址线”共用的话,就 是冯氏结构,所以51是该结构。 关于这个问题,有人说51地址线复用,就是冯诺依曼结构。很多入门的书上基本上都说:由运算器、控制器、存储器、输入设备、输出设备组成的系统 都叫冯氏结构。 也有的说:“程序存储器的数据线地址线”与“数据存储器的数据线地址线”共用的话,就 是冯氏结构,所以51是该结构。(我认为说得太绝对了) 我认为冯氏结构与哈佛结构的区别应该在存储器的空间分别上,哈佛结构的数据区和代码区是分开的
[单片机]
51<font color='red'>单片机</font>是冯诺依曼结构还是哈佛结构?
单片机实现无线呼叫系统设计
  随着科技的进步以及生活质量的不断提高,产生了各种不同类型的呼叫系统。传统的 呼叫系统 多是有线的,比如采用分布控制方式的单片机系统,主机和呼叫器的应答通过一根三芯导线,包括电源线、信号线、地线来完成,各呼叫器并行挂接。这样的系统存在着布线繁琐,安装麻烦、成本高等问题,针对这些问题,无线呼叫系统逐渐发展起来,越来越多的研究者将目光投向了无线领域。   1 系统设计方案   低功耗无线呼叫系统的发送和接收模块的框图如图1,图2所示。      其中图1为无线发送模块,以STC89C52RC为主控制核心,及时响应终端的呼叫信息,然后利用nRF905无线传输模块将呼叫信息发送给无线接收模块进行处理。   图2为无
[单片机]
<font color='red'>单片机</font>实现无线呼叫系统设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved