- 打卡等级:初来乍到
- 打卡总天数:6
- 最近打卡:2026-04-30 10:00:57
已绑定手机
新手上路
- 积分
- 27
|
用STC32G12K128芯片,用硬件LCM驱动16位并口屏,刷新还没有用软件模拟快,请教老师帮忙看看是哪里没有配置好吗?
////////////////////////////////////////
// LCM初始化函数
// 入口参数: 无
// 函数返回: 无
////////////////////////////////////////
void LCM_Init(void)
{
LCM_DATA16BSwitchP2P0(); //选择LCM数据口: {P2[7:0], P0[7:0]}
LCM_RSSwitchP40(); //选择LCM的RS端口: RS (P4.0)
LCM_CTRLSwitchP4442(); //选择LCM的R/W控制端口: RD (P4.4), WR (P4.2)
LCM_SetMode_i8080(); //设置LCM为i8080模式
LCM_SetBitWidth_16B(); //设置LCM为16数据模式
LCM_SetSetupTime(2); //设置LCM数据建立时间
LCM_SetHoldTime(1); //设置LCM数据保持时间
// LCM_SetIntPriority(3); //设置中断为最高优先级 //查询法不用打开中断
// LCM_EnableInt(); //使能LCM中断 //查询法不用打开中断
//LCMIFSTA = 0x00; // [0] LCMIFIF中断请求标志,需软件清零 //查询法不用打开中断
LCM_Enable(); //使能LCM功能
}
/*****************************************************************************
* @name :void LCM_Interrupt(void)
* @date :2018-11-13
* @function :None
* @parameters :None
* @retvalue :查询法不用打开中断
******************************************************************************/
void LCM_ISR(void) interrupt LCM_VECTOR
{
// LCMIFSTA = 0x00;
// LCD_CS=1;
}
/*****************************************************************************
* @name :void LCD_WR_REG(u16 Reg)
* @date :2018-08-09
* @function :Write an 16-bit command to the LCD screen 在LCD屏幕上写入16位命令
* @parameters :Reg:Command value to be written 要写入的命令值
* @retvalue :None
******************************************************************************/
void LCD_WR_REG(u16 Reg)
{
/*****************硬件LCM**********************************/
// LCMIFDATH = Reg>>8;
// LCMIFDATL = Reg;
// LCD_CS_L();
// LCMIFCR = 0x84; //启用接口,写出命令
// while(!LCMIFSTA); //中断法去掉这行
// LCMIFSTA = 0x00; //中断法去掉这行
// LCD_CS_H(); //中断法去掉这行
/*****************软件模拟**********************************/
LCD_RS=0;
LCD_CS=0;
LCD_WR=0;
LCD_DataPortH=Reg>>8;
LCD_DataPortL=Reg;
LCD_WR=1;
LCD_CS=1;
}
/*****************************************************************************
* @name :void LCD_WR_DATA(u16 Data)
* @date :2018-08-09
* @function :Write an 16-bit data to the LCD screen 将16位数据写入LCD屏幕
* @parameters :data:data value to be written 要写入的数据值
* @retvalue :None
******************************************************************************/
void LCD_WR_DATA(u16 Data)
{
/*****************硬件LCM**********************************/
// LCMIFDATH = Data>>8;
// LCMIFDATL = Data;
// LCD_CS_L();
// LCMIFCR = 0x85; // 启用接口,写出数据
// while(!LCMIFSTA); //中断法去掉这行
// LCMIFSTA = 0x00; //中断法去掉这行
// LCD_CS_H(); //中断法去掉这行
/*****************软件模拟**********************************/
LCD_RS=1;
LCD_CS=0;
LCD_WR=0;
LCD_DataPortH=Data>>8;
LCD_DataPortL=Data;
LCD_WR=1;
LCD_CS=1;
}
|
|