⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 摩托罗拉单片机的数码管LED的原代码
💻 C
字号:
/*-----------------------------------------------------*
*工 程 名:LEDTest.prj                                  *
*硬件连接:PTA 7-0 分别接LED的数据线 h g f e d c b a    *
*         PTB 3-0 分别接各LED的位选线(自左到右)        *
*程序描述:在4连排数码管上从左至右显示3568              *
*目的:实现数码管的显示                                 *
*说明:SD-HC08实验仪器未提供LED的固定接线,也未提供LED,可*
*   自行购买,在IC扩展区接线,同时注意LCD及键盘的可能影响* 
*-------《嵌入式应用技术基础教程》教学实例------------*/
/*[头文件]*/
#include "GP32C.h"         //MCU头文件
//LED相关接线
#define LEDdata PTA        //LED数据线接口
#define LEDdata_D DDRA     //数据线相应方向寄存器
#define LEDcs PTB          //位选线接口 
#define LEDcs_D DDRB       //位选线相应方向寄存器
//[内部变量定义]
unsigned char  LEDbuf[4],CS; //LED显示缓冲区及位选信号                        
void LEDshow1(unsigned char cs,unsigned char num);
/*[主程序]*/
void main()
  {
    unsigned char i;
    unsigned int j;
    LEDdata_D=0xFF;      //数据口为输出
    LEDcs_D=0xFF;        //位选口为输出
    //LEDbuf[0-3]中放入要显示的数字
    LEDbuf[0]=3;
    LEDbuf[1]=5;
    LEDbuf[2]=6;
    LEDbuf[3]=8;
    //在4位共阴极LED上显示LEDbuf中的4个数据(只允许0-9)
    CS=0b11110111;       //初始位选信号(共阴极情况)
    while(1)
    {
       CS=0b11110111;    //初始位选信号(共阴极情况)
       for(i=0;i<=3;i++)
         {
          LEDshow1(CS,LEDbuf[i]);  //显示一个数据
          CS=(CS>>1);              //变动位选信号
     	  for(j=0;j<5;j++);          //延时   
         }  
     }
  }
//显示码表
const unsigned char Table[10]={0x3F,0x06,0x5B,0x4F,0x66,\
               0x6D,0x7D,0x07,0x7F,0x6F}; 
/*LEDshow1:在1个LED上显示数字-------------------------*
*功  能:在第cs个LED上显示数字num(本处转码)            *
*参  数:cs(LED信号,决定位选) num(要显示的数字)        *
*返  回:无                                            *
*----------------------------------------------------*/
void LEDshow1(unsigned char cs,unsigned char num)
	{
	  LEDcs=cs;              //送位选信号
	  LEDdata=Table[num];    //取显示码并送到LED数据线
  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -