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

avr单片机带小数点数码管的程式

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

 

//------------2_8数码管键调时带小数点功能

#include
#define uchar unsigned char
#define uint  unsigned int

#define P0_1  PORTA |= (1<<0)
#define P0_0  PORTA &=~ (1<<0)
#define P1_1  PORTA |= (1<<1)
#define P1_0  PORTA &=~ (1<<1)
#define P2_1  PORTA |= (1<<2)
#define P2_0  PORTA &=~ (1<<2)
#define P3_1  PORTA |= (1<<3) 
#define P3_0  PORTA &=~ (1<<3)
#define P4_1  PORTA |= (1<<4)
#define P4_0  PORTA &=~ (1<<4)
#define P5_1  PORTA |= (1<<5)
#define P5_0  PORTA &=~ (1<<5)
#define P6_1  PORTA |= (1<<6)
#define P6_0  PORTA &=~ (1<<6)
#define P7_1  PORTA |= (1<<7) 
#define P7_0  PORTA &=~ (1<<7)

uchar i,m,h;
uint j;


uchar led_discode[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90,0xbf,0xef,};     //共阳数码管数字码

void delay(uint mS)        //微秒                  
{
        {
                uchar x,y;
                for(x=0;x                        for(y=0;y<10;y++);
        }
}


void init(void)   //初始化PORUT口
{
        DDRA=0XFF;             //LED IO口设为输出
        PORTA=0X00;
        
        DDRB |=0X10;           //PB4设为输出
        PORTB|=0X10;           //关闭PB4外接的LED
        
        DDRC=0XFF;             //数码管段选设为输出
        PORTC=0X00;            
        
        DDRF |=0X03;           //LED及数码管锁存IO口设为输出
        PORTF|=0X0E;           
        PORTF&=0xF7;           //锁存数据关闭数码管
        
        DDRD=0;//全部设为输入
        PORTD=0xff;//全部上拉
        PIND=0xff;//设初始值        
}

void playh(uchar h)
{
        
    PORTC = led_discode[h/10] ;
        P0_1;
        delay(1);
        P0_0;
        
        PORTC =tablee[h%10];
        P1_1;
        delay(1);
        P1_0;
        
    PORTC = led_discode[10] ;
        P2_1;
        delay(1);
        P2_0;

}

void key1(void) 
{
        if(PIND == 0xfe)  //按键扫描函数----------加键
        {
                delay(5); 
                if(PIND == 0xfe)
                {
                        while(PIND == 0xfe);
                m++;
                }
                }
        }

        
        void key2(void) 
{
        if(PIND == 0xfd)  //按键扫描函数----------减键
        {
                delay(5); 
                if(PIND == 0xfd)
                {
                        while(PIND == 0xfd)        play(i);
        h++;
        
                }
        }
}

void main (viod)

        init() ;               
        while(1)
        {
                key1();
                key2();
                j=300;
                while(j--)
                {
                        play(i); //显示函数
                
                }
                i++;
                if(i==60)
                {
                        i=0;    //如果秒计满60,将秒计数变量清0
                        m++;    //分钟计数变量加1
                }
                if(m == 60)
                {
                        m=0;    //如果分钟计满60,将分钟计数变量清0
                        h++;      //小时计数变量加1
                }
                if(h == 24)
                {
                        h=0;    //如果小时计满24,将小时计数变量清0
                }
        }        
}

关键字:avr  单片机  带小数点  数码管 

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

热门文章 更多
STM32 USB HID 键盘