[ICCAVR C 例程]AVR单片机控制8段LED数码管同时显示 - 单片机应用 - 博趣

  无线电   专题策划 行业动态 测试测量 单片机 精彩制作 精品套件 基础入门 试阅与下载 往期目录 官方淘宝店 制汇节
当前位置:博趣 -> 无线电 -> 单片机应用

TOP

[ICCAVR C 例程]AVR单片机控制8段LED数码管同时显示
发表日期:2012-03-02 08:52:26 来源:麦克鼠单片机学习网 作者: 【 】 浏览:2080次 评论:0

是一个简单的供单片机入门学习者练习用的8段LED数码管控制C程序,控制一个两位的数码管同时显示字符(动态刷新)。用ICCAVR-V7开发,在AVR单片机Atmega48上调试通过。学习者可以举一反三应用到其他类型的单片机芯片。
本实验的详细说明和硬件搭建请参考>>

///----------------------------------------------------------------------------------------------
//----------单片机入门实验 8段LED数码管同时显示实验 C 程序----------------
//----------------------------------------------------------------------------------------------
//作者: 超简单工作室
//Email: fullmous@hotmail.com
//软件版本: ICCAVR ver 7.14
//创建日期: 2008.3
//版本 V1.00
// Target : M48
// Crystal: 8.0000Mhz

#include <iom48v.h>
#include <macros.h>
void port_init(void)//端口初始化
{
PORTB = 0x00;
DDRB = 0xFF;
PORTC = 0x00;
DDRC = 0x03;
}
#pragma data:code//定义字型数组
const unsigned tabs[]=
{
0xC0,//"0"
0xF9,//"1"
0xA4,//"2"
0xB0,//"3"
0x99,//"4"
0x92,//"5"
0x82,//"6"
0xF8,//"7"
0x80,//"8"
0x98,//"9"
0x88,//"A"
0x83,//"B"
0xC6,//"C"
0xA1,//"D"
0x86,//"E"
0x8E,//"F"
0xFF,//"8."
};
void delay_1ms(void)//延时子程序
{
unsigned int i;
for (i = 1;i < 1000;i++)
;
}
void delay(unsigned int n)
{
unsigned int i = 0;
while (i < n)
{
delay_1ms();
i++;
}
}
void led_display(unsigned char d)//显示子程序
{
unsigned char i;
unsigned char refresh = 0;
PORTB = tabs[d]; //显示字型送PortB
do{
for (i = 0;i < 2;i++)
{
PORTC = (1<<i); //PortC控制显示
delay(10); //延时
}
refresh += 1;
}
while(refresh < 100);
}
void main(void)
{
unsigned char digits = 0;
port_init();
for(;;)
{
digits += 1;
if (digits == 16) //循环显示16个数字
digits = 0;

led_display(digits);
}
}

 > 相关内容:

 
Tags:ICCAVR 例程 AVR 单片机 控制 LED 数码 同时 显示 责任编辑:博趣
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[ICCAVR C 例程]AVR单片机 ADC转.. 下一篇[ICCAVR C 例程]AVR单片机控制8段..

赞助商链接

最新文章

热门文章

推荐文章