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

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

发布时间:2020-06-02 发布时间:
|
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(); //调用显示子函数  
     }
}

 
 
关键字:AVR单片机  4位数码管  计数C程序 

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

热门文章 更多
8051单片机的函数发生器的设计