PIC单片机学习之PIC实例

来源:本站
导读:目前正在解读《PIC单片机学习之PIC实例》的相关信息,《PIC单片机学习之PIC实例》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《PIC单片机学习之PIC实例》的详细说明。
简介:1.数码管显示 2.独立键盘与蜂鸣器及数码管综合实验

1.数码管显示

PIC驱动数码码的电路图及仿真结果如下图所示:

PIC单片机学习之PIC实例

程序清单如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

__CONFIG(0x3B31);

voiddelay(uintx)

{

uinta,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

voidmain()

{

TRISB=0;

TRISD=0;

while(1)

{

PORTB=0x01;//00111000

PORTD=0x5b;

delay(1);

PORTB=0x02;//00111000

PORTD=0x4f;

delay(1);

PORTB=0x04;//00111000

PORTD=0x66;

delay(1);

PORTB=0x08;//00111000

PORTD=0x6d;

delay(1);

PORTB=0x10;//00111000

PORTD=0x7d;

delay(1);

PORTB=0x20;//00111000

PORTD=0x06;

delay(1);

}

}

出现问题:在使用ULN2003进行仿真的时候,没有出现预期的结果,这也许是软件仿真的不

稳定造成的,在实际的硬件电路设计中,驱动芯片是一定要有的。另外在仿真的时候,片选信号

使用RA口时,RA4不怎么怎么的,输出总是高阻态。换成RB口后没有出现这样的问题。

2.独立键盘与蜂鸣器及数码管综合实验

独立键盘电路如下图所示,蜂鸣器电路如图(2.3)所示,数码管电路参见图(2.1)。该实

验实验的效果是:当按键K1按下时,蜂鸣器“滴”一声,同时数码管位1变为1,当按键K2按下

时,蜂鸣器“滴”两声,同时数码管1变为2......当按键K4按下时,蜂鸣器“滴”四声,同时数码

管1变为4。

PIC单片机学习之PIC实例

PIC单片机学习之PIC实例

程序清单如下:

#include

#defineucharunsignedchar

#defineuintunsignedint

__CONFIG(0x3B31);

constuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

ucharkey_num;

voiddelay(uintx);

voidinit();

voidscan();

voiddidi(ucharnum);

voiddisp(ucharnum1,ucharnum2,ucharnum3,ucharnum4,ucharnum5,ucharnum6);

voidmain()

{

init();

while(1)

{

scan();

disp(key_num,2,3,4,5,6);

}

}

voiddelay(uintx)

{

uinta,b;

for(a=x;a>0;a--)

for(b=110;b>0;b--);

}

voidinit()

{

TRISB=0xff;

TRISD=0;

TRISA=0;

TRISE0=0;

RE0=0;

PORTD=0;

PORTA=0;

}

voidscan()

{

if(RB0==0)

{

delay(10);

if(RB0==0)

{

didi(1);

while(!RB0)

{

disp(key_num,2,3,4,5,6);

key_num=1;//PORTD=0x01;

}

}

}

if(RB1==0)

{

delay(10);

if(RB1==0)

{

didi(2);

while(!RB1)

{

disp(key_num,2,3,4,5,6);

key_num=2;//PORTD=0x02;}

}

}

}

if(RB2==0)

{

delay(10);

if(RB2==0)

{

didi(3);

while(!RB2)

{

disp(key_num,2,3,4,5,6);

key_num=3;//PORTD=0x04;

}

}

}

if(RB3==0)

{

delay(10);

if(RB3==0)

{

didi(4);

while(!RB3)

{

disp(key_num,2,3,4,5,6);

key_num=4;//PORTD=0x08;

}

}

}

}

voiddidi(ucharnum)

{

uchardi_num;

for(di_num=num;di_num>0;di_num--)

{

RE0=1;

delay(50);

RE0=0;

delay(20);

}

}

voiddisp(ucharnum1,ucharnum2,ucharnum3,ucharnum4,ucharnum5,ucharnum6)

{

PORTD=table[num1];//显示第一个数码管

PORTA=0x20;//00100000

delay(2);

PORTD=table[num2];//显示第二个数码管

PORTA=0x10;//00010000

delay(2);

PORTD=table[num3];//显示第三个数码管

PORTA=0x08;//00001000

delay(2);

PORTD=table[num4];//显示第四个数码管

PORTA=0x04;//00000100

delay(2);

PORTD=table[num5];//显示第五个数码管

PORTA=0x02;//00000010

delay(2);

PORTD=table[num6];//显示第六个数码管

PORTA=0x01;//00000001

delay(2);

}

提醒:《PIC单片机学习之PIC实例》最后刷新时间 2024-03-14 00:54:25,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《PIC单片机学习之PIC实例》该内容的真实性请自行鉴别。