技术热线: 4007-888-234

[MCD

更新时间: 2019-01-07
阅读量:905

//实验目的:熟悉多位数码管动态扫描显示的方法。
//六位数码管从左到右显示0123456六位数字。
//硬件要求:拨码开关S5、S6全部置ON。其他拨码开关全置OFF。

#include              //包含单片机内部资源预定义
 __CONFIG(0x1832);       
//芯片配置字,看门狗关,上电延时开,掉电检测关,低压编程关,加密,4M晶体HS振荡

 void  delay();              //delay函数申明
 void  init();               //I/O口初始化函数申明
 const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92};  //定义常数0-5的数据表格

 void main()                 //主函数
   {

     while(1)                //死循环,让数码管持续点亮
       {
         init();             //调用初始化函数
         PORTD=TABLE[0];     //D口输出数据表格第1个数据0
         PORTA=0X1F;         //点亮第1位数码管
         delay();            //延时一定时间,保证数码管亮度

         PORTD=TABLE[1];     //显示数据1(同数据0)
         PORTA=0X2F;
         delay();

         PORTD=TABLE[2];     //显示数据2(同数据0)
         PORTA=0X37;
         delay();

         PORTD=TABLE[3];     //显示数据3(同数据0)
         PORTA=0X3B;
         delay();

         PORTD=TABLE[4];     //显示数据4(同数据0)
         PORTA=0X3D;
         delay();

         PORTD=TABLE[5];     //显示数据5(同数据0)
         PORTA=0X3E;
         delay();
        }
    }        

 void init()                 //I/O口初始化函数
   {
    TRISA=0X00;             //设置A0输出,其他输入
    TRISD=0X00;             //设置D口输出
    ADCON1=0X07;            //设置A口为普通I/O口
    PORTA=0xff;            
    PORTD=0xff;             //先熄灭所有显示
   }

 void  delay()              //延时程序
    {
     int i;                 //定义整形变量
     for(i=0x100;i--;);     //延时
    }