⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led._c

📁 AVR mega16系列单片机开发程序
💻 _C
字号:
#include "config.h"

const led_data[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x63,0x79,0x71,0x00};

void led_init(void)
{
  led_ddr = 0xFF;                                                    //abcdefg dpi 各位设为输出
  led_contrl_ddr |= (1<<led_a)|(1<<led_b)|(1<<led_c)|(1<<led_d);     //ABCD四个控制设为输出
}

/***********************
** 显示一位
** 输入:count显示在第几位(3210),data 要显示的数(0~f)
************************/
void display_one(uint8 count, uint8 data)
{
  led_port = led_data[data];                         //显示的数
  led_contrl_port &= ~(1<<count);                    //选中对应要显示的位,从右至左,0123
                                                     //如果对位进行了调整,就不在是0123,而是对应的值
}

/***********************
** 显示四位整数
** 输入:要显示的四位数data,显示模式mode,1为补零显示模式,默认不显示零
** 说明:可以小于四位数,mode=1时 自动补零
************************/
void display(uint16 data)
{
 uint8 temp;
 if(data>1000)                           //千位
   {
     temp=data/1000;
     display_one(0,temp);
     delay_ms(1);                          //是个经验值,刚好无闪烁,并且亮度较高
     led_contrl_port |= (1<<0);
   }
 else
   {
     display_one(0,16);
     delay_ms(1);
     led_contrl_port |= (1<<0); 
   }

 if(data>100)                            //百位
   {
     temp=(data%1000)/100;
     display_one(1,temp);
     delay_ms(1);
     led_contrl_port |= (1<<1);
   }
 else
   {
     display_one(1,16);
     delay_ms(1);
    led_contrl_port |= (1<<1);
   }
 
 if(data>10)                            //十位
   {
     temp=(data%100)/10;
     display_one(2,temp);
     delay_ms(1);
     led_contrl_port |= (1<<2);
   }
 else
   {
     display_one(2,16);
     delay_ms(1);
     led_contrl_port |= (1<<2);  
 }
                                        //个位
 temp=data%10;
 display_one(3,temp);
 delay_ms(1);
 led_contrl_port |= (1<<3);
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -