atmega8 例程:FLASH版5110

发布者:科技徜徉最新更新时间:2016-12-29 来源: eefocus关键字:atmega8  FLASH版 手机看文章 扫描二维码
随时随地手机看文章

今天试试把数组存到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);  
    }  
}


关键字:atmega8  FLASH版 引用地址:atmega8 例程:FLASH版5110

上一篇:IAR 定义变量到寄存器中 "__regvar"
下一篇:atmega8 Flash的使用

推荐阅读最新更新时间:2024-03-16 15:27

ATMega8 中断方式UART测试程序
#include avr/io.h #include avr/interrupt.h #include avr/signal.h #define uchar unsigned char #define uint unsigned int uchar g_bTxdPos=0; //发送定位计数器 uchar g_bTxdLen=0; //等待发送字节数 uchar g_bRxdPos=0; //接收定位计数器 uchar g_bRxdLen=0; //等待接收字节数 uchar g_aSendBuf ; //发送数据绶冲区 uchar g_aRecvBuf ; //接收数据缓冲区 //接收中断 SIGNAL
[单片机]
ATmega8 空闲模式
当SM2..0 为000 时, SLEEP 指令将使MCU 进入空闲模式。在此模式下,CPU 停止运 行,而SPI、USART、模拟比较器、ADC、两线串行接口、定时器/ 计数器、看门狗和 中断系统继续工作。这个睡眠模式只停止了clkCPU 和clkFLASH,其他时钟则继续工作。 象定时器溢出与USART 传输完成等内外部中断都可以唤醒MCU。如果不需要从模拟比 较器中断唤醒MCU,为了减少功耗,可以切断比较器的电源。方法是置位模拟比较器控 制和状态寄存器ACSR 的ACD。如果ADC 使能,进入此模式后将自动启动一次转换。
[单片机]
ATmega88的简单引脚设置
/*******************************************************************************/ //ATmega88简单输出; //pd0和pb1输入 pd1输出 //当pb0为低电平的时候,pd1输出高电平 //当pb1为低电平的时候,pd1输出高低交换电平 /*******************************************************************************/ #include iom88v.h #include macros.h void delay(int x) { int a,b;
[单片机]
基于ATmega8单片机多功能实验仪设计
O 引言 由于嵌入式系统应用技术的不断发展,对于核心处理器性能的要求越来越高,一些传统的51系列控制芯片已经难以胜任许多复杂的任务。因此,我们通过调研分析,自行开发了一套基于ATmega8高性能系列单片机的实验开发系统。ATMEL公司的ATmegs8单片机是一种具有独特结构的8-bit RISC CPU,其在线自编程Flash和单时钟指令,为C语言、Basic语言优化的指令系统设置,以及丰富的片载外围接口电路,使功能强大的ATmegs8单片机成为一款高度灵活和高性价比的芯片,为许多高端嵌入式系统设计提供了优秀的解决方案。 1 系统总体设计 单片机多功能实验仪硬件的总体设计原理框图如图l所示: 单片机实验开发应用
[单片机]
基于<font color='red'>ATmega8</font>单片机多功能实验仪设计
AVR单片机系列之-Atmega8A编程入门
前言: 最近由于开始设计无刷直流电机电子调速器,参考网上的一些资料,选用了Atmega8A-AU单片机作为主控芯片。 该芯片采用8位结构,最高主频16MHz(内部振荡器则8MHz),可实现2.7V-5.5V供电,单个IO口最大可支持40mA的拉/灌电流,更难能可贵的是,价格十分便宜,我在淘宝上面购买才3块多一片。 之前从未使用过AVR系列的单片机,于是一开始编程也遇到了一些障碍,直至最终编写好第一个程序,整个过程在此记录下来,供以后参考。 一、下载器 首先我在百度上和阿莫论坛里面查询了一下AVR单片机的下载器,然后又在淘宝上面搜索对应的型号,发现目前国内主流的是ISP串口下载器,也就是和51单片机的下载器原理一样。于是乎在淘宝上面
[单片机]
AVR单片机系列之-<font color='red'>Atmega8</font>A编程入门
基于ATmega8的电动车蓄电池智能管理系统设计
引言 电动汽车的无(低)污染优点,使其成为当代汽车发展的主要方向。电动汽车的发展需要解决两大难题,即能量存储和动力驱动。由于短期内动力电池储能不足的问题难以解决,使能量管理技术成为电动汽车发展的关键。在传统充电技术中,常用的恒压充电、恒压限流充电、恒流充电等模式,都是由人工控制充电过程,大多存在着严重的过充电现象。充电质量的好坏,直接影响蓄电池的使用寿命。而新型蓄电池智能管理系统的设计,就是为了在线检测动力电池状态,提高充电质量和效率,使操作人员只担任辅助性工作。 管理系统的组成及硬件设计 本文设计的智能化管理系统是一种分布式、模块化的车载电池监控系统,它主要由主控模块、可控充电系统模块、电压采集子模块、温度采集子模块
[嵌入式]
atmega8 Flash的使用
GCCAVR中读取Flash区数据 定义(只能为全局变量): const int temp PROGMEM = 1; 读取: pgm_read_byte(addr); pgm_read_word(addr); pgm_read_dword(addr); 字符串: 全局定义: const char ss PROGMEM = hello ; 函数内定义: const char *ss = PSTR( hello ); 读取同上 注意包含:#include avr/pgmspace.h
[单片机]
基于Atmega8的数字功放设计
1 引言 数字功放由于其效率高、易与数字音源对接等优点而在现实生活中具有越来越广泛的应用。它主要包含两部分,图1为数字功放的基本框图。其中PWM变换大致有两种,一是模拟PWM,即将输入的模拟信号或数字信号经D/A后与三角波进行比较,这种变换必须要有频率上百kHz、线性度好、满幅的三角波,而且还要有高速模拟比较器,否则将影响PWM波形在解调后的波形,这些都将增加成本和设计复杂度(使用集成D类功放或D类控制芯片另当别论)。二是数字式PWM,即将输入数字信号或模拟信号经A/D后与计数器相比较,即用计数的方法代替三角波,从而避免了三角波非线性所引起的失真。同传统的模拟方式相比,数字方式具有设计简单,效率更高,抗干扰性更强等优点。而Atm
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved