谁能给个avr的数码管测试程序
我是初学者如果给了程序还告诉我怎样编译的话我将不胜感激我有多少分就给你多少分不过要能编译通过啊...
我是初学者 如果给了程序还告诉我怎样编译的话 我将不胜感激 我有多少分就给你多少分 不过要能编译通过啊
展开
3个回答
展开全部
给你一个基于mega16的静态数码管程序,四位的,ICC编译环境。
你可以这样移植,打开ICC后,点击“project”新建工程项目,假设新建为“SEG.prj”,然后再点击“FILE”选择“NEW”,将给你的程序复制进去,然后点击另存为“SEG.c”,这时候在右边的边栏里,先点下files,然后右键选择“Add Files”,选中刚才的.c文件就可以了。这时候在右边栏右击选择“Option”,将芯片选择为MEGA16,另外把输出路径改为你所建工程项目的文件夹即可,编译是“shift+F9”,编译完,打开“progisp”,即智峰烧录软件,通过USBISP下载线将HEX文件烧入芯片。以下是测试程序:
#include<iom16v.h>
#include<macros.h>
#include<signal.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
void initial()//初始程序
{
DDRD=0xff;
PORTD=0xFF;
DDRB=0xff;
PORTB=0xff;
}
void delay()//延时程序
{
uint i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
;
}
void main(void)//主程序
{
initial();
while(1)
{
unsigned char number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x5f,0x7c,0x39,0x5e,0x79,0x71};
unsigned char order[]={0x01,0x02,0x03,0x08};
uint i,j;
for(i=0;i<4;i++)
{
PORTC=~order[i];
//PORTC=0x00;
for(j=0;j<16;j++)
{
PORTD=~number[j];
//PORTA=0XFF;
delay();
}if(j>=16)j=0;
}
if(i>=4)i=0;
}
}
这是一个静态的数码管扫描程序,有什么不懂得可以在线问我,我Hi一直都隐身
你可以这样移植,打开ICC后,点击“project”新建工程项目,假设新建为“SEG.prj”,然后再点击“FILE”选择“NEW”,将给你的程序复制进去,然后点击另存为“SEG.c”,这时候在右边的边栏里,先点下files,然后右键选择“Add Files”,选中刚才的.c文件就可以了。这时候在右边栏右击选择“Option”,将芯片选择为MEGA16,另外把输出路径改为你所建工程项目的文件夹即可,编译是“shift+F9”,编译完,打开“progisp”,即智峰烧录软件,通过USBISP下载线将HEX文件烧入芯片。以下是测试程序:
#include<iom16v.h>
#include<macros.h>
#include<signal.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
void initial()//初始程序
{
DDRD=0xff;
PORTD=0xFF;
DDRB=0xff;
PORTB=0xff;
}
void delay()//延时程序
{
uint i,j;
for(i=0;i<100;i++)
for(j=0;j<100;j++)
;
}
void main(void)//主程序
{
initial();
while(1)
{
unsigned char number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x5f,0x7c,0x39,0x5e,0x79,0x71};
unsigned char order[]={0x01,0x02,0x03,0x08};
uint i,j;
for(i=0;i<4;i++)
{
PORTC=~order[i];
//PORTC=0x00;
for(j=0;j<16;j++)
{
PORTD=~number[j];
//PORTA=0XFF;
delay();
}if(j>=16)j=0;
}
if(i>=4)i=0;
}
}
这是一个静态的数码管扫描程序,有什么不懂得可以在线问我,我Hi一直都隐身
展开全部
首先啊一个问题是,你要有运行环境,也就是你要先安装软件,推荐avrstdio+winavr我用这个1年多了。然后是硬件,你要先有学习板,然后将他和电脑连上,就是说要打上驱动,然后在avrstdio中编写你的程序,从点灯开始做,从基础开始,编译都不会就想先飞了。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void show(uchar j,uchar k)
{
PORTA|=BIT(3);
PORTB=table[j];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(k);
PORTA|=BIT(4);
PORTA&=~BIT(4);
delay(1);
}
void main()
{
uchar i;
DDRA|=BIT(3);
DDRA|=BIT(4);
DDRB=0XFF;
while(1)
{
for(i=1;i<7;i++)
{
show(i,i-1);
}
}
}
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#pragma data:code
const table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
void show(uchar j,uchar k)
{
PORTA|=BIT(3);
PORTB=table[j];
PORTA&=~BIT(3);
PORTB=0XFF;
PORTB&=~BIT(k);
PORTA|=BIT(4);
PORTA&=~BIT(4);
delay(1);
}
void main()
{
uchar i;
DDRA|=BIT(3);
DDRA|=BIT(4);
DDRB=0XFF;
while(1)
{
for(i=1;i<7;i++)
{
show(i,i-1);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询