单片机的12864阴码和阳码是如何得到的?

2024-12-16 18:48:44
推荐回答(2个)
回答1:

百度 字模软件

自己写不够费劲的。为了省时间和精力,有些编程高手会自己编写字模生成软件。这就是网上共享软件产生的原因。普通的字模软件可以将汉字转换为码表输出。还有一些可以将调入的图片转换为码表。不过对图片有要求。最大不能超过128*64。

编程中,只要得到一种编码就可以方便的得到另外一种编码。只要在写数据子函数中增加一个操作符就可以很简单的将阳码转为阴码或是将阴码转为阳码。

Transfer_data(*address); 比如这个。这就是一个写入阳码的子函数。在里面增加一个~符号,变为Transfer_data(~*address); 后。就可以方便的将阳码转为阴码了。我现在用的是UC1701的驱动。不知道别的驱动会不会一样。不过我认为,应该都差不多。

回答2:

我们这学期刚学的凌阳61板,语音程序有A2000,S480,S2403种算法,我先给个A2000的,还需要的话发消息给我,一起学习啦!
#include "A2000.h"
#define SPEECH_1 0
#define DAC1 1
#define DAC2 2
#define Ramp_UpDn_Off 0
#define Ramp_UpDn_On 3
#define Manual 0
#define Auto 1
#define Full 1
#define Empty 2
#define Mode 1

//===============================================================================================
// 函数: main()
// 描述:主函数
//===============================================================================================
main()
{
extern long RES_WW_24K_SA,RES_WW_24K_EA; //定义语音资源的首末地址标号
long int Addr; //定义地址变量
int Ret = 0; //定义获取语音数据变量并初始化
if(Mode == 1) //采用自动方式播放
{
SACM_A2000_Initial(1); //自动方式播放初始化
SACM_A2000_Play(SPEECH_1,DAC1,Ramp_UpDn_On); //定义语音索引号、播放通道、允许音量增/减调节
while(1){
F_ClearWatchdog();
SACM_A2000_ServiceLoop();} //获取语音数据并将其填入解码队列
}
if(Mode == 0) //采用非自动方式播放
{
Addr=RES_WW_24K_SA; //送入语音队列的首址
SACM_A2000_Initial(0); //非自动方式播放的初始化
SACM_A2000_InitDecoder(DAC1); //开始对A2000的语音数据以非自动方式解码
while(SACM_A2000_TestQueue()!=Full) //测试并获取语音队列的状态
{
Ret=SP_GetResource(Addr); //从资源文件里获取一个字型语音数据
SACM_A2000_FillQueue(Ret); //获取语音编码数据并填入语音队列等候解码
Addr++;
}
while(1)
{
if(SACM_A2000_TestQueue()!=Full)
{
Ret =SP_GetResource(Addr);
SACM_A2000_FillQueue(Ret);
Addr++;
}
if(Addr< RES_WW_24K_EA ) //如果该段语音未播完,即未到达末地址时
SACM_A2000_Decoder(); //获取资源并进行解码,再通过中断服务子程序送入DAC通道播放
else
SACM_A2000_Stop(); //否则,停止播放
F_ClearWatchdog(); //清看门狗
}
}
}
另外,站长团上有产品团购,便宜有保证