| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1243 人关注过本帖
标题:求助:三位数码管的输入和显示
只看楼主 加入收藏
luzhao18
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-6-4
收藏
 问题点数:0 回复次数:1 
求助:三位数码管的输入和显示
各位大虾,帮我看看如何实现这个功能,我是初学者,肯请大家指教。另外我用的软件是keil。

MCU是89s52,要实现的功能是:依次输入三个数,然后用三个数码管显示。第一个数显示在百位,第二个在十位,第三个在个位。在程序中我用了中断,端口定义:

P0:输出数   

P2:显示位

P3.2:有键按下就中断

P1:4*4按键

目前我的程序只能实现一位输入,程序如下:

#include<reg52.h>

unsigned char code sendbuf[] =         //段码
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};  
              
unsigned char code scan_bit[8] =       //位码
{0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};      

unsigned char code key_code[] =
{
  0xee, 0xed, 0xeb, 0xe7, 0xde, 0xdd, 0xdb, 0xd7, 0xbe, 0xbd, 0xbb,
  0xb7, 0x7e, 0x7d, 0x7b, 0x77
};               //键编码数组
unsigned char display[3];         //显示缓存
unsigned int count;          //输入数,全局变量

void delayms(unsigned int ms)   //延时程序
{
    unsigned char k;
 while(ms--)
 for(k=0;k<124;k++);
}
void display_count()     //显示程序
{
    unsigned char temp,n;
 temp=count;
 for(n=0;n<=1;n++)
 {
     display[n]=temp%10;    //从低位到高位把数存入缓存(从个位到十位)
  temp=temp/10;
 }
 display[2]=temp;     //百位数
/* for(n=2;n>0;n--)
 {
     if(display[n]==0)
  display[n]=0x0a;    //百位或十位如果为0,则不显示
  else
  break;
 }    */
 for(n=0;n<3;n++)      //输入数在数码管上显示
 {
     P0=sendbuf[display[n]];
  P2=scan_bit[n];
  delayms(1);
  P2=0xff;
 }
}
void main()
{
    P0=0xff;
 P1=0x00;
 P2=0xff;
 
 IT0=0;
    EA=1;
 EX0=1;

 while(1)
 {
     display_count();
 }
}
void keyscan()
{
  unsigned char scan1, scan2, keycode, j;

  P1 = 0xf0;
  scan1 = P1;
  if (scan1 != 0xf0)
  //判键是否按下
  {
    delayms(10); //延时10ms
    scan1 = P1;
    if (scan1 != 0xf0)
    //二次判键是否按下
    {
      P1 = 0x0f;
      scan2 = P1;
      keycode = scan1 | scan2; //组合成键扫描编码

      for (j = 0; j < 16; j++)
      {
        if (keycode == key_code[j])
        //查表得键值
        {
           count=j;
        }
      }
    }
  }
}

void INT0_ISR(void) interrupt 0
{
    unsigned char x;
 EX0=0;
    keyscan();
 for(x=0;x<30;x++)
 {
     display_count();
 }   
 EX0=1;
 IE0=0;
}
搜索更多相关主题的帖子: 数码管 输入 
2009-08-03 20:24
luzhao18
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-6-4
收藏
得分:0 
luzhao18
没人帮我,郁闷!!!
2009-08-04 22:31
快速回复:求助:三位数码管的输入和显示
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015240 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved