拨码开关)。当打开开关时,背光关掉,可以省电;合上开关,调节电阻可以使12864显示亮度变化。
2. 能够显示以后,发现显示界面一直在刷新,显示不稳定。原因是每秒随着秒刷新初始化界面一次,解决的方案是不重新调用显示,而是只给显示秒的位置刷新,其他时间随秒变化。温湿度值则是有了变化就刷新。
3. 由于编写程序时,没有考虑到串口通信中传回PC的数据的十六进制与显示字符之间的数据处理关系,导致在串口助手软件中只显示了传回的最后一个十六进制数所对应的ASCⅡ的字符,找到问题的解决关键所在后,经过数的分位与字符显示后,成功的显示了传回的温度、湿度的数据,让我们距离成功只差一小步了。接下来的任务就是显示在12864液晶上,根据之前单独在其上显示过液晶万年历的基础,知道只要将dht11检测的数据进行相应处理后并且与液晶万年历的显示集成一起送显示就行了。理论虽简单,但实际在下载到芯片中检测现象时,我们发现分别单独显示两者的数据没有问题,但集成在一块显示不久就会花屏的现象,问题出在刷新汉字时,指针光标的位置修改错误所导致的。之后经过重新写回指针后就达到了较为满意的效果。在报警程序的设置上,主要解决蜂鸣器报警间隔和LED灯闪烁的时间匹配问题,让两者现象统一。
4. 单片机与计算机通信。上位机界面设计,利用VB编程,用MSComm控件能够实现单片机传送数据到计算机并显示。
Private Sub MSComm1_OnComm() Dim rec As String ;定义接收字符串
Select Case MSComm1.CommEvent ;串口事件选择 Case comeEvReceive ;串口事件为接收
rec = MSComm1.Input ;从接收缓冲区中读取数据 Text1.Text = rec ;将接收到的字符串写入文本框 MSComm1.InBufferCount = 0 ;设置接收缓冲区中等待计算机接受的字符数为0
End Select End Sub
Private Sub form_load()
MSComm1.Settings = \ ;波特率,奇偶校验,发送位数,停止位
MSComm1.CommPort = 5 ;串口号
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.RThreshold = 8 ;接收缓冲区字符为8时,串口控件设置串口事件为接收,并产生OnComm事件
MSComm1.SThreshold = 2 ;发送缓冲区中字符小于2时,串口控件设置串口事件为发送,并产生OnComm事件
MSComm1.InputLen = 0 ;返回一次从接收缓冲区读取所
有字节
MSComm1.InputMode = comInputModeText ;接收模式为文本
If MSComm1.PortOpen = False Then MSComm1.PortOpen = True
MSComm1.InBufferCount = 0 Me.Caption = \温湿度显示\End Sub
Private Sub Form_Resize() ;窗体背景图片设置 Image1.Top = 0 Image1.Left = 0 Image1.Stretch = True
Image1.Height = Me.ScaleHeight Image1.Width = Me.ScaleWidth End Sub
Private Sub mnuQuit_Click() End End Sub
六、 设计总结
本次设计是小组三人共同努力的成果,大家齐心协力克服了上述种种