完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 浪迹天涯AS 于 2017-4-16 19:19 编辑
现在我想把它的lcd显示值扩大5倍 我的程序现在用这时可以显示的 但是只要一用keil编译 即使什么都不改只是重新编译 也用不了 lcd就变成0.000V 调节电压没用 求大神帮忙看一下是什么问题 怎么扩大5倍显示现在是1-5V 改成1-25V 求大神帮忙看看是哪 里出了问题 万分感谢!!!
|
|
相关推荐
12个回答
|
|
你的程序我没有做任何改动,只是把两个C文件合并,在Keil uVision2环境编译不报错。之于扩大量程到25V这需要在ADC0808模拟信号输入端接分压电阻以满足规定的输入电压范围,调试不出错后再修改程序。
最佳答案
|
|
|
|
求大神帮忙看看是哪 里出了问题 万分感谢!!
|
|
|
|
求大神帮忙看看是哪 里出了问题 万分感谢!!
|
|
|
|
求大神帮忙看看是哪 里出了问题 万分感谢!!
|
|
|
|
用的是什么型号的单片机?
|
|
|
|
你把#include "lcd1602.c"去掉,再把《 lcd1602.c》文件里内容全部复制到《测电压.c》文件中,即可用keil编译。文件如下:
#include "reg51.h" //#include "lcd1602.c" #define DBPort P0 //LCD数据端口 ***it LcdRs = P2^5; ***it LcdRw = P2^6; ***it LcdEn = P2^7; ***it Lcdbf = P0^7; //LCD忙标志 Busy Flag ***it start=P2^0; ***it stop=P2^2; ***it OE=P2^1; ***it clk=P2^4; ***it key=P3^0; void delay(unsigned int t); //延时 void LCD_Wait(void); //读忙状态 void LCD_Write(bit style, unsigned char input); //写数据1/命令0 void LCD_Initial(void); //初始化LCD void GotoXY(unsigned char x, unsigned char y); //移动光标到指定位置 void Print(unsigned char *str); //指定坐标输出字符串 unsigned char flag; void timerint() { TMOD=0x11;//设置定时器0为工作方式1(为十六位计数) TH0=(65536-1000)/256; TL0=(65536-1000)%256; EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 } void main() { int temp,a,b,temp1; int sum = 0; LCD_Initial(); timerint(); GotoXY(5,0); Print(" The Vol Is:"); while(1) { int k; OE=0; start=0; start=1; start=0;//下降沿,开始转换 while(stop==0)//查询是否转换结束 { k++; if(k>200) break; } OE=1; if(flag==0) { temp=P1; a = temp*(1000/51)*1.028;//1.032是修正系数 temp=0; GotoXY(1,1); Print("DC"); GotoXY(4,1); LCD_Write(1,a/1000+0x30); Print("."); LCD_Write(1,a%1000/100+'0'); LCD_Write(1,a%100/10+'0'); LCD_Write(1,a%10+'0'); Print("V"); } if(flag==1) { temp1=P1; b = temp1*(1000/51); if(b>1.5) b=b*1.491; if(b>1.0&&b<1.5) b=b*2; GotoXY(1,1); Print("AC"); GotoXY(4,1); LCD_Write(1,b/1000+0x30); Print("."); LCD_Write(1,b%1000/100+'0'); LCD_Write(1,b%100/10+'0'); LCD_Write(1,b%10+'0'); Print("V"); } OE=0; delay(1000); } } void time0() interrupt 1 { TH0=(65536-1000)/256; TL0=(65536-1000)%256; clk=~clk; if(key==0) { flag++; while(key==0); if(flag==2) flag=0; } } /*******************************************************************/ //端口定义 //#define DBPort P0 //LCD数据端口 //***it LcdRs = P2^5; //***it LcdRw = P2^6; //***it LcdEn = P2^7; //***it Lcdbf = P0^7; //LCD忙标志 Busy Flag void delay(unsigned int t) //延时 { while(t--); } void LCD_Wait(void) //读忙状态 { LcdRs=0; LcdRw=1; LcdEn=1;delay(10);LcdEn=0; //下降沿 while(Lcdbf) { LcdEn=0;LcdEn=1; //仿真才需要此语句,实际硬件中不需要 } } void LCD_Write(bit style, unsigned char input) //写数据1/命令0 { LcdRs=style; LcdRw=0; DBPort=input; LcdEn=1;delay(10);LcdEn=0; LCD_Wait(); } void LCD_Initial(void) //初始化LCD { LCD_Write(0,0x38); //8位数据端口,2行显示,5*7点阵 delay(300); LCD_Write(0,0x0c); //显示模式 LCD_Write(0,0x01); //清屏 LCD_Write(0,0x06); //输入模式 } void GotoXY(unsigned char x, unsigned char y) //移动光标到指定位置 { if(y==0) LCD_Write(0,0x80|x); if(y==1) LCD_Write(0,0xc0|x); } void Print(unsigned char *str) //指定坐标输出字符串 { while(*str) LCD_Write(1,*str++); } |
|
|
|
|
|
|
|
wulinwl 发表于 2017-4-16 20:40 我按照你说的 改了之后没有任何反应 然后我又重新把你发的复制了一遍 编译之后 还是一样 下面的图片 |
|
|
|
|
|
|
|
图片图片图片图片图片图片
|
|
|
|
|
|
|
|
如果觉得资料有用的,请支持一下
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
795 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
668 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
845 浏览 0 评论
1508 浏览 3 评论
由于 Windows 无法加载这个设备所需的驱动程序,导致这个设备工作异常?
2409 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
3700 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-28 23:52 , Processed in 0.509242 second(s), Total 83, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号