PIC入门1,跑马灯和数码管显示实验
扫描二维码
随时随地手机看文章
我使用的是爱晶3ePIC实验板,以下都是自己写的程序,只是为了纪念和学习交流使用,别无它意。在我的
相册里有板子的原理图。
跑马灯实验:
程序:
//适合3epic实验板,是跑马灯程序
#include
unsigned int i;
//主函数
main()
{
TRISD=0X00;//D口为输出模式,接LED的正极
TRISE=0X00;//E口为输出输出模式,LED使能,接LED的负极
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++);
}
}
数码显示实验:
程序:
//适合3epic实验板,是LED显示数据实验
#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;
//主函数
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
//系统初始化
void initial()
{
TRISE=0x00;//E口为输出
TRISB=0xFF;//B口为输入
TRISD=0x00;//D口为输出
}
//主函数
main()
{
initial();
PORTE=0x00;//控制LED灯的负极
while (1)
{
if(RB0==0)//如果sw7按下,则LED0亮
PORTD=0x01;
else
PORTD=0x00;//没有按键按下,LED0灭
}
}
键盘控制数码管实验:
因为没有加去键抖动,所以编的不是很好,事情一忙就没有修改。
程序:
//适合3EPIC实验板,键盘控制数码管
#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;
}
//主函数
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];
}
}