基于12864简易示波器程序和图
12864教程画点画线换正弦波(非常完整)有程序

功能:选择 4 行中的任一行作反白显示,并可决定反白与否。第一次设定为反白显示,再次 设定时为正常显示
正常 15. 睡眠模式(15H)
0x04
0x05
0x06/0x07
功能:SL=1:脱离睡眠模式; SL=0:进入睡眠模式(外观上和清屏相同)。 16. 扩充功能设定(16H)
功能:DL=1:8-BIT 控制接口; DL=0:4-BIT 控制接口 RE=1:扩充指令集动作; RE=0:基本指令集动作 G=1:绘图显示 ON; G=0:绘图显示 OFF
10. 写资料到 RAM
功能:写入资料到内部的 RAM(DDRAM/CGRAM/GDRAM),每个 RAM 地址 都要连续写入两个字节的资料。 11. 读出 RAM 的值
功能:从内部 RAM 读取数据(DDRAM/CGRAM/GDRAM),当设定地址指令后,若需 读取数据时需先执行一次空的读数据,才会读取到正确数据,第二次读取时则不需要,除非 又下设定地址指令
//大于100uS 的延时程序
write_com(0x01); //Display Clear
delay(10);
//大于10mS 的延时程序
write_com(0x06); //Enry Mode Set,光标从右向左加1位移动
delay(100);
//大于100uS 的延时程序
}
显示图片的初始化函数:
instruction set, G=0 :graphic display OFF
delay(100);
//大于100uS 的延时程序
write_com(0x30); //Function Set
delay(37);
////大于37uS 的延时程序
基于LCD12864显示器的数字示波器设计

基于LCD12864显示器的数字示波器设计图2 LCD点阵分布结构图此LCD 屏由水平128 列,垂直64 行组成。
水平128 列分左右各64 列两个半屏构成。
垂直64 行又分8 页,每页8 行(1 列8 点刚好1 字节)。
程序每次对LCD 的绘图操作就是以最小单位1 字节举行操作的。
理解这点至关重要。
也就是每次只能针对8 点举行操作,而不是1 点举行操作。
左右屏由单独地址线控制(前面的接口定义就是分左右屏定义的)。
实际打点只需往指定“位置”写入数据,“1”亮,“0”暗。
LCD 驱动忙检测函数void loop_lcd12864_is_busy(unsigned char right)。
void loop_lcd12864_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); //bit7 为1 则表示LCD 内部执行指令,处于“忙”状态}对LCD 举行读写操作时,需要举行“忙”检测,LCD 内部也是由控制器来完成一系列刷屏操作的,执行各种操作都是需要一定的时光,也就是说不是任何时候外部控制器都可以对LCD 发操作命令的,惟独LCD为空闲状态时才可以操作,忙检测就是循环读取LCD状态标记位,推断是否空闲,关于指令的详情请参考数据手册。
指令写入函数void lcd_cmd_wr(unsigned char cmd,right)。
void lcd_cmd_wr(unsigned char cmd, right)第1页共4页。
自-12864液晶显示程序(图案文字)

#include <REG52.H>sbit LCD12864_RS= P2^0;//RS控制引脚sbit LCD12864_RW=P2^1; //RW控制引脚sbit LCD12864_EN = P2^2; //EN控制引脚sbit LCD12864_PSB = P2^3; //模式选择引脚,ST7920控制器,1为8位并行接口,0为串行接口#defineLCDPORT P0//数据引脚void LCD12864_Init(void);//LCD12864初始化函数void LCD12864_WriteInfomation(unsignedchar ucData,bit bComOrData); //向LCD12864写入数据,bComOrData为1时写入的是数据,0时写入的是命令void LCD12864_CheckBusy(void);//忙检测函数void LCD12864_DisplayImage(unsigned charcode *ucImage);void Delay(unsigned intuiCount);unsignedchar code ucPic1[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x30,0x01,0xE0,0x00,0x00,0x2A,0x00,0x00,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x7B,0x63,0xE0,0x00,0x00,0x22,0x00,0x01,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFB,0x63,0x07,0x34,0x00,0x14,0x00,0x01,0x04,0x00,0x 00,0x00,0x00,0x00,0x00,0x0D,0xDB,0x63,0x01,0xBC,0x00,0x08,0x00,0x00,0x88,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1B,0x63,0x07,0xB0,0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x1B,0x63,0xED,0xB0,0xDB,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x19,0xE1,0xE7,0xB0,0xDB,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x0A,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0xFF,0xF8,0xE0,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0xC0,0x15,0x00,0x1F,0xFF,0xFF,0xC0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x20,0x11,0x00,0xFB,0xFF,0xE1,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x0A,0x03,0x9F,0x00,0x9E,0x3E,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x04,0x40,0x04,0x0E,0x70,0x00,0x81,0xC7,0x80,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x02,0x80,0x00,0x1D,0x80,0x00,0xE0,0x61,0xE0,0x02,0xA0,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x77,0x9F,0xFC,0xF0,0x18,0xF8,0x02,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xDF,0x00,0x00,0xF3,0x0C,0x3C,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x9E,0x00,0x00,0xF8,0x06,0x1E,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0E,0x30,0x01,0xFC,0x7F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF,0xFF,0xFF,0xFF,0xFF,0x83,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xFD,0xFF,0xFF,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x81,0xFF,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFE,0xF0,0x00,0x00,0x01,0x00,0x00,0xC0,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,0x07,0x80,0x00,0x03,0xE0,0x07,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x03,0x40,0x00,0x03,0xE0,0x0C,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0xC0,0x00,0x00,0x20,0x18,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x80,0x60,0x00,0x00,0x20,0x73,0x9F,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x1E,0x0F,0xF2,0x20,0x00,0x00,0x20,0x67,0xFF,0xC1,0xC0,0x00,0x00,0x00,0x00,0x00,0x1E,0x1F,0xF9,0x30,0x00,0x00,0x20,0xEF,0xFF,0xE0,0xE0,0x00,0x00,0x00,0x00,0x00,0x38,0x3F,0xFC,0x90,0x00,0x00,0x20,0xCB,0xFF,0xF9,0xF0,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0xFE,0x10,0x00,0x00,0x20,0xDB,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x6E,0xF9,0xBF,0x10,0x00,0x00,0x20,0xF7,0xED,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x7C,0xFC,0x3F,0x10,0x00,0x00,0x20,0x67,0xE1,0xFD,0xE0,0x00,0x00,0x00,0x00,0x00,0x7C,0xFC,0x3F,0x10,0x00,0x00,0x20,0x67,0xE1,0xFD,0xE0,0x00,0x00,0x00,0x00,0x00,0x38,0xFC,0x3F,0x18,0x00,0x00,0x20,0x87,0xE0,0xFD,0xC0,0x00,0x00,0x00,0x00,0x00,0x38,0xF1,0x8F,0x18,0x00,0x1F,0xE7,0x87,0x9C,0x7D,0xC0,0x00,0x00,0x00,0x00,0x00,0x1C,0xFE,0x1F,0x81,0xFF,0xFF,0xC0,0x0F,0xE0,0xFF,0x80,0x 00,0x00,0x00,0x00,0x00,0x0C,0xFC,0x3F,0x80,0x00,0x00,0x00,0x0F,0xE1,0xF8,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0xF9,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xF9,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};unsignedcharcode ucPic[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x 01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x18,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xDC,0x00,0x01,0x80,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xBC,0x00,0x01,0x80,0x00,0x30,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0xB8,0x00,0x01,0x80,0x00,0x30,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0x78,0x00,0x01,0x80,0x00,0x19,0xFF,0xFE,0xC0,0x00,0x00,0x00,0x00,0x02,0xFF,0xF F,0x70,0x00,0x01,0x80,0x00,0x18,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0xFF,0xFE,0xF0,0x00,0x01,0x80,0x00,0x0C,0x01,0xFF,0x60,0x00,0x00,0x00,0x00,0x05,0xFF,0xFE,0xE0,0x00,0x01,0x80,0x00,0x0C,0x7F,0xD0,0x20,0x00,0x00,0x00,0x00,0x05,0xFF,0xFD,0xE0,0x00,0x01,0x80,0x00,0x06,0x00,0x0F,0xB0,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFD,0xC 0,0x00,0x01,0x80,0x00,0x06,0x03,0xFC,0x10,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFB,0xC0,0x00,0x01,0x80,0x00,0x03,0x1F,0x00,0x18,0x00,0x00,0x00,0x00,0x17,0xFF,0xFB,0x80,0x00,0x01,0x80,0x00,0x03,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x80,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x0C,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x00,0x00,0x01,0x80,0x00,0x01,0x80,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0xFF,0xEF,0x 00,0x00,0x01,0x80,0x00,0x00,0xC0,0x00,0xF6,0x00,0x00,0x00,0x00,0x06,0x7F,0xEE,0x00,0x00,0x01,0x80,0x00,0x00,0xC0,0x03,0xC2,0x00,0x00,0x00,0x00,0x01,0x9F,0xDE,0x00,0x00,0x01,0x80,0x00,0x00,0x60,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x67,0xDF,0x00,0x00,0x01,0x80,0x00,0x00,0x60,0x00,0xE3,0x00,0x00,0x00,0x00,0x00,0x19,0xBF,0x00,0x00,0x01,0x80,0x00,0x00,0x30,0x03,0x8E,0x00,0x00,0x00,0x00,0x00,0x06,0x3F,0x00,0x 00,0x01,0x80,0x00,0x00,0x30,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,0x80,0x00,0x00,0x18,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x01,0x80,0x00,0x00,0x18,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x0F,0x7F,0x80,0x00,0x01,0x80,0x00,0x00,0x0C,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1F,0xC0,0x00,0x01,0x80,0x00,0x00,0x0C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x07,0xE0,0x00,0x01,0x80,0x00,0x00,0x06,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xE0,0x00,0x01,0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xC0,0x00,0x01,0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x05,0x40,0x88,0x04,0x01,0x08,0x00,0x00,0x0A,0x81,0x10,0x04,0x00,0x20,0x01,0x80,0x79,0x21,0x08,0x02,0x21,0x49,0x00,0x00,0xF2,0x42,0x10,0x04,0x47,0x10,0x01,0x80,0x09,0x07,0xDF,0x7F,0xF7,0xAA,0x00,0x00,0x12,0x0F,0xBE,0x7F,0xE5,0xFE,0x01,0x80,0x7F,0xF4,0x51,0x08,0x81,0x2C,0x00,0x00,0xFF,0xE8,0xA2,0x44,0x47,0x00,0x01,0x80,0x09,0x04,0x61,0x08,0x81,0x7F,0x00,0x00,0x12,0x08,0xC2,0x7F,0xC5,0x 4A,0x01,0x80,0x0B,0x24,0x51,0x08,0x83,0x81,0x00,0x00,0x16,0x48,0xA2,0x44,0x45,0x6A,0x01,0x80,0x1D,0x47,0xC9,0x05,0x05,0x01,0x00,0x00,0x3A,0x8F,0x92,0x44,0x47,0x52,0x01,0x80,0x68,0x84,0x49,0x05,0x05,0x7F,0x00,0x00,0xD1,0x08,0x92,0x7F,0xC5,0x6A,0x01,0x80,0x09,0x94,0x41,0x02,0x01,0x01,0x00,0x00,0x13,0x28,0x82,0x44,0x05,0x4A,0x01,0x80,0x0E,0x57,0xC1,0x0D,0x81,0x01,0x00,0x00,0x1C,0xAF,0x82,0x04,0x29,0x42,0x01,0x80,0x38,0x34,0x4E,0x70,0x71,0x7F,0x00,0x00,0x70,0x68,0x9C,0x03,0xEB,0x7E,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,};//图像数据unsigned char codeucPic2[]={/*-- 调入了一幅图像:C:\Users\Administrator\Desktop\光盘内容\13.工具软件\8X8点阵取字模软件\BMP图片\位图(1bit)\01.bmp --*//*--宽度x高度=128x64 --*/0x00,0x00,0x00,0x01,0x85,0xFD,0x7D,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x 00,0x00,0x00,0x00,0x00,0x0A,0x0B,0xD0,0x1B,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0B,0xE0,0x06,0xBF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x1F,0x80,0x01,0x5F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x0F,0x00,0x00,0x15,0xFF,0xFF,0xFF,0xD0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x14,0x5C,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x1E,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xB8,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xE8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x38,0x00,0x00,0x00,0x9F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x60,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x70,0x00,0x00,0x00,0x1F,0xDF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x40,0xC0,0x00,0x00,0x00,0x3F,0xDF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xE0,0x00,0x00,0x00,0x27,0xEF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x81,0xE0,0x00,0x00,0x00,0x0F,0xF7,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x89,0x70,0x00,0x00,0x00,0x05,0xF7,0xFF,0xFE,0x00,0x08,0xC0,0x00,0x00,0x00,0x05,0x13,0x18,0x00,0x00,0x00,0x03,0xFB,0xFF,0xFE,0x00,0x14,0x80,0x00,0x00,0x00,0x03,0x0B,0x04,0x00,0x00,0x00,0x05,0xFB,0xFF,0xFF,0x00,0x 3F,0xE0,0x00,0x00,0x00,0x0A,0xA6,0x00,0x00,0x00,0x00,0x0B,0xFD,0xFF,0xFE,0x00,0x2E,0xC0,0x00,0x00,0x00,0x06,0x17,0x80,0x00,0x00,0x00,0x02,0xFD,0xFF,0xFF,0x80,0x17,0x40,0x00,0x00,0x10,0x15,0x27,0xE0,0x00,0x00,0x00,0x0F,0xFC,0xFF,0xFF,0x00,0x0D,0x80,0x00,0x00,0x04,0x0E,0xAE,0x70,0x00,0x00,0x00,0x01,0xFE,0xFF,0xFF,0x80,0x05,0x00,0x00,0x00,0x08,0x18,0x8E,0x78,0x00,0x00,0x00,0x0F,0xFE,0xFF,0xEF,0x80,0x02,0x00,0x00,0x00,0x00,0x0D,0x4F,0x5C,0x00,0x03,0xF0,0x01,0xFF,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x16,0x91,0xB8,0x00,0x05,0xFE,0x07,0xFE,0x7F,0xF7,0xC0,0x00,0x04,0x00,0x00,0x00,0x15,0x98,0x1C,0x00,0x00,0x0F,0x80,0xFF,0xBF,0xFF,0xE0,0x00,0x14,0x00,0x00,0x00,0x2A,0xA0,0x00,0x00,0x00,0x01,0xC7,0xFF,0x7F,0xFB,0x E0,0x00,0x08,0x00,0x00,0x00,0x25,0xA0,0x00,0x00,0x00,0x00,0xC0,0xFF,0xBF,0xF F,0xE0,0x00,0x00,0x00,0x00,0x00,0x2F,0x40,0x00,0x00,0x06,0x80,0x42,0xFF,0xBF,0xFB,0xF0,0x00,0x00,0x00,0x00,0x00,0x2B,0x80,0x00,0x00,0x0B,0xE0,0x2A,0xFF,0xDF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x33,0xF0,0x07,0xFF,0xBF,0xFC,0xF0,0x00,0x00,0x00,0x00,0x00,0x2E,0x80,0x00,0x00,0x32,0xF8,0x00,0xFF,0xEF,0xFE,0x F8,0x00,0x00,0x00,0x00,0x00,0x7D,0x00,0x00,0x00,0x03,0xD8,0x07,0xFF,0xBF,0xFF,0x38,0x00,0x68,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x03,0xBC,0x01,0xFF,0xDF,0xFF,0xB8,0x00,0x56,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x2C,0x0B,0xFF,0xFF,0xFF,0x98,0x00,0xFC,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x05,0xFF,0xDB,0xFF,0xDC,0x00,0x34,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xDF,0xFF,0xCC,0x00,0x28,0x00,0x1B,0x00,0xDE,0x00,0x00,0x00,0x00,0x00,0x0B,0xFF,0xDF,0xFF,0xC C,0x00,0x10,0x00,0x2A,0x81,0xFE,0x00,0x00,0x00,0x00,0x00,0x17,0xFF,0xED,0xFF,0x4C,0x00,0x00,0x00,0x1F,0x80,0xFE,0x00,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFF,0xFF,0xCE,0x00,0x00,0x00,0x16,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x57,0xFF,0xFD,0xFF,0xCC,0x00,0x00,0x00,0x0A,0x01,0x7E,0x00,0x00,0x00,0x00,0x00,0x17,0xFF,0xBF,0xFF,0xC6,0x00,0x00,0x00,0x04,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x5F,0xFF,0xBE,0xFF,0x8E,0x08,0x00,0x00,0x00,0x01,0x7E,0x00,0x00,0x00,0x00,0x00,0x2F,0xEF,0xFF,0xFF,0xEE,0x02,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xEF,0x7F,0xCC,0x04,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x5F,0xFF,0xF7,0xFF,0xEE,0x00,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x7C,0xFF,0xEE,0xBF,0xCE,0x00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00,0xBF,0x3F,0xF7,0xFF,0xEE,0x00,0x00,0x00,0x00,0x00,0x37,0x80,0x80,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xDF,0xFC,0x00,0x00,0x00,0x00,0x00,0x1B,0x80,0x60,0x00,0x00,0x00,0x7F,0xFF,0xF7,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x1A,0x80,0x15,0x40,0x00,0x02,0xFF,0xFF,0xF7,0xBF,0xFC,0x00,0x00,0x00,0x00,0x00,0x0A,0x40,0x0F,0xFC,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0A,0x00,0x00,0x00,0x08,0xC0,0x00,0xFC,0x00,0x02,0xFF,0xFF,0xFB,0xDF,0xF4,0x00,0x04,0x00,0x00,0x00,0x04,0x40,0x01,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFB,0xDF,0xF8,0x00,0x00,0x00,0x00,0x00,0x01,0x60,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xEF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xDF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFD,0xFF,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xBF,0xFF,0xFF,0xFF,0xEF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF0,0x 00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF7,0xF C,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFB,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF7,0xF 4,0x00,0x00,0x00,};unsigned char code ucPic3[]={/*-- 调入了一幅图像:C:\Users\Administrator\Desktop\光盘内容\13.工具软件\8X8点阵取字模软件\BMP图片\位图(1bit)\01.bmp --*//*--宽度x高度=128x64--*/0x00,0x00,0x00,0x01,0x85,0xFD,0x7D,0xFF,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x0B,0xD0,0x1B,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x0B,0xE0,0x06,0xBF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1A,0x1F,0x80,0x01,0x5F,0xFF,0xFF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x26,0x0F,0x00,0x00,0x15,0xFF,0xFF,0xFF,0xD0,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x14,0x5C,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xE0,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x1E,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xF0,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xA8,0xB8,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xE8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x31,0x38,0x00,0x00,0x00,0x9F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x60,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x62,0x70,0x00,0x00,0x00,0x1F,0xDF,0xFF,0xFC,0x00,0x 00,0x00,0x00,0x00,0x00,0x01,0x40,0xC0,0x00,0x00,0x00,0x3F,0xDF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC1,0xE0,0x00,0x00,0x00,0x27,0xEF,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x81,0xE0,0x00,0x00,0x00,0x0F,0xF7,0xFF,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x89,0x70,0x00,0x00,0x00,0x05,0xF7,0xFF,0xFE,0x00,0x 08,0xC0,0x00,0x00,0x00,0x05,0x13,0x18,0x00,0x00,0x00,0x03,0xFB,0xFF,0xFE,0x00,0x14,0x 80,0x00,0x00,0x00,0x03,0x0B,0x04,0x00,0x00,0x00,0x05,0xFB,0xFF,0xFF,0x 00,0x3F,0xE0,0x00,0x00,0x00,0x0A,0xA6,0x00,0x00,0x00,0x00,0x0B,0xFD,0xFF,0xFE,0x00,0x2E,0xC0,0x00,0x00,0x00,0x06,0x17,0x80,0x00,0x00,0x00,0x02,0xFD,0xFF,0xFF,0x80,0x17,0x40,0x00,0x00,0x10,0x15,0x27,0xE0,0x00,0x00,0x00,0x0F,0xFC,0xFF,0xFF,0x00,0x0D,0x80,0x00,0x00,0x04,0x0E,0xAE,0x70,0x00,0x00,0x00,0x01,0xFE,0xFF,0xFF,0x80,0x05,0x00,0x00,0x00,0x08,0x18,0x8E,0x78,0x00,0x00,0x00,0x0F,0xFE,0xFF,0xEF,0x80,0x 02,0x00,0x00,0x00,0x00,0x0D,0x4F,0x5C,0x00,0x03,0xF0,0x01,0xFF,0x7F,0xFF,0xC0,0x00,0x00,0x00,0x00,0x00,0x16,0x91,0xB8,0x00,0x05,0xFE,0x07,0xFE,0x7F,0xF7,0xC0,0x00,0x04,0x00,0x00,0x00,0x15,0x98,0x1C,0x00,0x00,0x0F,0x80,0xFF,0xBF,0xFF,0xE0,0x00,0x14,0x00,0x00,0x00,0x2A,0xA0,0x00,0x00,0x00,0x01,0xC7,0xFF,0x7F,0xFB,0xE0,0x00,0x08,0x00,0x00,0x00,0x25,0xA0,0x00,0x00,0x00,0x00,0xC0,0xFF,0xBF,0xFF,0xE0,0x00,0x00,0x00,0x00,0x00,0x2F,0x40,0x00,0x00,0x06,0x80,0x42,0xFF,0xBF,0xFB,0xF0,0x00,0x00,0x00,0x00,0x00,0x2B,0x80,0x00,0x00,0x0B,0xE0,0x2A,0xFF,0xDF,0xFF,0xF0,0x 00,0x00,0x00,0x00,0x00,0x37,0x00,0x00,0x00,0x33,0xF0,0x07,0xFF,0xBF,0xFC,0xF0,0x00,0x00,0x00,0x00,0x00,0x2E,0x80,0x00,0x00,0x32,0xF8,0x00,0xFF,0xEF,0xFE,0xF8,0x00,0x00,0x00,0x00,0x00,0x7D,0x00,0x00,0x00,0x03,0xD8,0x07,0xFF,0xBF,0xFF,0x38,0x00,0x68,0x00,0x00,0x00,0x3D,0x00,0x00,0x00,0x03,0xBC,0x01,0xFF,0xDF,0xFF,0xB8,0x00,0x56,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00,0x2C,0x0B,0xFF,0xFF,0xFF,0x98,0x00,0xFC,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x05,0xFF,0xDB,0xFF,0xDC,0x00,0x34,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xDF,0xFF,0xCC,0x00,0x28,0x00,0x1B,0x00,0xDE,0x00,0x00,0x00,0x00,0x00,0x0B,0xFF,0xDF,0xF F,0xCC,0x00,0x10,0x00,0x2A,0x81,0xFE,0x00,0x00,0x00,0x00,0x00,0x17,0xFF,0xED,0xFF,0x4C,0x00,0x00,0x00,0x1F,0x80,0xFE,0x00,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFF,0xFF,0xCE,0x00,0x00,0x00,0x16,0x01,0xFE,0x00,0x00,0x00,0x00,0x00,0x57,0xFF,0xFD,0xFF,0xCC,0x00,0x00,0x00,0x0A,0x01,0x7E,0x00,0x00,0x00,0x00,0x00,0x17,0xFF,0xBF,0xFF,0xC6,0x00,0x00,0x00,0x04,0x00,0xFE,0x00,0x00,0x00,0x00,0x00,0x5F,0xFF,0xBE,0xFF,0x8E,0x08,0x00,0x00,0x00,0x01,0x7E,0x00,0x00,0x00,0x00,0x00,0x2F,0xEF,0xFF,0xFF,0xEE,0x02,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xEF,0x7F,0xCC,0x04,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x5F,0xFF,0xF7,0xFF,0xEE,0x 00,0x00,0x00,0x00,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x7C,0xFF,0xEE,0xBF,0xCE,0x 00,0x00,0x00,0x00,0x00,0x1D,0x00,0x00,0x00,0x00,0x00,0xBF,0x3F,0xF7,0xFF,0xEE,0x 00,0x00,0x00,0x00,0x00,0x37,0x80,0x80,0x00,0x00,0x01,0x7F,0xFF,0xFF,0xDF,0xFC,0x00,0x00,0x00,0x00,0x00,0x1B,0x80,0x60,0x00,0x80,0x00,0x7F,0xFF,0xF7,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,0x1A,0x80,0x15,0x43,0x00,0x02,0xFF,0xFF,0xF7,0xBF,0x FC,0x00,0x00,0x00,0x00,0x00,0x0A,0x40,0x0F,0xFE,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFC,0x00,0x0A,0x00,0x00,0x00,0x08,0xC0,0x00,0xFC,0x00,0x02,0xFF,0xFF,0xFB,0xDF,0xF4,0x00,0x04,0x00,0x00,0x00,0x04,0x40,0x01,0xE0,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,0x00,0x00,0x04,0x60,0x00,0x00,0x00,0x07,0xFF,0xFF,0xFB,0xDF,0xF8,0x00,0x00,0x00,0x00,0x00,0x01,0x60,0x00,0x00,0x00,0x03,0xFF,0xFF,0xFF,0xEF,0x F8,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xDF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFD,0xFF,0xD0,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0xBF,0xFF,0xFF,0xFF,0xEF,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xC0,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF7,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xFB,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xF7,0x F4,0x00,0x00,0x00,};/*unsignedcharcode ucPic4[]={/*--调入了一幅图像:这是您新建的图像--*//*--宽度x高度=128x64 --*//*0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xEF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xBD,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFD,0xEF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xBF,0xFF,0xF7,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEB,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFB,0xFF,0xFF,0x7F,0xBF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x77,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFF,0xEB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x FF,0xFF,};/******************************************************************************函数名称:main函数功能:主函数,程序如路口入口参数:无返回值:无备注:无*******************************************************************************/void main(void){LCD12864_Init();//初始化液晶//LCD12864_DisplayImage(ucPic);while(1){LCD12864_DisplayImage(ucPic);ﻩDelay(80000);。
LCD12864液晶显示原理电路图程序

LCD12864系列点阵型液晶显示模块使用说明书一、OCM12864液晶显示模块概述1.OCM12864液晶显示模块是128×64点阵型液晶显示模块,可显示各种字符及图形,可与CPU直接接口,具有8位标准数据总线、6条控制线及电源线。
采用KS0107控制IC。
2.外观尺寸:113×65×11mm(ocm12864-1), 93×70×10mm(ocm12864-2)78×70×10mm(ocm12864-3),3.视域尺寸:73.4×38.8mm(ocm12864-1) 70.7×38mm(ocm12864-2),64×44mm(ocm12864-3)4.重量:大约g补充说明:外观尺寸可根据用户的要求进行适度调整。
二、最大工作X围1、逻辑工作电压(Vcc):4.5~5.5V2、电源地(GND):0V3、LCD驱动电压(Vee):0~-10V4、输入电压:Vee~Vdd5、工作温度(Ta):0~55℃(常温) / -20~70℃(宽温)6、保存温度(Tstg):-10~65℃三、电气特性(测试条件Ta=25,Vdd=5.0+/-0.25V)1、输入高电平(Vih):3.5Vmin2、输入低电平(Vil):0.55Vmax3、输出高电平(Voh):3.75Vmin7、读显示数据CODE:RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0H H D7 D6 D5 D4 D3 D2 D1 D0功能:从DD RAM读数据,读指令执行后Y地址计数器自动加1。
从DD RAM读数据前要先执行“设置页地址”及“设置列地址”命令。
六、接口时序1.写操作时序时序11.读操作时序时序2时序参数表:Line 7 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB7………………………………X=7 Line60 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB4 Line61 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB5 Line62 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB6 Line63 1/0 1/0 1/0 1/0 …………1/0 1/0 1/0 DB7八、测试硬件电路九、读写模块程序举例写指令子程序(INST)SETB ECLR D_ICLR R_WMOV P1, ACLR EVEE’V0第三脚VEE第18脚可调10K (三极管内置)RET●写数据子程序(DATA)SETB ESETB D_ICLR R_WMOV P1, ACLR ERET●写一页显示RAM数据(假设指令子程序为INST,数据子程序为DATA)MOV A,#0B8HLCALL INST ;置页地址为0页MOV A,#40HLCALL INST ;置列地址为0列MOV R2,#40HMOV R1,#00HMOV DPTR,#ADDRLOOP:MOV A,R1MOVC A,A+DPTRLCALL DATAINC R1DJNZ R2, LOOP带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
用12864做示波器(程序和图)

#include <reg51.h>#include <intrins.h>#include <ADC0808.c>sbit DI=P2^2; // 数据\指令选择sbit RW=P2^1; // 读\写选择sbit E=P2^0; // 读\写使能sbit CS1=P2^4; // 片选1sbit CS2=P2^3; // 片选2sbit busy=P1^7;sbit jia=P3^7;sbit jian=P3^3;sbit jia1=P3^0;sbit jian1=P3^1;unsigned int i;unsigned char ye,lei,shu; unsigned char a[94];char code t[]={0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x40,0x60,0x80,0x00,0x7F,0xFF, //小0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x82,0x00,0x82,0x00,0x82,0x40,0x82,0x80,0x82,0x7F,0xE2, //子0x00,0xA2,0x00,0x92,0x00,0x8A,0x00,0x86,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,0x40,0x00,0x60,0x3F,0x5E,0x01,0x48,0x01,0x48,0xFF,0xFF,0x11,0x48,0x21,0x4C, //制0x1F,0x68,0x00,0x40,0x07,0xF8,0x40,0x00,0x80,0x00,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0xFF,0xF8,0x00,0x87,0x00,0x40,0x00,0x30,0x00,0x0F, //作0xFF,0xF8,0x08,0x88,0x08,0x88,0x08,0xC8,0x0C,0x88,0x08,0x0C,0x00,0x08,0x00,0x00,};void checkstate(){//bit dat;DI=0;RW=1;//P1=0x00;do{E=1;E=0;//仅当第7位为0时才可操作(判别busy信号)}while(busy==1);}void writecommand(unsigned char command) //写命令{checkstate();DI=0;RW=0;P1=command;E=1;E=0;}void writedate(unsigned char date) //写数据{checkstate();DI=1;RW=0;P1=date;E=1;E=0;}void pianxuan(unsigned int i){if(i==1)CS1=0,CS2=1;if(i==2)CS1=1,CS2=0;if(i==3)CS1=0,CS2=0;}void cleanscreen() //清屏{unsigned char page,i;for(page=0xb8;page<0xc0;page++){writecommand(page);writecommand(0x40);for(i=0;i<64;i++)writedate(0x00);}}void init(void) //开显示,起始行0行{writecommand(0xc0);writecommand(0x3f);}void delay_50us(uint t){uchar j;for(;t>0;t--)for(j=19;j>0;j--);}void shuju(){pianxuan(i); writecommand(ye); writecommand(lei); writedate(shu);}void qing(){uchar i;for(i=0xb8;i<=0xbf;i++) {ye=i;shu=0x00;shuju();}}void main(){uint r,j,g=0,q,dianya=1,k,p;uchar U,m,l;pianxuan(3);cleanscreen();init();pianxuan(2);l=0xb8;for(k=0;k<4;k++,l=l+0x02){ye=l;lei=0x70;for(r=0;r<16;r++){shu=t[2*r+1+32*k];shuju();lei++;}ye=l+0x01;lei=0x70;for(r=0;r<16;r++){shu=t[2*r+32*k];shuju();lei++;}}while(1){uchar d1,d2,d3,d4,d5;aaa:do{adc();}while((AD!=128)&&(AD!=129)&&(AD!=130));U=AD;adc();if(U>AD)goto aaa;while(jia==0){while(jia==0);g=g+1;}while(jian==0){while(jian==0);if(g!=0) g=g-1;}while(jia1==0){while(jia1==0);dianya=dianya+1;}while(jian1==0){while(jian1==0);if(dianya!=1) dianya=dianya-1;}for(j=0;j<94;j++) //AD采样{adc();a[j]=AD;delay_50us(g);}lei=0x40;for(r=0,j=0;r<94;r++,j++){if(j<64) i=1;if(j==64) lei=0x40;if(j>=64)i=2;qing(); //清掉之前的内容AD=a[j]*0.196/dianya; //计算在12864的电压值if(AD<=7) ye=0xbf,shu=(0x80>>AD); else if(AD<=15) ye=0xbe,shu=0x80>>(AD-8); else if(AD<=23) ye=0xbd,shu=0x80>>(AD-16); else if(AD<=31) ye=0xbc,shu=0x80>>(AD-24); else if(AD<=39) ye=0xbb,shu=0x80>>(AD-32); else if(AD<=47) ye=0xba,shu=0x80>>(AD-40); else if(AD<=55) ye=0xb9,shu=0x80>>(AD-48); else if(AD<=63) ye=0xb8,shu=0x80>>(AD-56);if(r==0){d1=shu;d2=ye;}if(r!=0){d3=shu;d4=ye;if(ye==d2){if(shu>d1){d5=shu;d5=d5>>1;while(d5!=d1){d5=d5>>1;shu=shu|(shu>>1);}}if(shu<d1){d5=shu;d5=d5<<1;while(d5!=d1){d5=d5<<1;shu=shu|(shu<<1);}}if(ye<d2){for(q=0;q<7;q++){shu=shu|(shu<<1);}shuju();ye++;while(ye<d2) {shu=0xff,shuju(),ye++;}if(ye==d2){shu=0x01;if(shu<d1){d5=shu;d5=d5<<1;while(d5!=d1){d5=d5<<1;shu=shu|(shu<<1);}}}}if(ye>d2){for(q=0;q<7;q++){shu=shu|(shu>>1);}shuju();ye--;while(ye>d2) {shu=0xff,shuju(),ye--;}if(ye==d2){shu=0x80;if(shu>d1){d5=shu;d5=d5>>1;while(d5!=d1){d5=d5>>1;shu=shu|(shu>>1);}}}}}if(r!=0)d1=d3;d2=d4;}shuju();if(lei!=0x7f) lei++; }}}。
12864液晶程序和原理图

0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00},/*"院",9*/
{
setpos(line,colum);//显示第i列上面8个点
write_dat(*(add+i));
setpos(line+1,colum++);//显示第i列下面8个点,然后列加1
write_dat(*(add+16+i));
delay(1000);//延时,达到汉字从左到右扫描显示的效果
}
}
{0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00},/*"工",12*/
void write_com(uchar);//写指令
void write_dat(uchar);//写数据
void setpos(uchar,uchar); //设置显示的起始位置
void main()
{
init();
for(i=0;i<6;i++)
{
if(i<3)
{
select(0);
51单片机 c语言 12864 st7920 完美液晶示波器

void lcd_init()
{
delayms(3);
lcd_wcmd(0x30);
delayms(1); //选择基本指令集
lcd_wcmd(0x30); //选择8bit数据流
show_str(" ");
lcd_wcmd(0x98);
show_str(" ");
}
/*------------------清整个GDRAM空间----------------------------*/
void clr_gdram()
{ unsigned char x,y; //1.5s
}
for (i=0;i<8;i++)
{
AD_OUT=1;
AD_CLK=1;
al<<=1;
if (AD_OUT) al|=0x01;
AD_CLK=0;
}
AD_CS=1;
ad=(unsigned int)ah;ad<<=8;ad|=al;
return (ad);
a++;
}
if(a==0)
new_lie[t]=lie[t];
}
}
a=0;
}
void sure_lie() //p=temp
{
uchar a=0;
if(t<8)
{
sure_newlie();
return (0x80+y);
HDG12864L-3电路图及程序

程序:#include<reg51.h>#include<intrins.h>#define LCD P1sbit A=P3^2;sbit RW=P3^1;sbit E=P3^0;unsigned char codebao[]={0x80,0x40,0x20,0xD8,0x4F,0x4A,0x48,0x48,0x48,0xC8,0x08,0x08,0xFC,0x08,0x00,0x00,0x00,0x00,0x0 0,0x3F,0x42,0x42,0x42,0x42,0x42,0x43,0x48,0x50,0x4F,0x40,0x70,0x00,};unsigned char codegang[]={0x40,0x30,0xEF,0x24,0x24,0x24,0x04,0xFE,0x12,0x22,0xC2,0x22,0x1A,0x02,0xFE,0x00,0x01,0x01,0x 7F,0x21,0x11,0x01,0x00,0xFF,0x04,0x03,0x00,0x01,0x46,0x80,0x7F,0x00,};unsigned char codeji[]={0x00,0x10,0x08,0xFC,0x57,0x54,0x54,0x54,0xFD,0x56,0x54,0x54,0x54,0x00,0x00,0x00,0x00,0x44,0x44,0 x25,0x25,0x15,0x0D,0xFF,0x05,0x0D,0x15,0x25,0x65,0x25,0x04,0x00,};unsigned char codetuan[]={0x00,0xFE,0x02,0x12,0x12,0x12,0x92,0x72,0xFE,0x12,0x12,0x12,0x02,0xFE,0x00,0x00,0x00,0xFF,0x4 8,0x44,0x42,0x41,0x50,0x60,0x5F,0x40,0x40,0x40,0x40,0xFF,0x00,0x00,};unsigned char codewan[]={0x00,0x02,0x02,0x02,0x02,0x82,0x7E,0x22,0x22,0x22,0x22,0xF2,0x22,0x02,0x02,0x00,0x00,0x40,0x20 ,0x10,0x0C,0x03,0x00,0x00,0x20,0x60,0x20,0x1F,0x00,0x00,0x00,0x00,};unsigned char codeteng[]={0x00,0xFE,0x12,0x12,0xFE,0x29,0xAE,0xEA,0xB8,0xAF,0xA8,0x6C,0xAB,0xAA,0x20,0x00,0xC0,0x3 F,0x41,0x81,0x7F,0x01,0x10,0x17,0x14,0x14,0x57,0x84,0x7C,0x03,0x01,0x00,};unsigned char codegong[]={0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x01,0x2 0,0x70,0x28,0x24,0x23,0x31,0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,};unsigned char codesi[]={0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x1F,0 x04,0x04,0x04,0x04,0x04,0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,};unsigned char codewu[]={0x00,0x00,0x80,0xBE,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xA2,0xBE,0x80,0x00,0x00,0x00,0x84,0x84,0 x44,0x44,0x24,0x14,0x0C,0x07,0x0C,0x14,0x24,0x64,0xC4,0x44,0x04,0x00,};unsigned char codedi[]={0x40,0x41,0xCE,0x04,0x00,0xF0,0x90,0x90,0x90,0xFF,0x90,0x90,0x90,0xF0,0x00,0x00,0x40,0x20,0x1F,0 x20,0x40,0x5F,0x48,0x48,0x48,0x4F,0x48,0x48,0x48,0x5F,0x40,0x00,};void mdelay(int delay){ int i;for(;delay>0;delay--){for(i=0;i<80;i++) //1ms延时{;}}}void busytest(){A=0;RW=1;P1=0x00;E=1;while(P1&0x08);E=0;}void writevalue(value){busytest();A=0;RW=0;LCD=value;_nop_();_nop_();E=1;_nop_();_nop_();E=0;}void writedata(data1){busytest();A=1;RW=0;_nop_();_nop_();LCD=data1;E=1;_nop_();_nop_();E=0;mdelay(20);}void display(int a,int b,char *c){int n;for(n=0;n<=15;n++){writevalue(a); //列(页)设置_nop_();_nop_();_nop_();writevalue(b); //行设置高四位_nop_();_nop_();_nop_();writevalue(0x00+n); //行设置低四位_nop_();_nop_();_nop_();writedata(c[n]);mdelay(20);writevalue(a+1); //列(页)设置_nop_();_nop_();_nop_();writevalue(b); //行设置高四位_nop_();_nop_();_nop_();writevalue(0x00+n); //行设置低四位_nop_();_nop_();_nop_();writedata(c[n+16]);mdelay(20);}}main(){writevalue(0xaf); //显示开writevalue(0xa1); //正显示while(1){display(0xB1,0x10,bao);display(0xB1,0x11,gang);display(0xB1,0x12,ji);display(0xB1,0x13,tuan);display(0xB1,0x14,wan);display(0xB1,0x15,teng);display(0xB1,0x16,gong);display(0xB1,0x17,si);display(0xB5,0x13,wu);display(0xB5,0x14,di);}}HDG12864L-3语句说明:(1):显示器开关 1 0 1 0 1 1 1 0(1) 0为关1为开,使用前必须用次命令开启12864(2):设置开始行 0 1 * * * * * * * 为开始行地址,共64行可设置,是竖直方向的,无特殊情况可以不用。
9--12864液晶显示原理+电路图+程序

带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。
可以显示8×4行16×16点阵的汉字.也可完成图形显示.低电压低功耗是其又一显著特点。
由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。
基本特性:l低电源电压(VDD:+3.0--+5.5V)l显示分辨率:128×64点l内置汉字字库,提供8192个16×16点阵汉字(简繁体可选)l内置128个16×8点阵字符l2MHZ时钟频率l显示方式:STN、半透、正显l驱动方式:1/32DUTY,1/5BIASl视角方向:6点l背光方式:侧部高亮白色LED,功耗仅为普通LED的1/5—1/10 l通讯方式:串行、并口可选l内置DC-DC转换电路,无需外加负压l无需片选信号,简化软件设计l工作温度:0℃-+55℃,存储温度:-20℃-+60℃模块接口说明*注释1:如在实际应用中仅使用串口通讯模式,可将PSB接固定低电平,也可以将模块上的J8和“GND”用焊锡短接。
*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。
*注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。
2.2并行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC 3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7——DB0为显示数据RS=“L”,表示DB7——DB0为显示指令数据5R/W(SID)H/L R/W=“H”,E=“H”,数据被读到DB7——DB0R/W=“L”,E=“H→L”,DB7——DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线是用于模块屏幕显示开和关的控制。
图文液晶12864例程

随着工业控制可视化的提高,液晶已经逐步成为数码管的代替者。
为了使大家能够更好更快的掌握12864的控制技术,我们实验室在A VR开发板的基础上编写一下例程,以供大家学习参考。
当然,您为了学习该程序,应该不会吝啬那么几枚金币,也当是给我们的工作一点点酬劳罢了。
该工程是基于A VRmega16单片机的,ICC开发环境,为了使程序完整,特此将两个头文件也添加在文档中。
1、程序主函数体,包括端口的连接序号,大家可以根据提示连接,下载程序后可直接使用/**********************************************液晶12864实验型号:JCM12864M晶振: 内部1.0000Mhz连接:RS PC6,RW PC5,EN PC4,DATA PD0-7***********************************************//******************头文件**********************/#include <iom16v.h>#include <macros.h>#include "pic.h" //图片的文件#include "delay.h" //延时函数的文件/******************宏定义**********************/#define uchar unsigned char#define uint unsigned int#define j_com 0x30 //功能设定,基本指令#define k_com 0x34 //功能设定,扩展指令#define t_com 0x36 //功能设定,图形指令#define show_on 0x0e //显示开关,整体显示on,游标on,游标位on#define clean 0x01 //清屏,AC归0#define AC_0 0x03 //AC归0,不改变DDRAM内容#define cursor 0x06 //进入设定点,写入时,游标右移动#define RS_H PORTA|=BIT(5) //RS=1,选择命令#define RS_L PORTA&=~BIT(5) //RS=0,选择数据#define RW_H PORTA|=BIT(6) //R/W=1,读#define RW_L PORTA&=~BIT(6) //R/W=0,写#define EN_H PORTA|=BIT(7) //EN=1,使能关#define EN_L PORTA&=~BIT(7) //EN=0,使能开const uchar AC[]={ //基本指令下屏幕中各行列的寄存器地址(显示汉字时)0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x98,0x99,0x9a,0x9b,0x9c,0x9d,0x9e,0x9f,};/************************函数声明**************************/void delay_1us(void);void delay_nus(uint n);void delay_1ms(void);void delay_nms(uint n);void Lcd_init(void);void M16_init(void);void send_c_d(uchar com_dat,uchar c_d); //写指令或数据void set_xy(uchar x,uchar y); //设定显示位置void show_str(uchar x,uchar y,uchar *str); //显示字符串void show_num(uchar x,uchar y,int num); //显示数字int范围-32767~32767void show_pic(const uchar pic1[]); //显示图片void show_2pic(const uchar pic1[],const uchar pic2[]); //图片叠加void lcdtest(void);void lcdcls(void);/**********************************************************//******************主函数**********************/void main(void){int a=0,i;M16_init();Lcd_init();delay_nms(5); //Lcd初始化中清屏需4.6mswhile(1){lcdtest(); //黑屏可以检测是否有坏点,呵呵,一般没必要delay_nms(1000);lcdcls(); //清屏show_pic(qingyuan); //开机画面delay_nms(1000);lcdcls(); //清屏show_str(1,1,"欢* 28℃");show_str(2,1,"迎* 技术物理系");show_str(3,1,"光* 507实验室");show_str(4,1,"临* ");show_pic(wenduji);delay_nms(2000);send_c_d(clean,1); //清除汉字delay_nus(200); //清除汉字的延时,至少150us,否则乱码}}/**********************************************//*******************M16初始化******************/void M16_init(void){PORTA = 0x00;DDRA = 0xFF;PORTB = 0x00;DDRB = 0xFF;PORTC = 0x00;DDRC = 0xFF;PORTD = 0x00;DDRD = 0xFF;}/**********************************************//*******************lcd初始化******************/void Lcd_init(void){send_c_d(j_com,1); //功能设定,基本指令send_c_d(show_on,1); //显示开关,整体显示on,游标on,游标位onsend_c_d(clean,1); //清屏,AC归0send_c_d(cursor,1); //进入设定点,写入时,游标右移动}/**********************************************//*****************写指令或数据*****************/void send_c_d(uchar com_dat,uchar c_d){if(c_d==1){RS_L;} //c_d=0时选择指令else {RS_H;} //c_d=1时选择数据RW_L; //写PORTD=com_dat; //指令或数据送到PD端口EN_H;delay_1us(); //在晶振为1MHz的最佳延时,晶振为8MHz时,需要仔细调试EN_L; //下降沿写入}/**********************************************//*******************设定显示位置***************/void set_xy(uchar x,uchar y) //行x从1-4,列y从1-8{uchar a;a=8*x+y-9; //对x,y调整send_c_d(AC[a],1); //查表AC的实际寄存器地址/* //第二种方法不查表直接计算if((x==1)||(x==3))a=8*x+y-9;if((x==2)||(x==4))a=8*x+y-1;send_c_d(0x80+a,1);*/}/**********************************************//****************显示字符串*show_str***********/void show_str(uchar x,uchar y,uchar *str){uchar *p; //定义一个指针p=str; //指针指向字符串在M16内存中的地址set_xy(x,y); //将要放入液晶的寄存器地址while (*p!=0) //判断指针是否到了字符串的末尾{send_c_d(*p,0); //写入指针指向的字符p=++str; //str地址加1后给指针}}/**********************************************//****************显示数字*show_num*************/void show_num(uchar x,uchar y,int num){uchar temp=0,flag=0; //设置一个标志set_xy(x,y);if(num<0){send_c_d(0x2d,0); //显示负号num=-num;}temp=num/10000; //整除取万位值=tempif(flag|temp) //若万位值=0则不执行显示万位值,否则会显示万位值为0{ //若万位值!=0则发送万位值的ASCII 码send_c_d(0x30+temp,0);flag = 1; //若执行显示了万位,说明num为5位数,标志=1,千百十个位全部显示}num-=temp*10000; //num=去除万位后的余数temp=num/1000; //整除取千位值=tempif(flag|temp) //若flag=0千位值=0则不执行显示千位值,否则会显示千位值为0{ //若千位值!=0则发送千位值的ASCII 码send_c_d(0x30+temp,0);flag = 1;}num-=temp*1000;temp=num/100;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}num-=temp*100;temp=num/10;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}num-=temp*10;temp=num;if(flag|temp){send_c_d(0x30+temp,0);flag = 1;}if(!flag) //flag=1则以上步骤有执行,则不执行以下send_c_d(0x30,0); //flag=0则以上步骤没有执行,说明num=0,发送"0"的ASCII码}/**********************************************//*****************显示图片*show_pic************/void show_pic(const uchar pic[]){uchar i,j,k;//send_c_d(0x08,1); //把游标关了send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++) //上半屏32行{send_c_d(0x80+i,1); //设定绘图GDRAM的行Y地址(0x80--0x9F)send_c_d(0x80,1); //设定绘图GDRAM的列X地址(0x80--0x87)for(j=0;j<16;j++) //绘图第i行(此处的行实际包括1行像素){k=pic[16*i+j]; //第i行第j列的数据(此处的列实际包括8列像素点)send_c_d(k,0); //写入后X地址自动+1,从0x80--0x87}}for(i=0;i<32;i++) //下半屏32行{send_c_d(0x80+i,1); //设定绘图GDRAM的行Y地址(0x80--0x9F)send_c_d(0x88,1); //设定绘图GDRAM的列X地址(0x88--0x8F)for(j=0;j<16;j++){k=pic[16*i+j+512]; //+512后是下半屏数据send_c_d(k,0); //写入后X地址自动+1,从0x88--0x8F}}send_c_d(j_com,1); //返回基本指令}/**********************************************//**************两幅图叠加*show_2pic************/void show_2pic(const uchar pic1[],const uchar pic2[]){uchar i,j,k;send_c_d(0x08,1); //把游标关了send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++){k=pic1[16*i+j]|pic2[16*i+j];//两幅图对应处数据相与,实现叠加send_c_d(k,0);}}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++){k=pic1[16*i+j+512]|pic2[16*i+j+512];send_c_d(k,0);}}send_c_d(j_com,1); //返回基本指令}/**********************************************//***************图形方式下屏幕全黑*************/void lcdtest(void){uchar i,j;send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++){send_c_d(0xff,0);}//像素数据为0xFF,全黑}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++){send_c_d(0xff,0);}}send_c_d(j_com,1);}/**********************************************//*****************图形方式下清屏***************/void lcdcls(void){uchar i,j;send_c_d(t_com,1); //进入图形指令for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x80,1);for(j=0;j<16;j++) send_c_d(0x00,0);//像素数据为0x00,清屏}for(i=0;i<32;i++){send_c_d(0x80+i,1);send_c_d(0x88,1);for(j=0;j<16;j++) send_c_d(0x00,0);}send_c_d(j_com,1); //返回基本指令}/**********************************************//**********************************************//**********************************************//**********************************************/2、图形代码头文件(我们是郑州轻工业学院的,请尊重我们的知识,当然在大家学会之后,可以随便更改图形代码,但不可以用于其他任何有辱我校声誉的创作之中!)#ifndef _PIC_H_#define _PIC_H_#define uchar unsigned char#define uint unsigned intconst uchar qingyuan[]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x1F,0xFF,0xFF,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCD,0xFF,0xFC,0xFF,0xFC,0x1F,0xFF,0xFF,0x3F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC9,0xFF,0xCE,0x7F,0xFE,0x30,0x7F,0xFF,0x3F,0xD7,0x1F,0xFF,0xFF,0xFF,0x8F,0xFF,0x4B,0xFF,0x8E,0x0F,0xFE,0x30,0x7F,0x7B,0x7F,0x86,0x3F,0xFF,0xBF,0xFF,0xCF,0xFF,0x73,0xFF,0xC0,0xC7,0xF8,0x32,0xFF,0x7A,0x7F,0x1F,0x3F,0xFE,0x0F,0xFC,0xC7,0xFF,0x00,0xFF,0x03,0xCF,0xF8,0x60,0xFF,0x5A,0x7F,0x2E,0x7F,0xF8,0x0F,0xFE,0x0B,0xFC,0x1E,0x7F,0x24,0x3F,0xFE,0x00,0xF9,0x18,0x7F,0x6E,0x8F,0xFC,0x7F,0xF6,0x41,0xFD,0x78,0xFF,0x0C,0x7F,0xF8,0x33,0x79,0x14,0x7E,0x0C,0x1F,0xFE,0x3F,0xF0,0x43,0xFC,0xC3,0xFF,0x1D,0x3F,0xE0,0x33,0x3D,0x57,0x7E,0x11,0xFF,0xFE,0x7F,0xF2,0x47,0xF9,0x97,0xFF,0x50,0x3F,0xC4,0xB8,0x3F,0x77,0x7F,0xCE,0x3F,0xFE,0x7F,0xFA,0x1F,0xFB,0xE1,0xFF,0x50,0x3F,0xFD,0xD8,0x7C,0xF7,0x7F,0x9E,0x3F,0xF8,0x01,0xFE,0x40,0x7F,0x81,0xFF,0x39,0x7F,0xF9,0xFB,0xFC,0xF7,0x7E,0x1F,0x7F,0x81,0xF9,0xF0,0x00,0x3F,0x3B,0xFF,0x32,0x7B,ca 0xFF,0xFB,0xFE,0xFF,0x7F,0x5C,0x0F,0xCF,0xFF,0xE1,0xFF,0xFF,0x7B,0xFF,0x26,0xF3,0xFF,0xFB,0xFF,0xFF,0x7F,0x9D,0xFF,0xFF,0xFF,0xE7,0xFF,0xFF,0xBB,0xFF,0xBE,0x03,0xFF,0xFB,0xFF,0xFF,0x3F,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC7,0xFF,0xFF,0xDF,0xFF,0xFB,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEC,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xCC,0x63,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x8C,0x47,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0C,0x47,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x0C,0x44,0x3F,0xFF,0xDD,0xFF,0xAF,0xEE,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xDD,0xFF,0xB7,0xEE,0xFF,0x03,0xC3,0xFF,0xFF,0x7F,0xFF,0xFF,0x0C,0x46,0x1F,0xFF,0xDC,0x7F,0xBF,0xED,0xF8,0x5B,0xF6,0xFF,0x9C,0xB0,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xC9,0xFF,0x87,0xA4,0x1D,0x0B,0xED,0xFF,0x7D,0xBD,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0x1D,0xF8,0x3F,0x8B,0x5C,0x57,0xC3,0xFF,0x1D,0xBD,0xFF, 0xFF,0x0C,0x46,0x1F,0xFF,0xCC,0x7F,0x1F,0x65,0x59,0x87,0xF6,0xFF,0xDD,0xBD,0xFF,0xFF,0x0C,0x46,0x1F,0xFF,0x92,0xFE,0xAF,0xCA,0xDC,0xDF,0xC1,0x7F,0xED,0xBD,0xFF, 0xFF,0x0C,0x06,0x1F,0xFF,0x5D,0xFD,0xB7,0x25,0xBD,0x8F,0xFB,0xFF,0xED,0xBB,0xFF, 0xFF,0x0E,0x06,0x1F,0xFF,0xDA,0xF3,0xB9,0xEA,0xB3,0xDF,0xDB,0x7F,0xDE,0xBB,0xFF, 0xFF,0x0F,0x0E,0x1F,0xFF,0x97,0x1F,0xBF,0xEF,0x7E,0x03,0xB3,0xBF,0x3F,0x7B,0xFF,0xFF,0x0F,0x9E,0x1F,0xFF,0xDF,0xFF,0xBF,0xEF,0xFF,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x1F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x87,0xFE,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xC1,0xFC,0x3F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0x03,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,//郑州轻工业学院};const uchar wenduji[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//温度计};#endif3、延时函数头文件#ifndef _DELAY_H_#define _DELAY_H_#define uchar unsigned char#define uint unsigned int#define XTAL 1 //晶振频率,单位MHz/*****************延时程序******************网上流行的延时程序,可大致延时,实际上不准确/*******************************************/void delay_1us() //延时1微妙{asm("nop"); //执行空指令(内嵌汇编指令)}void delay_nus(uint n) //延时n微妙{uint i=0;for(i=0;i<n;i++)delay_1us();}void delay_1ms() //延时1毫秒{uint i;for(i=0;i<(uint)(XTAL*143-2);i++);}void delay_nms(uint n) //延时n毫秒{uint i=0;for(i=0;i<n;i++){delay_1ms();}}/*******************************************/#endif/*********************************************//*********************************************//*********************************************//*********************************************/在使用程序的时候,新建一个工程项目,然后创建两个头文件和一个C文件,然后包含到工程项目中即可。
51单片机示波器制作(12864显示带字库)

51单⽚机⽰波器制作(12864显⽰带字库)⾸先说明:我才接触51单⽚机3个星期(6⽉8号才⾼考完),对C语⾔还很陌⽣。
我就是⼀个萌新,还希望⼤佬们多多指导。
12864(带字库st7920驱动)为显⽰器,XPT2046为AD转换芯⽚。
(不要问我为什么⽤这个芯⽚,开发板⾃带的坑货。
我在⽹上下载的⽰波器程序⼤多以ADC0832或ADC0808为AD转换芯⽚,结果我都⽤不了,所以才被迫⾃写程序。
)⽰波器程序由main.c XPT2046.c XPT2046.h三个⼦⽂件构成,main.c是我根据⽹上的⼀个12864画图程序改编⽽成我也加了⼀些注释,后⾯两个⽂件取⾃开发板⾃带的例程并进⾏了修改。
所以说这个程序基本上不是我编写的,也有很多问题和不⾜之处还请指正。
下⾯是效果图。
⾸先是⽅波。
由于没有函数发⽣器,就只能通过⼿机播放只做好的正弦⾳频,再检测⼿机⽿机接⼝信号。
不知道为什么,正弦波有⼀半不见了,似乎是由于不能检测到负电压还是什么的。
下⾯贴出main.c 的代码。
01.#include <reg52.h>02.#include"XPT2046.h" 03.#define uint unsigned int 04.#define uchar unsigned char05.06.sbit RS=P2^6; //LCD 数据或命令选择端07.sbit RW=P2^5; //LCD 写⼊或读出选择端08.sbit RST=P1^0; //LCD 复位端⼝09.sbit LCDE=P2^7; // LCD 使能端10.sbit PSB=P3^2;//串⾏或并⾏选择端11.12. void delay(uchar i)13. {14. while(i--);15. } //延时函数,i=1时延时约10微秒(12M晶振)16.17. void SPI_Start()18. {19. CLK = 0;20. CS = 1;21. DIN = 1;22. CLK = 1;23. CS = 0;24. } //ADC芯⽚(XPT2046)初始化函数25.26. void lcd_busy()27.28. {29.30. RS=0;31.32. RW=1;33.34. P0=0XFF;35.36. LCDE=1;37.38. delay(14);39.40. while((P0&0x80)==0x80);41. LCDE=0;42.43. }//LCD12864(st7920驱动)查忙函数44.45. void write_com(uchar com)46.47. {48.49. lcd_busy();RS=0;50.51. RW=0;52.53. LCDE=0;54.55. P0=com;56.57. delay(9);58.59. LCDE=1;60.61. delay(9);62.63. LCDE=0;64.65. }//LCD写指令函数66.67. void write_num(uchar num)68.69. {70.71. lcd_busy();72.73. RS=1;75. RW=0;76.77. LCDE=0;78.79. P0=num;80.81. delay(7);82.83. LCDE=1;84.85. delay(9);86.87. LCDE=0;88.89. }//LCD写数据函数90.91. uchar read_data()92.93. {94.95. uchar read;96.97. lcd_busy();98.99. RS=1;100.101. RW=1;102.103. LCDE=0;104.105. delay(7);106.107. LCDE=1;108.109. delay(9);110.111. read=P0;112.113. LCDE=0;114.115. delay(11);;116.117.118.119. return read;120.121. } //LCD读数据函数122.123. void clear_lcd()124.125. {126.127. uchar i,j;128.129. write_com(0x34);130.131. for(i=0;i<32;i++) //因为LCD有纵坐标32格所以写三⼗⼆次132.133. {134.135. write_com(0x80+i); //先写⼊纵坐标Y的值137. write_com(0x80); //再写⼊横坐标X的值138.139. for(j=0;j<32;j++) //横坐标有16位,每位写⼊两个字节的的数据,也就写⼊32次140.141. { //因为当写⼊两个字节之后横坐标会⾃动加1,所以就不⽤再次写⼊地址了。
12864液晶原理及程序电路图

12864液晶原理+程序+ 照片+电路图一;12864(带字库汉字显示演示程序);*************************************************************************** ;* sxj1974@ (51c51 test web) *;* Create by :石学军 更多例程请登陆网站 *;***************************************************************************RS EQU P2.0RW EQU P2.1E EQU P2.2PSB EQU P2.3RST EQU P2.5;-----------------------------------------------LCD_X EQU 30HLCD_Y EQU 31HCOUNT EQU 32HCOUNT1 EQU 33HCOUNT2 EQU 34HCOUNT3 EQU 35H;----------------------------------------------- LCD_DATA EQU 36HLCD_DATA1 EQU 37HLCD_DATA2 EQU 38HSTORE EQU 39H;----------------------------------------------- ORG 0000HLJMP MAINORG 0100H;----------------------------------------------- MAIN:MOV SP,#5FHCLR RST ;复位LCALL DELAY4SETB RSTNOPSETB PSB ;通讯方式为8位数据并口;********************初始化********************** LGS0: MOV A,#34H ;34H--扩充指令操作LCALL SEND_IMOV A,#30H ;30H--基本指令操作LCALL SEND_IMOV A,#01H ;清除显示LCALL SEND_IMOV A,#06H ;指定在资料写入或读取时,光标的移动方向LCALL SEND_I ;DDRAM 的地址计数器(AC)加1MOV A,#0CH ;开显示,关光标,不闪烁LCALL SEND_I;=============================================== TU_PLAY1:MOV DPTR,#TU_TAB1 ;显示图形LCALL PHO_DISPLCALL DELAY3;================================================= ;;显示汉字和字符;加入80ms的延时,使你能够看清楚显示的过程;根据汉字显示坐标分段写入(顺序写入);================================================= HAN_WR2:LCALL CLEAR_PHAN_WR2A:MOV DPTR,#TAB1A ;显示汉字和字符MOV COUNT,#10H ;地址计数器设为16。
DIY简易数字示波器

这是一款采用STC8A8KMCU制造的简单示波器,只有零星组件,易于成型。
这些功能可以涵盖简单的测量:该作品主要的规格如下:•单片机:STC8A8K64S4A12@27MHz•显示屏:0.96H OLED,分辨率为128x64•控制器:一个EC11编码器•输入:单通道,秒/秒:500毫秒、200毫秒、100毫秒、50毫秒、20毫秒、10毫秒、5毫秒、2毫秒、1毫秒、500us x200us x100us100US(仅在自动触发模式下可用)•电压范围:0-30V.采样额定值:250kHz@100us/格所有操作均由EC11编码器完成。
输入包括单击,双击,长按,旋转和旋转时按。
这似乎有点复杂,不用担心,下面有细节。
该编码器的资源几乎已经耗尽。
如果有新功能,可能需要额外的输入组件。
主界面•参数模式•单击编码器:运行/停止采样。
•双击编码器:进入波形滚动模式。
•长按编码器:进入设置界面。
•旋转编码器:调整参数。
•按下时旋转编码器:在选项之间切换。
•切换自动和手动量程:连续顺时针旋转编码器以进入自动量程。
逆时针旋转编码器以进入手动范围。
主界面•波浪滚动模式•单击编码器:运行/停止采样。
•双击编码器:进入参数模式。
•长按编码器:进入设置界面。
•旋转编码器:水平滚动波形。
(仅在采样停止时可用)•按下时旋转编码器:垂直滚动波形(仅在采样停止时可用)设置界面•单击式编码器:不适用•双击编码器:不适用•长按编码器:返回主界面。
•旋转编码器:调整参数。
•按下时旋转编码器:在选项之间切换。
功能•触发电平:对于重复信号,触发电平可以使其在显示屏上稳定。
对于单发信号,触发电平可以捕获它。
•触发斜率:触发斜率确定触发点是在信号的上升沿还是下降沿。
触发模式:•自动模式:连续扫描。
单击编码器可停止或运行采样。
如果触发,波形将显示在显示屏上,触发位置将放在图表的中心。
否则,波形将不规则地滚动,并且显示屏上将显示“Fail”。
•正常模式:完成预采样后,可以输入信号。
12864液晶程序+仿真图

/**********************************************************12864是由两块64*64的液晶屏组成的。
当中页是通过自己去定义的。
**********************************************************/#include"reg51.h"#define uchar unsigned char#define uint unsigned intsbit lcdrst=P3^0;sbit cs2=P3^5;sbit cs1=P3^4;sbit e=P3^2;sbit rw=P3^3;sbit rs=P3^1;/************************************************代码:字模生成可以在取模软件生成。
方法是阴码列行式逆向************************************************/uchar code qin[]={0x04,0x04,0xC4,0x5F,0x54,0xF4,0x54,0x5F,0xC4,0x14,0x10,0xFF,0x10,0x10,0xF0,0x00,0x00,0x80,0x95,0x95,0x95,0x7F,0x55,0x55,0x95,0x60,0x1C,0x03,0x20,0x60,0x3F,0x00};// 勤uchar code mian[]={0x00,0xF0,0x2C,0x27,0xE4,0x34,0x2C,0xE4,0x08,0x08,0xFF,0x08,0x08,0xF8,0x00,0x00,0x40,0x21,0x11,0x0F,0x01,0x3F,0x41,0x49,0x44,0x43,0x40,0x44,0x48,0x47,0x70,0x00};//勉uchar code li[]={0x44,0x44,0xFC,0x44,0x44,0x00,0xFE,0x92,0x92,0xFE,0x92,0x92,0x92,0xFE,0x00,0x00,0x10,0x10,0x0F,0x08,0x48,0x40,0x45,0x44,0x44,0x7F,0x44,0x44,0x44,0x45,0x40,0x00};//理uchar code gong[]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00 }; //工uchar code xue[]={0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00};//学uchar code yuan[]={0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00};//院uchar code dian[]={0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00};//电uchar code zi[]={0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00};//子uchar code cheng[]={0x10,0x12,0xD2,0xFE,0x91,0x11,0x80,0xBF,0xA1,0xA1,0xA1,0xA1,0xBF,0x80,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x44,0x44,0x44,0x7F,0x44,0x44,0x44,0x44,0x40,0x00};//程uchar code tong[]={0x40,0x41,0xC6,0x00,0x00,0xF2,0x52,0x52,0x56,0xFA,0x5A,0x56,0xF2,0x00,0x00,0x00,0x40,0x20,0x1F,0x20,0x40,0x5F,0x42,0x42,0x42,0x5F,0x4A,0x52,0x4F,0x40,0x40,0x00};//通uchar code xin[]={0x80,0x40,0x30,0xFC,0x07,0x0A,0xA8,0xA8,0xA9,0xAE,0xAA,0xA8,0xA8,0x08,0x08,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x7E,0x22,0x22,0x22,0x22,0x22,0x7E,0x00,0x00,0x00};//信uchar codeban[]={0x42,0x42,0xFE,0x42,0x42,0xE0,0x00,0xFF,0x00,0x42,0x42,0xFE,0x42,0x42,0x42,0x00,0x10,0x10,0x0F,0x88,0x49,0x20,0x18,0x07,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x00};//班uchar code ling[]={0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00};//0uchar code ba[]={0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00};//8uchar code yi[]={0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00};//1uchar code kongge[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//不显示任何内容uchar code kong[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; //不显示任何内容uchar code huo[]={0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,0x02,0x40,0x20,0x18,0x10,0x00,0x00,0x00,0x00,0x80,0x41,0x20,0x10,0x0C,0x03,0x00,0x03,0x04,0x18,0x30,0x60,0x20,0x00,0x00};//火uchar code yun[]={0x40,0x40,0x44,0x44,0x44,0x44,0xC4,0xC4,0x44,0x44,0x46,0x46,0x64,0x60,0x40,0x00,0x00,0x20,0x70,0x38,0x2C,0x27,0x23,0x31,0x10,0x12,0x14,0x18,0x70,0x20,0x00,0x00};//云uchar code xie[]={0x00,0x22,0x3E,0x22,0x22,0xA2,0xFE,0x22,0x00,0xFE,0x02,0x22,0x5A,0x86,0x02,0x00,0x10,0x10,0x08,0x04,0x23,0x40,0x3F,0x00,0x00,0xFF,0x00,0x04,0x08,0x08,0x07,0x00};//邪uchar code shen[]={0x08,0x08,0x89,0xCE,0xA8,0x18,0x00,0xF8,0x48,0x48,0xFF,0x48,0x48,0xF8,0x00,0x00,0x02,0x01,0x00,0xFF,0x00,0x03,0x00,0x07,0x02,0x02,0xFF,0x02,0x02,0x07,0x00,0x00};//神/*************************************************延时函数**************************************************/void delay(uchar z){uchar i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}/********************************************检查状态*********************************************/void checkbusy(){uchar dat;rs=0; //数据\指令选择rw=1; //允许读do{P2=0x00; //清零P2口delay(5);e=1;dat=P2; //读P2口e=0;dat>>=7; //仅当第7位为0时才可操作(判别busy信号) }while(!(dat==0x00));}/*************************************写命令***********************************/void write_com(uchar com){checkbusy(); //检查是否忙rs=0; //写命令rw=0;P2=com;e=1;e=0;}/*************************************写数据***********************************/void write_data(uchar date){checkbusy(); //检查是否忙rs=1; //写数据rw=0;P2=date;e=1;e=0;}/*************************************显示汉字***********************************/void hanzi(uchar ye,uchar lie,uchar *daima){uchar i,j;for(i=0;i<2;i++){write_com(0xb8+ye+i); // ye页与ye+1页write_com(0x40+lie); //确定初始行for(j=0;j<16;j++){write_data(daima[i*16+j]); //写数据(汉字)}}}/*************************************显示数字***********************************/void shuzi(uchar ye,uchar lie,uchar *daima){uchar i,j;for(i=0;i<2;i++){write_com(0xb8+ye+i); // ye页与ye+1页write_com(0x40+lie); //确定初始行for(j=0;j<8;j++){write_data(daima[i*8+j]); //写数据(数字)}}}/***************************************清屏***************************************/void clearlcd(){uchar i,j;cs1=0; //清全屏有cs1=0 cs2=0 与无cs1=0 cs2=0 效果不同cs2=0;for(i=0;i<8;i++)write_com(0xb8+i);write_com(0x40);for(j=0;j<64;j++)write_data(0x00);}}/**************************************** 初始化LCD****************************************/ void init(){write_com(0x3e); //关显示delay(1);write_com(0x3f); //开显示write_com(0xc0); //行初始地址write_com(0xb8); //页初始地址write_com(0x40); //列初始地址}/**************************************** 显示数据****************************************/ void display()cs1=0; //左半屏cs1=0 cs2=1cs2=1;hanzi(0,0,qin);hanzi(0,16,mian);hanzi(0,32,li);hanzi(0,48,gong);cs1=1; //右半屏cs1=1 cs2=0cs2=0;hanzi(0,0,xue);hanzi(0,16,yuan);//hanzi(0,32,kongge); // 如果清屏时加上cs1=0 cs2=0则可以不用,否则要加上//hanzi(0,48,kongge);cs1=0;cs2=1;hanzi(2,0,dian);hanzi(2,16,zi);hanzi(2,32,gong);hanzi(2,48,cheng);cs1=1;cs2=0;hanzi(2,0,xue);hanzi(2,16,yuan);//hanzi(2,32,kongge);//hanzi(2,48,kongge); cs1=0;cs2=1;shuzi(4,0,ling); shuzi(4,8,ba);hanzi(4,16,tong); hanzi(4,32,xin); hanzi(4,48,gong);cs1=1;cs2=0;hanzi(4,0,cheng); shuzi(4,16,yi);hanzi(4,24,ban);//hanzi(4,40,kongge); shuzi(4,56,kong);cs1=0;cs2=1;hanzi(6,0,huo); hanzi(6,16,yun); hanzi(6,32,xie); hanzi(6,48,shen);cs1=1;cs2=0;//hanzi(6,0,kongge);//hanzi(6,16,kongge);//hanzi(6,32,kongge);//hanzi(6,48,kongge);}/**************************************** 主函数****************************************/ void main(){init();clearlcd();while(1){display();}}。
94单片机示波器--12864

94单片机示波器–12864简介本文档介绍了使用94单片机和12864液晶屏制作示波器的方法。
示波器是一种用于查看电信号波形的仪器,它可以帮助我们理解电路的工作原理以及检测电路中的故障。
在本项目中,我们将使用94单片机和12864液晶屏来制作一个简易的示波器。
通过采集输入信号并在液晶屏上显示波形,我们可以实时观察信号的变化,并进行分析。
所需材料在开始之前,我们需要准备以下材料:•94单片机开发板•12864液晶屏•面包板和跳线•电阻、电容等元件(根据电路设计需要)硬件连接首先,我们需要将94单片机开发板和12864液晶屏进行连接。
具体的连接方式可以参考开发板和液晶屏的产品手册。
一般来说,我们需要将94单片机的引脚通过跳线连接到液晶屏的引脚上。
连接的方式可能包括并行连接、串行连接等方式,具体使用哪种连接方式可以根据液晶屏的型号进行选择。
连接完成后,我们可以将94单片机开发板上的程序下载到开发板上,并进行相应的设置。
软件设计接下来,我们需要进行软件设计。
本示波器的软件设计主要包括以下几个方面:输入信号采集我们需要使用94单片机的ADC模块来采集输入信号。
通过设置合适的引脚和参数,我们可以将输入信号通过ADC转换为数字信号,方便后续处理。
数据处理和显示采集到的数字信号需要进行处理和显示。
我们可以使用94单片机的计算能力和12864液晶屏的显示能力来进行数据处理和图形显示。
具体的数据处理方式可以根据需求进行选择。
通常可以使用FFT算法进行频谱分析,或者使用差值和滤波算法进行波形插值和滤波处理。
用户界面设计为了方便用户操作和观察,我们需要设计一个简洁明了的用户界面。
通过液晶屏上的菜单和按键,用户可以选择不同的参数和功能。
控制逻辑设计示波器的控制逻辑需要根据用户的操作来进行相应的响应和处理。
我们可以使用94单片机的中断和定时器功能来实现控制逻辑。
程序实现根据上述软件设计的要求,我们可以编写相应的程序来实现示波器的功能。
12864波形显示程序

12864显示波形实例#include <reg52.H>#include<intrins.h>#include<math.h>sbit RS=P0^0; //并行的指令/数据选择信号, H数据, L命令sbit RW=P0^1; //并行读写选择信号, H读, L写sbit E=P0^2; //并行使能端, H有效, L无效sbit PSB=P0^3; //并/串接口选择, H并,L串sbit led=P0^4;sbit jiakey=P1^0;sbit jiankey=P1^1;sbit ledkey=P1^2;#define LcdData P2unsigned char dati=0;unsigned char dat[100];unsigned char over=0;unsigned int temp=0;unsigned char mode=0;unsigned int delnop=0;//////////////////////////////////////unsigned char Lcd_CheckBusy(void){unsigned char Busy;LcdData=0xff;RS=0;RW=1;E=1;_nop_();Busy=LcdData&0x80;E=0;return Busy;}/*********************************向LCD写入字节数据**********************************/void Lcd_WriteData(unsigned char Data){while(Lcd_CheckBusy());RS=1;RW=0;E=0;_nop_();_nop_();LcdData=Data;E=1;_nop_();_nop_();E=0;}/***********************************从LCD中读出数据************************************/unsigned char Lcd_ReadData(void){unsigned char Temp;while(Lcd_CheckBusy());LcdData=0xff;RS=1;RW=1;E=1;_nop_();Temp=LcdData;E=0;return Temp;}/*************************************想LCD中写入指令代码**************************************/void Lcd_WriteCmd(unsigned char CmdCode){while(Lcd_CheckBusy());RS=0;RW=0;E=0;_nop_();_nop_();LcdData=CmdCode;_nop_();_nop_();E=1;_nop_();_nop_();E=0;}/**************************************为加速逻辑运算而设置的掩码表,这是以牺牲空间而换取时间的办法***************************************/code unsigned intLcdMaskTab[]={0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080,0x0100,0x0200, 0x0400,0x0800,0x1000,0x2000,0x4000,0x8000};/***************************************向LCD指定坐标写入一个象素,象素颜色有两种,0代表白(无显示),1代表黑(有显示)****************************************/void Lcd_PutPixel(unsigned char x,unsigned char y,unsigned char Color){unsigned char z,w;unsigned int Temp;if(x>=128||y>=64)return;Color=Color%2;w=15-x%16;//确定对这个字的第多少位进行操作x=x/16;//确定为一行上的第几字if(y<32) //如果为上页z=0x80;else //否则如果为下页z=0x88;y=y%32;//EA=0;Lcd_WriteCmd(0x36);Lcd_WriteCmd(y+0x80); //行地址Lcd_WriteCmd(x+z); //列地址Temp=Lcd_ReadData();//先空读一次Temp=(unsigned int)Lcd_ReadData()<<8;//再读出高8位Temp|=(unsigned int)Lcd_ReadData();//再读出低8位//EA=1;if(Color==1) //如果写入颜色为1Temp|=LcdMaskTab[w];//在此处查表实现加速else //如果写入颜色为0Temp&=~LcdMaskTab[w];//在此处查表实现加速//EA=0;Lcd_WriteCmd(y+0x80); //行地址Lcd_WriteCmd(x+z); //列地址Lcd_WriteData(Temp>>8);//先写入高8位,再写入低8位Lcd_WriteData(Temp&0x00ff);Lcd_WriteCmd(0x30);//EA=1;}/*****************************************清除Lcd全屏,如果清除模式Mode为0,则为全屏清除为颜色0(无任何显示)否则为全屏清除为颜色1(全屏填充显示)******************************************/void Lcd_Clear(unsigned char Mode){unsigned char x,y,ii;unsigned char Temp;if(Mode%2==0)Temp=0x00;elseTemp=0xff;Lcd_WriteCmd(0x36);//扩充指令绘图显示for(ii=0;ii<9;ii+=8)for(y=0;y<0x20;y++)for(x=0;x<8;x++){//EA=0;Lcd_WriteCmd(y+0x80); //行地址Lcd_WriteCmd(x+0x80+ii); //列地址Lcd_WriteData(Temp); //写数据D15-D8Lcd_WriteData(Temp); //写数据D7-D0//EA=1;}Lcd_WriteCmd(0x30);}/****************************************LCD初始化*****************************************/void Lcd_Reset(){PSB=1;Lcd_WriteCmd(0x30); //选择基本指令集Lcd_WriteCmd(0x0c); //开显示(无游标、不反白)Lcd_WriteCmd(0x01); //清除显示,并且设定地址指针为00HLcd_WriteCmd(0x06); //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位}//////////////////////////////////////void InitADC(){P1ASF=0X80;ADC_RES=0;ADC_CONTR=0xef;EADC=1;}void adc_isr() interrupt 5 using 1{ADC_CONTR=0xef;if(over==0){temp=delnop;while(temp){temp--;}dat[dati]=ADC_RES;dati++;if(dati>100){dati=0;over=1;}}}//////////////////////////////////////void disp_0(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+1,y+3,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+4,1);Lcd_PutPixel(x+3,y+1,1);Lcd_PutPixel(x+3,y+2,1);Lcd_PutPixel(x+3,y+3,1);}void disp_1(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+3,1);Lcd_PutPixel(x+2,y+4,1);Lcd_PutPixel(x+3,y+4,1);}void disp_2(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+3,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+4,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+1,1);Lcd_PutPixel(x+3,y+2,1);Lcd_PutPixel(x+3,y+4,1);}void disp_3(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+4,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+1,1);Lcd_PutPixel(x+3,y+2,1);Lcd_PutPixel(x+3,y+3,1);Lcd_PutPixel(x+3,y+4,1);}void disp_4(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+1,1);Lcd_PutPixel(x+3,y+2,1);Lcd_PutPixel(x+3,y+3,1);Lcd_PutPixel(x+3,y+4,1);}void disp_5(unsigned char x,unsigned char y) {Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+4,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+2,1);Lcd_PutPixel(x+3,y+3,1);Lcd_PutPixel(x+3,y+4,1);}disp_p(unsigned char x,unsigned char y){Lcd_PutPixel(x+0,y+0,1);Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+1,1);Lcd_PutPixel(x+4,y+0,1);}disp_k(unsigned char x,unsigned char y){Lcd_PutPixel(x+0,y+0,1);Lcd_PutPixel(x+0,y+1,1);Lcd_PutPixel(x+0,y+2,1);Lcd_PutPixel(x+0,y+3,1);Lcd_PutPixel(x+0,y+4,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+3,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+4,1);}void disp_hz(unsigned char x,unsigned char y) {Lcd_PutPixel(x+0,y+0,1);Lcd_PutPixel(x+0,y+1,1);Lcd_PutPixel(x+0,y+2,1);Lcd_PutPixel(x+0,y+3,1);Lcd_PutPixel(x+0,y+4,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+2,y+0,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+3,1);Lcd_PutPixel(x+4,y+1,1);Lcd_PutPixel(x+4,y+3,1);Lcd_PutPixel(x+4,y+4,1);Lcd_PutPixel(x+5,y+1,1);Lcd_PutPixel(x+5,y+2,1);Lcd_PutPixel(x+5,y+4,1);}void disp_ledon(unsigned char x,unsigned char y){Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+1,y+3,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+3,1);Lcd_PutPixel(x+3,y+0,1);Lcd_PutPixel(x+3,y+4,1);Lcd_PutPixel(x+4,y+2,1);}void disp_ledoff(unsigned char x,unsigned char y){Lcd_PutPixel(x+1,y+0,1);Lcd_PutPixel(x+1,y+1,1);Lcd_PutPixel(x+1,y+2,1);Lcd_PutPixel(x+1,y+3,1);Lcd_PutPixel(x+1,y+4,1);Lcd_PutPixel(x+2,y+1,1);Lcd_PutPixel(x+2,y+2,1);Lcd_PutPixel(x+2,y+3,1);}void clr(unsigned char starx,unsigned char stary,unsigned char endx,unsigned char endy) {char x=0;char y=0;for(x=starx;x<endx;x++){for(y=stary;y<endy;y++){Lcd_PutPixel(x,y,0);}}}void disp_bj(void){unsigned char x=0; unsigned char y=0;for(x=13;x<114;x++) {Lcd_PutPixel(x,52,1); }for(y=0;y<52;y++) {Lcd_PutPixel(13,y,1); }for(y=0;y<52;y++) {Lcd_PutPixel(114,y,1); }Lcd_PutPixel(13,51,0); Lcd_PutPixel(13,41,0); Lcd_PutPixel(13,31,0); Lcd_PutPixel(13,21,0); Lcd_PutPixel(13,11,0); Lcd_PutPixel(13,1,0); Lcd_PutPixel(114,51,0); Lcd_PutPixel(114,41,0); Lcd_PutPixel(114,31,0); Lcd_PutPixel(114,21,0); Lcd_PutPixel(114,11,0); Lcd_PutPixel(114,1,0);disp_0(5,50);disp_1(5,40);disp_2(5,30);disp_3(5,20);disp_4(5,10);disp_5(5,0);disp_0(117,50);disp_1(117,40);disp_2(117,30);disp_3(117,20);disp_4(117,10);disp_5(117,0);disp_2(13,58);disp_hz(18,58);disp_2(38,58);disp_0(43,58);disp_hz(48,58);disp_2(63,58);disp_0(68,58);disp_0(73,58);disp_hz(78,58);disp_2(88,58);disp_k(93,58);disp_hz(98,58);}line(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1) {int i,dx,dy,e,x,y;Lcd_PutPixel(x0,y0,1);Lcd_PutPixel(x1,y1,1);dx=x1-x0;dy=y1-y0;x=x0;y=y0;if(dx>0&&dy>0){if(dx>dy){e=-dx;for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);x++;e=e+2*dy;if(e>=0){y++;e=e-2*dx;}}}else{e=-dy;x=x0;y=y0;for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y++;e=e+2*dx;if(e>=0){x++;e=e-2*dy;}}}}if(dx<0&&dy<0){dx=x0-x1;dy=y0-y1;if(dx>dy){e=-dx;for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);x--;e=e+2*dy;if(e>=0){y--;e=e-2*dx;}}}else{e=-dy;for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y--;e=e+2*dx;if(e>=0){x--;e=e-2*dy;}}}}if(dx>0&&dy<0){dy=y0-y1;if(dx>dy){e=-dx;for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);x++;e=e+2*dy;if(e>=0){y--;e=e-2*dx;}}}else{e=-dy;for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y--;e=e+2*dx;if(e>=0){x++;e=e-2*dy;}}}}if(dx<0&&dy>0){dx=x0-x1;if(dx>dy){e=-dx;for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);x--;e=e+2*dy;if(e>=0){y++;e=e-2*dx;}}}else{e=-dy;for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y++;e=e+2*dx;if(e>=0){x--;e=e-2*dy;}}}}if(dx!=0&&dy==0){if(dx>0){for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);x++;}}else{dx=x0-x1;for(i=0;i<dx;i++){Lcd_PutPixel(x,y,1);}}}if(dx==0&&dy!=0){if(dy>0){for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y++;}}else{dy=y0-y1;for(i=0;i<dy;i++){Lcd_PutPixel(x,y,1);y--;}}}}disp_ware(){unsigned char x=0;unsigned char y=0;clr(14,0,15,52);for(x=1;x<100;x++){clr(x+14,0,x+15,52);line(x+13,51-(dat[x-1]/5),x+14,51-(dat[x]/5));}}//////////////////////////////////////main(){Lcd_Reset();Lcd_Clear(0);InitADC();disp_bj();EA=1;{if(over){disp_ware();if(ledkey==0){led=~led;}if(jiakey==0){if(mode<3){mode++;}}if(jiankey==0){if(mode>0){mode--;}}if(led){clr(5,58,10,63);disp_ledon(5,58);}else{clr(5,58,10,63);disp_ledoff(5,58);}switch(mode){case 0:delnop=1;disp_p(91,54);clr(66,54,71,57);clr(41,54,46,57);clr(16,54,21,57);break;case 1:delnop=40;disp_p(66,54);clr(91,54,96,57);clr(41,54,46,57);clr(16,54,21,57);break;case 2:delnop=440;disp_p(41,54);clr(91,54,96,57);clr(66,54,71,57);clr(16,54,21,57);break;case 3:delnop=4440;disp_p(16,54);clr(91,54,96,57);clr(41,54,46,57);clr(66,54,71,57);break;default:break;}over=0;}}}。
简易示波器

简易数字示波器
摘要:简要介绍点阵液晶12864和0809 DA转化器件的特点,介绍在AT89C51控制下如何读取和显示,给出了详细的C51代码。
关键词:OCM12864,0809
1 引言
DA转化模块0809是8位8通道逐次逼近式A/D转换器,CMOS工艺,可实现8路模拟信号的分时采集,片内有8路模拟选通开关,以及相应的通道地址锁存用译码电路,其转换时间为100us左右。
OCM12864 液晶显示模块是128×64 点阵型液晶显示模块,可显示各种字符及图形,可与CPU 直接接口,具有8 位标准数据总线、6 条控制线及电源线,采用KS0108 控制IC。
2 设计思路:
3 电路组成
硬件电路图如下:
采集0809转换的
数据
数据的简单处理
和显示模式选择
数据显示
其中外围接口电路除0809和12864外都在CPLD内部。
4 软件设计
软件设计采用KEIL编译器,用C语言编写,较汇编语言,C51可读性好,便于模块化。
LCD12864原理与应用(源程序+原理图+proteus仿真)

LCD12864原理与应用1、LCD12864简介:LCD12864分为两种,带字库的和不带字库的,不带字库的液晶显示汉字的时候可以选择自己喜欢的字体。
而带字库的液晶,只能显示GB2312字体,当然也可以显示其他的字体,不过是用图片的形式显示。
下面介绍不带字库的LCD12864,以Proteus中的AMPIRE128×64为例,如下图所示,它的液晶驱动器为KS0108。
引脚功能:引脚符号状态引脚名称功能,输入芯片片选端,都是低电平有效CS1=0开左屏幕,CS1=1关左屏幕CS2=0开右屏幕,CS2=1关右屏幕RS 输入数据/命令选择信号RS=1为数据操作,RS=0为写指令或读状态RW 输入读写选择信号R/W=1为读选通,R/W=0为写选通E 输入读写使能信号在E下降沿,数据被锁存(写)入液晶,在E高电平期间,数据被读出DB0—DB7 三态数据总线数据或指令的传送通道输入复位信号,低电平时复位复位时,关闭液晶显示,使显示起始行为0,可以跟单片机的复位引脚RST相连,也可以直接接VCC,使之不起作用V0 液晶显示器驱动电压-Vout -10V LCD驱动负电压与带字库的液晶不同,此块液晶含有两个液晶驱动器,每块驱动器都控制64*64个点,分为左右两个屏幕显示,总共为128*64个点(即有128×64个点)。
这就是为什么AMPIRE128*64有CS1和CS2两个片选端的原因。
此液晶有8页,一页有8行点阵点,左右各64列,共128列。
如下图所示:2、LCD12864中的几条重要指令(一)行(line)设置命令:由此可见显示的起始行地址为0XC0,共64行,有规律地改变起始行号,可以实现滚屏效果。
(二)页(page)设置指令:起始页地址为0XB8,因为液晶有64行点,分为8页,每页就有8行点。
(三)列(column)地址设置指令每块驱动器的列地址都是从0X40到0X7F,共64列,所以此液晶共有128列点。
基于LCD12864显示器的数字示波器设计

万方数据
E强衄
MCU
就可以在LcD上看到随时问变化的电压曲线了。主程 序为:
voidma 5nn Y=63一y
forU=1_j(7j++)d日m=OxO; da[Ol=O:(D1. da[7]-o,(8D:
u心gned charl:
Icdl2864
initO;
da[21/8];Ox01(<口1%B)= Ca[42JSlI-0x01<‘(42%B) 127})w加M端边框
该函数用来初始化LCD・设置显示模式-光标位 置等・在对LcD绘圈时-最多的命令就是设定当前光 标位置・通过光标位置来指定将要操作的LcD显示点。
万方数据
2011
05l电于一E
l
31
在对LCD编程操作以前.一定要执行此函数对LCD进 行初始化操作。 从驱动函数可见. 发对LCD写^数据是以字节
第二点:da[10/8】_1<(10%8即da[1]=0x04; 首先给出列显示子函数,在任意列显示Y值对应点。
da[y/8]l=0mlcc(件8)//镕w信}波*
第一点¨自为30.应该对应垂直哪个字节的哪个
比特呢’ 实际30点应该在第4宇节f 24到31}的Bi【6上. 章30/8取整为3.刚好是应该跳过的前3宇节fபைடு நூலகம்应 0到23).那么30%8{30除8取余数}呢.余数是6. 不是刚好是BIl位吗’所以可以这样将Y值映射到某字 节的某点上.如果y轴64点对应8字节变量Da[n].n
IccLdataⅢ(da[i]1l:
有了列显示函数.LCD任何坐标位置上描点绘图 函数为: ⅧdIcd_disp(unsigned c胁o y)//x¥平Ⅲ标.v§i±标
unsignedchat
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include <reg51.h>#include <intrins.h>#include <ADC0808.c>sbit DI=P2^2; // 数据\指令选择sbit RW=P2^1; // 读\写选择sbit E=P2^0; // 读\写使能sbit CS1=P2^4; // 片选1sbit CS2=P2^3; // 片选2sbit busy=P1^7;sbit jia=P3^7;sbit jian=P3^3;sbit jia1=P3^0;sbit jian1=P3^1;unsigned int i;unsigned char ye,lei,shu; unsigned char a[94];char code t[]={0x00,0x00,0x08,0x00,0x04,0x00,0x02,0x00,0x01,0x80,0x40,0x60,0x80,0x00,0x7F,0xFF, //小0x00,0x00,0x00,0x20,0x00,0x40,0x00,0x80,0x01,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x80,0x00,0x82,0x00,0x82,0x00,0x82,0x40,0x82,0x80,0x82,0x7F,0xE2, //子0x00,0xA2,0x00,0x92,0x00,0x8A,0x00,0x86,0x00,0x80,0x00,0xC0,0x00,0x80,0x00,0x00,0x00,0x40,0x00,0x60,0x3F,0x5E,0x01,0x48,0x01,0x48,0xFF,0xFF,0x11,0x48,0x21,0x4C, //制0x1F,0x68,0x00,0x40,0x07,0xF8,0x40,0x00,0x80,0x00,0x7F,0xFF,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x40,0x00,0x20,0xFF,0xF8,0x00,0x87,0x00,0x40,0x00,0x30,0x00,0x0F, //作0xFF,0xF8,0x08,0x88,0x08,0x88,0x08,0xC8,0x0C,0x88,0x08,0x0C,0x00,0x08,0x00,0x00,};void checkstate(){//bit dat;DI=0;RW=1;//P1=0x00;do{E=1;E=0;//仅当第7位为0时才可操作(判别busy信号)}while(busy==1);}void writecommand(unsigned char command) //写命令{checkstate();DI=0;RW=0;P1=command;E=1;E=0;}void writedate(unsigned char date) //写数据{checkstate();DI=1;RW=0;P1=date;E=1;E=0;}void pianxuan(unsigned int i){if(i==1)CS1=0,CS2=1;if(i==2)CS1=1,CS2=0;if(i==3)CS1=0,CS2=0;}void cleanscreen() //清屏{unsigned char page,i;for(page=0xb8;page<0xc0;page++){writecommand(page);writecommand(0x40);for(i=0;i<64;i++)writedate(0x00);}}void init(void) //开显示,起始行0行{writecommand(0xc0);writecommand(0x3f);}void delay_50us(uint t){uchar j;for(;t>0;t--)for(j=19;j>0;j--);}void shuju(){pianxuan(i); writecommand(ye); writecommand(lei); writedate(shu);}void qing(){uchar i;for(i=0xb8;i<=0xbf;i++) {ye=i;shu=0x00;shuju();}}void main(){uint r,j,g=0,q,dianya=1,k,p;uchar U,m,l;pianxuan(3);cleanscreen();init();pianxuan(2);l=0xb8;for(k=0;k<4;k++,l=l+0x02){ye=l;lei=0x70;for(r=0;r<16;r++){shu=t[2*r+1+32*k];shuju();lei++;}ye=l+0x01;lei=0x70;for(r=0;r<16;r++){shu=t[2*r+32*k];shuju();lei++;}}while(1){uchar d1,d2,d3,d4,d5;aaa:do{adc();}while((AD!=128)&&(AD!=129)&&(AD!=130));U=AD;adc();if(U>AD)goto aaa;while(jia==0){while(jia==0);g=g+1;}while(jian==0){while(jian==0);if(g!=0) g=g-1;}while(jia1==0){while(jia1==0);dianya=dianya+1;}while(jian1==0){while(jian1==0);if(dianya!=1) dianya=dianya-1;}for(j=0;j<94;j++) //AD采样{adc();a[j]=AD;delay_50us(g);}lei=0x40;for(r=0,j=0;r<94;r++,j++){if(j<64) i=1;if(j==64) lei=0x40;if(j>=64)i=2;qing(); //清掉之前的内容AD=a[j]*0.196/dianya; //计算在12864的电压值if(AD<=7) ye=0xbf,shu=(0x80>>AD); else if(AD<=15) ye=0xbe,shu=0x80>>(AD-8); else if(AD<=23) ye=0xbd,shu=0x80>>(AD-16); else if(AD<=31) ye=0xbc,shu=0x80>>(AD-24); else if(AD<=39) ye=0xbb,shu=0x80>>(AD-32); else if(AD<=47) ye=0xba,shu=0x80>>(AD-40); else if(AD<=55) ye=0xb9,shu=0x80>>(AD-48); else if(AD<=63) ye=0xb8,shu=0x80>>(AD-56);if(r==0){d1=shu;d2=ye;}if(r!=0){d3=shu;d4=ye;if(ye==d2){if(shu>d1){d5=shu;d5=d5>>1;while(d5!=d1){d5=d5>>1;shu=shu|(shu>>1);}}if(shu<d1){d5=shu;d5=d5<<1;while(d5!=d1){d5=d5<<1;shu=shu|(shu<<1);}}if(ye<d2){for(q=0;q<7;q++){shu=shu|(shu<<1);}shuju();ye++;while(ye<d2) {shu=0xff,shuju(),ye++;}if(ye==d2){shu=0x01;if(shu<d1){d5=shu;d5=d5<<1;while(d5!=d1){d5=d5<<1;shu=shu|(shu<<1);}}}}if(ye>d2){for(q=0;q<7;q++){shu=shu|(shu>>1);}shuju();ye--;while(ye>d2) {shu=0xff,shuju(),ye--;}if(ye==d2){shu=0x80;if(shu>d1){d5=shu;d5=d5>>1;while(d5!=d1){d5=d5>>1;shu=shu|(shu>>1);}}}}}if(r!=0)d1=d3;d2=d4;}shuju();if(lei!=0x7f) lei++;}}}ADC0808.c#define uchar unsigned char #define uchar unsigned char #define uint unsigned int sbit START=P3^4;sbit OE=P3^6;sbit EOC=P3^5;uint AD;void adc(){START=1;START=0;while(EOC==0){OE=1;}AD=P0;OE=0;}。