* LED數碼管顯示演示程序 *
* 在8個LED數碼管上依次顯示1,2,3,4,5,6,7,8 *
*******************************************************************************/
#include <reg51.h> //包含頭文件
#include <intrins.h> //包含移位函數頭文件
//段碼錶
unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3
0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off
void delay(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i=0;i<120;i++);
}
}
void main()
{
unsigned char k,m=0x80; //變量定義
P0 = 0xff; //先關閉數碼管
P2 = 0x00; //
{
for(k = 0;k < 8;k++) //循環8次
{
P2 = 0x00; //每顯示一位都要關閉位選端口一次
m=_crol_(m,1); //循環左移
P2=m; //每次選通一個位選端口
P0=dis_code[k+1]; //段碼送P0口
delay(2);
}
}
}
6、將ex48.hex文件載入at89c51中,啓動仿真,觀察程序運行結果,下圖是程序運行結果。我們也可以試着將程序中的 “P2 = 0x00; //每顯示一位都要關閉位選端口一次”這句話去掉,然後再觀察程序運行結果,觀察會出現什麼情況,並解釋這種情況。