全球旧事资料 分类
51单片机控制温湿度传感器DHT11然后在LCD1602上显示当前的温湿度及单位其中湿度在第一行显示温度在第二行显示。单片机为YL9最小系统。i
cludereg51hi
cludei
tri
shtypedefu
sig
edcharBYTEtypedefu
sig
edi
tWORDdefi
eui
tu
sig
edi
tdefi
eucharu
sig
edcharsbitioP10dht11data端接单片机的P10口sbitrwP21一下三行是设置lcd1602的使能端sbitrsP20sbitepP22typedefbitBOOL此声明一个布尔型变量即真或假uchardata_byteucharRHRLTHTL
延时函数voiddelayucharms延时模块
uchariwhilems
fori0i100i
voiddelay1一个for循环大概需要8个多机器周期一个机器周期为1us晶振为12MHz也就是说本函数延时8us多此延时函数必须德稍微精确一点
fucharifori0i1i

lcd模块BOOLlcd_bz测试lcd忙碌状态返回值为布尔型数值真或假10

BOOLresult
rs0
读忙信号
rw1
ep1
_
op_
_
op_
_
op_
_
op_
resultBOOLP20x80
ep0
result
voidwrite_cmducharcmd写指令

whilelcd_bzrs0rw0ep0_
op__
op_P0cmd
f_
op__
op__
op__
op_ep1_
op__
op__
op__
op_ep0
voidwrite_addrucharaddr写地址
write_cmdaddr0x80LCD第一行的首地址为0x80第二行的首地址为0x800x400xc0
voidwrite_byteuchardat写字节
whilelcd_bzrs1rw0ep0_
op__
op_P0dat_
op__
op__
op__
op_ep1_
op__
op__
op_
f_
op_ep0
voidlcd_i
itlcd初始化
write_cmd0x38设置LCD两行显示一个数据由57点阵表示数据由8跟线传输delay1write_cmd0x0c清除屏幕显示delay1write_cmd0x06设定输入方式增量不移位delay1write_cmd0x01开整体显示关光标不闪烁delay1
voiddisplayucharaddrucharq在某一地址上显示内容adder表示的是地址偏移量q表示显示的字符或数字
delay10write_addraddrwrite_byteqdelay1修改此时间可以改变LCD上数值跳变的数度
fdht11测试某块voidstart开始信号
io1delay1io0delay25主机把总线拉低必须大于18ms保证DHT11能检测到起始信号io1发送开始信号结束后拉高电平延时2040usdelay1以下三个延时函数差不多为24us符合要求delay1delay1
ucharreceive_byte接收一个字节
ucharitempfori0i8i接收8bit的数据
whileio等待50us的低电平开始信号结束delay1开始信号结束之后延时26us28us以下三个延时函数
delay1
fdelr
好听全球资料 返回顶部