c语言led灯汉字编码,单片机led灯板显示汉字程序

//该板子上的点阵为8*8,只能显示简单的一些汉子,如果要显示真正的汉字

//通过取模软件取的可以选择16*16点阵的板子

#include

#include

sbit SRCLK=P3^6;

sbit RCLK=P3^5;

sbit SER=P3^4;

//--定义要使用的IO口--//

#define COMMONPORTS                P0

//--列选通控制--//

unsigned char code TAB[8]  = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};

//--点阵字码--//

unsigned char code CHARCODE[4][8]=

{

0x7F,0x01,0x01,0x01,0x00,0x00,0x5F,0x00,  //Li

0x10,0x55,0xBF,0x14,0x10,0xFE,0x99,0x52,   //我

0x38,0x64,0x22,0x11,0x11,0x22,0x64,0x38,  //心形

{0x20,0x7F,0x84,0x6A,0xC1,0x5F,0x68,0x44}  //你

};

void delay(unsigned int time)

{

unsigned int i,j;

for(i=0;i

for(j=0;j<121;j++);

}

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

* 函数名         : Hc595SendByte(unsigned char dat)

* 函数功能                   : 想74H595发送一个字节的数据

* 输入           : 无

* 输出                  : 无

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

void Hc595SendByte(unsigned char dat)

{

unsigned char a;

SRCLK=0;

RCLK=0;

for(a=0;a<8;a++)

{

SER=dat>>7;

dat<<=1;

SRCLK=1;

_nop_();

_nop_();

SRCLK=0;

}

RCLK=1;

_nop_();

_nop_();

RCLK=0;

}

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

* 函数名         : main

* 函数功能                   : 主函数

* 输入           : 无

* 输出                  : 无

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

void main()

{

unsigned char tab, j;

unsigned int  i;

while(1)

{

for(i= 0; i<50; i++ )   //两个字之间的扫描间隔时间

{

for(tab=0;tab<8;tab++)

{

Hc595SendByte(0x00);                             //消隐

COMMONPORTS        = TAB[tab];                                 //输出字码

Hc595SendByte(CHARCODE[j][tab]);

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

当然可以用一个IO口控制LED灯板实现流水效果。以下是一个示例的主函数,使用芯旺微KF32A156MQV的C语言代码来实现流水功能: ```c #include <stdint.h> #include <stdbool.h> #define LED_PIN GPIO_Pin_0 // 假设流水连接到IO口的第0位 void delay(uint32_t count) { for (uint32_t i = 0; i < count; i++) { for (volatile uint32_t j = 0; j < 10000; j++) { // 延时函数,根据实际情况进行调整 } } } int main() { // 初始化MCU的IO口配置 // 这里假设使用的是芯旺微KF32A156MQV的库函数进行操作 // 具体的库函数根据您所使用的MCU型号和开发环境有所不同 // 这里只是一个示例,请根据实际情况进行修改 // 初始化GPIO引脚为输出模式 GPIO_Init(LED_PIN, GPIO_MODE_OUT_PP); while (true) { // 顺序点亮LED for (uint8_t i = 0; i < 8; i++) { GPIO_WriteBit(LED_PIN, i, SET); delay(100); // 控制每个LED亮的持续时间,根据需要进行调整 GPIO_WriteBit(LED_PIN, i, RESET); } // 反向点亮LED for (uint8_t i = 7; i > 0; i--) { GPIO_WriteBit(LED_PIN, i, SET); delay(100); // 控制每个LED亮的持续时间,根据需要进行调整 GPIO_WriteBit(LED_PIN, i, RESET); } } return 0; } ``` 请注意,这只是一个示例代码,具体的GPIO口初始化和控制函数可能因为不同的MCU型号和开发环境而有所不同。您需要根据您所使用的具体MCU和开发环境,调整代码中的相关函数和参数。同时,您也可以根据实际需求对延时时间和流水的亮灭顺序进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值