微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > AVR单片机4位数码管计数C程序

AVR单片机4位数码管计数C程序

时间:11-29 来源:互联网 点击:
AVR单片机4位数码管计数,从0000-5000一直循环。位选端接在PC的低4位,而段选端接在PA口。程序如下:

#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(); //调用显示子函数
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top