12232 LCM Driver

本文详细介绍了12232LCM模块的驱动代码实现,包括初始化、重置、填充、清除等功能。代码展示了如何通过E1、E2等信号控制液晶显示,以及如何设置页面和列进行数据读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写的12232LCM模块的驱动代码,实现了基本的功能。
  1None.gif//==============================================================
  2None.gif//12232.h
  3None.gif//==============================================================
  4None.gif#ifndef __12232Driver_H
  5None.gif#define __12232Driver_H
  6None.gifvoid LCD_Init(void);
  7None.gifvoid LCD_Reset(void);
  8None.gifvoid LCD_FillAll(void);
  9None.gifvoid LCD_ClearAll(void);
 10None.gifvoid LCD_WriteCmd(unsigned char cmd);
 11None.gifvoid LCD_WriteCmd1(unsigned char cmd);
 12None.gifvoid LCD_WriteCmd2(unsigned char cmd);
 13None.gifvoid LCD_SetColumn(unsigned char column);
 14None.gifvoid LCD_SetColumn1(unsigned char column);
 15None.gifvoid LCD_SetColumn2(unsigned char column);
 16None.gifvoid LCD_SetPage(unsigned char page);
 17None.gifvoid LCD_SetPage1(unsigned char page);
 18None.gifvoid LCD_SetPage2(unsigned char page);
 19None.gifvoid LCD_WriteData(unsigned char d);
 20None.gifvoid LCD_WriteData1(unsigned char d);
 21None.gifvoid LCD_WriteData2(unsigned char d);
 22None.gifunsigned char LCD_ReadData1(void);
 23None.gifunsigned char LCD_ReadData2(void);
 24None.gif#endif
 25None.gif
 26None.gif//==============================================================
 27None.gif//12232Driver.c
 28None.gif//==============================================================
 29None.gif#include <reg51.h>
 30None.gif#include "12232Driver.h"
 31None.gif//#include <intrins.h>
 32None.gif
 33None.gifsbit E1=P3^4;
 34None.gifsbit E2=P3^5;
 35None.gifsbit A0=P3^7;
 36None.gifsbit RST=P3^2;
 37None.gifsbit RW=P3^6;
 38None.gif
 39None.gif#define LCD_DISPLAY_ON         0xAF
 40None.gif#define LCD_DISPLAY_OFF        0xAE
 41None.gif#define LCD_START_LINE_0    0xC0    //Set Start Line 0
 42None.gif#define LCD_DRIVER_NORMAL    0xA4    //Normal display operation
 43None.gif#define LCD_DRIVER_STATIC    0xA5    //Power Save
 44None.gif#define LCD_DUTY_32            0xA9
 45None.gif#define LCD_DUTY_16            0xA8
 46None.gif#define LCD_RIGHTWARD_OUTPUT    0xA0
 47None.gif#define LCD_LEFTWARD_OUTPUT        0xA1
 48None.gif#define LCD_RESET            0xE3
 49None.gif#define LCD_PAGE_0            0xB8
 50None.gif#define LCD_RMW 0xE0
 51None.gif#define LCD_END                0xEE
 52None.gif#define uchar unsigned char
 53None.gif//LCD Controller Display and Control Functions
 54None.gif
 55None.gifvoid LCD_Init(void)
 56ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 57InBlock.gif    //E1=0;
 58InBlock.gif    //E2=0;
 59InBlock.gif    //Reset
 60InBlock.gif    RST=0;
 61InBlock.gif    RST=1;
 62InBlock.gif    LCD_WriteCmd(LCD_DISPLAY_ON);    //Display On
 63InBlock.gif    LCD_WriteCmd(LCD_START_LINE_0);        //Start = 0
 64InBlock.gif    LCD_WriteCmd(LCD_DRIVER_NORMAL);        //Driver
 65InBlock.gif    LCD_WriteCmd(LCD_DUTY_32);        //Duty 32
 66InBlock.gif    LCD_WriteCmd(LCD_RIGHTWARD_OUTPUT);        //ADC
 67InBlock.gif    LCD_WriteCmd(LCD_RESET);        //Reset
 68InBlock.gif    LCD_Reset();
 69ExpandedBlockEnd.gif}

 70None.gif
 71None.gifvoid LCD_Reset(void)
 72ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 73InBlock.gif    LCD_WriteCmd(LCD_RESET);
 74ExpandedBlockEnd.gif}

 75None.gif
 76None.gifvoid LCD_FillAll(void)
 77ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 78InBlock.gif    uchar page,y;
 79InBlock.gif    LCD_WriteCmd(LCD_RMW);
 80InBlock.gif    for(page=0;page<4;page++)
 81ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 82InBlock.gif        LCD_SetPage(page);
 83InBlock.gif        LCD_SetColumn(0);
 84InBlock.gif        for(y=0;y<61;y++)
 85ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
 86InBlock.gif            LCD_WriteData(0xFF);        
 87ExpandedSubBlockEnd.gif        }

 88InBlock.gif        LCD_WriteCmd(LCD_END);
 89ExpandedSubBlockEnd.gif    }

 90ExpandedBlockEnd.gif}

 91None.gif
 92None.gifvoid LCD_ClearAll(void)
 93ExpandedBlockStart.gifContractedBlock.gifdot.gif{
 94InBlock.gif    uchar page,y;
 95InBlock.gif    LCD_WriteCmd(LCD_RMW);
 96InBlock.gif    for(page=0;page<4;page++)
 97ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
 98InBlock.gif        LCD_SetPage(page);
 99InBlock.gif        LCD_SetColumn(0);
100InBlock.gif        for(y=0;y<61;y++)
101ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
102InBlock.gif            LCD_WriteData(0);        
103ExpandedSubBlockEnd.gif        }

104InBlock.gif        LCD_WriteCmd(LCD_END);
105ExpandedSubBlockEnd.gif    }

106ExpandedBlockEnd.gif}

107None.gif
108None.gif
109None.gifvoid LCD_WriteCmd(unsigned char cmd)
110ExpandedBlockStart.gifContractedBlock.gifdot.gif{
111InBlock.gif    LCD_WriteCmd1(cmd);
112InBlock.gif    LCD_WriteCmd2(cmd);
113InBlock.gif    return;
114ExpandedBlockEnd.gif}

115None.gif
116None.gifvoid LCD_WriteCmd1(unsigned char cmd)
117ExpandedBlockStart.gifContractedBlock.gifdot.gif{
118InBlock.gif    RW=0;
119InBlock.gif    E1=0;
120InBlock.gif    A0=0;
121InBlock.gif    P1=cmd;
122InBlock.gif    E1=1;
123InBlock.gif    E1=0;
124InBlock.gif    return;
125ExpandedBlockEnd.gif}

126None.gif
127None.gifvoid LCD_WriteCmd2(unsigned char cmd)
128ExpandedBlockStart.gifContractedBlock.gifdot.gif{
129InBlock.gif    RW=0;
130InBlock.gif    E2=0;
131InBlock.gif    A0=0;
132InBlock.gif    P1=cmd;
133InBlock.gif    E2=1;
134InBlock.gif    E2=0;
135InBlock.gif    return;
136ExpandedBlockEnd.gif}

137None.gif
138None.gifvoid LCD_WriteData(unsigned char d)
139ExpandedBlockStart.gifContractedBlock.gifdot.gif{
140InBlock.gif    LCD_WriteData1(d);
141InBlock.gif    LCD_WriteData2(d);
142InBlock.gif    return ;
143ExpandedBlockEnd.gif}

144None.gif
145None.gifvoid LCD_WriteData1(unsigned char d)
146ExpandedBlockStart.gifContractedBlock.gifdot.gif{
147InBlock.gif    RW=0;
148InBlock.gif    E1=0;
149InBlock.gif    A0=1;
150InBlock.gif    P1=d;
151InBlock.gif    E1=1;
152InBlock.gif    E1=0;
153InBlock.gif    return;
154ExpandedBlockEnd.gif}

155None.gif
156None.gifvoid LCD_WriteData2(unsigned char d)
157ExpandedBlockStart.gifContractedBlock.gifdot.gif{
158InBlock.gif    RW=0;
159InBlock.gif    E2=0;
160InBlock.gif    A0=1;
161InBlock.gif    P1=d;
162InBlock.gif    E2=1;
163InBlock.gif    E2=0;
164InBlock.gif    return;
165ExpandedBlockEnd.gif}

166None.gif
167None.gifvoid LCD_SetColumn(unsigned char d)
168ExpandedBlockStart.gifContractedBlock.gifdot.gif{
169InBlock.gif    LCD_SetColumn1(d);
170InBlock.gif    LCD_SetColumn2(d);
171InBlock.gif    return;
172ExpandedBlockEnd.gif}

173None.gifvoid LCD_SetColumn1(unsigned char d)
174ExpandedBlockStart.gifContractedBlock.gifdot.gif{
175InBlock.gif    LCD_WriteCmd1(d);
176InBlock.gif    return;
177ExpandedBlockEnd.gif}

178None.gif
179None.gifvoid LCD_SetColumn2(unsigned char d)
180ExpandedBlockStart.gifContractedBlock.gifdot.gif{
181InBlock.gif    LCD_WriteCmd2(d);
182InBlock.gif    return;
183ExpandedBlockEnd.gif}

184None.gif
185None.gifvoid LCD_SetPage(unsigned char page)
186ExpandedBlockStart.gifContractedBlock.gifdot.gif{
187InBlock.gif    LCD_SetPage1(page);
188InBlock.gif    LCD_SetPage2(page);
189InBlock.gif    return;
190ExpandedBlockEnd.gif}

191None.gifvoid LCD_SetPage1(unsigned char page)
192ExpandedBlockStart.gifContractedBlock.gifdot.gif{
193InBlock.gif    page=page%4;
194InBlock.gif    LCD_WriteCmd1(LCD_PAGE_0+page);    //0x5C
195InBlock.gif    return;
196ExpandedBlockEnd.gif}

197None.gif
198None.gifvoid LCD_SetPage2(unsigned char page)
199ExpandedBlockStart.gifContractedBlock.gifdot.gif{
200InBlock.gif    page=page%4;
201InBlock.gif    LCD_WriteCmd2(LCD_PAGE_0+page);    //0x5C
202InBlock.gif    return;
203ExpandedBlockEnd.gif}

204None.gif
205None.gifunsigned char LCD_ReadData1(void)
206ExpandedBlockStart.gifContractedBlock.gifdot.gif{
207InBlock.gif    unsigned char d=0;
208InBlock.gif    RW=1;
209InBlock.gif    E1=0;
210InBlock.gif    A0=1;
211InBlock.gif    P1=0xFF;
212InBlock.gif    E1=1;
213InBlock.gif    d=P1;
214InBlock.gif    E1=0;
215InBlock.gif    return d;
216ExpandedBlockEnd.gif}

217None.gif
218None.gifunsigned char LCD_ReadData2(void)
219ExpandedBlockStart.gifContractedBlock.gifdot.gif{
220InBlock.gif    unsigned char d=0;
221InBlock.gif    RW=1;
222InBlock.gif    E2=0;
223InBlock.gif    A0=1;
224InBlock.gif    P1=0xFF;
225InBlock.gif    E2=1;
226InBlock.gif    d=P1;
227InBlock.gif    E2=0;
228InBlock.gif    return d;
229ExpandedBlockEnd.gif}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值