用PROTEUS仿真单片机与七段数码管

发布时间: 2024-08-09
来源: 电子工程世界

设计要求:

用七段数码管显示数字0~9

(代码来源于指导书)

#include


void cct_init(void);

void delay(int);

void DisplayOn7Segment(char);


int main(void)

{

   char ch = '0';              // Character to be displayed on 7seg


   cct_init();                 // Make all ports zero    


   while(1)           

   {

    DisplayOn7Segment(ch);      // Display ch on 7seg

    delay(30000);              // About 1 sec delay


    switch(ch)                  // Update ch with new value to be displayed

    {

        case '0':    ch = '1';  break;

        case '1':    ch = '2';  break;

        case '2':    ch = '3';  break;

        case '3':    ch = '4';  break;

        case '4':    ch = '5';  break;

        case '5':    ch = '6';  break;

        case '6':    ch = '7';  break;

        case '7':    ch = '8';  break;

        case '8':    ch = '9';  break;

        case '9':    ch = '0';  break;

    

    

        default: ch = '0';  break;

    }

   }

}


void cct_init(void)

{

    P0 = 0x00;   

    P1 = 0x00;   

    P2 = 0x00;   

    P3 = 0x00;  

}


void delay(int a)

{

   int i;

   for(i=0;i}


void DisplayOn7Segment(char ch)   // ch can have a value from '0' to 'F' only

{

    switch(ch)

    {

        case '0':    P2 = 0x3F;  break;

        case '1':    P2 = 0x06;  break;

        case '2':    P2 = 0x5B;  break;

        case '3':    P2 = 0x4F;  break;

        case '4':    P2 = 0x66;  break;

        case '5':    P2 = 0x6D;  break;

        case '6':    P2 = 0x7D;  break;

        case '7':    P2 = 0x07;  break;

        case '8':    P2 = 0x7F;  break;

        case '9':    P2 = 0x6F;  break;

    


        default: P2 = 0x3F;  break;

    }    

}


以上为共阴极

然后共阳极的不确定对不对,但是能运行,仅供参考吧

放一下代码,只是更改了一些数值,生成的hex文件还是可以用的

#include

void cct_init(void);

void delay(int);

void DisplayOn7Segment(char);

int main(void)

{

   char ch = '0';              // Character to be displayed on 7seg

   cct_init();                 // Make all ports zero    

   while(1)           

   {

    DisplayOn7Segment(ch);      // Display ch on 7seg

    delay(30000);              // About 1 sec delay

    switch(ch)                  // Update ch with new value to be displayed

    {

        case '0':    ch = '1';  break;

        case '1':    ch = '2';  break;

        case '2':    ch = '3';  break;

        case '3':    ch = '4';  break;

        case '4':    ch = '5';  break;

        case '5':    ch = '6';  break;

        case '6':    ch = '7';  break;

        case '7':    ch = '8';  break;

        case '8':    ch = '9';  break;

        case '9':    ch = '0';  break;

        default: ch = '0';  break;

    }1

   }

}

void cct_init(void)

{

    P0 = 0x00;   

    P1 = 0x00;   

    P2 = 0x00;   

    P3 = 0x00;  

}

void delay(int a)

{

   int i;

   for(i=0;i}

void DisplayOn7Segment(char ch)   // ch can have a value from '0' to 'F' only

{

    switch(ch)

    {

        case '0':    P2 = 0xC0;  break;

        case '1':    P2 = 0xF9;  break;

        case '2':    P2 = 0xA4;  break;

        case '3':    P2 = 0xB0;  break;

        case '4':    P2 = 0x99;  break;

        case '5':    P2 = 0x92;  break;

        case '6':    P2 = 0x82;  break;

        case '7':    P2 = 0xF8;  break;

        case '8':    P2 = 0x80;  break;

        case '9':    P2 = 0x90;  break;

        default: P2 = 0xC0;  break;

    }    

}


大概就是这个样子吧


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。