51单片机通过DHT11温度传感器读取温度(2)
一.LCD1602的使用
1.概念:LCD1602(Liquid Crystal Display)是一種工業字符型液晶,能夠同時顯示 16×02 即 32 字符(16列兩行)
2.引腳定義
?
?
具體說明
(1)VSS:模塊供電電源地
(2)VDD:模塊供電電源的正極
(3)RS:數據/命令選擇,當處于高電平時選擇數據寄存器,當處于低電平時選擇指令寄存器。RS 為低電平 R/W 為高電平時可以讀忙信號,當RS 為高電平 R/W 為低電平時可以寫入數據。
(4)R/W:讀寫選擇,當處于高電平時進行讀操作,當處于低電平時進行寫操作
(4)E:使能信號,當電平由高電平變成低電平時,開始執行指令
(5)D:數據,D0-D7是數據位
?3.顯示方法
由圖可以知道,如果要第二行第一列顯示,則只需要寫入40H,但是這樣是不行的,因為寫入顯示地址時要求最高位 D7 恒定為高電平 1,所以需要加上80H,則最后的結果為40H+80H=C0H
4.顯示內容與對應的位數
?
5.時序圖
(1)讀時序
?
(2)寫時序
(3)時序時間
?
二.LCD1602的時序分析
1.寫指令
由條件可以知道RS = 0;由時序圖可以看到R/W = 0處于低電平,同時E = 0,并延時TR的時間長度,過后進行數據建立連接,然后將E端電平拉高,同時延遲Tpw的時間,之后E端電平被拉低,并延遲THD1的時間
2.寫數據
由條件可以知道RS = 1;由時序圖可以看到R/W = 0處于低電平,同時E = 0,并延時TR的時間長度,過后進行數據建立連接,然后將E端電平拉高,同時延遲Tpw的時間,之后E端電平被拉低,并延遲THD1的時間
三.LCD1602程序代碼實現
編程實現要求,要求實現寫數據,寫指令與讀忙碌
#include <REGX52.H> #include "intrins.h" sbit RS = P1^0; sbit RW = P1^1; sbit E = P1^2; #define data_buffer P0 /* 用于讀取LCD1602的忙碌狀態 */ void check_lcd_busy() {char tep = 0x80;data_buffer = 0x80;while(tep & 0x80){RS = 0;RW = 1;E = 0;_nop_();E = 1;_nop_();tep = data_buffer;} } void lcd_write_cmd(char cmd) {check_lcd_busy();RS = 0;RW = 0;E = 0;data_buffer = cmd;_nop_();E = 1;_nop_();E = 0;_nop_(); } void lcd_write_data(char datashow) {check_lcd_busy();RS = 1;RW = 0;E = 0;data_buffer = datashow;_nop_();E = 1;_nop_();E = 0;_nop_(); }?
?
?
?
?
總結
以上是生活随笔為你收集整理的51单片机通过DHT11温度传感器读取温度(2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Grand Theft Auto V
- 下一篇: 为了忘却的感情