打印

mcu

[复制链接]
1202|18
手机看帖
扫描二维码
随时随地手机跟帖
沙发
tyw| | 2015-8-23 16:14 | 只看该作者
板凳
samlianxing|  楼主 | 2015-8-23 16:35 | 只看该作者
还是一样,
按键按下数码管不亮

使用特权

评论回复
地板
tyw| | 2015-8-23 16:46 | 只看该作者
samlianxing 发表于 2015-8-23 16:35
还是一样,
按键按下数码管不亮

把你的硬件电路图贴上来

使用特权

评论回复
5
gx_huang| | 2015-8-23 16:57 | 只看该作者
来自星星的你!

使用特权

评论回复
6
通宵敲代码| | 2015-8-23 17:06 | 只看该作者
这也太简单了吗

使用特权

评论回复
7
samlianxing|  楼主 | 2015-8-23 18:10 | 只看该作者
懂的就简单,不懂就复雜,你懂的就给个例子

使用特权

评论回复
8
samlianxing|  楼主 | 2015-8-23 18:16 | 只看该作者
tyw 发表于 2015-8-23 16:46
把你的硬件电路图贴上来

用at89c2051,要怎改,程序如下:

#include <reg52.h>
sbit wei0=P3^0; //千位
sbit wei1=P3^1; //百位
sbit wei2=P3^2; //十位
sbit wei3=P3^4; //个位
sbit key_add=P3^3;
unsigned char code LedChar[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

void delay(unsigned int time);
unsigned char i=0; //动态扫描的索引
unsigned int cnt=0; //记录 T0 中断次数
void main()
{
unsigned long num=0; //记录经过的秒数
EA=1; //开总中断
TMOD=0x01; //设置 T0 为模式 1
TH0=0xB8; //为 T0 赋初值 0xFC67定时 1ms
TL0=0x00;
ET0=1; //使能 T0 中断
TR0=1; //启动 T0
while (1)
{
  if(key_add==0)
     {
      while(key_add==0);
      if(num<10000)
      num++;                         
   if(num==10000)
     num=0;
     }
   wei3=0;
   P0=LedChar[num/10%10];   
   wei3=1;
   delay(5);

   wei2=0;
   P0=LedChar[num/100%10];   
   wei2=1;
   delay(5);

   wei1=0;
   P0=LedChar[num/1000%10];
   wei1=1;
   delay(5);   

   wei0=0;
   P0=LedChar[num%10];
   wei0=1;
   delay(5);

      }
}

void delay(unsigned int time)
{
while(time--);//1us
}
/* 定时器 0 中断服务函数 */
void InterruptTimer0() interrupt 1
{
TH0 = 0xFC; //重新加载初值
TL0 = 0x67;
cnt++; //中断次数计数值加 1
}

使用特权

评论回复
9
samlianxing|  楼主 | 2015-8-23 18:16 | 只看该作者
tyw 发表于 2015-8-23 16:46
把你的硬件电路图贴上来

用at89c2051,要怎改,程序如下:

#include <reg52.h>
sbit wei0=P3^0; //千位
sbit wei1=P3^1; //百位
sbit wei2=P3^2; //十位
sbit wei3=P3^4; //个位
sbit key_add=P3^3;
unsigned char code LedChar[] = { 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E };

void delay(unsigned int time);
unsigned char i=0; //动态扫描的索引
unsigned int cnt=0; //记录 T0 中断次数
void main()
{
unsigned long num=0; //记录经过的秒数
EA=1; //开总中断
TMOD=0x01; //设置 T0 为模式 1
TH0=0xB8; //为 T0 赋初值 0xFC67定时 1ms
TL0=0x00;
ET0=1; //使能 T0 中断
TR0=1; //启动 T0
while (1)
{
  if(key_add==0)
     {
      while(key_add==0);
      if(num<10000)
      num++;                         
   if(num==10000)
     num=0;
     }
   wei3=0;
   P0=LedChar[num/10%10];   
   wei3=1;
   delay(5);

   wei2=0;
   P0=LedChar[num/100%10];   
   wei2=1;
   delay(5);

   wei1=0;
   P0=LedChar[num/1000%10];
   wei1=1;
   delay(5);   

   wei0=0;
   P0=LedChar[num%10];
   wei0=1;
   delay(5);

      }
}

void delay(unsigned int time)
{
while(time--);//1us
}
/* 定时器 0 中断服务函数 */
void InterruptTimer0() interrupt 1
{
TH0 = 0xFC; //重新加载初值
TL0 = 0x67;
cnt++; //中断次数计数值加 1
}

使用特权

评论回复
10
小群儿| | 2015-8-23 20:17 | 只看该作者
samlianxing 发表于 2015-8-23 18:16
用at89c2051,要怎改,程序如下:

#include  

你自己会不会学一下?没一点基础,说了你也不懂,看懂每句话,自然不是问题

使用特权

评论回复
11
songchenping| | 2015-8-23 20:52 | 只看该作者
这里不是幼儿园, 没人给你叫123怎么写。

使用特权

评论回复
12
zhangbtj| | 2015-8-23 21:11 | 只看该作者
很多单片机书上都应该能找到吧

使用特权

评论回复
13
皈依| | 2015-8-23 22:25 | 只看该作者

使用特权

评论回复
14
加油吧小鱼儿| | 2015-8-23 22:27 | 只看该作者

使用特权

评论回复
15
samlianxing|  楼主 | 2015-8-23 22:47 | 只看该作者
失望,只会吹水,没人懂

使用特权

评论回复
16
松哥无敌| | 2015-8-23 23:27 | 只看该作者
samlianxing 发表于 2015-8-23 22:47
失望,只会吹水,没人懂

不是么人懂,不是想搭理你。这种问题就别贴上来了,没劲

使用特权

评论回复
17
strang| | 2015-8-24 08:48 | 只看该作者
哎 提问题的人表达能力欠佳啊

使用特权

评论回复
18
wanggang4383| | 2015-8-24 09:08 | 只看该作者
中断定时不知道有什么用
wei3=0;
   P0=LedChar[num/10%10];   
   wei3=1;
   delay(5);
这几句是不是应该交换下顺序啊?
wei3=1;
P0=LedChar[num/10%10];   
delay(5);
wei3=0;



使用特权

评论回复
19
nethopper| | 2015-8-24 09:49 | 只看该作者
每个字符灭的时间太长,亮的时间太短,大大地加大扫描显示每个字符用的后一个delay(XXXX), 应该就会亮。你那个delay子程序是否是1微妙还不清楚。另外如楼上所述,中断没用上。可能应该用来改变NUM吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

24

帖子

0

粉丝