📄 lcd12864.c
字号:
#include "lcd12864.h"
unsigned char pointX=32;
unsigned char pointY=32;
void loop_lcd_is_busy(unsigned char right)
{
unsigned char tmp,counter=0;
do {
if(right) tmp = LCD_RCR;
else tmp = LCD_LCR;
if(counter++>50) break;//超时跳出
}
while ((tmp|0x7f)==0xff);
}
void lcd_cmd_wr(unsigned char cmdcode,unsigned char right)
{
loop_lcd_is_busy(right);
if(right) LCD_RCW = cmdcode;
else LCD_LCW = cmdcode;
}
void lcd_dat_wr(unsigned char ldata,unsigned char right)
{
loop_lcd_is_busy(right);
if(right) LCD_RDW = ldata;
else LCD_LDW = ldata;
}
void lcd_clr(void)
{
unsigned char i,j;
for(i=0;i<8;i++) {
lcd_cmd_wr(ORGY+i,0);
lcd_cmd_wr(ORGX,0);
lcd_cmd_wr(ORGY+i,1);
lcd_cmd_wr(ORGX,1);
for(j=0;j<64;j++) {
lcd_dat_wr(0,0);
lcd_dat_wr(0,1);
}
}
}
void lcd_init(void)
{
lcd_cmd_wr(DISPON,0);
lcd_cmd_wr(DISPFIRST,0);
lcd_cmd_wr(ORGY,0);
lcd_cmd_wr(ORGX,0);
lcd_cmd_wr(DISPON,1);
lcd_cmd_wr(DISPFIRST,1);
lcd_cmd_wr(ORGY,1);
lcd_cmd_wr(ORGX,1);
lcd_clr();
}
//LCD更新指定列,以列为单位,一次更新1列
void lcd_row_wr(unsigned char x,unsigned char *da)//x是列坐标,*da是8字节列数据
{
unsigned char j;
if(x<64) { //根据列坐标选择左右半屏
for(j=0;j<8;j++) { //写左半屏
lcd_cmd_wr(ORGY+j,0);
lcd_cmd_wr(ORGX+x,0);
lcd_dat_wr(da[j],0);
}
}
else {
x-=64;//坐标调整
for(j=0;j<8;j++) { //写右半屏
lcd_cmd_wr(ORGY+j,1);
lcd_cmd_wr(ORGX+x,1);
lcd_dat_wr(da[j],1);
}
}
}
void lcd_disp(unsigned char x,unsigned char y)
{
unsigned char da[8];
unsigned char j;
y = 63-y;
for(j=1;j<7;j++) da[j] = 0x0;
{//绘制边框
da[0]=0x01;
da[7]=0x80;
if((x==0)||(x==127)) {
for(j=0;j<8;j++) da[j] = 0xff;
}
}
//绘制由变量pointY控制的水平游标线
if(x%5==0) da[pointY>>3] |= 0x01 << (pointY&0x07);
//绘制由变量pointX控制的垂直游标线
if(x==pointX)
for(j=0;j<64;j++)
if(j%5==0) da[j>>3] |= 0x01 <<(j&0x07);
//绘制信号波形
da[y/8] |= 0x01<<(y%8);
lcd_row_wr(x,da);
}
//8×n点阵字符写入函数
void lcd_put_xyns(unsigned char x,y,n,unsigned char *s)
{
unsigned char i;
for(i=0;i<n;i++) {
if((x+i)>63) {
lcd_cmd_wr(ORGY+y,1);
lcd_cmd_wr(ORGX+x+i-64,1);
lcd_dat_wr(s[i],1);
}
else {
lcd_cmd_wr(ORGY+y,0);
lcd_cmd_wr(ORGX+x+i,0);
lcd_dat_wr(s[i],0);
}
}
}//*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -