整理硬盘资料,看见的一段代码。贴上来备份
//LCD驱动芯片1335控制器C51源程 // /*include files */ #include "w78e58.h" //#include "zimo.h" //这是自己做的一个汉字库, #include "stdio.h" #include "stdlib.h" #include "math.h" #include "absacc.h" #include "intrins.h" #include "string.h" /*define function*/ #define HIBYTE(V1) ((BYTE)((V1)>>8)) #define LOBYTE(V1) ((BYTE)((V1)&0Xff)) #define MAKEWORD(V1,V2) ((((WORD)(V1))<<8)+(WORD)(V2)) /*define SED1335 port address*/ #define SEDWRCOM XBYTE[0X1100] //写指令代码 #define SEDRDCSR XBYTE[0X1100] //读光标指针 #define SEDWRDAT XBYTE[0X1000] // 写指令参数和显示数据 /*define LCD code */ #define SYSSET 0x40 #define SCROLL 0x44 #define SLEEP 0x53 #define DISPON 0x59 #define DISPOFF 0x58 #define OVLAY 0x5b #define HDOTSCR 0x5a #define CSRFORM 0x5d #define CGRAMADR 0x5c #define CSRRGT 0x4c #define CSRLFT 0x4d #define CSRUP 0x4e #define CSRDOWN 0x4f #define CSRW 0x46 #define CSRR 0x47 #define MWRITE 0x42 #define MREAD 0x43 #define AP 30 /*define screen flag*/ BOOL FG_FIRST = 0; BOOL FG_MAIN = 0; BOOL FG_PWD = 0; BOOL FG_PRG = 0; BOOL FG_PRG1 = 0; BOOL FG_PRG2 = 0; BOOL FG_PRG3 = 0; BOOL FG_CYCLE = 0; BOOL FG_LIMIT = 0; BOOL FG_TIME = 0; BOOL FG_INPUT = 0; BOOL FG_OUTPUT = 0; BOOL FG_PID = 0; BOOL FG_SELFCTL = 0; BOOL FG_VARY = 0; /*LCD initial parameters*/ BYTE code SYSTAB[8] = {0x30, 0x87, 0x0f, 0x1d, 0x4c, 0xa0, 0x1e, 0x00}; BYTE code SCRTAB[10] = {0x00, 0x00, 0xa0, 0x00, 0x40, 0xa0, 0x00, 0x80, 0x00, 0x00}; /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*START OF THE PROGRAME*/ /*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/ /*SBUROUTINES OF LCD DRIVE*/ void WLCDCOM (BYTE com ) //写LCD控制命令 { SEDWRCOM = com; _nop_(); } void WLCDDATA (BYTE ref ) //写LCD控制参数和显示字符数据 { SEDWRDAT = ref; _nop_(); } void CLRVRAM (void) //显示存储器清零 { WORD i, j; WLCDCOM (CSRRGT); WLCDCOM (CSRW); WLCDDATA (0x00); WLCDDATA (0x00); WLCDCOM (MWRITE); for (i = 0; i <= 0xff; i++) { for (j = 0; j <= 0xff; j++) { WLCDDATA (0x00); } } } void CLRSCREEN (void) //清除显示屏幕 { WORD i, j; WLCDCOM (CSRRGT); WLCDCOM (CSRW); WLCDDATA (0X00); WLCDDATA (0X00); WLCDCOM (MWRITE); for (i = 0; i < 0xa0; i++) { for (j = 0; j { WLCDDATA (0x00); } } } void WNUMBER (BYTE x, BYTE y, BYTE (*p) [16], BYTE num ) //功能:显示0~9等10个数字,num为要显示的数字的值(16×8) //x坐标寄存器(字节),y坐标寄存器(点行) { WORD temp; BYTE hi, lo; BYTE a, b, c; temp = y * AP; hi = HIBYTE (temp); lo = LOBYTE (temp); lo = x + lo; if (CY == 1) {hi += 0x01; CY = 0;} WLCDCOM (CSRDOWN); WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (c = 0; c < 16; c++) { WLCDDATA (* (* (p + num) + c) ); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} } void WBLOCK (BYTE x, BYTE y, BYTE (*p) [16], BYTE num ) //功能:显示16×8点字符,num为要显示的字符块长度 //x坐标为低8位寄存器(字节),y坐标寄存器(点行) { WORD temp; BYTE hi, lo; BYTE a, b, c; temp = y * AP; hi = HIBYTE (temp); lo = LOBYTE (temp); lo = x + lo; if (CY == 1) {hi += 0x01; CY = 0;} WLCDCOM (CSRDOWN); WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (c = 0; c < 16; c++) { WLCDDATA (* (* (p + num - 1) + c) ); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} } void FILLBLOCK (BYTE x, BYTE y, BYTE len ) //功能:显示16×16字符,len为要显示的字符块的长度 //x坐标为低8位寄存器(字节),y坐标寄存器(点行) { WORD temp; BYTE hi, lo; BYTE a, b; temp = y * AP; hi = HIBYTE (temp); lo = LOBYTE (temp); lo = x + lo; if (CY == 1) {hi += 0x01; CY = 0;} for (b = 0; b { WLCDCOM (CSRDOWN); WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (a = 0; a < 16; a++) { WLCDDATA (0xff); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} } } void CLRBLOCK (BYTE x, BYTE y, BYTE len ) //清除16×8字符快,len为要清除的字符块的长度 //x坐标寄存器(字节),y坐标寄存器(点行) { WORD temp; BYTE hi, lo; BYTE a, b; temp = y * AP; hi = HIBYTE (temp); lo = LOBYTE (temp); lo = x + lo; if (CY == 1) {hi += 0x01; CY = 0;} for (b = 0; b { WLCDCOM (CSRDOWN); WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (a = 0; a < 16; a++) { WLCDDATA (0x00); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} } } void WLCDCHR (BYTE x, BYTE y, BYTE (*p) [32], BYTE num ) //功能:显示16×32字符,num为要显示字符数组的第一维的值 //x坐标寄存器(字节),y坐标寄存器(点行) { WORD temp; BYTE hi, lo; BYTE a, b, c; temp = y * AP; hi = HIBYTE (temp); lo = LOBYTE (temp); lo = x + lo; if (CY == 1) {hi += 0x01; CY = 0;} WLCDCOM (CSRDOWN); for (a = 0; a { WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (c = 0; c < 0x20; c += 2) { WLCDDATA (* (* (p + a) + c) ); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} WLCDCOM (CSRW); WLCDDATA (lo); WLCDDATA (hi); WLCDCOM (MWRITE); for (c = 1; c < 0x20; c += 2) { WLCDDATA (* (* (p + a) + c) ); } lo = lo + 0x01; if (CY == 1) {hi += 0x01; CY = 0;} } } void INITLCD (void) //初始化LCD显示参数以及界面 { WORD a, b, c; WLCDCOM (SYSSET); for (b = 0; b < 8; b++) { WLCDDATA (SYSTAB[b]); } WLCDCOM (SCROLL); for (b = 0; b < 10; b++) { WLCDDATA (SCRTAB[b]); } WLCDCOM (HDOTSCR); WLCDDATA (0X00); WLCDCOM (OVLAY); WLCDDATA (0X1c); WLCDCOM (DISPOFF); WLCDDATA (0X56); CLRVRAM(); WLCDCOM (CSRFORM); WLCDDATA (0X07); WLCDDATA (0X8f); WLCDCOM (DISPON); WLCDDATA (0X16); } /*DELAY SUBROUTINES*/ void DELAYX1MS (WORD count) //延时count毫秒 { BYTE i, j; for (i = 0; i for (j = 0; j < 120; j++) ; } void CLRFG (void) //清除标志位 { FG_FIRST = 0; FG_MAIN = 0; FG_PRG = 0; FG_PRG1 = 0; FG_PRG2 = 0; FG_PRG3 = 0; FG_CYCLE = 0; FG_LIMIT = 0; FG_TIME = 0; FG_INPUT = 0; FG_OUTPUT = 0; FG_PID = 0; FG_SELFCTL = 0; FG_VARY = 0; } /* void FLASH() { FILLBLOCK(7,0,2); DELAYX1MS(15); CLRBLOCK(7,0,2); DELAYX1MS(8); WNUMBER(7,0,C_NUM,1); WNUMBER(8,0,C_NUM,2); DELAYX1MS(15); } */ void DISPPWD (void) { // CLRFG(); CLRSCREEN(); WLCDCHR (2, 64, C_PASSWORD, 5); WBLOCK (12, 64, C_COLON, 1); FG_PWD = 1; } void DISPPRG (void) //编程的第一界面 { CLRFG(); CLRSCREEN(); WLCDCHR (0, 0, C_ROUT, 2); WBLOCK (4, 0, C_COLON, 1); WLCDCHR (1, 144, C_PROG, 2); WLCDCHR (9, 144, C_CANCEL, 2); WLCDCHR (17, 144, C_ENTER, 2); WLCDCHR (25, 144, C_MAIN, 2); FG_PRG = 1; } void DISPCYCLE (void) { CLRFG(); CLRSCREEN(); WLCDCHR (0, 16, C_CYCLE, 2); WLCDCHR (4, 16, C_STSEG, 2); WLCDCHR (10, 16, C_CYCLE, 2); WLCDCHR (14, 16, C_ENDSEG, 2); WLCDCHR (20, 16, C_CYCLE, 2); WLCDCHR (24, 16, C_TIMES, 2); WLCDCHR (9, 144, C_CANCEL, 2); WLCDCHR (17, 144, C_ENTER, 2); WLCDCHR (25, 144, C_MAIN, 2); FG_CYCLE = 1; } main() { BYTE i; INITLCD(); CLRSCREEN(); WNUMBER (6, 32, C_LETTER, 3); }
您还没有登录,请您登录后再发表评论
*LCD驱动芯片1335控制器C51源程序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//*includefiles*/#include"w78e58.h"//#include"zimo.h"//这是自己做的一个汉字库,可以在本站下载一个字模程序,添加汉字。世纪开发网:21...
基于C51的单片机控制LCD驱动器设计 李
c51 驱动ST7567芯片LCD128*64
122x32液晶1520控制器C51驱动程序
灯箱控制器C51程序。用到了DS1302、LCD1602、实现了独立式键盘和液晶菜单操作。
基于C51单片机控制 3.5寸TFT_LCD显示屏,基本显示函数都包含,可用
点焊机控制器的C51源代码加sch电路图,点焊机控制器的C51源代码加sch电路图。
LCD12864显示屏C51单片机驱动源码KEIL工程文件,可做为你的学习设计参考。 void main() { LCD12864_Reset(); //初始化液晶 LCD12864_HAIZI_SET(); //设置为普通模式 Delay_ms(100); LCD12864_...
用C语言实现C51单片机LCD屏 菜单操作
直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码
适用于51单片机的ws2811全彩灯带的驱动程序
基于STM32F103(C51)芯片的液晶显示屏(LCD1602)资料与源码。亲测在战舰版、精英版、Mini版的正点原子上使用,使LCD1602达到可以和LCD屏一样,可以在任意有效坐标显示字。 文件列表:LCD(LCD1602A)原理图及说明书;...
以MCS-51系列单片机为核心,设计了一种多花样(至少4种以上)的彩灯控制器,只需要利用两个按键就可以切换,操作简单,易于使用。本系统核心硬件为AT89C51单片机,用于控制LED彩灯的各种变换,以高低电平控制LED灯的...
C51程序 LCD128x128 KD3957 C51 并口 硬件调试通过 带电路图
在51系列单片机上完全使用c51编写,保证初学者看懂!!!!!!!!!!
keilc51单片机驱动液晶屏LCD0802显示
本文给出基于C51的LCD12864的程序,感兴趣的朋友可以看看。
C51 LCD1602驱动程序源代码 编译环境:Keil μVision4 测试单片机:STC89C51 晶振频率:12MHz
LCD12864(KS0108) C51程序,经过测试不存在任何问题。采用AT89S52单片机编写,非常好用,对于没有字库的LCD12864都可以参考写法
c51常用芯片驱动,例如,1602,1302,
相关推荐
*LCD驱动芯片1335控制器C51源程序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//*includefiles*/#include"w78e58.h"//#include"zimo.h"//这是自己做的一个汉字库,可以在本站下载一个字模程序,添加汉字。世纪开发网:21...
基于C51的单片机控制LCD驱动器设计 李
c51 驱动ST7567芯片LCD128*64
122x32液晶1520控制器C51驱动程序
灯箱控制器C51程序。用到了DS1302、LCD1602、实现了独立式键盘和液晶菜单操作。
基于C51单片机控制 3.5寸TFT_LCD显示屏,基本显示函数都包含,可用
点焊机控制器的C51源代码加sch电路图,点焊机控制器的C51源代码加sch电路图。
LCD12864显示屏C51单片机驱动源码KEIL工程文件,可做为你的学习设计参考。 void main() { LCD12864_Reset(); //初始化液晶 LCD12864_HAIZI_SET(); //设置为普通模式 Delay_ms(100); LCD12864_...
用C语言实现C51单片机LCD屏 菜单操作
直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码直流电机闭环控制Keil c51源代码
适用于51单片机的ws2811全彩灯带的驱动程序
基于STM32F103(C51)芯片的液晶显示屏(LCD1602)资料与源码。亲测在战舰版、精英版、Mini版的正点原子上使用,使LCD1602达到可以和LCD屏一样,可以在任意有效坐标显示字。 文件列表:LCD(LCD1602A)原理图及说明书;...
以MCS-51系列单片机为核心,设计了一种多花样(至少4种以上)的彩灯控制器,只需要利用两个按键就可以切换,操作简单,易于使用。本系统核心硬件为AT89C51单片机,用于控制LED彩灯的各种变换,以高低电平控制LED灯的...
C51程序 LCD128x128 KD3957 C51 并口 硬件调试通过 带电路图
在51系列单片机上完全使用c51编写,保证初学者看懂!!!!!!!!!!
keilc51单片机驱动液晶屏LCD0802显示
本文给出基于C51的LCD12864的程序,感兴趣的朋友可以看看。
C51 LCD1602驱动程序源代码 编译环境:Keil μVision4 测试单片机:STC89C51 晶振频率:12MHz
LCD12864(KS0108) C51程序,经过测试不存在任何问题。采用AT89S52单片机编写,非常好用,对于没有字库的LCD12864都可以参考写法
c51常用芯片驱动,例如,1602,1302,