PIC入門1,跑馬燈和數(shù)碼管顯示實驗
我使用的是愛晶3ePIC實驗板,以下都是自己寫的程序,只是為了紀(jì)念和學(xué)習(xí)交流使用,別無它意。在我的
相冊里有板子的原理圖。
跑馬燈實驗:
程序:
//適合3epic實驗板,是跑馬燈程序
#include
unsigned int i;
//主函數(shù)
main()
{
TRISD=0X00;//D口為輸出模式,接LED的正極
TRISE=0X00;//E口為輸出輸出模式,LED使能,接LED的負(fù)極
while(1)
{
PORTE=0X00;
PORTD=0X01;//點亮第一個LED
for(i=0;i<50000;i++);//延時
PORTD=0X02;//點亮第二個LED
for(i=0;i<50000;i++);
PORTD=0X04;
for(i=0;i<50000;i++);
PORTD=0X08;
for(i=0;i<50000;i++);
PORTD=0X10;
for(i=0;i<50000;i++);
PORTD=0X20;
for(i=0;i<50000;i++);
PORTD=0X40;
for(i=0;i<50000;i++);
PORTD=0X80;
for(i=0;i<50000;i++);
}
}
數(shù)碼顯示實驗:
程序:
//適合3epic實驗板,是LED顯示數(shù)據(jù)實驗
#include
#include
volatile unsigned char data;
static volatile int table[]={
0X3F,0X06,0X5B,0X4F,
0X66,0X6D,0X7D,0X07,
0X7F,0X6F,0X77,0X7C,
0X39,0X5E,0X79,0X71};
volatile unsigned char data;
//主函數(shù)
main()
{
unsigned i,a;
TRISB=0x00;//段選控制為輸出
TRISD=0x00;//位選控制位輸出
while(1)
{
for(i=0;i<16;i++)
{
PORTB=0xE0;//段選
data=table[i];
PORTD=data;//位選
for(a=0;a<50000;a++);//延時
}
}
}
單鍵控制LED燈。
程序:
//適合3ePIC實驗板,單按鍵控制一個LED燈
#include
#include
//系統(tǒng)初始化
void initial()
{
TRISE=0x00;//E口為輸出
TRISB=0xFF;//B口為輸入
TRISD=0x00;//D口為輸出
}
//主函數(shù)
main()
{
initial();
PORTE=0x00;//控制LED燈的負(fù)極
while (1)
{
if(RB0==0)//如果sw7按下,則LED0亮
PORTD=0x01;
else
PORTD=0x00;//沒有按鍵按下,LED0滅
}
}
鍵盤控制數(shù)碼管實驗:
因為沒有加去鍵抖動,所以編的不是很好,事情一忙就沒有修改。
程序:
//適合3EPIC實驗板,鍵盤控制數(shù)碼管
#include
#include
unsigned int i;
unsigned char j;
//初始化
void initial()
{
TRISB=0x1E;
TRISD=0x00;
j=0;
}
//延時
void DELAY()
{
for(i=0;i<50000;i++)
continue;
}
//主函數(shù)
main()
{
static int table[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};
initial();
RB5=0;
while (1)
{
if(RB1==0)
{
DELAY();
j=1;
}
if(RB2==0)
{
DELAY();
j=2;
}
if(RB3==0)
{
DELAY();
j=3;
}
if(RB4==0)
{
DELAY();
j=4;
}
PORTD=table[j];
}
}