原创 ATmeg16 模块化编程01 之 数码管

2011-8-18 13:54 1666 3 3 分类: MCU/ 嵌入式
     本人刚开始学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 中声明一下要调用的函数即可!

具体工程如图!

20110818131840908.jpg


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条