8回答

0收藏

mega256RFR2新建一个12864工程,下载了没反应

其他 其他 3441 人阅读 | 8 人回复 | 2013-10-16

本帖最后由 w_shuai 于 2013-10-16 20:58 编辑

#include "12864.h"
#include <asf.h>
#include "math.h"
/*************************************************
    文件名称:main.c
    功能描述:系统上电后,12864液晶显示
    编写人:wangshuai        
    创建日期:2013-8-07
**************************************************/


/************宏定义***********************************************/
#define  SID    IOPORT_CREATE_PIN(PORTE, 2)     //RW
#define  SCLK   IOPORT_CREATE_PIN(PORTE, 3)        //E


uchar dis0[]={"角度:      "};
uchar dis1[]={"t1:   "};
uchar dis2[]={"t2:   "};




    int abs(int temp)      
  {                                
      return temp > 0 ? temp:-temp ;
  }
  /**************************************************************************************
    函数名称:   void lcd_wbyte(uchar i_data)
    函数功能:   底层向lcd写1个字节
    入口参数:   传送的数据
    出口参数:   无
    返回值:     无
    其他:         
**************************************************************************************/
void lcd_wbyte(uchar i_data)
{
   uchar i;
   for(i=0;i<8;i++)
   {
     if(i_data&0x80)
       //gpio_configure_pin(SID, 1);
           ioport_set_pin_level(SID,1);
     else
      // gpio_configure_pin(SID, 0);
           ioport_set_pin_level(SID,0);
     //  gpio_configure_pin(SCLK, 0);
          ioport_set_pin_level(SCLK,0);
       delay_us(1);
      // gpio_configure_pin(SCLK, 1);
           ioport_set_pin_level(SCLK,1);
       i_data<<=1;
   }
   delay_us(5);
}
/**************************************************************************************
    函数名称:   void lcd_data(uchar data,uchar cmd)
    函数功能:   向lcd写命令或数据 cmd=0时写命令 cmd=1时写数据
    入口参数:   命令数据
    出口参数:   无
    返回值:     无
    其他:         
**************************************************************************************/
void lcd_data(uchar data,uchar cmd)
{
   uchar i_data;
   if(cmd==0)
   i_data=0xf8;
   else
   i_data=0xfa;
  // gpio_configure_pin(SCLK, 0);
    ioport_set_pin_level(SCLK,0);
   lcd_wbyte(i_data);
   i_data=data;
   i_data&=0xf0;
   lcd_wbyte(i_data);
   i_data=data;
   i_data<<=4;
   i_data&=0xf0;
   lcd_wbyte(i_data);   
}


/**************************************************************************************
    函数名称:   void lcd_init()
    函数功能:   lcd初始化
    入口参数:   无
    出口参数:   无
    返回值:     无
    其他:         
**************************************************************************************/
void lcd_init(void)
{
  lcd_data(0x30,0);        //基本功能设置
  delay_ms(4);
  lcd_data(0x02,0);       //清DDRM
  delay_ms(4);
  lcd_data(0x0c,0);       //开显示,不显示光标
  delay_ms(4);
  lcd_data(0x01,0);       //清屏
  delay_ms(4);         
}
/**************************************************************************************
    函数名称:   void lcd_pos(uchar x,uchar y)
    函数功能:   lcd显示位置
    入口参数:   x,y
    出口参数:   无
    返回值:     无
    其他:         
**************************************************************************************/
void lcd_pos(uchar x,uchar y)
{
switch(x)
  {
    case 0:  
     lcd_data(0x80+y,0);   break;
    case 1:  
      lcd_data(0x90+y,0);  break;
    case 2:  
      lcd_data(0x88+y,0);  break;
    case 3:  
      lcd_data(0x98+y,0);  break;  
   }
}
/*************************************************************************************
    函数名称:void Lcd_DisplayString(uchar x,uchar y,uchar string)
    函数功能:   写入一个字符
    入口参数:   x,y,string
    出口参数:   无
    返回值:     无
    其他:         
*************************************************************************************/
void Lcd_DisplayOneChar(uchar x,uchar y,uchar string)
{
        lcd_pos( x, y);
          lcd_data(string,1);
}
/*************************************************************************************
    函数名称:void Lcd_DisplayString(uchar x,uchar y,uchar *string)
    函数功能:   写入一个字符串
    入口参数:   x,y,*string
    出口参数:   无
    返回值:     无
    其他:         
*************************************************************************************/
void Lcd_DisplayString(uchar x,uchar y,uchar *string)
{
          uchar i;
          lcd_pos( x, y);
    for(i=0;string!='\0';i++)
    lcd_data(string,1);        
}
/*************************************************************************************
    函数名称:void Lcd_DisplayString(uchar x,uchar y,uchar num)
    函数功能:   显示四位数值(占空比或者转速)
    入口参数:   x行,y列,num占空比或者转速
    出口参数:   无
    返回值:     无
    其他:         
*************************************************************************************/
void Lcd_DisplayNUM_float(uchar x,uchar y,long int num)
{            
     uchar wan,qian,bai,shi,ge;
  
     wan=num/10000;
     qian=num%10000/1000;
     bai=num%1000/100;
     shi=num%100/10;
     ge=num%10;
     lcd_pos(x,y);
     lcd_data(wan+0x30,1);
     lcd_data(qian+0x30,1);
     lcd_data(bai+0x30,1);
     lcd_data(0x2e,1);
     lcd_data(shi+0x30,1);
     lcd_data(ge+0x30,1);
}
/*************************************************************************************
    函数名称:void Lcd_DisplayString(uchar x,uchar y,uchar num)
    函数功能:   显示三位数值(占空比或者转速)
    入口参数:   x行,y列,num占空比或者转速
    出口参数:   无
    返回值:     无
    其他:         
*************************************************************************************/
void Lcd_DisplayNUM(uchar x,uchar y,uchar num)
{            
     uchar bai,shi,ge;
     bai=num/100;
     shi=num%100/10;
     ge=num%10;
     lcd_pos(x,y);
     lcd_data(bai+0x30,1);
           lcd_data(shi+0x30,1);
            lcd_data(ge+0x30,1);
}
/*************************************************************************************
    函数名称:void Lcd_DisplayString(uchar x,uchar y,uchar num)
    函数功能:   显示三位数值(占空比或者转速)
    入口参数:   x行,y列,num占空比或者转速
    出口参数:   无
    返回值:     无
    其他:         
*************************************************************************************/
void Lcd_DisplayintNUMy(uchar x,uchar y,int num)
{            
     uchar shi,ge,num1;
     num1=(uchar)(abs(num)/4);
     shi=num1/10;
         ge=num1%10;
         lcd_pos(x,y);
     if(num>=0)
       lcd_data('+',1);
     else
       lcd_data('-',1);
           lcd_data(shi+0x30,1);
            lcd_data(ge+0x30,1);
}
void Lcd_DisplayintNUMy3(uchar x,uchar y,int num)
{            
     uchar bai,shi,ge,num1;
     num1=(uchar)(abs(num));
     bai=num1/100;
     shi=num1%100/10;
           ge=num1%10;
           lcd_pos(x,y);
     if(num>=0)
       lcd_data('+',1);
     else
       lcd_data('-',1);
     lcd_data(bai+0x30,1);
           lcd_data(shi+0x30,1);
            lcd_data(ge+0x30,1);
}
/**************************************************************************************
    函数名称:   void lcd_clear(void)
    函数功能:   将LCD中RAM清空,屏幕显示为空
    入口参数:   无
    出口参数:   无
    返回值:     无
    其他:         
**************************************************************************************/
void lcd_clear(void)
{
    uchar x,y;
    for(x=0;x<4;x++)
    {
       for(y=0;y<8;y++)
       {
         lcd_pos(x,y);
         lcd_data(0,0);
       }
    }
}
/*****************************************************************************/
void xianshi(void)
{
ioport_set_pin_dir(SID, IOPORT_DIR_OUTPUT);
ioport_set_pin_dir(SID, IOPORT_DIR_OUTPUT);
  lcd_init();
  delay_ms(15);
  Lcd_DisplayString(0,0,&dis0[0]);
  Lcd_DisplayString(1,0,&dis1[0]);
  Lcd_DisplayString(2,0,&dis2[0]);
}   


主函数

#include <asf.h>
#include "12864.h"
int main (void)
{
        board_init();
    sysclk_init();
        
        //gpio_toggle_pin(LED0_GPIO);
        xianshi();
        delay_ms(500);
        gpio_configure_pin(LED0_GPIO, 1);
        delay_ms(100);
        while (1)
        {
        
        
        }
        // Insert application code here, after the board has been initialized.
}

分享到:
回复

使用道具 举报

回答|共 8 个

倒序浏览

沙发

肖建辉

发表于 2013-10-16 21:17:10 | 只看该作者

楼主请问能不能给个下载过程的说明呢?如何下载程序到板子上啊?
板凳

目目呆呆

发表于 2013-10-16 21:19:59 | 只看该作者

jass2008 发表于 2013-10-16 21:17
楼主请问能不能给个下载过程的说明呢?如何下载程序到板子上啊?

打开,编译,然后就下载了啊,
地板

肖建辉

发表于 2013-10-16 21:30:54 | 只看该作者

w_shuai 发表于 2013-10-16 21:19
打开,编译,然后就下载了啊,

编译我知道 下载是点击哪里啊?串口之类的不需要设置吗?我这个板子是MEGA-1284p Xplained的,好像是通过串口来下载的
5#

目目呆呆

发表于 2013-10-16 21:46:58 | 只看该作者

jass2008 发表于 2013-10-16 21:30
编译我知道 下载是点击哪里啊?串口之类的不需要设置吗?我这个板子是MEGA-1284p Xplai ...

我的是mega256RFR2不需要设置串口的,点下面这个按钮就行了
6#

肖建辉

发表于 2013-10-16 22:25:38 | 只看该作者

w_shuai 发表于 2013-10-16 21:46
我的是mega256RFR2不需要设置串口的,点下面这个按钮就行了

我的不可以啊!
7#

目目呆呆

发表于 2013-10-16 22:34:29 | 只看该作者

jass2008 发表于 2013-10-16 22:25
我的不可以啊!

你找找和你一样板子的那个申请者看看问问哈
8#

昱枫

发表于 2013-10-26 00:19:53 | 只看该作者

你可以看看我写有关12864程序,希望对你有帮助。

https://www.cirmall.com/bbs/thread-19879-1-1.html
9#

目目呆呆

发表于 2013-10-26 12:10:53 | 只看该作者

昱枫 发表于 2013-10-26 00:19
你可以看看我写有关12864程序,希望对你有帮助。

https://www.cirmall.com/bbs/thread-19879-1-1.html ...

不一样哦,不知道什么问题,程序运行不过去
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条