AVR的高手 救救我啊 ~~~~~
我現在在學AVR單片機,我正在研究數碼管的動態顯示.下面是我編譯的程序,編譯可以通過,但顯示總是不正確.我用的是7段數碼管有3個位控制,也就是可以顯示三個數.我把D口的8個位接到數碼管的8段上,依次對應.PD1對應a,PD2對應b,,,,,PD7對應dp.然后讓PC0對應數碼管的位控制2,PC3對應數碼管的位控制3,PC5對應數碼管的位控制5.下面是程序 3025551239616323.rar
全部回復(4)
正序查看
倒序查看
#include
unsigned char disp[]=
{0xFE,0x06,...};//0-9的查表,你又不說是共陰極還是共陽極,呵呵
main()
{
DDRD=0xFF;//先設置D口為輸出
DDRC=0x29;//然后設置C口的PC0,PC2,PC3為輸出(DDRC=0b00101001)
PORTD=0xFF;
PORTC=0x29;
PORTC=0x01;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.
PORTD=disp[0];//在C口PC0為高電平時控制位控制2數碼管顯示數據.
YANSHI(4);//延時4毫秒
PORTC=0x08;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.
PORTD=disp[1];//在C口PC0為高電平時控制位控制2數碼管顯示數據.
YANSHI(4);//延時4毫秒
...
}
我也是剛學,顯示好學一點我覺得.我現在學中斷了,找不到AVR的這方面資料
unsigned char disp[]=
{0xFE,0x06,...};//0-9的查表,你又不說是共陰極還是共陽極,呵呵
main()
{
DDRD=0xFF;//先設置D口為輸出
DDRC=0x29;//然后設置C口的PC0,PC2,PC3為輸出(DDRC=0b00101001)
PORTD=0xFF;
PORTC=0x29;
PORTC=0x01;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.
PORTD=disp[0];//在C口PC0為高電平時控制位控制2數碼管顯示數據.
YANSHI(4);//延時4毫秒
PORTC=0x08;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.
PORTD=disp[1];//在C口PC0為高電平時控制位控制2數碼管顯示數據.
YANSHI(4);//延時4毫秒
...
}
我也是剛學,顯示好學一點我覺得.我現在學中斷了,找不到AVR的這方面資料
0
回復
@fzhlpp
#includeunsignedchardisp[]={0xFE,0x06,...};//0-9的查表,你又不說是共陰極還是共陽極,呵呵main(){DDRD=0xFF;//先設置D口為輸出DDRC=0x29;//然后設置C口的PC0,PC2,PC3為輸出(DDRC=0b00101001)PORTD=0xFF;PORTC=0x29;PORTC=0x01;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.PORTD=disp[0];//在C口PC0為高電平時控制位控制2數碼管顯示數據.YANSHI(4);//延時4毫秒PORTC=0x08;//就是D口的PC0是高電平,驅動一個NPN的三極管控制數碼管工作.PORTD=disp[1];//在C口PC0為高電平時控制位控制2數碼管顯示數據.YANSHI(4);//延時4毫秒...}我也是剛學,顯示好學一點我覺得.我現在學中斷了,找不到AVR的這方面資料
首先對你表示感謝.
我也是新手.呵呵
我找到問題的原因了,我沒有在每次顯示單個數字后對位進行刷新.
我改了之后就好了.
AVR可以提供20ma電流和吸收20ma電流 所以不需要三極管來做控制.
我也是新手.呵呵
我找到問題的原因了,我沒有在每次顯示單個數字后對位進行刷新.
我改了之后就好了.
AVR可以提供20ma電流和吸收20ma電流 所以不需要三極管來做控制.
0
回復