YX ZHANG
/
ChnLCD12864
ST7920 based Chinese LCD driver
chn12864.cpp@1:426eea211d41, 2017-07-22 (annotated)
- Committer:
- zhangyx
- Date:
- Sat Jul 22 04:17:18 2017 +0000
- Revision:
- 1:426eea211d41
- Parent:
- 0:7749526f3bdf
link to text2hex converter
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zhangyx | 0:7749526f3bdf | 1 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 2 | * 版权 : |
zhangyx | 0:7749526f3bdf | 3 | * 模块名称 :st7920驱动的12864液晶的串行工作方式驱动程序 |
zhangyx | 0:7749526f3bdf | 4 | * 作者 : |
zhangyx | 0:7749526f3bdf | 5 | * 创建日期 :2009-10-15 |
zhangyx | 0:7749526f3bdf | 6 | * 功能概要 : |
zhangyx | 0:7749526f3bdf | 7 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 8 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 9 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 10 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 11 | |
zhangyx | 0:7749526f3bdf | 12 | #include "chn12864.h" |
zhangyx | 0:7749526f3bdf | 13 | #include "mbed.h" |
zhangyx | 0:7749526f3bdf | 14 | |
zhangyx | 0:7749526f3bdf | 15 | #define x1 0x80 |
zhangyx | 0:7749526f3bdf | 16 | #define x2 0x88 |
zhangyx | 0:7749526f3bdf | 17 | #define y 0x80 |
zhangyx | 0:7749526f3bdf | 18 | #define comm 0 |
zhangyx | 0:7749526f3bdf | 19 | #define dat 1 |
zhangyx | 0:7749526f3bdf | 20 | |
zhangyx | 0:7749526f3bdf | 21 | static uint8_t const num_lcd[] = {"0123456789 :.-"}; |
zhangyx | 0:7749526f3bdf | 22 | |
zhangyx | 0:7749526f3bdf | 23 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 24 | * 函数名称 :Lcd_init |
zhangyx | 0:7749526f3bdf | 25 | * 功能描述 :初始化LCD |
zhangyx | 0:7749526f3bdf | 26 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 27 | * |
zhangyx | 0:7749526f3bdf | 28 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 29 | * 作者 : |
zhangyx | 0:7749526f3bdf | 30 | * 创建日期 :2008-12-19 |
zhangyx | 0:7749526f3bdf | 31 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 32 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 33 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 34 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 35 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 36 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 37 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 38 | ChnLCD12864::ChnLCD12864(PinName sid, PinName sck, PinName cs) : _sid(sid),_sck(sck),_cs(cs) |
zhangyx | 0:7749526f3bdf | 39 | { |
zhangyx | 0:7749526f3bdf | 40 | wait(1e-3 * 50); //启动等待,等LCM讲入工作状态 |
zhangyx | 0:7749526f3bdf | 41 | _cs=1; |
zhangyx | 0:7749526f3bdf | 42 | Write_Char(0, 0x30); //8 位介面,基本指令集 |
zhangyx | 0:7749526f3bdf | 43 | wait(1e-3 * 1); |
zhangyx | 0:7749526f3bdf | 44 | Write_Char(0, 0x30); //8 位介面,基本指令集 |
zhangyx | 0:7749526f3bdf | 45 | Write_Char(0, 0x30); //8 位介面,基本指令集 |
zhangyx | 0:7749526f3bdf | 46 | Write_Char(0, 0x0c); //显示打开,光标关,反白关 |
zhangyx | 0:7749526f3bdf | 47 | Write_Char(0, 0x01); //清屏,将DDRAM的地址计数器归零 |
zhangyx | 0:7749526f3bdf | 48 | locate(0,0); |
zhangyx | 0:7749526f3bdf | 49 | } |
zhangyx | 0:7749526f3bdf | 50 | |
zhangyx | 0:7749526f3bdf | 51 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 52 | * 函数名称 :Write_char |
zhangyx | 0:7749526f3bdf | 53 | * 功能描述 :写指令或数据 |
zhangyx | 0:7749526f3bdf | 54 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 55 | * |
zhangyx | 0:7749526f3bdf | 56 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 57 | * 作者 : |
zhangyx | 0:7749526f3bdf | 58 | * 创建日期 :2006-12-19 |
zhangyx | 0:7749526f3bdf | 59 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 60 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 61 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 62 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 63 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 64 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 65 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 66 | void ChnLCD12864::Write_Char(uint8_t start, uint8_t ddata) |
zhangyx | 0:7749526f3bdf | 67 | { |
zhangyx | 0:7749526f3bdf | 68 | uint8_t start_data, Hdata, Ldata; |
zhangyx | 0:7749526f3bdf | 69 | if (start == 0) |
zhangyx | 0:7749526f3bdf | 70 | start_data = 0xf8; //写指令 |
zhangyx | 0:7749526f3bdf | 71 | else |
zhangyx | 0:7749526f3bdf | 72 | start_data = 0xfa; //写数据 |
zhangyx | 0:7749526f3bdf | 73 | |
zhangyx | 0:7749526f3bdf | 74 | Hdata = ddata & 0xf0; //取高四位 |
zhangyx | 0:7749526f3bdf | 75 | Ldata = (ddata << 4) & 0xf0; //取低四位 |
zhangyx | 0:7749526f3bdf | 76 | Send_Byte(start_data); //发送起始信号 |
zhangyx | 0:7749526f3bdf | 77 | wait(1e-6 * 10); |
zhangyx | 0:7749526f3bdf | 78 | Send_Byte(Hdata); //发送高四位 |
zhangyx | 0:7749526f3bdf | 79 | wait(1e-6 * 10); |
zhangyx | 0:7749526f3bdf | 80 | Send_Byte(Ldata); //发送低四位 |
zhangyx | 0:7749526f3bdf | 81 | wait(1e-6 * 10); |
zhangyx | 0:7749526f3bdf | 82 | } |
zhangyx | 0:7749526f3bdf | 83 | |
zhangyx | 0:7749526f3bdf | 84 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 85 | * 函数名称 :Send_byte |
zhangyx | 0:7749526f3bdf | 86 | * 功能描述 :发送一个字节 |
zhangyx | 0:7749526f3bdf | 87 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 88 | * |
zhangyx | 0:7749526f3bdf | 89 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 90 | * 作者 : |
zhangyx | 0:7749526f3bdf | 91 | * 创建日期 :2009-10-19 |
zhangyx | 0:7749526f3bdf | 92 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 93 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 94 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 95 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 96 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 97 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 98 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 99 | void ChnLCD12864::Send_Byte(uint8_t bbyte) |
zhangyx | 0:7749526f3bdf | 100 | { |
zhangyx | 0:7749526f3bdf | 101 | volatile uint8_t i; |
zhangyx | 0:7749526f3bdf | 102 | for (i = 0; i < 8; i++) { |
zhangyx | 0:7749526f3bdf | 103 | if ((bbyte) & 0x80) |
zhangyx | 0:7749526f3bdf | 104 | _sid=1; //取出最高位 |
zhangyx | 0:7749526f3bdf | 105 | else |
zhangyx | 0:7749526f3bdf | 106 | _sid=0; |
zhangyx | 0:7749526f3bdf | 107 | _sck=1; |
zhangyx | 0:7749526f3bdf | 108 | wait(1e-6 * 100); //延时 lcd读取数据 |
zhangyx | 0:7749526f3bdf | 109 | _sck=0; |
zhangyx | 0:7749526f3bdf | 110 | bbyte <<= 1; //左移 |
zhangyx | 0:7749526f3bdf | 111 | } |
zhangyx | 0:7749526f3bdf | 112 | } |
zhangyx | 0:7749526f3bdf | 113 | |
zhangyx | 0:7749526f3bdf | 114 | |
zhangyx | 0:7749526f3bdf | 115 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 116 | * 函数名称 :LCD12864_Clr_Scr |
zhangyx | 0:7749526f3bdf | 117 | * 功能描述 :清屏函数 |
zhangyx | 0:7749526f3bdf | 118 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 119 | * |
zhangyx | 0:7749526f3bdf | 120 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 121 | * 作者 : |
zhangyx | 0:7749526f3bdf | 122 | * 创建日期 :2009-10-19 |
zhangyx | 0:7749526f3bdf | 123 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 124 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 125 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 126 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 127 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 128 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 129 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 130 | void ChnLCD12864::cls(void)//清屏函数 |
zhangyx | 0:7749526f3bdf | 131 | { |
zhangyx | 0:7749526f3bdf | 132 | Write_Char(0, 0x01); |
zhangyx | 0:7749526f3bdf | 133 | } |
zhangyx | 0:7749526f3bdf | 134 | |
zhangyx | 0:7749526f3bdf | 135 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 136 | * 函数名称 : LCD12864_set_xy |
zhangyx | 0:7749526f3bdf | 137 | * 功能描述 :设置LCD显示的起始位置,X为行,Y为列 |
zhangyx | 0:7749526f3bdf | 138 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 139 | * |
zhangyx | 0:7749526f3bdf | 140 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 141 | * 作者 : |
zhangyx | 0:7749526f3bdf | 142 | * 创建日期 :2006-12-19 |
zhangyx | 0:7749526f3bdf | 143 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 144 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 145 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 146 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 147 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 148 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 149 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 150 | void ChnLCD12864::locate( uint8_t col, uint8_t row ) |
zhangyx | 0:7749526f3bdf | 151 | { |
zhangyx | 0:7749526f3bdf | 152 | uint8_t address; |
zhangyx | 0:7749526f3bdf | 153 | uint8_t X = row, Y = col; |
zhangyx | 0:7749526f3bdf | 154 | _row = X; |
zhangyx | 0:7749526f3bdf | 155 | _column = Y*2; |
zhangyx | 0:7749526f3bdf | 156 | switch (X) { |
zhangyx | 0:7749526f3bdf | 157 | case 0: |
zhangyx | 0:7749526f3bdf | 158 | address = 0x80 + Y; |
zhangyx | 0:7749526f3bdf | 159 | break; |
zhangyx | 0:7749526f3bdf | 160 | case 1: |
zhangyx | 0:7749526f3bdf | 161 | address = 0x90 + Y; |
zhangyx | 0:7749526f3bdf | 162 | break; |
zhangyx | 0:7749526f3bdf | 163 | case 2: |
zhangyx | 0:7749526f3bdf | 164 | address = 0x88 + Y; |
zhangyx | 0:7749526f3bdf | 165 | break; |
zhangyx | 0:7749526f3bdf | 166 | case 3: |
zhangyx | 0:7749526f3bdf | 167 | address = 0x98 + Y; |
zhangyx | 0:7749526f3bdf | 168 | break; |
zhangyx | 0:7749526f3bdf | 169 | default: |
zhangyx | 0:7749526f3bdf | 170 | address = 0x80 + Y; |
zhangyx | 0:7749526f3bdf | 171 | break; |
zhangyx | 0:7749526f3bdf | 172 | } |
zhangyx | 0:7749526f3bdf | 173 | Write_Char(0, address); |
zhangyx | 0:7749526f3bdf | 174 | } |
zhangyx | 0:7749526f3bdf | 175 | |
zhangyx | 0:7749526f3bdf | 176 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 177 | * 函数名称 :LCD12864_Write_string |
zhangyx | 0:7749526f3bdf | 178 | * 功能描述 :中英文字符串显示函数 |
zhangyx | 0:7749526f3bdf | 179 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 180 | * |
zhangyx | 0:7749526f3bdf | 181 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 182 | * 作者 : |
zhangyx | 0:7749526f3bdf | 183 | * 创建日期 :2006-12-19 |
zhangyx | 0:7749526f3bdf | 184 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 185 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 186 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 187 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 188 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 189 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 190 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 191 | void ChnLCD12864::Write_String(uint8_t X, uint8_t Y, char *s) |
zhangyx | 0:7749526f3bdf | 192 | { |
zhangyx | 0:7749526f3bdf | 193 | locate( Y, X ); |
zhangyx | 0:7749526f3bdf | 194 | |
zhangyx | 0:7749526f3bdf | 195 | while (*s) { |
zhangyx | 0:7749526f3bdf | 196 | Write_Char( 1, *s ); |
zhangyx | 0:7749526f3bdf | 197 | s ++; |
zhangyx | 0:7749526f3bdf | 198 | wait(1e-3 * 1); |
zhangyx | 0:7749526f3bdf | 199 | } |
zhangyx | 0:7749526f3bdf | 200 | } |
zhangyx | 0:7749526f3bdf | 201 | |
zhangyx | 0:7749526f3bdf | 202 | void ChnLCD12864::Write_String_Length(uint8_t X, uint8_t Y, char *s, int length) |
zhangyx | 0:7749526f3bdf | 203 | { |
zhangyx | 0:7749526f3bdf | 204 | locate( Y, X ); |
zhangyx | 0:7749526f3bdf | 205 | |
zhangyx | 0:7749526f3bdf | 206 | while(length--) { |
zhangyx | 0:7749526f3bdf | 207 | Write_Char( 1, *s ); |
zhangyx | 0:7749526f3bdf | 208 | s ++; |
zhangyx | 0:7749526f3bdf | 209 | wait(1e-3 * 1); |
zhangyx | 0:7749526f3bdf | 210 | } |
zhangyx | 0:7749526f3bdf | 211 | } |
zhangyx | 0:7749526f3bdf | 212 | |
zhangyx | 0:7749526f3bdf | 213 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 214 | * 函数名称 :LCD12864_Write_number |
zhangyx | 0:7749526f3bdf | 215 | * 功能描述 :数字显示函数 |
zhangyx | 0:7749526f3bdf | 216 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 217 | * |
zhangyx | 0:7749526f3bdf | 218 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 219 | * 作者 : |
zhangyx | 0:7749526f3bdf | 220 | * 创建日期 :2006-12-19 |
zhangyx | 0:7749526f3bdf | 221 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 222 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 223 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 224 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 225 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 226 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 227 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 228 | void ChnLCD12864::Write_Number(uint8_t s)// 数字显示函数 |
zhangyx | 0:7749526f3bdf | 229 | { |
zhangyx | 0:7749526f3bdf | 230 | Write_Char(1, num_lcd[s]); |
zhangyx | 0:7749526f3bdf | 231 | wait(1e-3 * 1); |
zhangyx | 0:7749526f3bdf | 232 | } |
zhangyx | 0:7749526f3bdf | 233 | |
zhangyx | 0:7749526f3bdf | 234 | /****************************************************************************************** |
zhangyx | 0:7749526f3bdf | 235 | * 函数名称 :img_disp |
zhangyx | 0:7749526f3bdf | 236 | * 功能描述 :显示图形 |
zhangyx | 0:7749526f3bdf | 237 | * 参数 : 参数名称: 输入/输出? 类型 描述 |
zhangyx | 0:7749526f3bdf | 238 | * |
zhangyx | 0:7749526f3bdf | 239 | * 返回值 : |
zhangyx | 0:7749526f3bdf | 240 | * 作者 : |
zhangyx | 0:7749526f3bdf | 241 | * 创建日期 :2006-12-19 |
zhangyx | 0:7749526f3bdf | 242 | * 全局变量 : |
zhangyx | 0:7749526f3bdf | 243 | * 全局静态变量: |
zhangyx | 0:7749526f3bdf | 244 | * 局部静态变量: |
zhangyx | 0:7749526f3bdf | 245 | *----------------------------------------修改历史------------------------------------------ |
zhangyx | 0:7749526f3bdf | 246 | * 当前版本 : 修改人: 修改日期: |
zhangyx | 0:7749526f3bdf | 247 | * 修改说明 : |
zhangyx | 0:7749526f3bdf | 248 | ******************************************************************************************/ |
zhangyx | 0:7749526f3bdf | 249 | void ChnLCD12864::Display_Img(uint8_t const *img) |
zhangyx | 0:7749526f3bdf | 250 | { |
zhangyx | 0:7749526f3bdf | 251 | uint8_t i, j; |
zhangyx | 0:7749526f3bdf | 252 | for (j = 0; j < 32; j++) { |
zhangyx | 0:7749526f3bdf | 253 | for (i = 0; i < 8; i++) { |
zhangyx | 0:7749526f3bdf | 254 | Write_Char(comm, 0x34); |
zhangyx | 0:7749526f3bdf | 255 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 256 | Write_Char(comm, y + j); |
zhangyx | 0:7749526f3bdf | 257 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 258 | Write_Char(comm, x1 + i); |
zhangyx | 0:7749526f3bdf | 259 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 260 | Write_Char(comm, 0x30); |
zhangyx | 0:7749526f3bdf | 261 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 262 | Write_Char(dat, img[j * 16 + i * 2]); |
zhangyx | 0:7749526f3bdf | 263 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 264 | Write_Char(dat, img[j * 16 + i * 2 + 1]); |
zhangyx | 0:7749526f3bdf | 265 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 266 | } |
zhangyx | 0:7749526f3bdf | 267 | } |
zhangyx | 0:7749526f3bdf | 268 | for (j = 32; j < 64; j++) { |
zhangyx | 0:7749526f3bdf | 269 | for (i = 0; i < 8; i++) { |
zhangyx | 0:7749526f3bdf | 270 | Write_Char(comm, 0x34); |
zhangyx | 0:7749526f3bdf | 271 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 272 | Write_Char(comm, y + j - 32); |
zhangyx | 0:7749526f3bdf | 273 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 274 | Write_Char(comm, x2 + i); |
zhangyx | 0:7749526f3bdf | 275 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 276 | Write_Char(comm, 0x30); |
zhangyx | 0:7749526f3bdf | 277 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 278 | Write_Char(dat, img[j * 16 + i * 2]); |
zhangyx | 0:7749526f3bdf | 279 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 280 | Write_Char(dat, img[j * 16 + i * 2 + 1]); |
zhangyx | 0:7749526f3bdf | 281 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 282 | } |
zhangyx | 0:7749526f3bdf | 283 | } |
zhangyx | 0:7749526f3bdf | 284 | wait(1e-3 * 10); |
zhangyx | 0:7749526f3bdf | 285 | Write_Char(comm, 0x36); |
zhangyx | 0:7749526f3bdf | 286 | } |
zhangyx | 0:7749526f3bdf | 287 | |
zhangyx | 0:7749526f3bdf | 288 | |
zhangyx | 0:7749526f3bdf | 289 | int ChnLCD12864::_putc(int value) { |
zhangyx | 0:7749526f3bdf | 290 | if (value == '\n') { |
zhangyx | 0:7749526f3bdf | 291 | _column = 0; |
zhangyx | 0:7749526f3bdf | 292 | _row++; |
zhangyx | 0:7749526f3bdf | 293 | if (_row >= 4) { |
zhangyx | 0:7749526f3bdf | 294 | _row = 0; |
zhangyx | 0:7749526f3bdf | 295 | } |
zhangyx | 0:7749526f3bdf | 296 | } else { |
zhangyx | 0:7749526f3bdf | 297 | Write_Char( 1, value ); |
zhangyx | 0:7749526f3bdf | 298 | wait(1e-3 * 1); |
zhangyx | 0:7749526f3bdf | 299 | _column++; |
zhangyx | 0:7749526f3bdf | 300 | if (_column >= 16) { |
zhangyx | 0:7749526f3bdf | 301 | _column = 0; |
zhangyx | 0:7749526f3bdf | 302 | _row++; |
zhangyx | 0:7749526f3bdf | 303 | if (_row >= 4) { |
zhangyx | 0:7749526f3bdf | 304 | _row = 0; |
zhangyx | 0:7749526f3bdf | 305 | } |
zhangyx | 0:7749526f3bdf | 306 | locate(0, _row); |
zhangyx | 0:7749526f3bdf | 307 | } |
zhangyx | 0:7749526f3bdf | 308 | } |
zhangyx | 0:7749526f3bdf | 309 | return value; |
zhangyx | 0:7749526f3bdf | 310 | } |