『壹』 基於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--);
}