📄 main.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 + -