第九周学习周报 (2018.10.29-11.4)

一、本周学习情况
1、本周主要学习Arduino实践以及java学习总结
(1)Arduino实现篮球计分
(2)java:
对象this引用 super关键字 方法重写 隐藏和封装
2、分别在CSDN以及博客园浏览多位博主的博客
3、练习java父类子类以及抽象类的使用
4、如何使用lcd1602显示自定义字符
二、学习笔记
1.对象this的引用:
Java提供了一个this关键字,this关键字是一个对象的默认引用。this关键字总是指向调用该方法的对象。与python中的self关键一样的作用。
java中,允许对象中的一个成员直接调用另一个成员,可以省略this前缀。
static修饰方法中不能使用this引用。由于static修饰的方法不能使用this引用,所以static修饰的方法的不能访问不使用static修饰的普通成员
如果确实需要在静态方法中访问一个普通方法,则只能重新创建一个对象,如通过对象:new Person().info()
2.使用访问控制符:
java提供了三个访问控制符:private、protected、publicc,还有一个不加任何访问控制的访问控制级别,提供了四个访问控制级别
访问控制级别由小到大如下: private –> default –> protected –> public
注意:如果一个java源文件里定义的所有类都没有使用public修饰,则这个java源文件的文件名可以是一切合法的文件名,但如果一个java源文件里定义一个public修饰的类,则这个源文件的文件名必须与public的类名相同
关于访问控制符的使用,存在如下几条基本原则:
类里的绝大部分属性都应该使用private修饰,除了一些static修饰的、类似全局变量的属性,才可能考虑使用public修饰。除此之外,有些方法只是用于辅助实现该类的其他方法,这些方法称为工具方法,工具方法也应该使用private修饰如果某个类主要用做其他类的父类,该类里的包含的大部分方法可能仅希望被其子类重写,而不想被外界直接调用,则应该使用protected修饰这些方法希望被其他类自由调用的方法应该使用public修饰。
3.Package和import
java的包机制提供了类的多层命名空间,用于解决类的命名冲突、类文件管理等问题
java的包机制需要2个方面保证: 1. 源文件里使用package语句指定包名
2. class文件必须放在对应的路径下
对于显示模块的控制,主要关注两个方面,在哪里显示,显示什么内容。我们知道图形(字符也可以看成是图形)是由线构成的,线是由点构成的。如果我们能控制在显示模块任意位置显示一个点,那么就能显示任何图形了。当然,这个“任意图形”指的是这个显示模块的显示能力。那么也就是说这个温度符号”°C”如何显示也就解决了。现在我们来看看如何在LCD1602模块的任意一个位置显示一个点。
为了方便阅读,在这里我们把LCD1602字库表的一部分截取过来。前面讲了,如果要显示字符‘A’,那么写入数据高位(b7-b4)为0100,写入数据低位(b3-b0)为0001,合起来为0x41.那么如果现在写入数据0x00显示什么呢?数据0x00高4位和低4位全部为0,对应上表中第一行的第一列,我们发现里面是空的,如上下图中红色方框所示。

这个红色框的部分就是给我们‘自定义字符的’。类似的,在(b7-b4)为0000对应的整列都是空的,除此列外其余的都是有字符的,也就是说右边蓝色框部分是‘固定’的,或者说别人已经帮我们写好的。‘自定义字符’部分与表中显示的CGRAM(character generatgor ram)有关,右边部分‘固定的’与CGROM有关。现在我们要写入数据0x00显示某个字符,那么就需要在0x00对应的这个位置(上图红色框所示)构造出一个字符,简单的讲就是先‘填空’, ‘填空’之后就和蓝色部分一样了。而‘填空’的这个字符可以是任意的,也就是说属于‘自定义字符’。
(1)打开字模提取软件(可在叁议电子www.ppptalk.com提供的工具软件中找到或者自行网上下载),点击新建图像

(2)选择8×8,点击确定

(3)建图像在模拟动画中点击放大格点,调整图像到最大,便于观察

(4)左边3列舍弃不用,右边5列随便点击,注意黑色点表示亮(为1),白点表示灭(为0),如果要显示一个点,那么在图中留下一个黑点即可。这里我们构造一个简单的汉字‘五’作为实验,如下图所示,

(5) 点击‘参数设置‘,然后点击‘其他选项’,如下图所示

选项配置如下,点击确定退出。

(6) 点击‘取模方式’中的‘C51 格式’,将‘点阵生成区’红色框部分即为构造数据

现在‘填空’的数据已经获得了,那么如何‘填空’?前面说了是CGRAM,那么如何写进去呢?回去查看LCD1602指令表即可,高两位固定为01(也就是0x40),剩下的6位如何分布,如下CGRAM地址列所示:

CGRAM一共64个字节,一个字符需要8个字节,这样CGRAM一共可以表示8个字符,也就是说有8个‘空’可以由我们来自定义。从上图中可以看到,bit5,bit4,bit3用来选择第几个‘空’(一共有8个‘空’可以填),bit2,bit1,bit0用来确定这个字符对应的8字节的数据(我们通过字模软件获取的‘填空’数据),bit7和bit6固定为0,1。通过这种方式,我们就能显示任意字符了。当然这个“任意”是在显示模块的显示能力范围内。

三、下周学习计划
1、继续进行java总结笔记的学习
2、Arduino了解别人的好创意好项目
3、Arduino实现篮球自动计分
4、使用lcd1602显示汉字
四、存在问题:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值