以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!
使用AVR扫描四个数码管,动态扫描,动态显示,左扫,右扫,来回扫。。。
|
|
下面部分从TXT拷出,拷到网页,代码部分缺省了很多空格,比较凌乱,请谅解!
//目标系统: 基于AVR单片机
//应用软件: ICC AVR
/*01010101010101010101010101010101010101010101010101010101010101010101
----------------------------------------------------------------------
实验内容:
动态的循环显示“0-9”。
----------------------------------------------------------------------
硬件连接:
LedIndicator:VCC、GND、L0----L3、D0----D7
| | | |
SMK1632: VCC、GND、PB7--PB4、PD0--PD7
----------------------------------------------------------------------
注意事项:
(1)若有加载库程序,请将光盘根目录下的“库程序”下的“ICC_H”文件夹拷到D盘
(2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
----------------------------------------------------------------------
10101010101010101010101010101010101010101010101010101010101010101010*/
#include <iom16v.H>
#include "D:\ICC_H\CmmICC.H"
#define LED_BIT_DDR DDRB //数码管 位选
#define LED_BIT_PORT PORTB
#define LED_SEG_DDR DDRD //数码管 段选
#define LED_SEG_PORT PORTD
/*--------------------------------------------------------------------
程序名称:数码管扫描程序
程序功能:
注意事项:
提示说明:
输 入:
返 回:
--------------------------------------------------------------------*/
void main()
{
uint8 i;
uint8 ledCode[]={0x28,0xAF,0x98,0x8A,0X0F,0x4A,0x48,0xAE,0x08,0x0A};
LED_BIT_DDR = 0XFF;
LED_BIT_PORT = 0x0F;
LED_SEG_DDR = 0XFF;
LED_SEG_PORT = 0X00;
while(1)
for(i=0;i<=9;i++)
{
LED_SEG_PORT = ledCode[i];
delay50ms(10);
}
}
|
本程序仅给出四位数码管显示同一数字的简单示例,试改动“LED_BIT_DDR”、“LED_SEG_DDR”的方向,“LED_BIT_PORT”、“LED_SEG_PORT”的值,观察显示效果。。。
|
可作为如下AVR的参考资料: ATtiny13 ATtiny24 ATtiny44 ATtiny84 ATtiny2313 ATtiny26 ATmega48
ATmega88 ATmega168 ATmega8 ATmega16 ATmega32 ATmega64 ATmega128 ATmega162
ATmega169 ATmega169P ATmega8515 ATmega8535
ATtiny13 |
ATtiny24 |
ATtiny44 |
ATtiny84 |
ATtiny26 |
ATtiny2313 |
ATmega48 |
ATmega88 |
ATmega168 |
ATmega8 |
ATmega16 |
ATmega32 |
ATmega64 |
ATmega128 |
ATmega162 |
ATmega169 |
ATmega8515 |
ATmega8535 |
AVR IO输出之数码管扫描程序
——