MCD2-DEMO 數(shù)碼管顯示PICC-18范例(適合初學(xué)者)
/**************************************************************
實(shí)現(xiàn)的功能:在MCD2-DEMO上使數(shù)碼管從左到右各顯示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作為數(shù)碼管段驅(qū)動(dòng)(低有效)
LATA作為數(shù)碼管位選擇驅(qū)動(dòng)(低有效)
***************************************************************/
void init_port(void)
{
LATC=0xff; //
TRISC=0; //C口當(dāng)作數(shù)碼管段,設(shè)置成輸出
ADCON1=0x07;
TRISA=0; //A口當(dāng)作數(shù)碼管位選擇控制腳,設(shè)置成輸出
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;
}
}
}