51单片机12864打点程序
void curve(unsigned char xlable,unsigned char ylable,bit dot)
{
unsigned char H[1]={0};//读RAM寄存
unsigned char L[1]={0};
unsigned char xbuf;
【51单片机12864打点程序】w_com(0x01);
w_com(0x34);
w_com(0x36); //功能设置:一次送8位数据,扩展指令集
xlable=xlable+xoffset;//求相对零点
ylable=ylable+yoffset;
if(xlable<0)xlable=-1;//超出边界处理
if(ylable<0)ylable=0;
if(ylable>64)ylable=65;
xbuf=xlable%16;
xlable=xlable/16;
if(ylable>32)//上半屏
{
ylable=64-ylable;//切换上下屏
xbuf=15-xbuf;//x坐标归位
w_com(0x80|ylable); //输入垂直地址
w_com(0x80|xlable); //输入水平地址
read_RAM();//屏蔽
if(xbuf>7)
{
if(dot==0)
H[0]=read_RAM()&(~(1<
H[0]=read_RAM()|1<
}
else
{
H[0]=read_RAM();//插点,需要打的点
if(dot==0)
L[0]=read_RAM()&(~(1<
L[0]=read_RAM()|1<
w_com(0x80|ylable); //输入垂直地址
w_com(0x80|xlable); //输入水平地址
w_byte(H[0]);
w_byte(L[0]);
}
else //下半屏
{
ylable=32-ylable;
xbuf=15-xbuf;//x坐标归位
w_com(0x80|ylable); //输入垂直地址
w_com(0x88|xlable); //输入水平地址
read_RAM();//屏蔽
if(xbuf>7)
{
if(dot==0)
H[0]=read_RAM()&(~(1<
H[0]=read_RAM()|1<
}
else
{
H[0]=read_RAM();//插点,需要打的点
if(dot==0)
L[0]=read_RAM()&(~(1<
L[0]=read_RAM()|1<
w_com(0x80|ylable); //输入垂直地址
w_com(0x88|xlable); //输入水平地址
w_byte(H[0]);
w_byte(L[0]);
}
}
//清除屏幕
void BMP_clear( void )
{
unsigned char i,j;unsigned char L[1]={0};
w_com(0x34); //8Bit扩充指令集,即使是36H也要写两次
w_com(0x36); //绘图ON,基本指令集里面36H不能开绘图
for(i=0;i<32;i++) //12864实际为256x32
{
w_com(0x80|i); //行位置
w_com(0x80); //列位置
for(j=0;j<32;j++) //256/8=32 byte
w_byte(L[0]);
}
}
推荐阅读
- 串行口异步通信单片机程序设计实例
- AVR单片机_学习ing—(十)、ATMEGA16的同步串行接口SPI—02
- 单片机EEPROM多字节读写操作时序
- 单片机控制洗衣机C程序设计
- 利用89C51单片机的P1口控制8个发光二极管LED编程
- 第二节:PIC16C5X系列单片机型号介绍及引脚介绍
- 什么是单片机的寻址_举例介绍
- 上位机控制单片机LED
- PIC单片机滚动码解码C程序
- 单片机I/O口管脚内部结构