专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

PIC18F458控制数码管显示1~8数字程序

作者:佚名   来源:本站原创   点击数:  更新时间:2013年04月05日   【字体:

  本程序是基于PIC18F458控制LED数码管显示1~8数字的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,FOSC/4*/

   SSPSTAT=0xC0;   /*时钟下降沿发送数据*/

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

}

/*显示子程序*/

void SPILED(char data)

{

   PORTAbits.RA5=0;/*LACK送低电平,为锁存做准备*/

   SSPBUF=data;                    /*启动发送*/

   do

   {

   ;

   }while(PIR1bits.SSPIF==0);      /*等待发送完毕*/

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

   PORTAbits.RA5=1;                /*最后给锁存信号,代表显示任务完成*/

}

/*主程序*/

main()

{

   unsigned  i;

   initial();                      /*系统初始化*/

   for(i=8;i>0;i--)             /*连续发送8个数据*/

   {

       data=table[i];              /*通过数组的转换获得待显示的段码*/

       SPILED(data);               /*发送显示段码显示*/      

   }

   for(;;)//无限循环

   {

   }

}
关闭窗口

相关文章