資源簡介
用兩片AVR(ATmega16)單片機 實現雙機通信(雙向,并帶反饋)。開發環境為ICCAVR。文件中不但有完整的源代碼,還有用PROTEUS作的仿真圖。-

代碼片段和文件信息
#include?“display.h“
//===================MAX7219的核心函數,接收單片機的數據=====================?
void?SEND(unsigned?char?addunsigned?char?dat)//發送2個字節的子函數第一個字節為地址第二個字節為操作數??
{??
unsigned?char?adsjx;??
unsigned?int?i;??
i=0;??
MAX7219_LOAD_0;//load=0??
???while(i<16)??
???{
//???if(add==1||add==5)?dat=dat|0x80;?//小數點問題解決
???if?(i<8){ads=add;}???
???else?{ads=dat;}???
??????for(j=8;j>=1;j--)??
??????{??
??????x=ads&0x80;??
?????????if?(x==0){MAX7219_DIN_0;}??
?????????else?{MAX7219_DIN_1;}??
????????????ads=ads<<1;??
??????MAX7219_CLK_1;//clk=1??
?????????MAX7219_CLK_0;//clk=0??
??????}??
???i=i+8;??
???}??
MAX7219_LOAD_1;//load=1??
}??
//=====================================?
//==============SEG亮度================?
void?SEG_LIGHT(unsigned?light)?
{?
SEND(0x0alight&0x0f);?
}?
//===================================?
//==============SEG開================?
void?SEG_OPEN(void)?
{?
SEND(0x0c0x01);?
}?
//===================================?
//==============SEG關================?
void?SEG_CLOSE(void)?
{?
SEND(0x0c0x00);?
}?
//===================================?
//==============SEG清屏==============
void?SEG_CLEAR(unsigned?char?part)?
{?
switch(part)?
????????{?
????????case?0://左?
????????????????{?
????????????????SEND(0x010x0f);??
????????????????SEND(0x020x0f);??
????????????????SEND(0x030x0f);??
????????????????SEND(0x040x0f);?
????????????????}break;?
????????case?1://右?
????????????????{?
????????????????SEND(0x050x0f);??
????????????????SEND(0x060x0f);??
????????????????SEND(0x070x0f);??
????????????????SEND(0x080x0f);?
????????????????}break;?
????????default://全部?
????????????????{?
????????????????SEND(0x010x0f);??
????????????????SEND(0x020x0f);??
????????????????SEND(0x030x0f);??
????????????????SEND(0x040x0f);?
????????????????SEND(0x050x0f);??
????????????????SEND(0x060x0f);??
????????????????SEND(0x070x0f);??
????????????????SEND(0x080x0f);?
????????????????}break;?
????????}?
}?
//==============SEG初始化=============?
void?SEG_INIT(void)?
{?
MAX7219_OUT_DDR|=(1< MAX7219_OUT_PORT|=(1< SEND(0x0c0x01);?
SEND(0x0b0x07);??
SEND(0x0a0x05);??
SEND(0x090xff);??
SEG_CLEAR(3);?
}?
//=============SEG左四顯示數字==============?
void?SEG_L(unsigned?int?number)?
{?
unsigned?char?i=4;?
SEND(0x010x0f);?//先清除左四位左四位黑屏?
SEND(0x020x0f);??
SEND(0x030x0f);??
SEND(0x040x0f);?
if(number>9999)//要顯示的數值超過4位,則顯示4個H?
????????{?
????????SEND(0x010x0c);??
????????SEND(0x020x0c);??
????????SEND(0x030x0c);??
????????SEND(0x040x0c);?
????????}?
else//小于四位可以顯示?
????????{?
/* for(i=4;i>0;i--)
?{
??SEND(inumber%10);
??number=(number-number%10)/10;?
?} */
????????do?
????????????????{?
????????????????SEND(inumber%10);?
????????????????number=(number-number%10)/10;?
????????????????i--;?
???????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????3953??2008-11-01?13:50??display.c
?????文件????????1166??2008-11-01?13:11??display.h
?????文件????????3953??2008-11-01?13:49??display._c
?????文件????????1166??2008-11-01?13:07??display._h
?????文件???????49319??2008-10-05?10:42??Last?Loaded?spi.DBK
?????文件????????1365??2008-11-04?12:10??master.c
?????文件????????2375??2008-11-04?12:10??MASTER.cof
?????文件????????1332??2008-11-04?12:10??MASTER.dbg
?????文件??????????69??2008-11-04?12:10??master.dp2
?????文件?????????808??2008-11-04?12:10??MASTER.hex
?????文件???????11742??2008-11-04?12:10??master.lis
?????文件??????????11??2008-11-04?12:10??MASTER.lk
?????文件????????6620??2008-11-04?12:10??MASTER.lst
?????文件?????????555??2008-11-04?12:10??MASTER.mak
?????文件????????2089??2008-11-04?12:10??MASTER.mp
?????文件????????2822??2008-11-04?12:10??master.o
?????文件?????????999??2008-11-04?12:10??master.prj
?????文件????????4924??2008-11-04?12:10??master.s
?????文件??????????43??2008-11-01?20:01??MASTER.SRC
?????文件????????1365??2008-11-04?12:09??master._c
?????文件????????1286??2008-11-04?12:07??salve.c
?????文件????????5459??2008-11-04?12:07??SALVE.cof
?????文件????????3581??2008-11-04?12:07??SALVE.dbg
?????文件?????????175??2008-11-04?12:07??salve.dp2
?????文件????????2516??2008-11-04?12:07??SALVE.hex
?????文件???????36508??2008-11-04?12:07??salve.lis
?????文件??????????10??2008-11-04?12:07??SALVE.lk
?????文件???????21798??2008-11-04?12:07??SALVE.lst
?????文件?????????654??2008-11-04?12:07??SALVE.mak
?????文件????????2440??2008-11-04?12:07??SALVE.mp
?????文件????????8699??2008-11-04?12:07??salve.o
............此處省略7個文件信息
- 上一篇:STM32+W5500(遠程更新程序的上位機)
- 下一篇:AVR M16例程大全
評論
共有 條評論