⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 counter._c

📁 protues_atmeg8学习之:LED篇源代码
💻 _C
字号:
/******************************************/
//文件名:Counter.c
//功能: 多个LED数码观的控制
//作者:  young
//时间: 2006.10.1
//目标MCU:ATmega8   
//晶振:  8MHZ
/******************************************/
#include <iom8v.h>

//延时1MS
void delay_1ms(void)
{ 
    unsigned int i;
    for(i=1;i<(unsigned int)(1144-2);i++)
        ;
}

//延时nMS
void delay_ms(unsigned int n)
{
    unsigned int i=0;
    while(i<n)
    {
	    delay_1ms();
        i++;
    }
} 

//主函数,依次显示数字0~9
void main()
{
	unsigned char i,j;
	static unsigned char LedNum[10]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 
	                       0x6D, 0x7D, 0x07, 0x7F, 0x6F};	
	//显示小数点要加0x80
    unsigned char CountNum[4]={0, 0, 0, 0};    //计数的百、十、个位和十分位
	DDRB=0xFF;	//设置B口为输出模式
	PORTB=0xFF;	//置高电平
	DDRC=0x0F;
	PORTC=0xFF;
	   
	while (1)
	{	
	    i=0;	
        for(j=0;j<100;j++) //依次显示4S"000.0"
    	{
		    i=++i%4;
		    PORTC&=~(1<<i);
			if(2==i)
			    PORTB=LedNum[0]+0x80;
			else	
			    PORTB=LedNum[0];		
			delay_ms(10);
			PORTC|=0xFF;	
    	}
		
		CountNum[0]=CountNum[1]=CountNum[2]=CountNum[3]=0;
		while(1)
		{
		    //计数加1
			if(CountNum[3]++==9)
			{
			    CountNum[3]=0;			    
				if(9==CountNum[2]++)
			    {
			        CountNum[2]=0;				    
					if(9==CountNum[1]++)
			        {
			            CountNum[1]=0;
				        CountNum[0]++;
					}
			    }				
			}
			
			//显示计数值	
		    for(i=0;i<4;i++)
		    {
		        PORTC&=~(1<<i);
				if(2==i)
				    PORTB=LedNum[CountNum[i]]+0x80;
				else
				    PORTB=LedNum[CountNum[i]];			    
			    delay_ms(10);
			    PORTC|=0xFF;
			}
	        
			if(CountNum[0]==9 && CountNum[1]==9 && CountNum[2]==9 && CountNum[3]==9)
			    break;			
		}		
     }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -