⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12864.c

📁 用c8051f020开发的单片机程序
💻 C
字号:
今天我写了一个12864的小程序,想要它显示出汉字.结果是出来了,但本该显示在0x80的字却显示在了0x81的地方了其它的也都一样地址加一显示.

#include <c8051f020.h>
#include <string.h>                 

//-----------------------------------------------------------------------------
//全局变量定义
//-----------------------------------------------------------------------------                              
//-----------------------------------------------------------------------------
// 函数定义
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void show(unsigned char lcddata,unsigned char address);
void PORT_Init (void);
void wtdata(unsigned char wtd);
void wtcode(unsigned char wtc);
void ckbusy(void);
void lcd(void);
unsigned char i;
//-----------------------------------------------------------------------------
// 主程序
//-----------------------------------------------------------------------------

void main (void)
 {
 
    WDTCN = 0xde;
    WDTCN = 0xad;                        //禁止看门狗定时器

    SYSCLK_Init ();                         // 系统时钟初始化
    PORT_Init ();                           // 交叉开关和通用I/O口初始化
 lcd();
 

  while(1)
 {wtdata(0xcc);
 wtdata(0xa8);
  
      }
}

//-----------------------------------------------------------------------------
//函数名称:      SYSCLK_Init ()
//函数功能:      系统时钟初始化
//入口参数:      无
//出口参数:      无
//全局变量引用:  无
//调用模块:      无 
//-----------------------------------------------------------------------------
//

  void SYSCLK_Init (void)
{
   //unsigned char i;                              // delay counter

   //OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal

   //for (i=0; i < 255; i++) ;           // Wait for osc. to start up

   //while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle

   //OSCICN = 0x88;    

   OSCICN = 0x05;                          // 系统时钟初始化为片内的 24.5MHz / 8                                                           
 }

//-----------------------------------------------------------------------------
//函数名称:      PORT_Init  ()
//函数功能:      通用I/O口及交叉开关初始化
//入口参数:      无
//出口参数:      无
//全局变量引用:  无
//调用模块:      无  
//-----------------------------------------------------------------------------

void PORT_Init (void)
{

   XBR0     = 0x00;                       // 没有选择数字外设
   XBR2     = 0x40;
   P74OUT  = 0x0f;
                  // P4口设为推挽方式
}
//-----------------------------------------------------------------------------
//函数名称:      LCD_Init ()
//函数功能:      LCD初始化
//入口参数:      无
//出口参数:      无
//全局变量引用:  无
//调用模块:      无  
//-----------------------------------------------------------------------------
void ckbusy()
{ unsigned int x;
 for(x=0;x<5000;x++);
}
//
void wtcode(unsigned char wtd)
{
 ckbusy();
 P4=0x1c;
 P5=wtd;
 P4=0x18;
 }
//
void wtdata(unsigned char wtc)
{
 ckbusy();
 P4=0x1d;
 P5=wtc;
 P4=0x19;

}

//
void lcd(void)
{
   ckbusy();
   P4&= 0Xef;
   P4|=0x10;   //复位 
   wtcode(0x3b);       //功能设定,8位数据口,基本指令集
   wtcode(0x3b);     //功能设定,8位数据口,基本指令集
   wtcode(0x0c);        //显示状态开关,整体显示,光标不显示,光标位置不反白
   wtcode(0x01);  //清屏
   wtcode(0x03);  //光标回到原点
   wtcode(0x06);   //光标不移动,位址加一
   wtcode(0x1e);    //光标向右移动
  // wtcode(0x45);
   wtcode(0x80);
    
}
请高手们帮忙解决一下.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -