專注電子技術(shù)學習與研究
當前位置:單片機教程網(wǎng) >> MCU設計實例 >> 瀏覽文章

PIC18F458控制數(shù)碼管顯示1~8數(shù)字程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年04月05日   【字體:

  本程序是基于PIC18F458控制LED數(shù)碼管顯示1~8數(shù)字的C語言程序,筆者也是剛剛學習PIC單片機,也是和大家一起學習交流吧!不多說了,先貼程序:

#include "p18f458.h"

static volatile int table[20]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0XD8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x7f,0xbf,0x89,0xff};//段碼

volatile unsigned char data;

/*初始化子程序*/

void initial()

{

   TRISA=0x00; /*A口設置為輸出*/

   TRISC=0x00; /*SDO引腳為輸出,SCK引腳為輸出*/

   INTCON=0x00;    /*關閉所有中斷*/

   SSPCON1=0x30;   /*SSPEN=1;CKP=1,F(xiàn)OSC/4*/

   SSPSTAT=0xC0;   /*時鐘下降沿發(fā)送數(shù)據(jù)*/

   PIR1=0;     /*清除SSPIF標志*/

}

/*顯示子程序*/

void SPILED(char data)

{

   PORTAbits.RA5=0;/*LACK送低電平,為鎖存做準備*/

   SSPBUF=data;                    /*啟動發(fā)送*/

   do

   {

   ;

   }while(PIR1bits.SSPIF==0);      /*等待發(fā)送完畢*/

   PIR1bits.SSPIF=0;               /*清除SSPIF標志*/

   PORTAbits.RA5=1;                /*最后給鎖存信號,代表顯示任務完成*/

}

/*主程序*/

main()

{

   unsigned  i;

   initial();                      /*系統(tǒng)初始化*/

   for(i=8;i>0;i--)             /*連續(xù)發(fā)送8個數(shù)據(jù)*/

   {

       data=table[i];              /*通過數(shù)組的轉(zhuǎn)換獲得待顯示的段碼*/

       SPILED(data);               /*發(fā)送顯示段碼顯示*/      

   }

   for(;;)//無限循環(huán)

   {

   }

}
關閉窗口

相關文章