atmega8 例程:FLASH版5110

今天试试把数组存到flash里,再读出来,就在原先5110的工程上进行修改,能看出来我改在哪里了吗?

 

 

uint8 Chinese_Font[][25]PROGMEM =   
{
/*-- 文字: 芜 --*/
/*-- 楷体9; 此字体下对应的点阵为:宽x高=12x12 --*/
/*-- 高度不是8的倍数,现调整为:宽度x高度=12x16 --*/
{
0x00,0x48,0x48,0xDE,0xFE,0xF4,0xFE,0x76,0x24,0x04,0x04,0x00,0x00,0x02,0x03,0x03,
0x01,0x03,0x03,0x02,0x02,0x02,0x03,0x00
},

//省略其它定义


需要修改的两个文件:

/*********************************************************** 
** 名 称:void LCD_Write_Char(uint8 c)
** 功 能:写一个字符
** 入口参数:c 要写入的字符
** 出口参数:无
** 使用说明:无
*********************************************************
*/

void LCD_Write_Char(uint8 c)
{
uint8 line = 0;

c -= 32;

for (line = 0; line < 6; line++)
{
LCD_Write_Byte(pgm_read_byte(&ASSIC_Font[c][line]), 1);
}
}

 

/*********************************************************** 
** 名 称:void LCD_Write_Chinese_String(uint8 X, uint8 Y,uint8 ch_with,
** uint8 num,uint8 s[][],uint8 line,uint8 row)
** 功 能:向指定坐标写入中文句子
** 入口参数:X,Y 设置的坐标
** ch_with 汉字的宽度
** num 汉字的数量
** s 数组
** line 从第几行开始
** row 字与字间的宽度
** 出口参数:无
** 使用说明:无
*********************************************************
*/

void LCD_Write_Chinese_String(uint8 X, uint8 Y,uint8 ch_with,
uint8 num,uint8 s[][],uint8 line,uint8 row)
{
uint8 i = 0;
uint8 n = 0;
uint8 (*catch)[25] = s;

LCD_Set_XY(X,Y);
/*写字符串*/
for (i = 0;i < num;)
{
for (n = 0; n < ch_with * 2; n++)
{
if (n == ch_with)
{
if (i == 0)
{
LCD_Set_XY(X,Y + 1);
}
else
{
LCD_Set_XY((X + (ch_with + row) *i),Y + 1);
}
}
//从flash里读取数据
LCD_Write_Byte(pgm_read_byte(&catch[line + i][n] ),1);

}
i++;
LCD_Set_XY((X + (ch_with + row) * i),Y);
}
}




 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ATmega16是一款AVR系列的单片机,以其低功耗、高性能和丰富的外设模块受到广泛的应用。而Keil是一款用于ARM微控制器开发的集成开发环境(IDE),但也支持AVR芯片的开发。 在使用Keil开发ATmega16的过程中,我们可以通过编写例程来实现不同功能。例如,我们可以设计一个LED闪烁的例程来测试开发板是否正常工作。首先,我们需要将开发板上的LED连接到ATmega16的某个IO引脚上,并在Keil中配置这个引脚为输出模式。接下来,我们可以编写一个简单的C程序,在循环中不断地改变LED的状态,从而实现闪烁的效果。 除了LED闪烁,我们还可以在Keil中编写其他例程来实现更复杂的功能。例如,我们可以设计一个ADC(模数转换器)例程,以读取模拟输入信号的数值并进行处理。我们可以使用ATmega16上的ADC模块和Keil提供的库函数,在C程序中配置ADC,并编写相应的代码来读取和处理模拟输入信号。 另外,我们还可以利用Keil编写的例程来驱动其他外设模块,如LCD显示屏、蜂鸣器、定时器等。通过学习和应用例程,我们可以更好地了解ATmega16的各种功能和特性,并且能够快速开发出自己的嵌入式系统。 总之,使用Keil编写ATmega16的例程可以帮助我们简化开发过程,并且能够快速实现各种功能。结合ATmega16强大的硬件性能和Keil提供的开发工具,我们能够轻松地开发各种应用,同时也提高了开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值