整理硬盘资料,看见的一段代码。贴上来备份
//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驱动器设计 #### 一、引言 随着科技的发展,特别是液晶显示技术的进步,LCD(液晶显示器)已经成为了家电、显示仪器仪表以及其他电子产品的核心组成部分之一。它凭借低工作电压、微功耗...
在驱动SED1335 LCD时,C51程序通常需要初始化LCD控制器,设置数据总线、时钟线、读写信号等硬件接口,并通过编程控制SED1335的各种寄存器来设定显示参数。 1. 初始化过程: - 设置波特率:根据LCD模块的时序要求,...
"C51常用芯片驱动"指的是针对C51微控制器开发过程中,用于控制常见硬件接口的软件模块。这些驱动程序能够帮助C51微控制器与外部设备进行有效通信,实现特定功能。 1. **1602 LCD驱动**: 1602液晶显示器(LCD)是...
标题中的“122x32液晶1520控制器C51驱动程序”指的是一个专为122x32像素分辨率的液晶显示器设计的驱动程序,该驱动是基于Microchip公司的8位单片机C51进行编写的。在嵌入式系统中,这种驱动程序对于显示文本和图形...
标题 "c51_sed1335.rar_320*240_320x240 lcd_SED1335" 暗示了这是一个关于使用C51编程语言来驱动320x240分辨率LCD显示器的资源包,特别是涉及到SED1335控制器的资料。描述中的“需要控制320*240的lcd的朋友可以看看...
C51是基于8051内核的微控制器,拥有丰富的I/O端口、定时器/计数器、串行通信接口等资源,能够满足驱动LCD显示屏的需求。SPI(Serial Peripheral Interface)是一种同步串行通信协议,它允许单片机与多个外围设备进行...
总之,LCD1602和LCD5110是两种常见的液晶显示模块,C51驱动程序是连接这些硬件和微控制器的关键。通过理解LCD的指令集,编写和调试C51代码,以及利用Proteus进行仿真,开发者可以创建出满足需求的显示系统。提供的...
在本文中,我们将深入探讨如何使用C51编程语言来驱动ST7567 LCD显示芯片,以便在U盾上实现128x64像素的图形或文本显示。ST7567是一款低功耗、小尺寸的点阵液晶显示模块,常用于嵌入式系统,如开发板和便携设备。U盾...
C51是专门用于8051系列单片机的编程语言,因此这个项目主要涉及的是8051单片机和LCD0802的硬件接口设计以及在Keil C51环境下编写控制代码。 LCD0802是一款常见的8x2字符型液晶显示器,它能够显示16个字符,每个字符...
灯箱控制器C51程序。用到了DS1302、LCD1602、实现了独立式键盘和液晶菜单操作。
在本主题中,我们聚焦于基于C51微控制器的门禁控制器设计。C51是8051系列微控制器的一种优化编译器,适用于低功耗、高性能的嵌入式应用。 一、C51编程基础 C51是为8051系列单片机设计的面向硬件的编程语言,它扩展...
电路图(SCH)则是硬件设计的蓝图,展示了各个电子元件如电阻、电容、晶体管、集成芯片等如何连接,以及它们与C51微控制器的交互方式。通过分析SCH,我们可以看到电流控制回路、电源管理、信号检测和用户界面是如何...
2.0英寸&2.4英寸 TFTLCD触摸屏 基于C51单片机GUI设计LCD屏显示应用实验软件源码16个合集: 10,TFTLCD触摸屏实验--BMP图片显示 11,TFTLCD触摸屏实验--Graph图形显示 12,TFTLCD触摸屏实验--温度监控系统 13,TFTLCD...
在硬件设计中,我们需要将LCD2004的控制线(RS、R/W、E)和数据线(D0-D7)正确连接到微控制器的GPIO引脚,并通过适当的C51程序来驱动它,以实现文本的显示。 硬件调试是项目开发中的关键环节,它涉及到电路板的...
标题中的“LCD.C51.rar_c51 mp3”表明这是一个与C51编程语言相关的项目,特别是针对LCD(液晶显示屏)的控制,并且涉及到MP3音频解码。C51是Atmel公司为8051微控制器系列设计的一种高级编程语言,它扩展了标准的...
标题中的“八针LCD彩色屏 ST7735S驱动芯片 SPI接口”涉及的是嵌入式系统中的显示技术,特别是微控制器与LCD显示屏的交互。这里我们主要讨论以下几个知识点: 1. **八针LCD彩色屏**:这通常指的是使用八条引脚连接的...
"自动升降旗控制程序c51" 该自动升降旗控制程序使用c51编程语言在51系列单片机上实现,旨在帮助初学者快速理解和掌握单片机编程技术。 知识点1:单片机编程语言c51 c51是一种专门为单片机编程设计的编程语言,可以...
- 在keil C51中,我们需要定义并初始化I/O端口来驱动LCD1602的控制线和数据线。 - 初始化过程通常包括设置端口方向、清零显示、设置功能寄存器等步骤。 4. **lcd.c和lcd.h文件** - `lcd.c` 文件包含实际的LCD...
这篇文章是关于如何在51单片机上使用C51语言编写程序来驱动LCD12864显示器的教程。LCD12864是一种常见的点阵式液晶显示器,具有128列和64行的显示能力,常用于嵌入式系统中提供文本或简单的图形显示。 首先,代码中...
相关推荐
*LCD驱动芯片1335控制器C51源程序~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*//*includefiles*/#include"w78e58.h"//#include"zimo.h"//这是自己做的一个汉字库,可以在本站下载一个字模程序,添加汉字。世纪开发网:21...
### 基于C51的单片机控制LCD驱动器设计 #### 一、引言 随着科技的发展,特别是液晶显示技术的进步,LCD(液晶显示器)已经成为了家电、显示仪器仪表以及其他电子产品的核心组成部分之一。它凭借低工作电压、微功耗...
在驱动SED1335 LCD时,C51程序通常需要初始化LCD控制器,设置数据总线、时钟线、读写信号等硬件接口,并通过编程控制SED1335的各种寄存器来设定显示参数。 1. 初始化过程: - 设置波特率:根据LCD模块的时序要求,...
"C51常用芯片驱动"指的是针对C51微控制器开发过程中,用于控制常见硬件接口的软件模块。这些驱动程序能够帮助C51微控制器与外部设备进行有效通信,实现特定功能。 1. **1602 LCD驱动**: 1602液晶显示器(LCD)是...
标题中的“122x32液晶1520控制器C51驱动程序”指的是一个专为122x32像素分辨率的液晶显示器设计的驱动程序,该驱动是基于Microchip公司的8位单片机C51进行编写的。在嵌入式系统中,这种驱动程序对于显示文本和图形...
标题 "c51_sed1335.rar_320*240_320x240 lcd_SED1335" 暗示了这是一个关于使用C51编程语言来驱动320x240分辨率LCD显示器的资源包,特别是涉及到SED1335控制器的资料。描述中的“需要控制320*240的lcd的朋友可以看看...
C51是基于8051内核的微控制器,拥有丰富的I/O端口、定时器/计数器、串行通信接口等资源,能够满足驱动LCD显示屏的需求。SPI(Serial Peripheral Interface)是一种同步串行通信协议,它允许单片机与多个外围设备进行...
总之,LCD1602和LCD5110是两种常见的液晶显示模块,C51驱动程序是连接这些硬件和微控制器的关键。通过理解LCD的指令集,编写和调试C51代码,以及利用Proteus进行仿真,开发者可以创建出满足需求的显示系统。提供的...
在本文中,我们将深入探讨如何使用C51编程语言来驱动ST7567 LCD显示芯片,以便在U盾上实现128x64像素的图形或文本显示。ST7567是一款低功耗、小尺寸的点阵液晶显示模块,常用于嵌入式系统,如开发板和便携设备。U盾...
C51是专门用于8051系列单片机的编程语言,因此这个项目主要涉及的是8051单片机和LCD0802的硬件接口设计以及在Keil C51环境下编写控制代码。 LCD0802是一款常见的8x2字符型液晶显示器,它能够显示16个字符,每个字符...
灯箱控制器C51程序。用到了DS1302、LCD1602、实现了独立式键盘和液晶菜单操作。
在本主题中,我们聚焦于基于C51微控制器的门禁控制器设计。C51是8051系列微控制器的一种优化编译器,适用于低功耗、高性能的嵌入式应用。 一、C51编程基础 C51是为8051系列单片机设计的面向硬件的编程语言,它扩展...
电路图(SCH)则是硬件设计的蓝图,展示了各个电子元件如电阻、电容、晶体管、集成芯片等如何连接,以及它们与C51微控制器的交互方式。通过分析SCH,我们可以看到电流控制回路、电源管理、信号检测和用户界面是如何...
2.0英寸&2.4英寸 TFTLCD触摸屏 基于C51单片机GUI设计LCD屏显示应用实验软件源码16个合集: 10,TFTLCD触摸屏实验--BMP图片显示 11,TFTLCD触摸屏实验--Graph图形显示 12,TFTLCD触摸屏实验--温度监控系统 13,TFTLCD...
在硬件设计中,我们需要将LCD2004的控制线(RS、R/W、E)和数据线(D0-D7)正确连接到微控制器的GPIO引脚,并通过适当的C51程序来驱动它,以实现文本的显示。 硬件调试是项目开发中的关键环节,它涉及到电路板的...
标题中的“LCD.C51.rar_c51 mp3”表明这是一个与C51编程语言相关的项目,特别是针对LCD(液晶显示屏)的控制,并且涉及到MP3音频解码。C51是Atmel公司为8051微控制器系列设计的一种高级编程语言,它扩展了标准的...
标题中的“八针LCD彩色屏 ST7735S驱动芯片 SPI接口”涉及的是嵌入式系统中的显示技术,特别是微控制器与LCD显示屏的交互。这里我们主要讨论以下几个知识点: 1. **八针LCD彩色屏**:这通常指的是使用八条引脚连接的...
"自动升降旗控制程序c51" 该自动升降旗控制程序使用c51编程语言在51系列单片机上实现,旨在帮助初学者快速理解和掌握单片机编程技术。 知识点1:单片机编程语言c51 c51是一种专门为单片机编程设计的编程语言,可以...
- 在keil C51中,我们需要定义并初始化I/O端口来驱动LCD1602的控制线和数据线。 - 初始化过程通常包括设置端口方向、清零显示、设置功能寄存器等步骤。 4. **lcd.c和lcd.h文件** - `lcd.c` 文件包含实际的LCD...
这篇文章是关于如何在51单片机上使用C51语言编写程序来驱动LCD12864显示器的教程。LCD12864是一种常见的点阵式液晶显示器,具有128列和64行的显示能力,常用于嵌入式系统中提供文本或简单的图形显示。 首先,代码中...