完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include #define uint unsigned int #define uchar unsigned char #define lcd_po P2 uchar code table[]="temperature"; ***it rs=P1^0; ***it rw=P1^1; ***it en=P1^2; ***it ds=P1^3; uint temp; float ftemp; bit fg; void delay_ms(uint time) { uint i; for(time;time>0;time--) for(i=124;i>0;i--); } void delay_us(uint timeus) { while(timeus--); } void lcd_wt(uchar lwt) { rs=1; rw=0; en=0; _nop_(); lcd_po=lwt; delay_ms(5); en=1; delay_ms(5); en=0; } void lcd_com(uint lcom) { rs=0; rw=0; en=0; _nop_(); lcd_po=lcom; delay_ms(5); en=1; delay_ms(5); en=0; } void lcd_init() { en=0; lcd_wt(0x38); delay_ms(5); lcd_wt(0x06); delay_ms(5); lcd_wt(0x0c); delay_ms(5); lcd_wt(0x01); delay_ms(5); } void ds_init() { uint i; ds=1; delay_us(4); ds=0; delay_us(80); ds=1; i=20; while(ds==1) { if(i-- ==0) break; } i=100; while(ds==0) { if(i-- ==0) break; } delay_us(5); ds=1; } void ds_wt(uchar b) { uint i,j; bit btmp=0; for(j=0;j<8;j++) { btmp=b&0x01; b=b>>1; if(btmp) { ds=0; i++;i++; ds=1; i=8; while(i) { i--; } }else { ds=0; i=8; while(i) { i--; } ds=1; i++;i++; } } } uchar ds_read(void) { uchar i,j,dat; dat=0; j=0; dat=0; for(i=0;i<8;i++) { ds=0; dat=dat>>1; ds=1; if(ds) { dat=dat|0x80; } delay_us(10); } return dat; } uchar ds_getmath() { uchar tl,th; ds_init(); ds_wt(0xcc); ds_init(); ds_wt(0x44); ds_init(); ds_wt(0xcc); ds_init(); ds_wt(0xbe); tl=ds_read(); th=ds_read(); temp=th; temp=temp<<8; temp=temp|tl; if(th<0x80) { fg=0; } if(th>=0x80) { fg=1; temp=~temp+1; } ftemp=temp*0.0625; temp=ftemp*100+0.5; return temp; } void main() { uint i; lcd_init(); while(1) { ds_getmath(); lcd_com(0x80); for(i=0;i<11;i++) { lcd_wt(table[i]); delay_ms(5); } lcd_com(0x80+0x40); if(!fg) { lcd_wt('-'); } if(temp/10000) { lcd_wt(temp/10000%10); } if(temp/1000) { lcd_wt(temp/1000%10); } if(temp/100) { lcd_wt(temp/100%10); } if(temp/10) { lcd_wt('0'); lcd_wt('.'); lcd_wt(temp/10%10); } if(temp/1) { lcd_wt('0'); lcd_wt('.'); lcd_wt('0'); lcd_wt(temp%10); } } } 1602不显示 温度不知道有没有测出来 |
|
相关推荐
26个回答
|
|
哇,50积分
|
|
|
|
你1602的驱动显示可以吗?测试下18B20的时序是不是正确
|
|
|
|
驱动显示我觉得是对的,但是1602连第一行都没有显示,不知道问题出在哪里~~ |
|
|
|
先用实现简单显示才能知道是显示问题还是测温的问题啊 |
|
|
|
你先调试1602显示成功了再去调试18b20时序。你可以把你的1602程序另外建个工程调试 |
|
|
|
ds_read(void)你这个函数有问题吧。感觉没有读取总线上的数据吧
|
|
|
|
哦,错了,已经读了。看看是不是这样,ds_read(void)这个函数,ds=1;后加几个延时_nop_(); _nop_();_nop_();不马上读取ds上数据,给个数据传输时间,但是要控制在15微秒之内 |
|
|
|
我已经改了,但是还是没有作用 啊~~ 应该是显示的程序出问题了~~~~因为上面的数组 都没有显示出来~~~~~就是一个白屏 |
|
|
|
好的好的,我去试试~~~ |
|
|
|
~~~~~~~~~~~~~~~~~~~~~~~·
|
|
|
|
1602的电路控制不对。
|
|
|
|
调整一下液晶屏的对比度,
|
|
|
|
你可以试一下用定时器定时扫描18B20里面的数据看看,我之前貌似也试过这样的显示不出来。
|
|
|
|
你看一下我写的显示函数吧 |
|
|
|
觉得你应该先把显示搞定在说
|
|
|
|
初始化的LCD_Write_Command(0x0f),你可以改回LCD_Write_Command(0x0c)。想了解1602的指令直接百度指令表 |
|
|
|
|
|
|
|
白屏的话应该是显示的问题,18b20时序错误也应该显示全F。
建议首先看看1602电路里有没有调节对比度的电位器,如果有调下对比度试试。 其次检查管脚定义的是不是正确的,如果排除了硬件问题,建议你下一个简单的1602例程试试,看是不是屏坏了。 |
|
|
|
你试试这个
#include "reg52.h" #define uchar unsigned char typedef bit BOOL ; ***it rs = P2^6 ; ***it rw = P3^6 ; ***it ep = P2^7 ; void delay(uchar ms) { // 延时子程序 uchar i ; while(ms--) { for(i = 0 ; i<250;i++) ; } } void longdelay(uchar s) //长延时 { while(s--) { delay(60) ; } } BOOL lcd_bz()//测试LCD忙碌状态 { BOOL result ; rs = 0 ; rw = 1 ; ep = 1 ; result = (BOOL)(P0 & 0x80) ; ep = 0 ; return result ; } void write_cmd(uchar cmd)// 写指令 { while(lcd_bz()) ; rs = 0 ; rw = 0 ; ep = 0 ; P0 = cmd ; ep = 1 ; ep = 0 ; } void write_addr(uchar addr)//写地址 { write_cmd(addr|0x80) ; } void write_byte(uchar dat)//写字节 { while(lcd_bz()) ; rs = 1 ; rw = 0 ; ep = 0 ; P0 = dat ; ep = 1 ; ep = 0 ; } void lcd_init()// 初始化 { write_cmd(0x38) ; delay(1); write_cmd(0x08) ; delay(1); write_cmd(0x01) ; delay(1); write_cmd(0x06) ; delay(1); write_cmd(0x0c) ; delay(1); } void display(uchar addr, uchar q)//在某一地址上显示一字节 { delay(10) ; write_addr(addr) ; write_byte(q) ; longdelay(2) ; } main() { lcd_init() ; // 初始化LCD delay(10) ; // lcd_wcmd(0x07) ; //entry mode set delay(1) ; while(1) { display(0x00,'R') ;//在第一个位置显示R display(0x01,0x31)// 在第二个位置显示1,(1的ASCII码为31) } } |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
727 浏览 0 评论
815 浏览 0 评论
850 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
823 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
1274 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11816 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-28 22:29 , Processed in 0.911696 second(s), Total 106, Slave 89 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号