‘壹’ 基于atmega16的16 16点阵单片机程序
找出你要的问题就行了!
‘贰’ 对ATMEGA16单片机编程
你说的应该是对单片机进行程序的烧写。AVR单片机都支持在线编程(ISP)。在线编程也就是说只需要自己在电路板上搭建一个ISP电路而不用买编程器便可对单片机进行程序的烧写。你可以在下载ATMEGA16单片机的DATASHEET文档看看官方的介绍看看如何做。
在此介绍一个刚刚找到的网站http://www.avrvi.com/index_new_start.html
在里面的第9、10和13的文件名链接里又他的isp电路和并口下载线制作方法!
当你看完这个网页的大部分链接后你就可以自己做AVR单片机系统了。
多提醒一下,做电子电气方面的东西一般在开始前要收集资料,而好多电子元器件可能都是技术人员以前没见过的,那就要查它的DATASHEET。以前的技术人员都是买厚厚的元器件资料书查阅的。现在可以直接上网搜索,推荐http://www.alldatasheet.com/,(全英文的pdf文档,因为大部分元气件都是外国产的,想要中文的你就得费点劲在网络上找了)
‘叁’ Atmega16单片机程序中1 << REFS0S是什么意思
REFSOS一定是程序设计者自行设计的一个变量名称,具体应该是一个数值。
1<<是把逻辑1左移的意思,合在一起。
1<<REFSOS,就是把逻辑1左移(REFSOS所代表的)位数,例:假设REFSOS=2,则
1<<REFSOS就相当于把逻辑1左移2位,如果原来都是0,则结果是00000100。
这种赋值方法在AVR里面用得很多,也是跟51单片机很不一样的地方。
‘肆’ ATmega16单片机编程:
unsigned char k;
main()
{
DDRA&=0x1f;
PORTA|=0xe0;
while(1)
{
if(PORTA&0x80==0)k+=10;
else if(PORTA&0x40==0)k-=1;
else if(PORTA&0x20==0)k+=1;
Uart_display(); //此函数不详说了,网上大把
}
}
‘伍’ Atmega16单片机串口通讯程序
没有现成的,可以找人帮你做。
‘陆’ 谁能给我一个最简单的ATmega16单片机的矩阵键盘程序
//0502-Matrix_Key2.c
//阵列键盘的另一个驱动程式。
//akuei2 17-01-10 再一次修改
#include "iom16v.h"
#include "macros.h"
#include "LED7.h"
//全局变量:键盘输入结果
unsigned char KeyResult;
//函数声明
void Key_Scan();
void Column_Scan(unsigned char KeyRead,unsigned char i);
//主函数
void main()
{
LED7_IO_Init(); //初始化,数码管显示引脚
while(1)
{
Key_Scan(); //按键扫描函数
Number_Show(KeyResult); //显示函数
}
}
void Key_Scan()
{
unsigned char KeyRead,i; //KeyRead保存键盘输入状态,i保存当前列
DDRD=0xf0; //PD0~3带上拉输入,PD4~7输出低电平
PORTD=0x0f;
KeyRead=PIND; //读取键盘结果
KeyRead&=0x0f; //屏蔽高四位
if(KeyRead!=0x0f) //判断键盘是否被按下
{
Delay(); //消抖
for(i=0;i<4;i++)
{
PORTD=~BIT(i+4); //第i列低电平|第i列扫描
DDRD=0xf0; //PD0~3带上拉输入,PD4~7输出低电平
KeyRead=PIND; //读取键盘结果
Key_Result(KeyRead&0x0f,i); //传递读取结果(屏蔽高四位),当前列(i)
}
}
}
//结果扫描函数。
//键盘(行,列)
void Key_Result(unsigned char KeyRead,unsigned char i)
{
if(i==0) //第一列
{
switch (KeyRead)
{
case 0x0e: KeyResult=0; break; //(1,1)
case 0x0d: KeyResult=1; break; //(2,1)
case 0x0b: KeyResult=2; break; //(3,1)
case 0x07: KeyResult=3; break; //(4,1)
}
}
else if(i==1) //第二列
{
switch (KeyRead)
{
case 0x0e: KeyResult=4; break; //(1,2)
case 0x0d: KeyResult=5; break; //(2,2)
case 0x0b: KeyResult=6; break; //(3,2)
case 0x07: KeyResult=7; break; //(4,2)
}
}
else if(i==2) //第三列
{
switch (KeyRead)
{
case 0x0e: KeyResult=8; break; //(1,3)
case 0x0d: KeyResult=9; break; //(2,3)
case 0x0b: KeyResult=0; break; //(3,3)
case 0x07: KeyResult=1; break; //(4,3)
}
}
else if(i==3) //第四列
{
switch (KeyRead)
{
case 0x0e: KeyResult=2; break; //(1,4)
case 0x0d: KeyResult=3; break; //(2,4)
case 0x0b: KeyResult=4; break; //(3,4)
case 0x07: KeyResult=5; break; //(4,4)
}
}
}
这是avr的,要51的叫我
‘柒’ 想用AVR单片机Atmega16做个程序,控制三个LED工作,
随便给你编一个
#include<mega16.h> //灯和按键的另一端都接地 CVAVR
#include<delay.h>
main()
{
DDRA=0X00;DDRB=0XFF;DDRC=0XFF;DDRD=0XFF;
PORTA=0XFF;PORTB=0X00;PORTC=0X00;PORTD=0X00;
while(1)
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
if(PINA.0==0)
{
PORTB=0XFF;PORTC=0X00;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0X00;PORTD=0XFF;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0X00;delay(500);
PORTB=0XFF;PORTC=0XFF;PORTD=0XFF;delay(500);
}
else
{
PORTC=0X00;PORTD=0X00;delay(500);
PORTC=0X00;PORTD=0XFF;delay(500);
PORTC=0XFF;PORTD=0X00;delay(500);
PORTC=0XFF;PORTD=0XFF;delay(500);
}
}
‘捌’ atmega16单片机,定时器99秒倒计时
摘要 main()
‘玖’ 请问一个Atmega16单片机的程序设计问题
// Target : M16
// Crystal: 8.0000Mhz
#include <iom16v.h>
#include <macros.h>
unsigned int mega16_ad()
{
unsigned int addata;
DDRA&=~BIT(0);
PORTA&=~BIT(0);
ADMUX=0xc0;
ADCSR=0X80;
ADCSR|=BIT(ADSC);
while(!(ADCSR&(BIT(ADIF))));
addata=ADCL;
addata=addata+ADCH*256;
return addata;
}
void main ()
{
unsigned int ada;
while(1)
{
ada=mega16_ad();
}
}
}
‘拾’ 用ATMega16单片机 DSM501A灰尘传感器 LCD显示PM2.5 数码管显示数值 求个程序
您好,/*本程序为八位共阴极数码管且有两个573控制的动态扫描,本程序只用数码管显示到秒钟,
其他的要显示请自己编写,能用1602显示更好*/
#include <iom16v.h>
#include <macros.h>//这里面有BIT(),所以要包含
#define uchar unsigned char
#define uint unsigned int
//#pragma data:code //注code的功能是把后面的数据存在程序存贮器中,不用code就放到了随机存贮器中.
const table[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00} ;
/*如果用uchar table[]就放到了数据存贮器中。决不要这样用,这样占用空间多。*/
/*两个573,段码PA3,位码PA4*/
void delay_ms(uint ms)
{
uint i,j;
for(i=ms;i>0;i--)
for(j=220;j>0;j--);
}