×
单片机 > 单片机程序设计 > 详情

ATmega16L单片机数码管显示示例程序设计

发布时间:2020-08-21 发布时间:
|

简介:在这里为大家提供一个ATmega16L单片机数码管显示示例程序设计。


;******************************************************

;*标题: ATmega16L单片机数码管显示示例程序

;*文件:

;*版本: 1.0


;*******************************************************

#include

#include

//注: 内部函数_delay_ms() 最高延时 262.144mS@1MHz 即 32.768ms@8MHz

// 该函数可以实现较精确的定时for()/while()指令很难计算延时时间

// 为了使 _delay_ms()函数的延时正确,须在makefile中设定F_CPU为实际的系统时钟频

// 本范例为4MHz内部RC振荡器 即 F_CPU=4000000

//**********************************

#define uchar unsigned char //数据类型说明

#define uint unsigned int //数据类型说明

#define RD4 4 //

#define RD5 5 //

#define RD6 6 //

#define RD7 7 //

//**********************************

uchar table[11]={0xc0,0xf9,0xa4,0xb0,0x99, // 0, 1, 2, 3,4,

0x92,0x82,0xf8,0x80,0x90, 0xff} ;// 5, 6, 7, 8, 9, off

uchar buf[4] ;

uchar disppoint; //

//**********************************

void DelayMs(uint i) //Ms级延时函数,参数i:延时时间

{ uint j ;

for( ;i!=0 ;i--)

{for(j=8000 ;j!=0 ;j--) ;}

}

//**********************************


//**********************************

void put_num(char c)

{

PORTC=table[c&0x0f]; //

}

//*********************************

void main()

{

DDRD=0xFF ; //置PD口为输出

PORTD=0xFF ;

DDRC=0xFF ;

PORTC=0xFF ; //置PC口为输出

buf[0]=0; //

buf[1]=1; //

buf[2]=2; //

buf[3]=3; //

while(1)

{


disppoint=0; //

put_num(buf[disppoint]); //

PORTD &=~(1<

DelayMs(1); //

PORTD |= (1<

disppoint++; //

put_num(buf[disppoint]); //

PORTD &=~(1<

DelayMs(1); //

PORTD |= (1<

disppoint++; //

put_num(buf[disppoint]); //

PORTD &=~(1<

DelayMs(1); //

PORTD |= (1<


disppoint++; //

put_num(buf[disppoint]); //

PORTD &=~(1<

DelayMs(1); //

PORTD |= (1<

//

}

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析