




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验箱的总体介绍,TD2410K-1,实验箱介绍,由多个独立的功能电路模块组成,可以自由组合出多个实验项目 综合了目前市场的多种最新技术 (非接触智能IC卡技术、语音录放技术、usb技术等等 各模块之间用拨码开关连通,ON表示接通,硬件结构框图,模块位置图,显示器接口及程序,LCD显示器,字符液晶编程技术,字符液晶接口 字符液晶常用函数 字符液晶程序设计 循环结构程序设计 应用实训,LCD1602概述,显示汉字、字符、数字等 让产品更具有交互性,1602引脚,字符液晶接口说明,时序,字符液晶特性,液晶显示器有8位数据操作模式和四位数据操作模式,在四位数据操作模式下采用DB4DB7作数据线,DB0DB3不用。 可与4位或者8位MPU接口,接口由使能信号E控制,标志位BF为模块内部工作状态标志,MPU访问模块时,首先应判断状态标志位BF;,与MCU接口(8位模式),与AVR MCU接口(4位模式),CAVR液晶编程介绍一,1.声明与LCD通信端口 #asm .equ _lcd_port=0x18 #endasm 2. 加入 lcd.h #include ,在使用液晶显示器之前,要设定I/O接口地址和包含lcd.h 头文件。,CAVR液晶编程介绍二,3.与lcd连线方式 LCD AVR Port RS (pin4) - bit 0 RD (pin 5) -bit 1 EN (pin 6) -bit 2 DB4 (pin 11) -bit 4 DB5 (pin 12) -bit 5 DB6 (pin 13) -bit 6 DB7 (pin 14) -bit 7,CAVR液晶编程介绍三,4. LCD低级函数,void _lcd_ready(void) 液晶内部操作忙判断,void _lcd_write_data(unsigned char data) 向LCD写一个字节数据,unsigned char lcd_read_byte(unsigned char addr)向LCD读一个字节数据,CAVR液晶编程介绍四,5. LCD高级函数,void lcd_init(unsigned char lcd_columns) 初始化液晶列数,光标位于0行0列,void lcd_clear(void) LCD清屏,光标位于0行0列,void lcd_gotoxy(unsigned char x, unsigned char y) 设定显示坐标X列Y行,void lcd_putchar(char c) 当前位置显示字符C,void lcd_puts(char *str)当前位置显示字符串,void lcd_putsf(char flash *str) 显示Flash中字符串,CAVR液晶编程练习一,#include #include #asm .equ _lcd_port=0x18 ;PORTB #endasm /定义变量_lcd_port为PORTB,此处为汇编宏命令 #include char *sss=“AVR”; Char flash *aaa=“16”; void main(void) lcd_init(16); /16列数据 l cd_gotoxy(2,0); lcd_putsf(“Hello”); /直接显示字符串只能使用lcd_putsf函数 lcd_puts(“sss“); lcd_putsf(“aaa“); while (1) ; ,字符串String of Char,定义 字符串是用一对双引号括起来的字符序列,这些字符可以是一般的可显示字符,也可以是某些特殊的控制字符; 字符串只能用字符数组来处理,没有字符串变量。字符串在内存中存放时,系统将自动在字符串的末尾添加一个字符串的结束标记0 (空字符),碰到第一个0就认为字符串处理结束。,字符数组 Array of Char,定义 char str20; /字符串保存在SRAM中 char flash string=“SZPT”; /字符串保留在FLASH中 初始化 逐个为数组中各元素指定初值字符。 char flash str4 =w,e,l,l; 对一个字符数组指定一个字符串初值。 char str =“good morning“; char str =“good morning“;,AVR 存储器,AVR具有两个主要的存储器器空间:数据存储器空间和程序存储器空间。 ATmega16:16KB的Flash,存放程序指令代码。 SRAM数据存储器:32个通用寄存器、64个I/O存储器、 1024Byte内部数据SRAM。 EEPROM数据存储器:512B,保存数据。,字符串 String of Char,用字符串给字符数组初始化 char st8= “welcome“; 等价于 char st8=w, e,l,c,o,m,e,0; 注意:这里的st不是一个字符串变量,而是字符数组的名字,代表字符数组在内存中的起始地址,是一个常量,那么这个赋值表达式是指将字符串中的每一个字符依次赋给以st开始的地址单元。 字符串的长度 定义 char ch = “Good“; 则数组ch的元素个数是5,而不是4,也就是说,字符串的长度是双引号中所包括的字符个数加1。,指针和指针变量的概念,内存中每个字节有一个编号-地址,程序中: int i; char k;,i,k,编译或函数调用时为其分配内存单元,变量是对程序中数据 存储空间的抽象,指针:一个变量的地址 指针变量:专门存放变量地址的变量叫指针变量,2000,指针,指针变量,变量的内容,变量的地址,指针与指针变量,指针与指针变量,指针变量的定义,一、基本术语 地址:字节的编号 直接引用:通过变量名访问内存单元 间接引用:通过变量地址访问内存单元 指针:就是地址 指针变量:存放指针的变量 二、指针变量的定义 数据类型 *指针变量, *指针变量2;,指针变量定义举例,例如:int *p1,*p2; char *p;,基类型,指针变量的标志,指针变量名,指针变量的使用,指针变量必须先赋值,再使用 main( ) int i=10; int *p; *p=i; printf(“%d”,*p); ,“*”取内容运算符 表示:指针变量所指存储单元(地址)的内容,将变量的值送入指针变量指向的存储单元中,指针变量的使用,main() int *p1,*p2,a,b; a=10;b=100; P1= ,“&”取地址运算符 将变量在内存的地址保存在指针变量中,字符串的指针和指向字符串的指针变量,在语言中,既可以用字符数组表示字符串,也可用字符指针变量来表示。 字符串在内存中的起始地址称为字符串的指针。 可以定义一个字符指针变量指向一个字符串。,/*定义一:定义并初始化字符指针变量string:用串常量“I love Beijing.”的地址给string赋初值 */ char *string=”I love Beijing.”;,/*定义二:先定义字符指针变量string,再用字符串常量“I love Beijing.” 给string赋初值 */ char *string; string=“I love Beijing.“;,使用时,系统首先输出string指向的第一个字符,然后使string自动加(指向的地址加1)使之指向下一个字符;重复上述过程,直至遇到字符串结束标志。,字符指针变量与字符数组之比较,虽然用字符指针变量和字符数组都能实现字符串的存储和处理,但二者是有区别的,不能混为一谈。 (1)存储内容不同。 字符指针变量中存储的是字符串的首地址,而字符数组中存储的是字符串本身(数组的每个元素存放一个字符)。 (2)赋值方式不同。 对字符指针变量,可采用下面的赋值语句赋值: char *pointer; pointer=“This is a example.“; 而字符数组,虽然可以在定义时初始化,但不能用赋值语句整体赋值。下面的用法是非法的: char char_array20; char_array=“This is a example.“; /*非法用法*/ (3)指针变量的值是可以改变的,字符指针变量也不例外;而数组名代表数组的起始地址,是一个常量,而常量是不能被改变的。,#include #include #asm .equ _lcd_port=0x18 ;PORTB #endasm #include void main(void) unsigned char i=0; PORTB=0x00; DDRB=0x00; lcd_init(8); /8列数据 while(1) lcd_gotoxy(0,0); lcd_putsf(“Shenzhen“); lcd_gotoxy(0,1); lcd_putsf(“sec=“); lcd_gotoxy(5,1); lcd_putchar(i+)+0x30); delay_ms(1000); ,?实现功能,LCD显示屏上的显示位置,DDRAM地址与LCD显示屏上的显示位置的对应关系如下: 两行显示:,利用CodeWizardAVR生成LCD控制程序代码框架,设置与LCD通信的端口。 生成相应代码为: #asm .equ _lcd_port=0x18 #endasm,设置字符液晶每行显示的字符个数。生成相应代码为:lcd_init(8);,字符液晶显示控制的实战演练 LCD Display Design,设计内容1:在字符液晶的第一行最左端起显示“Hi,AVR”。(LCD1.c) 相关的程序语句: 1. #include /包含lcd.h头文件 2. #asm /宏汇编命令, .equ _lcd_port=0x18 /定义lcd的I/O端口变量:_lcd_port指向PORTB #endasm 3. lcd_init(16); /lcd初始化为2行16列显示方式 4. lcd_gotoxy(0,0); /光标定位在lcd的0行0列 5. lcd_putsf(“Hi,AVR”); /在光标处显示flash中的字符串 6. lcd_puts(string1); /光标处显示保存在SRAM中的字符串变量string1的内容 7. lcd_putsf(string2);/光标处显示保存在flash中的字符串变量string1r的内容,课堂练习一,液晶显示编程设计内容一:在字符液晶的第一行最左端起显示“Hi,AVR” 液晶显示编程设计内容二:在字符液晶第二行的每隔1秒循环显示数字09。,课堂练习二,液晶显示编程设计内容三:在字符液晶第二行的最左边每隔1秒循环显示时钟的秒数数字059。,提示: 1. 秒数数字059是数字量,不能直接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影响跨国音乐合作的因素分析-洞察与解读
- 2025年设备监理师设备工程质量管理与检验题库附答案
- 2025年公营养师之三级营养师考试题库附答案
- 2025年安康杯知识竞赛题库及答案
- 2025消防证的试题及答案
- 2025年建筑电气知识考试题库及答案
- 青岛市地铁施工方案
- 2025年辽宁省档案系列中初级专业技术资格考试题库及答案
- 2025公需课十四五智能制造发展规划试题附答案
- 深州声屏障公路施工方案
- 2025年全国保密教育线上培训考试试题库附答案【考试直接用】含答案详解
- 2025年度全国普通话水平测试20套复习题库及答案
- 2025年初级会计师考试真题试题及答案
- 上海嘉定区区属国有企业招聘考试真题2024
- 2025心肺复苏术课件
- T-CECS 10400-2024 固废基胶凝材料
- 2025年内蒙古三新铁路有限责任公司招聘笔试参考题库含答案解析
- 初中竞选安全部部长
- 《人体的经络》课件
- 《福禄贝尔》课件
- 期中测试卷(第一单元至第四单元)-2024-2025学年六年级上册数学人教版
评论
0/150
提交评论