LCD滚动显示汉字
- 格式:pdf
- 大小:55.97 KB
- 文档页数:7
LCD1602的滚动显示/*************************************LCD1602头文件************************** *******/#ifndef _LCD1602_H_#define _LCD1602_H_//输入方式设置#define LCD_AC_AUTO_INCREMENT 0x06 //数据读、写操作后,AC自动增一#define LCD_AC_AUTO_DECREASE 0x04 //数据读、写操作后,AC自动减一#define LCD_MOVE_ENABLE 0x05 //数据读、写操作,画面平移#define LCD_MOVE_DISENABLE 0x04 //数据读、写操作,画面不动#define LCD_GO_HOME 0x02 //AC=0,光标、画面回HOME位//设置显示、光标及闪烁开、关#define LCD_DISPLAY_ON 0x0C //显示开#define LCD_DISPLAY_OFF 0x08 //显示关#define LCD_CURSOR_ON 0x0A //光标显示#define LCD_CURSOR_OFF 0x08 //光标不显示#define LCD_CURSOR_BLINK_ON 0x09 //光标闪烁#define LCD_CURSOR_BLINK_OFF 0x08 //光标不闪烁//光标、画面移动,不影响DDRAM#define LCD_LEFT_MOVE 0x18 //LCD显示左移一位#define LCD_RIGHT_MOVE 0x1C //LCD显示右移一位#define LCD_CURSOR_LEFT_MOVE 0x10 //光标左移一位#define LCD_CURSOR_RIGHT_MOVE 0x14 //光标右移一位//工作方式设置#define LCD_DISPLAY_DOUBLE_LINE 0x38 //两行显示#define LCD_DISPLAY_SINGLE_LINE 0x30 //单行显示#define LCD_CLEAR_SCREEN 0X01 //清屏/***********************LCD1602地址相关******************************/#define LINE1_HEAD 0x80 // 第一行DDRAM起始地址#define LINE2_HEAD 0xc0 // 第二行DDRAM起始地址#define LINE1 0 //第一行#define LINE2 1 //第二行#define LINE_LENGTH 16 //每行的最大字符长度/***********************LCD1602接线引脚定义**************************/#define LCDIO P2 //定义P2口与LCD1602的数据口相接sbit LCD_RS=P1^4;sbit LCD_RW=P1^3;sbit LCD_EN=P1^2;sbit LCD_BUSY=LCDIO^7;/**********************另外相关的定*********************************/#define HIGH 1#define LOW 0#define TURE 1#define FALSE 0#define uchar unsigned char#define uint unsigned int/*************************以下是函数的申明部*************************/void LCD_init(void); //LCD1602初始化void LCD_send_command(uchar command); //void LCD_send_data(uchar dat);void LCD_write_char(uchar x,uchar y,uchar dat);void LCD_disp_string(uchar x,uchar y,char *Data);void delay_ms(uint n);void LCD_check_busy(void);#endif/******************************************************************/#include <reg51.h>#include "LCD1602.h"/*******************主函数**********************************/uchar string[]=" I LOVE YOU! "; //这里是要显示的字符void main(void){uchar *cp;cp=string;LCD_init();while(1){LCD_send_command(LCD_CLEAR_SCREEN);delay_ms(2);LCD_disp_string(0,1,cp);delay_ms(100);cp++;if(*cp==''\0''){cp=string; //到达字符的尾部时,改变指针,重新指向字符串的头部 }}}/*********************************************************//**************LCD1602的初始化***************************/void LCD_init(void){LCD_send_command(LCD_DISPLAY_DOUBLE_LINE);LCD_send_command(LCD_AC_AUTO_INCREMENT LCD_MOVE_DISENABLE);LCD_send_command(LCD_DISPLAY_ON LCD_CURSOR_OFF);LCD_send_command(LCD_CLEAR_SCREEN);}/********************************************************/void LCD_check_busy(void) //检测LCD状态,看它是不是还在忙呢{do{LCD_EN=0;LCD_RS=0;LCD_RW=1;LCDIO=0xff;LCD_EN=1;}while(LCD_BUSY==1);LCD_EN=0;}/************LCD1602写命令*******************************/ void LCD_send_command(uchar command){LCD_check_busy();LCD_RS=LOW;LCD_RW=LOW;LCD_EN=HIGH;LCDIO=command;LCD_EN=LOW;}/********************************************************/ /*****************LCD1602写数据**************************/ void LCD_send_data(uchar dat){LCD_check_busy();LCD_RS=HIGH;LCD_RW=LOW;LCD_EN=HIGH;LCDIO=dat;LCD_EN=LOW;}/********************************************************void LCD_write_char(uchar x,uchar y,uchar dat){unsigned char address;if (y == LINE1)address = LINE1_HEAD + x;elseaddress = LINE2_HEAD + x;LCD_send_command(address);LCD_send_data(dat);}******************LCD1602显示字符串*********************/void LCD_disp_string(uchar x,uchar y,uchar *Data){if(y==LINE1){if(x<LINE_LENGTH){LCD_send_command(LINE1_HEAD+x);for(;x<LINE_LENGTH&&*Data!=''\0'';x++){LCD_send_data(*(Data++));}if(*Data!=''\0''){x=0;y=LINE2;}}}if(y==LINE2){LCD_send_command(LINE2_HEAD+x);for(;x<LINE_LENGTH&&*Data!=''\0'';x++){LCD_send_data(*(Data++));}}}/****************************************************************/ /********************延时函数***********************************//***************************************************************/ void delay_ms(uint n){uint i,j;for(i=n;i>0;i--)for(j=0;j<1140;j++); }。
lcd汉字显示课程设计一、课程目标知识目标:1. 学生能理解LCD汉字显示的基本原理,掌握相关概念,如液晶显示、像素、字符编码等。
2. 学生能掌握LCD汉字显示的编程方法,包括字模提取、显示控制等。
3. 学生能了解LCD汉字显示在生活中的应用,提高对技术学科的兴趣。
技能目标:1. 学生能够运用所学知识,独立完成LCD汉字显示编程任务。
2. 学生能够通过实践操作,熟练使用相关工具和仪器,提高动手能力。
3. 学生能够通过小组合作,提高团队协作能力和问题解决能力。
情感态度价值观目标:1. 学生在学习过程中,培养对科学技术的热爱,增强创新意识。
2. 学生在小组合作中,学会尊重他人,培养团结协作的精神。
3. 学生能够关注LCD汉字显示技术在社会发展中的作用,提高社会责任感。
本课程旨在帮助学生掌握LCD汉字显示的相关知识,培养编程技能和实际操作能力,同时注重培养学生的情感态度价值观,使他们在学习过程中形成积极向上的学习态度,为今后的学习和发展奠定基础。
二、教学内容1. LCD基本原理与结构:包括液晶显示原理、像素和分辨率概念、显示驱动方式等,对应教材第3章第1节内容。
2. 汉字编码与字模:介绍汉字编码方式,如GB2312、GBK等,以及字模提取方法,对应教材第3章第2节内容。
3. LCD显示控制:讲解LCD显示控制原理,包括显示内存、显示坐标、刷新频率等,对应教材第3章第3节内容。
4. 汉字显示编程:教授如何在LCD上显示汉字,包括编程环境搭建、编程语言选择、字模显示等,对应教材第3章第4节内容。
5. 实践操作与案例分析:安排学生动手实践,完成LCD汉字显示编程任务,分析实际应用案例,提高学生实际操作能力,对应教材第3章第5节内容。
教学内容按照教学大纲安排,分为理论教学和实践操作两部分。
理论教学部分注重讲解LCD汉字显示的基本原理和编程方法,实践操作部分则着重培养学生动手能力和问题解决能力。
教学内容与教材紧密关联,确保科学性和系统性。
#include <iom8515v.h>#include <macros.h>/*RCS2--->PC0CCS1--->PC1CCS2--->PC2RCS1--->PC3'=1*/#define RCS1_1 PORTC |= BIT(PORTC3>#define RCS2_1 PORTC |= BIT(PORTC0>#define CCS1_1 PORTC |= BIT(PORTC1>#define CCS2_1 PORTC |= BIT(PORTC2>#define RCS1_0 PORTC &=~BIT(PORTC3>#define RCS2_0 PORTC &=~BIT(PORTC0>#define CCS1_0 PORTC &=~BIT(PORTC1>#define CCS2_0 PORTC &=~BIT(PORTC2>#define DOTLEDPORT PORTAunsigned int RollCount=0。
unsigned int SecondCount=0。
unsigned char SecondFlag=0。
const unsigned char DOTLEDBIT[]={0xfe ,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,}。
unsigned char ScanDOTLEDCount=0。
unsigned char DOTLEDBuffer[32]。
#pragma interrupt_handler timer1_ovf_isr:7void timer1_ovf_isr(void>{TCNT1H = 0xFE。
TCNT1L = 0x0C。
//点阵LED扫描过程if(ScanDOTLEDCount<8>{DOTLEDPORT=DOTLEDBIT[ScanDOTLEDCount%8]。
单片机课程设计在LCD1602上第二行显示“AT89C-51”1、设计内容在LCD1602上第二行显示“AT89C-51”2、设计思想此次单片机课程设计选择的是利用1602液晶,A T89C52芯片实现一串字符显示,本次设计使用的1602液晶为5V电压驱动带背光可显示两行每行16个字符。
通过C语言编程经keil软件生成可以在proteus软件中仿真装载的.hex文件进而通过proteus软件进行硬件电路连接以及软件的仿真利用LM016L显示器替代1602型液晶显示器最终得出液晶显示。
最后在单片机开发板上第二行显示AT89C51字样。
3、设计要求首先,利用proteus软件连接好硬件仿真图,编写C语言程序,导入硬件仿真图,调试程序和硬件,实现在软件上在LCD1602上第二行显示“AT89C-51”字样。
然后在单片机开发板上实现软件仿真结果。
4、设计目的1 熟练掌握单片机C语言编程2 掌握LCD显示基本原理和接口控方法3 掌握proteus软件的使用方法4 学会单片机开发板的使用方法5、设计原理1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。
它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用, 1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。
LCD1602引脚图1602采用标准的16脚接口,其中:指令集1.清屏指令功能:<1> 清除液晶显示器即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2.进入模式设置指令功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。
LCD1602显示汉字研究与程序设计2010-01-12 00:231602是一款最常用也是最便宜的液晶显示屏。
最多可以显示两行标准字符,每行最多可以显示16个字符。
1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。
一、显示常用字符。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是41H,显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”十进制十六进制 ASCII字符十进制十六进制 ASCII字符十进制十六进制 ASCII字符00 00 自定义字符1 56 38 8 96 60 `01 01 自定义字符2 57 39 9 97 61 a02 02 自定义字符3 58 3A : 98 62 b03 03 自定义字符4 59 3B ; 99 63 c04 04 自定义字符5 60 3C < 100 64d05 05 自定义字符6 61 3D = 101 65e06 06 自定义字符7 62 3E > 102 66f07 07 自定义字符8 63 3F ? 103 67g08 08 自定义字符1 64 40 @ 104 68h09 09 自定义字符2 65 41 A 105 69i10 0A 自定义字符3 66 42 B 106 6Aj11 0B 自定义字符4 67 43 C 107 6Bk12 0C 自定义字符5 68 44 D 108 6Cl13 0D 自定义字符6 69 45 E 109 6Dm14 0E 自定义字符7 70 46 F 110 6En15 0F 自定义字符8 71 47 G 111 6Fo32 20 空格 72 48 H 112 70 p33 21 !73 49 I 113 71 q34 22 "74 4A J 114 72 r35 23 #75 4B K 115 73 s36 24 $76 4C L 116 74 t37 25 % 774D M 117 75 u38 26 &78 4E N 118 76 v39 27 '79 4F O 119 77 w40 28 (80 50 P 120 78 x41 29 )81 51 Q 121 79 y42 2A *82 52 R 122 7A z43 2B +83 53 S 123 7B {44 2C ,84 54 T 124 7C |45 2D -85 55 U 125 7D }46 2E .86 56 V 126 7E ~47 2F /87 57 W48 30 088 58 X49 31 189 59 Y50 32 290 5A Z51 33 391 5B [52 34 492 5C \53 35 593 5D ]54 36 694 5E ^55 37 795 5F _显示操作的过程:首先确认显示的位置,即在第几行,第几个字符开始显示。
点阵式LED滚动汉字显示屏原理及设计思路1.引言点阵式LED组成的汉字显示屏在公共场所应用非常广泛。
例如,车站发车时间提示、股票大厅中的股票价格显示板、商场的活动广告栏、候机厅的起飞时间表。
点阵显示器的特点是可以按照需要的大小、形状和颜色进行组合,用单片机控制实行各种文字或图型的变化,达到广告宣传和提示的目的。
Proteus是一款新颖的嵌入式系统软硬件设计仿真平台,特别适用于单片机仿真,能够在线、实时仿真多种类型的单片机,诸如MCS-51系列单片机、PIC 单片机、AVR单片机等,能够像硬件仿真器一样进行软硬件调试,而没必要花钱去购买和维护价格不菲的仿真器,对于初学单片机的人来说,既减少了学习成本,又达到了良好的学习效果。
2.硬件电路设计点阵式LED滚动汉字显示屏硬件电路设计框图如图1所示。
电路包括单片机、电源电路、时钟电路、复位电路、驱动电路和LED点阵电路等。
本设计的核心是利用单片机读取显示字型码,通过驱动电路对16×16 LED点阵进行动态列扫描,以实现汉字的滚动显示。
本设计选用的单片机为ATMEL公司的AT89C52,显示屏采用16×16 LED点阵。
电源电路通过变压整流元件为单片机和其他电路提供稳定的+5V工作电压。
时钟电路是单片机的驱动电路,复位电路可在需要时,手动使单片机程序计数器复位清零。
通过阳极驱动电路向16×16点阵送字型码,本设计采用74LS273。
通过阴极驱动电路对16×16点阵进行列扫描,本设计采用74HC138。
图1 硬件电路设计框图利用Proteus软件设计点阵式LED滚动汉字显示屏硬件电路原理图如图2所示。
在Proteus软件中,单片机模型本身包含了工作电源和可改变的工作频率,因此在仿真时无需设计电源电路和时钟电路。
需要说明的是在Proteus软件目前版本中还没有16×16点阵模块,本设计中采用Proteus软件中现有的8×8点阵模块组合成一个16×16点阵模块。
以下程序在Keil μvision3软件上调试通过:#define uchar unsigned char //头文件在程序中用uchar代替unsigned char#define uint unsigned int#include<reg51.h> //源文件源文件包含了变量以及函数的实体#include<absacc.h>#include <stdio.h>sbit E=P1^2; //液晶屏使能信号sbit CS1=P1^3; //液晶屏左屏选通信号sbit CS2=P1^4; //液晶屏右屏选通信号sbit DI=P1^0;uchar code chinese[ ]={ //定义数组0x00,0x20,0x3F,0xF0,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x08,0x7F,0xFC,0x02,0x80, //无0x02,0x80,0x04,0x80,0x04,0x80,0x08,0x80,0x08,0x82,0x10,0x82,0x20,0x7E,0x40,0x00,0x08,0x40,0x08,0x50,0x10,0x48,0x10,0x40,0x22,0x7C,0x7F,0xC0,0x08,0x44,0x10,0x7E, //线0x23,0xC0,0x7C,0x48,0x00,0x50,0x00,0x20,0x1C,0x60,0xE0,0x92,0x43,0x0A,0x00,0x06,0x02,0x00,0x02,0x00,0x02,0x10,0x7F,0xF8,0x42,0x10,0x42,0x10,0x7F,0xF0,0x42,0x10, //电0x42,0x10,0x7F,0xF0,0x42,0x10,0x02,0x00,0x02,0x04,0x02,0x04,0x01,0xFC,0x00,0x00,};uchar code start[ ]={0,1,2};void send_command_l(uchar d) //左屏控制信号//{uchar data i;DI=0; CS1=1; CS2=0;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void send_data_l(uchar d) //左屏数据信号//{uchar data i;DI=1; CS1=1; CS2=0;for(i=10;i!=0;i--); P0=d;for(i=10;i!=0;i--); E=1;for(i=10;i!=0;i--); E=0;for(i=5; i!=0;i--); E=1; }void send_command_r(uchar d) //右屏控制信号//{uchar data i;DI=0; CS1=0; CS2=1;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void send_data_r(uchar d) //右屏数据信号//{uchar data i;DI=1; CS1=0; CS2=1;P0=d; E=1;for(i=5;i!=0;i--); E=0;for(i=5;i!=0;i--); E=1; }void display_output_word(uchar x,uchar y,uchar *p1,uchar lth,bit sign) {uchar *p2; //指向字库中某个字的地址uchar idata i,j,k; //字记录,用于设定下一个字的起始列,便于换行。
大学生科技创新项目汉字信息滚动显示屏目录摘要 (1)关键词 (1)1引言 (1)1.1.设计意义 (1)1.2.系统功能要求 (2)2方案设计 (2)3硬件设计 (13)4软件设计 (6)5系统调试 (13)6.设计总结 (14)7.参考文献 (14)汉字信息滚动显示屏摘要LED显示屏又叫电子显示屏或者飘字屏幕。
是由LED点阵组成,通过红色,蓝色,绿色LED灯的亮灭来显示文字、图片、动画、视频,内容可以随时更换,各部分组件都是模块化结构的显示器件。
通常由显示模块、控制系统及电源系统组成。
显示模块由LED灯组成的点阵构成,负责发光显示;控制系统通过控制相应区域的亮灭,可以让屏幕显示文字、图片、视频等内容,电源系统负责将输入电压电流转为显示屏需要的电压电流。
LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。
这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。
LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
本设计是基于L M3S3748单片机的8x8显示屏,其中包含了硬件、软件、调试等方案的设计关键词:L M3S3748;LED;单片机1引言1.1. 设计意义LED显示屏采用了低电压扫描驱动,具有耗电省、使用寿命长、成本低、亮度高、视角大、可视距离远、防水、规格品种多等优点,可以满足各种不同应用场景的需求,发展前景非常广阔,被公认为最具增长潜力也是发展最快的的LED应用市场。
2008年LED显示屏市场规模约100亿元。
随着北京奥运会、上海世博会、广州亚运会等重大赛会的举办和筹备,体育场馆、机场、车站、银行、医院、公共广场、商业场所、居民社区的大面积应用,LED显示屏的市场应用空间不断扩大。
此外,已架设的大型LED显示屏幕每10年将历经一次换机潮,随着人们生活水平的提高,户外LED 显示屏将逐渐应用于各个行业。