#include
#include
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
uchar i;//定义变量
uint num;//定义计数变量
#pragma data:code//数组存放位置
const table[]={
0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,
0x88,0x83,0xc6,0xa1,0x86,
0x8e
};//共阳数码管0--9代码
/*************************************************************/
/*********************延时子程序******************************/
/*************************************************************/
void delay(uint z)//一个带参数,不带返回值的子函数
{
uint x,y;//定义两个变量
for(x=0;x<55;x++)//外循环
for(y=z;y>0;y--);//内循环
}
/*************************************************************/
/*********************显示子程序******************************/
/*************************************************************/
void xian()
{
for(i=0;i<20;i++)//显示20次,使整体看起来不闪烁
{
PORTA=table[num/1000];//将千位数给PA口
PORTC&=~BIT(3);//打开千位位选端
delay(2);//延时一会儿
PORTC|=BIT(3);//关掉千位
PORTA=table[num%1000/100];//将百位数给PA口
PORTC&=~BIT(2);
delay(2);
PORTC|=BIT(2);
PORTA=table[num%100/10];//将十位数给PA口
PORTC&=~BIT(1);
delay(2);
PORTC|=BIT(1);
PORTA=table[num%10];//将个位数给PA口
PORTC&=~BIT(0);
delay(2);
PORTC|=BIT(0);
}
num++;//将它加1,形成动态计数
if(num>5000)//如果它大于5000就将计数器清0
num=0;//清0
}
/*************************************************************/
/*************************主程序******************************/
/*************************************************************/
void main()
{
DDRA=0xff;//设置PA口为输出
DDRC=0xff;//设置PC口为输出
while(1)
{
xian(); //调用显示子函数
}
}
上一篇:用AVR单片机创造机器生命
下一篇:AVR单片机1602液晶程序
推荐阅读最新更新时间:2024-03-16 14:25