请各位大神帮我看下代码那里问题
#include
#include
#define uchar unsigned char
#define uint unsigned int
uint count=0,sec=0;
uchar table[10]=
{0Xfc,0X60,0Xda,0xf2,
0x66,0xb6,0xbe,0xe0,0xfe,
0xf6,};
uchar wei[]=
{0Xfe,0Xfd
};
void Delay10ms() //@12.000MHz //延时10MS//STC软件复制
{
unsigned char i, j;
i = 20;
j = 113;
do
{
while (--j);
} while (--i);
}
void display() //显示函数//
{
uchar i,temp=0x01;
wei[1]=sec/10;
wei[0]=sec%10;
for(i=0;i<2;i++)
{
P0=table[wei];
P1=temp;
Delay10ms();
P0=0XFF;
P1=0XFF;
temp<<=1;
}
}
void time0()interrupt 1
{
TH0=(65536-50000); //高8位给初值//
TL0=(65536-50000); //低8位给初值//
if(++count==50) //定时器延时1秒//
{
count=0; //到1秒清零//
sec++; //开始计数//
if(sec==60) //如果计数到60秒就清0//
sec=0;
}
}
void main(void)
{
TMOD=0X01; //开启定时器0//
TH0=(65536-50000); //高8位给初值//
TL0=(65536-50000); //低8位给初值//
IE=0X82;
TR0=1; //开启计数//
while(1) //循环计数//
{
display();
}
}
共阴数码管却选择了共阳数码的位选方式,从程序看P0口是段选,P1口是位选,所以把位选改一改应该就可以了
把 P0=table[wei];
P1=temp;
Delay10ms();
P0=0XFF;
P1=0XFF;
temp<<=1;
里的P1=temp;,改为P1=~temp;,就是取个反
最佳答案
我也是刚学的单片机。 你显示函数里的P1=0XFF不是就选 中了全部数码管吗?我也不懂 就算我说错了 也别太在意哈。
数码管共阴极,0XFF,是关闭数码管显示,百度一下看一下数码管的连接方式,是不是table里面的数组错了,具体怎么显示的又没有照片,只能推断了
达菲奇 发表于 2017-9-21 16:55
数码管共阴极,0XFF,是关闭数码管显示,百度一下看一下数码管的连接方式,是不是table里面的数组错了,具体怎么显示的又没有照片,只能推断了
这个简单,明日再来回答你的问题。有事先下了。
修罗君 发表于 2017-9-21 18:33
如果是共阴数码管那他0到10的数组好像就是不正确的吧?
达菲奇 发表于 2017-9-22 08:52
不用如果,这就是共阴极
修罗君 发表于 2017-9-22 11:43
我都懵逼了。。。。0x3F,0x06, 0x5B, 0x4F,0x66,0x6D,0x7D, 0x07, 0x7F, 0x6F,
共阴极的数组不是这个吗?麻烦你给我解释下是不是楼主上面的是另外一种方法?我也是刚学。
想要控制哪个数码管灭,就给阴极加上高电平,就是J16,P1脚,代码里面的temp
按照人中狼 的程序,只要把P1口取反即可。P1=~temp.
今日家庭影院音响的理想设计方案让家庭影院系统区别于普通的带立体声扬声器电视的最大特点就是侧面和背部的扬声器。一个标准的家庭影院系统有三个前置扬声器,两个侧置和后扬声器,还有一个辅助低音喇叭。绝大多数消费者不安装后置扬声器,因为他们
大容量航空地面静止变频电源研制摘要:详细介绍了60 kVA~1 80 kVA系列大容量航空地面静变电源的研制过程。经过论证.功率变换部分采用三相半控整流、三组单相全桥逆变器加单相变压器的总体方案,实现了对输入侧电网的软起动和三相输
高频电感损耗问题电感铁损公式如下:
F从300K提高到600K,频率提升,磁芯体积会变小。所以初步估计整个磁损可能变化不大。
问题是,磁芯减小后,磁芯热阻变大,所能耗散的功率也变小了,温度也会上升