1602心得
LCD1602液晶显示实验报告
LCD1602液晶显示实验报告一、实验目的(1)了解LCD1602的基本原理,掌握其基本的工作流程。
(2)学习用Verilog HDL语言编写LCD1602的控制指令程序,能够在液晶屏上显示出正确的符号。
(3)能够自行改写程序,并实现符号的动态显示。
二、实验设备与器件Quartus II 软件、EP2C8Q208C8实验箱三、实验方案设计1.实验可实现的功能可以实现在LCD1602液晶屏第一行左侧第一位的位置循环显示0~9,并且可以用一个拨码开关BM8实现显示的复位功能。
2.LCD1602基本知识LCD1602液晶能够同时显示16x02即32个字符,模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如“A”。
1602通过D0~D7的8位数据端传输数据和指令。
3.系统工作原理系统的状态转换流程图如图3.1.1所示。
通过状态流程图可以看到,LCD1602液晶屏的状态是不断更新的,依次完成液晶的初始化和0~9的动态显示过程,并且过程可由开关控制。
if (!rst_n)cnt <= 0;elsecnt <= cnt + 1'b1;wire lcd_clk = cnt[23]; // (2^23 / 50M)=0.168s always@(posedge lcd_clk)if(cnt1>=24'd2)beginreg lcd_clk1;lcd_clk1=1;cnt1=0;endelsebegincnt1=cnt1+1; //cnt1对lcd_clk二分频lcd_clk1=0;endalways@(posedge lcd_clk1)beginrow1_val<=8'h30;//设初值case(row1_val) //数字0~9循环显示8'h30: row1_val<=8'h31;8'h31: row1_val<=8'h32;8'h32: row1_val<=8'h33;8'h33: row1_val<=8'h34;8'h34: row1_val<=8'h35;8'h35: row1_val<=8'h36;8'h36: row1_val<=8'h37;8'h37: row1_val<=8'h38;8'h38: row1_val<=8'h39;8'h39: row1_val<=8'h30;default: row1_val<=8'h30;endcaseendparameter IDLE = 8'h00;parameter DISP_SET = 8'h01; // 显示模式设置parameter DISP_OFF = 8'h03; // 显示关闭parameter CLR_SCR = 8'h02; // 显示清屏parameter CURSOR_SET1 = 8'h06; // 显示光标移动设置parameter CURSOR_SET2 = 8'h07; // 显示开及光标设置parameter ROW1_ADDR = 8'h05; // 写第1行起始地址parameter ROW1_0 = 8'h04;reg [5:0] current_state, next_state; // 现态、次态always @ (posedge lcd_clk, negedge rst_n)if(!rst_n) current_state <= IDLE;else current_state <= next_state;//在时钟信号作用期间,次态重复的赋给现态alwaysbegincase(current_state)IDLE : next_state = DISP_SET;DISP_SET : next_state = DISP_OFF;DISP_OFF : next_state = CLR_SCR;CLR_SCR : next_state = CURSOR_SET1;CURSOR_SET1 : next_state = CURSOR_SET2;CURSOR_SET2 : next_state = ROW1_ADDR;ROW1_ADDR : next_state = ROW1_0;ROW1_0 : next_state = ROW1_ADDR;default : next_state = IDLE ;endcaseendalways @ (posedge lcd_clk, negedge rst_n)beginif(!rst_n)beginlcd_rs <= 0;lcd_data <= 8'hxx;endelsebegincase(next_state)IDLE : lcd_rs <= 0;DISP_SET : lcd_rs <= 0;DISP_OFF : lcd_rs <= 0;CLR_SCR : lcd_rs <= 0;CURSOR_SET1 : lcd_rs <= 0;CURSOR_SET2 : lcd_rs <= 0;ROW1_ADDR : lcd_rs <= 0;ROW1_0 : lcd_rs <= 1;endcasecase(next_state)IDLE : lcd_data <= 8'hxx;DISP_SET : lcd_data <= 8'h38;DISP_OFF : lcd_data <= 8'h08;CLR_SCR : lcd_data <= 8'h01;CURSOR_SET1 : lcd_data <= 8'h04;CURSOR_SET2 : lcd_data <= 8'h0C;ROW1_ADDR : lcd_data <= 8'h80;ROW1_0 : lcd_data <= row1_val[127:120];endcaseendendassign lcd_e = lcd_clk; // 数据在时钟高电平被锁存assign lcd_rw = 1'b0; // 只写endmodule5.下载电路及引脚分配设计设计中用实验箱自带的50MHz时钟信号作为输入端,用sel0、sel1、sel2三个使能端选通LCD1602液晶屏,EP2C8Q208C8就会工作在给液晶下命令的状态,使得点阵正常工作,如图3.5.1所示。
单片机实践心得体会
单片机实践心得体会
作为一个学习单片机的初学者,我认为单片机实践是非常重要的。
以下是我在单片机实践中的体会和心得:
1. 实践是学习单片机的最好方式。
在学习单片机时,理论知识固然重要,但是只有通过实践才能真正理解和掌握知识。
通过做各种实验和项目,我才能够更深入地理解单片机的功能和原理。
2. 实践需要注重细节。
在实际操作中,许多问题都是由于细节问题而产生的。
比如,接线不牢固、电源不稳定、程序代码错误等。
因此,在进行实践时,一定要认真仔细,注重细节,做到严谨和谨慎。
3. 实践需要不断的尝试和反思。
在实践中,不断地进行尝试和反思是很重要的。
当我们尝试一些新的想法或方法时,不一定能够一次性成功,甚至可能会遇到一些困难和问题。
此时,我们需要不断地尝试和反思,找到解决问题的方法和策略。
4. 实践需要不断地学习和完善。
单片机的技术是一个不断发展的领域,因此,我们需要不断地学习和完善自己的知识。
通过不断地学习和实践,我们才能够更好地掌握单片机的技术,实现更加复杂的应用和项目。
总之,单片机的实践对于初学者来说非常重要,通过实践,我们不仅能够深入理解单片机的技术,还能够培养解决问题和创新的能力。
LCD1602液晶显示实验
LCD1602液晶显示实验1.实验原理1.1 基本原理1.1.1 1602字符型LCD简介字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。
1.1.2 1602LCD的基本参数及引脚功能1602LCD分为带背光和不带背光两种,基控制器大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别,两者尺寸差别如下图1-2所示:图1-2 1602LCD尺寸图1.1602LCD主要技术参数:显示容量: 16×2个字符芯片工作电压: 4.5~5.5V工作电流: 2.0mA(5.0V)模块最佳工作电压: 5.0V字符尺寸: 2.95×4.35(W×H)mm2.引脚功能说明:1602LCD采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表:表1-3引脚接口说明表编符号引脚说明编号符号引脚说明号1 VSS 电源地9 D2 数据2 VDD 电源正极10 D3 数据3 VL 液晶显示偏压11 D4 数据4 RS 数据/命令选择12 D5 数据5 R/W 读/写选择13 D6 数据6 E 使能信号14 D7 数据7 D0 数据15 BLA 背光源正极8 D1 数据16 BLK 背光源负极1.1.3 1602LCD的指令说明及时序1602液晶模块内部的控制器共有11条控制指令,如表1-4所示:表1-4 控制命令表序号指令RS R/W D7 D6 D5 D4 D3 D2 D1 D01 清显示0 0 0 0 0 0 0 0 0 12 光标返回0 0 0 0 0 0 0 0 1 *3 置输入模式0 0 0 0 0 0 0 1 I/D S4 显示开/关控制0 0 0 0 0 0 1 D C B5 光标或字符移位0 0 0 0 0 1 S/C R/L * *6 置功能0 0 0 0 1 DL N F * *7 置字符发生存贮器地址0 0 0 1 字符发生存贮器地址8 置数据存贮器地址0 0 1 显示数据存贮器地址9 读忙标志或地址0 1 BF 计数器地址10 写数到CGRAM或DDRAM)1 0 要写的数据内容11 从CGRAM或DDRAM读数1 1 读出的数据内容1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。
LCD1602的简单使用原理——跟大家分享我学习1602的总结与体会
LCD1602的简单使用原理——跟大家分享我学习1602的总结与体会我的总结主要分为这几部分:①LCD1602的硬件特性及引脚功能②LCD1602的时序特性③LCD1602的使用原理(包括带字库和不带字库的简要使用方法,控制显示指令)④基于FPGA的LCD1602使用案例Part 1. LCD1602的硬件特性及引脚功能LCD1602顾名思义是一种02*16,即为两行十六列的液晶显示屏,液晶两行,每行可以显示16个字符,但是CGRAM及CGROM里面一共有160个字符,包括阿拉伯数字,英文字母大小写,常用符号及日文。
每个字符对应于一个ASCII码值,在液晶显示屏上显示对应的字符时候,只需要将对应的ASCII码写到DDRAM中就好,详细的步骤会在下面细说。
液晶板上排列着5*8的字符点阵,8行,每行5个点位,高电平1就是该点显示,低电平0就是该点不显示。
一、引脚功能:RS,R/W,E控制数据端口DB0~DB7,数据的命令的读写由控制端口控制,并通过数据端口传输。
端口其他特性这里不再赘述,详细见1602液晶手册。
O(∩_∩)O二、硬件特性:①CGRAM 和CGROMCGRAM:character generator ram CGROM:character generator romCGRAM的地址空间:CGRAM的地址是0x40~0x7F, 64个地址空间,每个地址双字节,一共128字节,一个字符是8个字节,所以一共能显示8个自定义字符(每个双字节地址只有一个字节是被自定义字符数据写入的,另外个字节无效,因为CGARM的字符代码的规定,详细原因见下面)字符对应的区位码如下图所示:CGRAM: 字符产生ram,用来存放用户自定义的字符,如上图的两条(1)~(8),区位码为0x00~0x0F.0x00~0x07对应于(1)~(8);0x08~0x0F对应于下一条(1)~(8),虽然看起来有16个地址,但是其实只要8个地址可用,CGRAM的“字符码”规定0~2为地址,3位无效,4~7位全为0,因此CGRAM的字符码等效为0000X111,X为无效位,最后三位的地址只要八个,所以实际能用的只有8个。
LCD1602学习总结
LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器ROM,是固化在内部的,共192个字符,包括160个5*7点阵字符,32个5*10点阵字符。
(为什么上面是5*8和5*11,这里不是,因为内部CGROM中的字符没有完全占满可以用的字模)其中部分与ASCII完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用。
CGRAM是64字节用户可自定义的存储区,可自定义8个5*8或者4个5*11的字符。
DDRAM是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式。
DDRAM共80字节,第一行和第二行各40字节。
这40个字节在一次显示时当然不会全部显示,因为屏幕只能显示16个,但在滚动显示时就可以全部显示出来。
LCD1602设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM的地址,那么接下去读取的数据就放在CGRAM中。
R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0时,是写入命令:1、01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。
<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2、02H或这03H:DDRAM所有单元的内容不变,光标移至左上角。
LCD1602液晶显示总结
LCD1602液晶显示应用总结一、1602里面存储器有三种:CGROM、CGRAM、DDRAMCGROM保存了厂家生产时固化在LCM中的点阵型显示数据;CGRAM是留给用户自己定义点阵型显示数据的;DDRAM则是和显示屏的内容对应的。
1602内部的DDRAM有80字节,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。
默认情况下,显示屏上第一行的内容对应DDRAM中80H到8FH的内容,第二行的内容对应DDRAM 中C0H到CFH的内容。
DDRAM中90H到A7H、D0H到E7H 的内容是不显示在显示屏上的,但是在滚动屏幕的情况下,这些内容就可能被滚动显示出来了。
注:这里列举的DDRAM的地址准确来说应该是DDRAM地址+80H 之后的值,因为在向数据总线写数据的时候,命令字的最高位总是为1。
DDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下:DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。
同样LCD1602共有80个字节的显存,即DDRAM。
但LCD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示范围内的字符才可以显示出来,写在范围外的字符不能显示出来。
这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示范围内,看到字符的移动效果。
为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。
例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H 地址处即可。
至于怎么写入,后面会有说明。
那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了:A的字模上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表 1。
单片机实训报告心得
单片机实训报告心得一、实训内容本次实训内容为单片机的基础知识学习和实践操作,包括:单片机的概述、基本构成、工作原理和应用场景;单片机编程的语言、工具和方法;单片机实现常见的控制程序和算法。
二、学习收获在本次实训中,我深刻体会到了单片机的强大和广泛应用的特点,对单片机编程和应用有了更深入的认识和了解。
通过单片机实验的实践操作,我掌握了基本的单片机控制程序设计和算法实现方法,提高了我的动手实践能力和编程实现能力。
三、心得体会1.需要充分准备和了解实验内容在实践中,我发现实验的成功率很大程度上取决于我的准备程度。
如果在实验前没有充分了解实验的内容和步骤,就会浪费时间和资源,甚至可能无法完成实验。
因此,我认为在进行单片机实验前,要充分准备,了解实验的内容和要求,掌握实验所需的基础知识和技能。
2.学习编程要有耐心和毅力在单片机编程的学习过程中,我充分体会到了编程的挑战和困难。
学习编程需要有耐心和毅力,对错误有正确的处理方法和心态,善于思考和总结。
通过不断的练习和完善自己的编程技能,我逐渐克服了一些难点和问题,提升了自己的编程实现能力。
3.团队协作和交流是成功的关键在实验中,我也感到了团队协作和交流的重要性。
同学之间要相互配合,协同完成实验任务,做到知识共享、技能互补,达到团队整体效益的最大化。
同时,要做到交流和沟通,发现和解决问题,促进自己的成长和进步。
四、总结通过这次单片机实训,我深刻认识到了单片机的重要性和应用范围,掌握了基本的单片机编程技术和实践方法,提高了自己的编程实现能力和动手实践能力。
同时,在实践中也收获了不少心得体会,这对我今后的学习和工作都有很大的帮助。
AVR单片机ATMEGA161602液晶驱动程序及心得
AVR单片机ATMEGA16 1602液晶驱动程序及心得首先,祝福各位同仁,光棍节快乐!今天,给我最好的节日礼物就是,我自己研发的AVR微控制器芯片开发板,1602液晶屏实验成功!我很欣慰.写了一整天的程序,反复实验,最终在凌晨0点.终于成功了.在此过程中,最大的问题莫过于那个所谓配套的1602液晶屏数据手册!这个手册简直是误人子弟,里面资料写的很含糊.并且有错误,而导致我反复试验失败,最终,我使用了通用的1602液晶屏数据手册,才得以成功.我自制的AVR开发板尺寸和我买的51开发板差不多大小,ATmega16最小系统,8位数码管,蓝光流水灯,isp编程接口.过载保护保险丝,两个74hc573锁存器.1602液晶屏都已焊接完成,万用板是12X18cm的单孔玻纤板(质量不太好,便宜没好货).现在我才发现不够用,模块数量相同的两块实验板,手工焊接的一定要比机器印刷的大2~3倍才行.....没办法,我只能用5X7cm的万用板做小模块,ADC模块,DS1302时钟模块,激光二极管模块等等,然后用杜邦线把它们和AVR核心板链接起来,目前计划是这样的,往往计划很丰满,实际很骨感,伤脑筋啊,,,此次,首次接触了12864大液晶,能显示中文,和超声波测距传感器,这得好好研究一下,我一直想要了解一下2.4g无线传输模块,和陀螺仪传感器,还有GPS模块,不过那些还早,把AVRATMEGA16学的差不多了,再了解,也不迟. /*Program name: AVR ATMEGA16 1602驱动程序初次实验通过时间: 2013-11-11 00:04:01 ^_^ ;注意:在bysy()函数中严重出错!下次注意!while((PINA&0x80)==0x80); 此语句检测到PA7为零时终止循环;表明空闲状态心得:AVR单片机的IO口位操作比较复杂,由三个寄存器控制IO口的输出与输入;DDRn(输出/输入控制) 寄存器;PORTn(输出时控制数据,输入时控制内部上拉电阻)寄存器;PINn(用于读取IO口数据)寄存器;最终校验通过时间: 2013年11月12日15:12:28*/#include ;#include ;#define uint8 unsigned char#define uint16 unsigned int//========IO口位操作========================================void rs(uint8 h)//数据/指令选择操作;{if(h)PORTB|=1<<3; //置一;elsePORTB&=~(1<<3); //清零; }void rw(uint8 h)//读/写选择操作;{if(h==0){PORTB&=~(1<<4); //清零;}else{DDRA=0X00;PORTA=0XFF;PORTB|=1<<4; //置一;}}void e(uint8 h)//传输使能位;{if(h){PORTB|=1<<5;//置一;}elsePORTB&=~(1<<5);//清零;}//=============================================== =========void ddra(uint8 h)//PA口输入输出函数;{if(h){DDRA=0XFF;//输出模式;PORTA=0xff;}else{DDRA=0X00; PORTA=0XFF; } //输入模式并且有上拉; }void busy()//繁忙检测;{ddra(0);//设置PA口为输入,有上拉;do{e(0);//传输使能为0;rs(0);//指令;rw(1);//读;e(1);//e为高电平;}while((PINA&0x80)==0x80);//如果读到数据是01111111,表示空闲状态,跳出循环;e(0);ddra(1);//PA口输出状态;}void delay() //小延时;{uint8 j=0;j=1;}void w_cmd(uint8 cmd){busy();//繁忙检测通过时,PA口为输出状态,默认输出0xff; PORTA=cmd; //向PA口装载数据;rs(0);//指令;rw(0);//写入;e(1);//传输使能脉冲高;delay();//延时;e(0);//传输使能脉冲低;}void w_dat(uint8 dat){busy();//繁忙检测通过时,PA口为输出状态,默认输出0xff; PORTA=dat; //向PA口装载数据;rs(1);//数据;rw(0);//写入;e(1);//传输使能脉冲高;delay();//延时;e(0);//传输使能脉冲低;}void init_1602(){w_cmd(0x3c); //写入显示设置:8位数据,两行,5x10显示;w_cmd(0x0c); //整屏显示,光标不闪,字符不闪; w_cmd(0x06); //写入一个数据时地址自动加一.整屏不移动;w_cmd(0x01); //写入'清屏'指令;}void display(uint8 addr ,uint8 dat )//可在任意位置显示字符,{//addr地址,dat数据;w_cmd(addr);w_dat(dat);}void main(void)//====主函数================={uint8 i=0, j=0x80,ak[]="I'am ironman!"; //要显示的字符串"我是钢铁侠!"uint8 sj[]="2013-11-11 ^_^"; //今天的日期;uint16 s=0;//16位的变量;DDRB=0XFF;//PB口输出状态;PORTB=0X03; //PB0=1;PB1=1;DDRA=0XFF;//PA口输出状态;PORTA=0X00;//8个数码管共阴极为'0'.八位阳极为'0'; PORTB=0X00;//锁存数据;init_1602();//液晶屏初始化;w_cmd(0x81); //初始化完成以后先发送要写入的数据的显示位置.//0x81是第一行,第1位. 0x80是第0位;while(ak[i]!='\0') //将ak[]数组内的所有数据发送; {w_dat(ak[i++]);//每发送一个字节数据,数据的存储地址自动加一; for(s=0;s<50000;s++); //延时一下,字符会有一个,一个显示的效果;}w_cmd(0xc1);//发送第二排的数据地址,接下来字符会在第二排第1位开始显示;i=0;while(sj[i]!='\0')//将sj[]数组内的数据全部发完;{w_dat(sj[i++]);for(s=0;s<25000;s++);//效果延时;}while(1);//死亡循环; }。
生本教育心得体会(精选5篇)
生本教育心得体会(精选5篇)生本教育心得体会一:生本教育心得体会暑假期间,我们学校领导组织教师个人进行了生本学习,在学习中,我学习到了关于生本的一些知识,也有许多感受。
我想不论是教师,还是校长,都应该是有理想的,都在追求理想的教育境界和理想的生活境界,那就是快乐而积极,从容而富有激情的工作和生活。
生本教育既是一种教育理念也是一种教学模式,它的核心就是“一切为了儿童,高度尊重儿童,全面依靠儿童”,“ 关注人”是新课程的核心理念,应该说生本教育对新课程的核心理念阐述更清晰明确,具体可操作性的实践模式更为具体化。
我们进行新课程改革已经七年了,在新课程理念的引领下在课堂教学实践中也做了一些研究,但是参加生本教育学习后,我觉得是一方面在我们的教学中还过多的去研究了教师如何去教,对学生的学研究的不够,可以说还很欠缺。
教是服务于学生的学观念落实不到位,学变成了服从和接受。
二是教学成果的短视行为还比较严重,为了一节目标迅速达成经常给孩子吃“压缩饼干”。
结果造成学生的创造力丧失和对学习冷漠。
三、忽视了孩子情感世界的构建,在分数与排名评比中,让孩子感受不到成长的快乐,成功的自信、期待的温暖。
我们在观念转的还不够彻底,对新的观念理解的不够透彻,在行动的落实上也不够扎实。
当然教育不是万能的。
再完美的教育也有解决不了的问题。
因为自然界中没有两样东西是一样的。
我们无法完全做到因材施教,事实上再高明的教育者也无法洞悉每一个孩子的心灵。
但这不意味着我们教育者将无所作为。
如果我们能给学生创设和提供一个开放的、多样性的发展环境,那么我们的学生获取适合自己发展方式的机率就会大大提高。
走近生本教育,走进生本课堂,我深切感受到生本教育倡导的高度的尊重学生,让学生先学、教师后教、以学定教、小组和班级中的交流、讨论、教师适时的引领等,无一不在体现这方面的努力。
通过学习我把自己新的认识向大家做一汇报。
认识一:教学不是要主要依靠教师的教,而是依靠学生的学。
学12864的心得
学12864液晶有一段时间了(大概一个星期左右吧),感觉收获还是蛮大的,虽然有时候一个小小的问题要搞个老半天才会明白,但是我还是喜欢这样的生活,不能简单的用充实就能表达的。
因为我也表达不出到底是什么感觉,就是觉得很爽吧。
我发现我已经爱上了这个东西。
它那永远充满神奇的知识要我去探索,让我去追求新的高度。
去实现一个又一个的实验,去接受一个又一个的挑战,还有挑战之后获得成功的喜悦,好了。
废话少说了。
我下面来说说我这个星期来学习12864的成果和一些收获吧。
对于12864其实也和8x8点阵还有那个1602的控制还是差不多的。
只是对于我的这块液晶它是st7920驱动的,就是想7920发送一些指令然后就控制了12864了。
呵呵。
难点:CGRAM的理解,DDRAM,GDRAM关键还是GDRAM难一点啦。
1,指令包括一些基本的指令和一些扩展的指令。
其中要设置基本指令时要注意的是对于设置为8位并行是写(0x30)指令要写两次,因为两条命令要两条指令。
不可能用一条指令去执行两个命令。
2,在每次接受指令前都要检测内部忙标志BF。
也可以短暂延时,由于单片机的操作速度慢于液晶控制器的反应速度,因此可不进行读写检测,或者只进行简短的延时即可。
3,12864是128列64行,而相对于DDRAM 来说是4行8列。
4,每次写只能写进去8位数,而一个字是16x16的即是2字节x16行=32字节。
即一个汉字要占用32字节的空间。
而12864总共可以显示8列x4行=32个汉字。
所以写一个汉字要写两次,先写高8位,在写低8位。
5,GDRAM,其实12864的GDRAM只占用st7920的一半,st7920实际上是256x64的,而12864只有128x64所以只用了一半。
而12864就是将256x64的上半部分截下来的。
即256列x32行,而又12864的256列x32行从中间截开了。
并且把后面一节放到了下面。
也即上半屏是128列x32行,下半屏也是128列x32行,也就是1,3行的DDRAM地址是连起来的。
1602显示实验报告
一、1602显示二、实验项目:1602显示三、实验地点:四、五、实验时间:2014年7月9日~2014年7月23日六、实验要求:1、在单片机最小系统中加入LCD1602显示屏。
2、能进行数字和字符的显示3、扩展功能一:将实验四中的“单片机时钟”改为1602显示。
4、用Protel99SE绘制实验原理图并完成实验报告。
七、实验具体内容:1、在单片机最小系统中加入LCD1602显示屏。
(1)实验电路图:(2)实验原理:1602显示屏采用标准的16引脚(有背光),其各个引脚接线及作用说明如下:(3)实验中遇到的问题:在电路接线工作完成以后,上电实验时LCD只有背光,无任何显示。
问题原因分析:在接线过程中,我最为关注的是RS、R/W、E三个端口的接线,忽视了D0~D7的接线顺序,从而使D7~D0的方向接反。
因此1602内部的11条指令码都会对应不上,例如清屏指令是0x01,而我则需要写成0x20。
所以按照正常程序指令,在初始化之后,屏幕会一直没有显示。
(4)实验小结:在完成电路图之后觉得本次的接线相对来说比较简单。
心想只要接好RS、R/W、E正负极不反接,就没什么问题。
结果却出乎我的意料,看是简单的D0~D7八个端口的顺序同样起着关键的作用。
因自己的忽视,使我在完成接线之后长时间找不到问题原因之所在。
这次的接线也很好的提醒了我,看似简单的工作,可千万不敢再掉意轻心。
2、能进行数字和字符的显示并将实验四中的“单片机时钟”改为1602显示。
(1) 实验原理:LCD6102的显示方式是先从DDRAM写入要显示地址,在往DDRAM写入要显示的字符码。
控制其操作的有11条LCD1602的内部指令,具体如下:指令1:清显示;指令2:光标复位,光标复位到地址00H;指令3:光标和显示模式设置;I/D:光标移动方向,高电平左移,低电平右移S:屏幕上所有文字是否左移或者右移(高电平有效,低电平无效)指令4:显示开关控制;D:控制整体显示开关,高电平表示开,低电平表示关C:控制光标的开关,高电平表示有光标,低电平表示无光标B:控制光标是否闪烁,高电平闪烁,低电平不闪烁指令5:光标显示移位;S/C:高电平时移动显示文字,低电平时移动显示光标指令6:功能设置命令;DL:高电平时为四位总线,低电平时为八位总线N:低电平时为单行显示,高电平时为双行显示F:低电平时为5x7点阵字符,高电平时为5x10点阵字符指令7:字符发生器存储器地址:指令8:DDRAM地址设置指令9:读忙信号和光标地址BF为忙标志高电平表示忙,此时模块不能接收命令或者数据,低电平表示不忙指令10:写数据指令11:读数据时序控制:读状态:输入RS=0 R/W=1 E=1 输出:D0~D7=状态字写指令:输入RS=0 R/W=1 D0~D7=指令码E=高脉冲输出:无读数据:输入RS=1 R/W=1 E=1 输出:D0~D7=数据写数据:输入RS=1 R/W=0 D0~D7=数据E=高脉冲输出:无(2)程序流程图如下所示:(3)实验中遇到的问题按下4#键时钟显示减1,当显示为00后,继续减1,会出现ASCLL在0之后的码。
LCD1602液晶显示总结
LCD1602液晶显示应用总结一、1602里面存储器有三种:CGROM、CGRAM、DDRAMCGROM保存了厂家生产时固化在LCM中的点阵型显示数据;CGRAM是留给用户自己定义点阵型显示数据的;DDRAM则是和显示屏的容对应的。
1602部的DDRAM有80字节,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。
默认情况下,显示屏上第一行的容对应DDRAM中80H到8FH 的容,第二行的容对应DDRAM 中C0H到CFH的容。
DDRAM中90H到A7H、D0H到E7H的容是不显示在显示屏上的,但是在滚动屏幕的情况下,这些容就可能被滚动显示出来了。
注:这里列举的DDRAM的地址准确来说应该是DDRAM 地址+80H之后的值,因为在向数据总线写数据的时候,命令字的最高位总是为1。
DDRAM(Display Data RAM)就是显示数据RAM,用来寄存待显示的字符代码。
共80个字节,其地址和屏幕的对应关系如下:DDRAM相当于计算机的显存,我们为了在屏幕上显示字符,就把字符代码送入显存,这样该字符就可以显示在屏幕上了。
同样LCD1602共有80个字节的显存,即DDRAM。
但LCD1602的显示屏幕只有16×2大小,因此,并不是所有写入DDRAM的字符代码都能在屏幕上显示出来,只有写在上图所示围的字符才可以显示出来,写在围外的字符不能显示出来。
这样,我们在程序中可以利用下面的“光标或显示移动指令”使字符慢慢移动到可见的显示围,看到字符的移动效果。
为了在液晶屏幕上显示字符,就把字符代码送入DDRAM。
例如,如果想在屏幕左上角显示字符‘A’,那么就把字符‘A’的字符代码41H写入DDRAM的00H 地址处即可。
至于怎么写入,后面会有说明。
那么为什么把字符代码写入DDRAM,就可以在相应位置显示这个代码的字符呢?我们知道,LCD1602是一种字符点阵显示器,为了显示一种字符的字形,必须要有这个字符的字模数据,什么叫字符的字模数据,看看下面的这个图就明白了:A的字模上图的左边就是字符‘A’的字模数据,右边就是将左边数据用“○”代表0,用“■”代表1。
单片机实训心得体会
单片机实训心得体会在单片机实训过程中,我深刻体会到了实践的重要性。
通过实际动手操作,我更加深入地理解了课堂上学到的理论知识,并且对单片机的应用和程序设计有了更为全面的理解。
在实训过程中,我遇到了许多问题,但通过自己的思考和和同学们的讨论,最终都得到了解决,这让我更有信心面对未来的挑战。
在第一次实训中,我们主要学习了单片机的基础知识,包括单片机的基本组成、引脚功能、电路图的绘制以及C语言的基本语法。
在学习过程中,最让我困惑的是引脚功能的理解和电路图的绘制。
通过反复的实践操作和教师的讲解,我逐渐理解了引脚的功能和原理,并能够正确地绘制出电路图。
此外,通过实验,我还了解了单片机的基本编程思路和步骤,包括输入输出的设置、寄存器的配置和程序的编写。
虽然在实训过程中遇到了许多错误和问题,但是通过自己的调试和改正,最终还是成功地完成了任务。
这次实训对我来说是一个很好的开始,让我对单片机的学习产生了浓厚的兴趣。
在第二次实训中,我们主要学习了单片机的数码管显示和按键输入。
通过实践操作,我掌握了数码管的连接和显示方式,并且能够通过按键控制数码管的显示。
在学习的过程中,我遇到了很多问题,比如数码管显示乱码、按键输入无效等。
通过耐心的调试和思考,我发现了问题的原因,并通过修改程序来解决问题。
此外,我还学会了使用计时器和定时器来控制数码管的显示,这使得程序的编写更加灵活和精确。
通过这次实训,我深刻体会到了实践的重要性,只有通过不断尝试和学习,才能真正掌握技能和知识。
在第三次实训中,我们学习了单片机的串口通信和中断处理。
通过实际操作,我了解了串口通信的原理和配置方法,并学会了通过串口与电脑进行通信。
在实践过程中,我遇到了许多问题,比如串口数据发送不成功、中断程序无效等。
通过仔细检查和反复调试,我找到了问题的原因,并通过修改程序来解决了问题。
此外,我还学会了使用中断来进行多任务处理,提高了程序的运行效率和灵活性。
这次实训让我对单片机的应用更加熟练和深入,也对算法和程序设计有了更为深刻的认识。
单片机实训心得体会
单片机实训心得体会从单片机原理到实际应用的实训过程,让我深刻地体验到了自己的成长与收获。
这次实训是我校课程体系中非常重要的一门课程,通过这门课程的学习,我真正地掌握了单片机的应用技能,获得了一定的能力提升和职业技能。
首先,这次实训让我对单片机有了更深入的了解。
通过老师的讲解和线上实验教学,我对单片机的原理、基础知识有了较为深入的了解,并通过实验熟悉了单片机的编程方法和应用技巧,掌握了单片机开发的基本技术方法,为今后的学习和工作打下了基础。
其次,参与实训的过程也让我体会到了合作的重要性。
在实训过程中,我和同学们一起讨论,共同解决了实验中遇到的问题。
在团队合作的过程中,我们能够根据自己的特长和优势,互相协作,为实验的顺利进行起到了关键作用。
在这个过程中我感受到了集体的力量以及互相学习、共同进步所带来的成就感。
此外,无论在实验中遇到任何困惑或是有任何不解,老师们都耐心地协助我们解决。
作为学生,我感受到了学校不遗余力地支持和关爱,更加坚定了我的发展决心。
刚开始,一些在实际操作中较为简单的任务,比如控制LED灯的亮灭、数码管的滚动显示等等,在第一次实验时也让我们感到比较困难,但随着实际操作的深入,我们的技能和思维能力不断提升。
特别是在最后的个人实验和小组实验中,我们大量的时间是在分析实验流程、思考代码的优化上度过的,相较于刚开始的实验,我们的能力已经有了长足的进步。
最后,在实训结束之时,我感到自己的成长远非单单是知识技能方面,更多地体现在精神层面。
学习单片机需要我们坚持不懈、脚踏实地,同时需要对错误和失误进行思考并及时修改,这些过程与工程实际操作中所需要体现的精神,十分相似。
这让我深刻感受到了实训所培养的,不仅是技能还有品格、态度、奋斗精神等等。
这些宝贵的自我提升与培养、也将成为我未来工作和学习路上的不灭动力。
总的来说,通过这次单片机实训,我锻炼了自己的实际动手操作能力、团队协作能力以及对学习关注度和责任感,提升了自己的职业技能。
(完整版)LCD1602学习总结
LCD1602液晶屏知识点总结LCD1602的引脚包括数据指令寄存器RS,读写控制寄存器R/W,使能端E,三态数据总线DB0~DB7,电源引脚VDD,VSS,背光正负极A、K,背光调节引脚V0。
1602可以显示2行每行16个共32个5*8或者5*11个字符,这就是1602名字的由来。
1602内部有CGROM、CGRAM、DDRAM。
CGROM是字符发生器ROM,是固化在内部的,共192个字符,包括160个5*7点阵字符,32个5*10点阵字符。
(为什么上面是5*8和5*11,这里不是,因为内部CGROM中的字符没有完全占满可以用的字模)其中部分与ASCII完全一样,所以对于大小写英文字母和数字及部分符号,在编程时可以直接双引号括起来用。
CGRAM是64字节用户可自定义的存储区,可自定义8个5*8或者4个5*11的字符。
DDRAM是控制显示的RAM,想显示什么,就把显示内容的地址放进DDRAM,不过还要设置好显示方式。
DDRAM共80字节,第一行和第二行各40字节。
这40个字节在一次显示时当然不会全部显示,因为屏幕只能显示16个,但在滚动显示时就可以全部显示出来。
LCD1602设定某种地址,接下去读取数据就放在改类地址中,比如设定了CGRAM的地址,那么接下去读取的数据就放在CGRAM中。
R=1时,是数据寄存器,RS=0时,是指令寄存器。
R/W=1时,是读操作,R/W=0时,是写操作。
读操作时,使能端E要保持1,写操作时,下降沿使能。
当RS=0,R/W=0时,是写入命令:1、01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。
<1> 清除液晶显示器,即将DDRAM的内容全部填入"空白"的ASCII码20H;<2> 光标归位,即将光标撤回液晶显示屏的左上方;<3> 将地址计数器(AC)的值设为0。
2、02H或这03H:DDRAM所有单元的内容不变,光标移至左上角。
2023单片机实训心得体会
2023单片机实训心得体会2023单片机实训心得体会1通过为期一周的单片机实训,是我们对这门课有了许多新的了解,弥补了在课堂上学习的不足。
相信这对我们以后的学习和工作都会有很大的帮助。
我们一定要在最短的时间里对这些不足加以改正!首先,在这次试训中我被单片机强大的功能所震撼,以前在课堂上完全没有能理解可编程单片机的优越性。
这次通过实体仿真软件等辅助软件的共同效果,是这次试训有了鲜明的活力。
换是我们认识到这次试训不仅仅是一个软件的应用,更多的是使我们认识到学习到很多在课堂上无法得到的东西。
特别是protues软件的功能是我们了解了当今开发系统的新方向,简直太不可思议啦!单片机作为一种最简单的软件,与我们的日常生活息息相关,了解一些单片机程序的简单录入是费城必要的。
如:LED显示器、键盘和显示器的应用和原理。
在被刺实训中我们每个人通过一个八位流水灯的制作,使我们深深地体会到了单片机在现实生活中的小小应用,既增强了我们的好奇心,又巩固了我们的理论知识。
更让我们体会到了单片机手动的开始平台的完善与成熟。
只要你有想法,单片机就有可能让他成为现实。
这里我学习完protues软件后的第一感觉是,虽然这软件工作不稳定,但是会有相当不错的效果出来。
这对我以后的工作一定会有帮助的。
在这次试训中不仅只对单片机编程有了新的认识,还对整个单片机的开发平台都有了一厅的了解,这是一笔不错的收获。
通过这几天的试训,使我的感触很深,真实"条条大路通罗马",要达到目的,不同的人就有不同的方法。
只要你的方法不错!五花八门都可以,而且是各有特色。
走出来的结果都有各自的独到之处。
在编程中"简"字贯穿于整个程序设计中,越简单越好,毕竟单片机留给用户的资源是有限的,所以我们要充分利用这些资源,达到更好的效果,这些是我们在以后的学习生活中应值得注意的地方。
在试训中有苦有甜,当我们为一个很难攻破的程序找出路时,心情烦躁,感觉自己很不可理喻,当程序一点一点编好后,自己从心底感觉到一点小小的安慰,看着自己的成果。
51单片机LCD1602温度检测设计实习报告
51单片机LCD1602温度检测设计实习报告这次实习报告的完整电子文档已经上传到共享资料网站里了,若是你感觉那个实习报告适合里的哇,你能够在最后一段里找下载地址。
一、引言温度传感器在工业操纵和日常生活中是很重要的,温度传感器的应用会愈来愈普遍。
而且向着精准、低功耗、多功能进展。
基于单片机设计的温度传感器精准度较高,因为在程序的执行进程中,任何指令都不阻碍温度传感器的正常检测,即便程序很长也可不能阻碍中断的时刻。
从而,使温度传感器的精度仅仅取决于单片机的产生机械周期电路和按时器硬件电路的精准度。
另外,程序较为简练,具有靠得住性和较好的可读性。
若是咱们想将它应用于实时操纵当中,只要对上述程序和硬件电路略加修改,即能够取得实时操纵的有效系统,从而应用到实际工作与生产中去。
(qq网名大全)二、课题设计1、大体原理单片机最小系统,或称为最小应用系统,是指用最少的元件组成的单片性能够工作的系统.对51系列单片机来讲,单片机+晶振电路+复位电路,便组成了一个最小系统.可是一样在设计中老是喜爱把按键输入、显示输出等加到上述电路中,成为小系统。
DS18B20温度传感器采纳美国DALLAS公司生产的DS18B20可组网数字温度传感器芯片封装而成,具有耐磨耐碰,体积小,利用方便,封装形式多样,适用于各类狭小空间设备数字测温和操纵领域。
只需要一条口线通信多点能力,简化了散布式温度传感应用无需外部元件可用数据总线供电,电压范围为至无需备用电源测量温度范围为-55°C至+125℃。
华氏相当于是-67°F 到257华氏度-10°C至+85°C范围内精度为±°C。
LCD1602是工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)其大体单元是发光二极管。
LED数码管是一类显示屏。
通过对其不同的管脚输入相对的电流,会使其发亮。
从而显示出数字数码管能够显示时刻、日期、温度、等所有可用数字表示的参数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
液晶显示屏中,1602型算是比较简单的一种,据说和12864还是全兼容的。
这两天学习的结果如下。
一、1602里的存储器有三种:CGROM、CGRAM、DDRAM。
CGROM保存了厂家生产时固化在LCM 中的点阵型显示数据,CGRAM是留给用户自己定义点阵型显示数据的,DDRAM则是和显示屏的内容对应的。
1602内部的DDRAM有80字节,而显示屏上只有2行×16列,共32个字符,所以两者不完全一一对应。
默认情况下,显示屏上第一行的内容对应DDRAM中80H到8FH的内容,第二行的内容对应DDRAM中CH到CFH的内容。
DDRAM中90H到A7H、D0H到E7H的内容是不显示在显示屏上的,但是在滚动屏幕的情况下,这些内容就可能被滚动显示出来了。
注:这里列举的DDRAM的地址准确来说应该是DDRAM地址+80H之后的值,因为在向数据总线写数据的时候,命令字的最高位总是为1。
二、1602使用三条控制线:EN、RW、RS。
其中EN起到类似片选和时钟线的作用,RW和RS指示了读、写的方向和内容。
在读数据(或者Busy标志)期间,EN线必须保持高电平;而在写指令(或者数据)过程中,EN线上必须送出一个正脉冲。
RW、RS的组合一共有四种情况,分别对应四种操作:
RS=0、RW=0——表示向LCM写入指令
RS=0、RW=1——表示读取Busy标志
RS=1、RW=0——表示向LCM写入数据
RS=1、RW=1——表示从LCM读取数据
三、LCD在使用的过程中,可以在RS=0、RW=0的情况下,向LCM写入一个字节的控制指令。
使用的控制指令一共八个类别。
有的类别又有几条不同的指令。
具体的情况罗列在下:
①01H:清除DDRAM的所有单元,光标被移动到屏幕左上角。
②02H:DDRAM所有单元的内容不变,光标移至左上角。
③输入方式设置(EnterModeSet),这些指令规定了两个方面:一是写入一个DDRAM单元后,地址指针如何改变(加一还是减一);二是屏幕上的内容是否滚动。
04H:写入DDRAM后,地址指针减一,比如第一个字符写入8FH,则下一个字符会写入8EH;屏幕上的内容不滚动。
05H:写入DDRAM后,地址指针减一,同上一种情况;每一个字符写入以后,屏幕上的内容向右滚动一个字符位。
06H:写入DDRAM后,地址指针加一,比如第一个字符写入80H,则下一个字符会写入81H;屏幕上的内容也是不滚动。
这应该是最常用的一种显示方式。
07H:写入DDRAM后,地址指针加一,同上一种情况;每一个字符写入以后,屏幕上的内容向左滚动一个字符位。
④屏幕开关、光标开关、闪烁开关。
08H、09H、0AH、0BH:关闭显示屏,实质上是不把DDRAM中的内容对应显示在屏幕上,对DDRAM 的操作还是在进行的,执行这条指令,接着对DDRAM进行写入,屏幕上没有任何内容,但是接着执行下面的某条指令,就能看到刚才屏幕关闭期间,对DDRAM操作的效果了。
0cH:打开显示屏,不显示光标,光标所在位置的字符不闪烁。
0dH:打开显示屏,不显示光标,光标所在位置的字符闪烁。
0eH:打开显示屏,显示光标,光标所在位置的字符不闪烁。
0fH:打开显示屏,显示光标,光标所在位置的字符闪烁。
关于光标的位置:光标所在的位置指示了下一个被写入的字符所处的位置,加入在写入下一个字符前没有通过指令设置DDRAM的地址,那么这个字符就应该显示在光标指定的地方。
⑤设置光标移动(本质就是AC的增加还是减少)、整体画面是否滚动。
10H:每输入一次该指令,AC就减一,对应了光标向左移动一格。
整体的画面不滚动。
14H:每输入一次该指令,AC就加一,对应了光标向右移动一格。
整体的画面不滚动。
18H:每输入一次该指令,整体的画面就向左滚动一个字符位。
1CH:每输入一次该指令,整体的画面就向右滚动一个字符位。
画面在滚动的时候,每行的首尾是连在一
起的,也就是每行的第一个字符,若左移25次,就会显示在该行的最后一格。
在画面滚动的过程中,AC 的值也是变化的。
⑥显示模式设定指令,设定了显示几行,显示什么样的点阵字符,数据总线占用几位。
20H:4位总线,单行显示,显示5×7的点阵字符。
24H:4位总线,单行显示,显示5×10的点阵字符。
28H:4位总线,双行显示,显示5×7的点阵字符。
2CH:4位总线,双行显示,显示5×10的点阵字符。
30H:8位总线,单行显示,显示5×7的点阵字符。
34H:8位总线,单行显示,显示5×10的点阵字符。
38H:8位总线,双行显示,显示5×7的点阵字符。
这是最常用的一种模式。
3CH:8位总线,双行显示,显示5×10的点阵字符。