MCD2-DEMO 数码管显示PICC-18范例(适合初学者)
扫描二维码
随时随地手机看文章
/**************************************************************
实现的功能:在MCD2-DEMO上使数码管从左到右各显示0-5
芯片PIC18F452
编译器PICC-18
XT:4MHz
***************************************************************/
#include "pic18.h"
const unsigned char display_numb[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xd8,0x80,0x90};
unsigned char display_data[6];//0:L 5:R
/**************************************************************
端口初始化
LATC作为数码管段驱动(低有效)
LATA作为数码管位选择驱动(低有效)
***************************************************************/
void init_port(void)
{
LATC=0xff; //
TRISC=0; //C口当作数码管段,设置成输出
ADCON1=0x07;
TRISA=0; //A口当作数码管位选择控制脚,设置成输出
LATA=0xff;
}
/**************************************************************
延迟程序
***************************************************************/
void delay_1ms(void)
{
unsigned int n;
for(n=0;n<50;n++)
{
NOP();
}
}
void delay_ms(unsigned int time)
{
for(;time>0;time--)
{
delay_1ms();
}
}
/**************************************************************
主程序
从左到右显示0-5
***************************************************************/
void main(void)
{
unsigned char n;
init_port();
display_data[0]=display_numb[1];//2
display_data[1]=display_numb[0];//1
display_data[2]=display_numb[3];//4
display_data[3]=display_numb[2];//3
display_data[4]=display_numb[5];//6
display_data[5]=display_numb[4];//5
while(1)
{
LATA=0xfe;
for(n=0;n<6;n++)
{
LATC=display_data[n];
delay_ms(1);
LATA=(LATA<<1)+1;
}
}
}