急求:共阳数码管动态显示程序!!

来源:百度知道 编辑:UC知道 时间:2024/06/16 19:29:37
数码管是四位八段共阳的,单片机是Atmega16的。数码管的引脚是直接与单片机相连。用ICCavr C语言编程。

我是菜鸟一个,也可以教我怎么编(越详细越好) 或者教我怎么从共阴的程序中,修改成共阳的!!
有需要,发到我邮箱:xzf962@126.com

在我的能力范围~
首先,你的数码管直接接在ATMEGA16上,我觉得太浪费了,AVR是很强大的单片机,你可以考虑一些接个74ls47在数据口,剩I/O口嘛,既然你要是直接接的话,我就按你说的做吧~!
#include<iom16v.h>
typedef unsigned char unchar;
typedef unsigned int unint;
unint num;
unchar word[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
/////////////这里当然不是0x00啦~!自己用仿真软件,把数码管调出来一个一个脚试!!我也是初学啊!要动手的!总是问别人,会丢掉学习的机会,当有的问题,别人帮你解决了,但你还是不懂,而别人却又吸收了新知识!
void delay(unchar i)
{
unchar j;
for(;i>0;i--)
for(j=0;j<250;j++);
}
void main()
{
DDRC=OXFF;
DDRD=0XFF;
while(1)
{
PORTD=0X08;
PORTC=word[num/1000];
delay(5);
PORTD=0X04;
PORTC=word[num/100%10];
delay(5);
PORTD=0X02;
PORTC=word[num%100/10];
delay(5);
PORTD=0X01;
PORTC=word[num%10];
delay(5);
}
}
有错就联系一下我啦,因为我也没仿真,这写法方便对显示的数加一减一。

你的硬件连接说得不清楚。位选绝不可以直接连在单片机上,段选勉强可以。

如果你有共阴的程序,再简单不过了,找到程序前几行应该有字库模,就