附件为:LCD12864显示汉字和数字的程序与电路 /* 自定义延时子函数 */ void delayms(uchar z) { int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /* 判断LCD忙信号状态 */ void buys() { int dat; RW=1; RS=0; do { P0=0x00; E=1; dat=P0; E=0; dat=0x80 & dat; } while(!(dat==0x00)); } /* LCD写指令函数 */ void w_com(uchar com) { //buys(); RW=0; RS=0; E=1; P0=com; E=0; } /* LCD写数据函数 */ void w_date(uchar date) { //buys(); RW=0; RS=1; E=1; P0=date; E=0; } /* LCD选屏函数 */ void select_screen(uchar screen) { switch(screen) { case 0: //选择全屏 CS1=0; CS2=0; break; case 1: //选择左屏 CS1=0; CS2=1; break; case 2: //选择右屏 CS1=1; CS2=0; break; /* case 3: //选择右屏 CS1=1; CS2=1; break; */ } } /* LCDx向上滚屏显示 */ void lcd_rol() { int x; for(x=0;x<64;x++) { select_screen(0); w_com(0xc0+x); delayms(500); } } /* LCD清屏函数:清屏从第一页的第一列开始,总共8页,64列 */ void clear_screen(screen) { int x,y; select_screen(screen); //screen:0-选择全屏,1-选择左半屏,2-选择右半屏 for(x=0xb8;x<0xc0;x++) //从0xb8-0xbf,共8页 { w_com(x); w_com(0x40); //列的初始地址是0x40 for(y=0;y<64;y++) { w_date(0x00); } } } /* LCD显示汉字字库函数 */ void lcd_display_hanzi(uchar screen,uchar page,uchar col,uint mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-3,mun:显示第几个汉字的参数 int a; mun=mun*32; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*16)); for ( a=0;a<16;a++) { w_date(hanzi[mun++]); } } /* LCD显示字符字库函数 */ void lcd_display_zifuk(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(zifu[mun++]); } } /* LCD显示数字字库函数 */ void lcd_display_shuzi(uchar screen,uchar page,uchar col,uchar mun) { //screen:选择屏幕参数,page:选择页参数0-3,col:选择列参数0-7,mun:显示第几个汉字的参数 int a; mun=mun*16; select_screen(screen); w_com(0xb8+(page*2)); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } w_com(0xb8+(page*2)+1); w_com(0x40+(col*8)); for ( a=0;a<8;a++) { w_date(shuzi[mun++]); } } /* LCD初始化函数 */ void lcd_init() { w_com(0x3f); //LCD开显示 w_com(0xc0); //LCD行初始地址,共64行 w_com(0xb8); //LCD页初始地址,共8页 w_com(0x40); //LCD列初始地址,共64列 } /* LCD显示主函数 */ void main() { //第一行 int x; lcd_init(); //LCD初始化 clear_screen(0); //LCD清屏幕 lcd_display_shuzi(1,0,4,5); //LCD显示数字 lcd_display_shuzi(1,0,5,1); //LCD显示数字 lcd_display_hanzi(1,0,3,0); //LCD显示汉字 lcd_display_hanzi(2,0,0,1); //LCD显示汉字 //LCD字符汉字 lcd_display_hanzi(2,0,1,2); //LCD显示汉字 //第二行 lcd_display_zifuk(1,1,2,0); //LCD显示字符 lcd_display_zifuk(1,1,3,0); //LCD显示字符 lcd_display_zifuk(1,1,4,0); //LCD显示字符 lcd_display_zifuk(1,1,5,4); //LCD显示字符 lcd_display_shuzi(1,1,6,8); //LCD显示字符 lcd_display_shuzi(1,1,7,9); //LCD显示字符 lcd_display_shuzi(2,1,0,5); //LCD显示字符 lcd_display_shuzi(2,1,1,1); //LCD显示字符 lcd_display_zifuk(2,1,2,4); lcd_display_zifuk(2,1,3,1); lcd_display_zifuk(2,1,4,2); lcd_display_zifuk(2,1,5,3); //第三行 for(x=0;x<4;x++) { lcd_display_hanzi(1,2,x,3+x); //LCD显示汉字 } for(x=0;x<4;x++) { lcd_display_hanzi(2,2,x,7+x); //LCD显示汉字 } //第四行 for(x=0;x<4;x++) { lcd_display_zifuk(1,3,x,5+x); //LCD显示汉字 } lcd_display_shuzi(1,3,4,7); lcd_display_shuzi(1,3,5,5); lcd_display_shuzi(1,3,6,5); lcd_display_zifuk(1,3,7,9); lcd_display_shuzi(2,3,0,8); lcd_display_shuzi(2,3,1,9); lcd_display_shuzi(2,3,2,9); lcd_display_shuzi(2,3,3,5); lcd_display_shuzi(2,3,4,6); lcd_display_shuzi(2,3,5,8); lcd_display_shuzi(2,3,6,9); lcd_display_shuzi(2,3,7,2); while(1); /* while(1) { // LCD向上滚屏显示 lcd_rol(); } */ }
上传时间: 2013-11-08
上传用户:aeiouetla
在前面我们已经学习了1602 和12864 液晶的基本知识,并且通过简单的实例实现了 在1602和12864液晶上显示字符和汉字。今天我们再来学习另外一种比较常用的液晶12232. 本实例中我们选用深圳锦昌电子的DM12232B型液晶。 本实例分为三个功能模块,分别描述如下: ● 单片机系统:利用ATmega16 单片机与DM12232B型液晶构成液晶显示电路。 ● 外围电路:DM12232B型液晶与单片机的连接电路。 ● 软件程序:编写软件,控制液晶显示字符。 通过本实例的学习,掌握以下内容: ● 掌握 DM12232B型液晶的基本原理和程序设计方法。
标签: CEPARK-AVR 12232 LCD 单片机教程
上传时间: 2013-10-19
上传用户:nanshan
1.线段的显示.线段的显示.线段的显示.线段的显示点阵图形式液晶由M行×N列个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1个字节的8个位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元和显示RAM区1024个字节相对应,每一字节的内容和屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H~00FH的16个字节的内容决定,当(000)=FFH时,则屏的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏的右下角显示一短亮线;当(000H)=FFH,(001H)=00H,(002H)=FFH,(003H)=00H,…(00EH)=FFH,(00FH)=00H时,则在屏的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本意思。
上传时间: 2013-11-06
上传用户:acwme
89S52 单片机 + 74HC595 + 组成的8X8 LED 点阵驱动显示程序,Keil C环境编写,带显示字符压缩/解压源/显示/代码。
上传时间: 2013-12-26
上传用户:tianyi223
C52单片机控制1602液晶显示程序,可在第一行显示字符"TX-1B MCU",在第二行显示字符"WWW.TXMCU.COM"。
上传时间: 2013-12-08
上传用户:kbnswdifs
一个各种液晶的C程序库,并且比较标准可读的,供大家参考 12232液晶显示程序在sed1520.rar 122x32液晶显示程序,显示图形及汉字.rar 122x32液晶显示程序显示图形及汉字.rar 12864液晶驱动.rar 128x64液晶显示例程.rar 1601液晶程序.html 1601液晶程序.mht 1602LCM液晶显示屏的驱动函数和实例.rar 1602液晶的程序移植到了ATMEGA8上.txt 1602液晶显示的实验例子.txt 16x2lcm液晶_c51.rar 16x2字符液晶屏驱动演示程序总线方式.htm 51控制1602液晶的原理图和程序.rar AT89C51与字符型液晶模块16x2联接的C语言程序.rar HD61202控制器的128X64的液晶驱动包12864.rar KS0070(44780) 16x2 字符液晶屏驱动演示程序.htm LCD320.rar lcd44780.rar LCM046笔段式液晶.zip LYM1602C4.rar sed1520液晶控制器.pdf 单片机是怎样在液晶上显示字符.pdf 点阵图形液晶驱动程序,采用模拟时序接法和编程.c 液晶驱动程序LCD20040411.rar 液晶显示1602与遥控程序演示.rar 一个C语言实现菜单的例子.rar
上传时间: 2013-12-15
上传用户:hewenzhi
12864液晶屏显示程序,可以用于显示字符,数字。
上传时间: 2013-12-17
上传用户:520
液晶显示屏LCD作为一种功耗低、体积小、无辐射的显示器件,近几年被广泛应用于各式各样的嵌入式电子产品中,LCD可分为段位式、字符式和点阵式三种,其中,段位式LCD和字符式LCD只能用于字符和数字的简单显示,不能满足图形曲线和汉字显示的要求,而点阵式LCD不仅可以显示字符、数字,还可以显示各种图形、曲线及汉字,并且可以实现屏幕上下左右滚动动画功能,分区开窗口、反转、闪烁等功能,用途十分广泛,为了简化液晶显示电路的设计和应用,生产厂家通常将液晶显示单元、显示控制器,显示内存和显示驱动电路等装配在一起,做成液晶显示模块LCD Module(LCM)[1]。LCM对外提供标准数据和控制接口以及控制指令,本文以ATM12864C为例,介绍带控制驱动器ST7920的液晶显示模块与Philips公司的ARM7微控制器LPC2214的接口设计及编程方法,并在此基础详细介绍在液晶显示屏上显示可连续滚动的中文菜单及菜单项反白选择显示的设计方法,并讨论如何解决汉字显示过程中出现的乱码问题。
上传时间: 2014-01-16
上传用户:黑漆漆
4*4键盘显示的4x4键盘识别与显示模块。小键盘中有0~f共16个按键,小键盘和数码管都连接到PLD芯片上,要求:按下哪个按键,数码管就显示哪个数码,松手后仍然显示该数码,直到按动新的按键。显示字符字形如表5-1所示。在此设计中,7段数码管只是个验证工具,因为实际应用中通常是一排数码管,而不是一个数码管。PLD芯片在此主要完成按键识别和显示驱动。
上传时间: 2016-08-15
上传用户:电子世界
液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。 这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的1602液晶模块来介绍它的编程方法。
上传时间: 2014-01-25
上传用户:cc1015285075