对于童锁只有在开机时才会进行密钥的验证,所以童锁AD的数值只用与开机不
久的检测。而5个按键则在主程序运行的任何时刻都在进行检测,应为主程序对于按键所触发的事件需要实时进行处理,为了提高程序的实时性则需要进行实时检测。而触控开关的作用是用于检测水位和机盖,涉及到突然事件。则使用外中断进行操作比较好。
3.2.3 显示界面菜单模块
使用12864 液晶作为界面的显示设备,需要用到液晶的绘图功能。 首先说一下液晶点阵LCD的显示原理:
对于数字电路,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作,可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节)即可。而对于中文,常用却有6000以上,所以将ASCII表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的内码。而剩下的低128位则留给英文字符使用,即英文的内码。
在得到了汉字的内码后,还仅是一组数字对于LCD显示,这就涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,是用数字的各位信息来记载英文或汉字的形状,如英文的'A'在字模的记载方式如图3-3所示:
图3-3 “A”字模转换图
其次,制作菜单界面,首先需要制作相应的素材。比如:对于“洗衣流程”这个一级菜单。为了减轻工作量,使用到一款“液晶取字模”的软件。下图3-4则是这款软件的界面。
20
图3-4 液晶取字模软件界面1
首先是在软件中输入“洗衣流程”,图3-5所示。为了体现友好的人机交互界面,所以会涉及到菜单的选中与非选中。这样就需要生成相应的阴码与阳码。如图3-6所示。
图3-5 液晶取字模软件界面2
图3-6 液晶取字模软件界面3
21
最后点击生成自模就会生成对应的相应字模码。如图3-6所示,就可以把其嵌入12864 的绘图驱动中。
图3-6 液晶取字模软件界面4
对于菜单的嵌套,比如每个以及菜单还会嵌套相应的二级菜单。相应的需要进行判断。
3.2.4 输出控制模块
输出控制模块是实现控制电机及洗衣机的进水与出水阀门。对于直流电机的控制,则用到了PWM技术来改变转向及转速。在程序中,使用了定时器中断来控制。由于涉及到洗涤、漂洗及甩干等相应的电机操作,用到的电机转速、流程都不尽相同。
(1) 洗涤:正转1s,停1s,翻转1秒,停1s。 (2) 漂洗:正转2s,停1s, 翻转2秒,停1s。 (3) 甩干:正转15s后自动停止。
在程序设计中使用到了两个定时器中的三个定时器通道。这样可以节约定时器资源,提高利用率。定时器的另外几个通道用于倒计时等其他几个作用。 对于进水、出水阀门,则是使用的普通I/O直接输出的。 3.2.5 串口调试模块
做程序的调试用,也可以进行相应的设置,通过上位机对洗衣机进行一些控制。这里不多做介绍。
22
4 制版及调试经历
4.1 制板
4.1.1 器件原理图库
对于没有任何资源积累的我来说,首先需要制作器件原理图库。这时就需要依照各个器件的数据手册(Datasheet)来进行绘制。对于每一个元器件来说,都需要分别绘制相应的原理图库。由此需要知道每一种器件,每一个引脚的引脚号,引脚功能以及引脚名称。在制作库的过程中,这些要素都要与实际一一对应。如图4-1所示为STM32F103CBT6的原理图库。
图4-1 STM32F103CBT6原理图库
4.1.2 绘制原理图
当所有元器件的库都制作完成后,就可以在主原理图中绘制原理图了。将之前制作的原理图库调用后就可以直接放置在主原理图中。如图4-2所示。
图4-2 绘制主原理图
23
然后按照相应的功能用线将元器件各引脚相连。最后排版,将各个功能模块按照对应的功能排放在一起,调整整个图纸为合适的大小。最后还要对其中的功能进行检查。
4.1.3 PCB封装库
完成了电路原理图的绘制后,就需要设计出相应的PCB图。首先需要对各个元器件制作相应的PCB封装库。对于一些常见的元器件,Autium Designer 09自带了相应的PCB封装库。而对于一些不常用的或者新出的元器件,就需要自己动手来制作相应的封装库。
这时就要使用到芯片的数据手册,上面一般有元器件对应封装的尺寸。如图4-3所示。如果没有,则需要使用游标卡尺去实际测量一番。最后将相应的尺寸对应到到相应的PCB库中就可以了。如图4-4所示。不过需要注意的是,对于PCB库也要仔细的检查。如果出错,则制作出来的电路板也就会出错,造成时间、精力、金钱上的浪费。
图4-3 数据手册中的继电器尺寸图
24