pic 数码管实验

来源:互联网 发布:java web自学书籍推荐 编辑:程序博客网 时间:2024/05/22 16:47

/************************************************************************
  Name:          数码管
  Copyright:     唐湘衡
  Author:        唐湘衡
  Date: 24-10-09 15:42


  Description:
               功能:六位数码管从左(6)到右(1)显示123456六位数字。
               器件:pic18f4520芯片一片,pic-DEMO工程板一块,picMCD2仿真器,台式电脑
               要求:选用xt晶振,关闭看门狗定时器和低电压编程
**************************************************************************/
#include<pic18.h>

void Delay();                 //延时函数的声明
void  IntPort();                 //I/O口初始化函数申明
const char TABLE[] = {0XF9,0XA4,0XB0,0X99,0X92,0X82};      //定义1-5的数字 (D端口控制 )                                           
//*************************************************************************************

void main()
{
     IntPort();               //调用端口初始化函数
    
     PORTD = TABLE[0];        //输出数据1
     PORTA = OX1F;            //打开第六个数码管(最左一个)
     Delay();
    
     PORTD = TABLE[1];        //输出数据1
     PORTA = OX2F;            //打开第5个数码管
     Delay();
    
     PORTD = TABLE[2];        //输出数据1
     PORTA = OX37;            //打开第4个数码管
     Delay();
    
     PORTD = TABLE[3];        //输出数据1
     PORTA = OX3B;            //打开第3个数码管
     Delay();
    
     PORTD = TABLE[4];        //输出数据1
     PORTA = OX3D;            //打开第2个数码管
     Delay();
    
     PORTD = TABLE[5];        //输出数据1
     PORTA = OX3E;            //打开第1个(最右的)数码管
     Delay();
     
}

//*************************************************************************************

void Delay()                 //延时函数的定义
{
     int i;
     for (i=20000; i>0; i--){;}
}

//*************************************************************************************

void IntPort()
{
     TRISA = 0X00;            //A端口全部设为输出
     TRISD = 0X00;            //D端口全部设为输出
     ADCON1 = 0X07;           //设置A口为普通I/O口(模数转换寄存器)查表吧
    
     PORTA = 0XFF;
     PORTD = 0XFF;            //熄灭所有数码管
    
}