本人刚开始学AVR单片机 ,以前学过51,现在觉得avr挺简单的,我用的开发环境是 IAR for AVR 由于为了让主程序看起来比较舒服,所以采用了,模块化编程,即建立一个自己的用户文件,将自己的用户文件包含进去就可以了!程序如下!主函数 main.c 如下:
#include<iom16.h>
#include<qiyei2009.h>
void main(){
while(1){
show_shumaguan(4,5);
delay_ms(500);
show_shumaguan(7,3);
delay_ms(500);
show_shumaguan(2,1);
;
}
} // 最后空一行,要不然会出警告
在qiyei2009.c 中定义自己的函数 show_shunaguan(int j,int i) 和延时函数 如下:
#include<iom16.h>
#include<qiyei2009.h>
__flash uchar ACT[]={0xf8,0xf9,0xfa,0xfb, //数码管位码 ,从左至右 0---7
0xfc,0xfd,0xfe,0xff,};
__flash uchar SEG[]={0x3f,0x06,0x5b,0x4f,0x66,//数码管段码
0x6f,0x77,0x7c,0x39,
0x5e,0x79,0x71,0x80};
/*****************************************************************************
* 函数名 : void delay_ms(int k) 1毫秒延时函数
* 描述 : 通过软件延时的,1毫秒延时函数
*输入参数 : k 延时多少毫秒
*返回值 : 无返回值
* 创建人 : qiyei2009 2011.8
* 版本号 : 1.0
*****************************************************************************/
extern void delay_ms(uint k){
uint i,j;
for(i=0;i<k;i++){
for(j=0;j<1140;j++){
;
}
}
}
/*****************************************************************************
* 函数名 : void show_shumaguan(int i,int j) 数码管显示函数,
* 描述 : 输入数字到相应的数码管上
*输入参数 : i显示的数字,j第几个数码管显示
*返回值 : 无返回值
* 创建人 : qiyei2009 2011.8
* 版本号 : 1.0
*****************************************************************************/
void show_shumaguan(int i,int j){ // 数码管显示函数,
DDRA=0xff;
PORTA=SEG
;
DDRC=0xff;
PORTC=ACT[j-1];
}
最后在qiyei2009.h 中声明一下要调用的函数即可!
具体工程如图!
文章评论(0条评论)
登录后参与讨论