完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
#include //1602液晶相关I/O设置 #define E RB0 #define RW RB1 #define RS RB2 //A/D转换用寄存器设置 unsigned int ADbuf; double i_val=0, f_val=0; unsigned char adcbuf[16]; //名称:1602液晶用延时函数 void Delay1602(unsigned int t) { unsigned int k; for(k=0;k //名称:1602液晶忙检测函数 void LCD1602_busy(void) { TRISB7=1; RS=0; RW=1; E=1; while(RB7==1); E=0; TRISB7=0; } //名称:1600写命令函数 void LCD1602_Write_com(unsigned char combuf) { RS=0; RW=0; PORTB=combuf&0xf0; E=1; asm("NOP");asm("NOP"); E=0; PORTB=(combuf&0x0f)<<4; E=1; asm("NOP"); asm("NOP"); E=0; } //名称:1602写命令函数(带忙检测) void LCD1602_Write_com_busy(unsigned char combuf) { LCD1602_busy(); LCD1602_Write_com(combuf); } //名称:1602写数据函数(带忙检测) void LCD1602_Write_data_busy(unsigned char databuf) { LCD1602_busy(); RS=1; RW=0; PORTB=databuf&0xf; E=1; asm("NOP"); asm("NOP"); E=0; PORTB=(databuf&0x0f)<<4; E=1; asm("NOP"); asm("NOP"); E=0; } //名称:1602液晶显示地址写函数 void LCD1602_Write_address(unsigned char x,unsigned char y) { x&=0x07; y&=0x01; if(y==0) LCD1602_Write_com_busy(x|0x80); else LCD1602_Write_com_busy((x+0x40)|0x80); } //名称:1602液晶初始化函数 void LCD1602_init(void) { Delay1602(1500); LCD1602_Write_com(0x28); Delay1602(500); LCD1602_Write_com(0x28); Delay1602(500); LCD1602_Write_com(0x28); LCD1602_Write_com_busy(0x28); LCD1602_Write_com_busy(0x08); LCD1602_Write_com_busy(0x01); LCD1602_Write_com_busy(0x06); LCD1602_Write_com_busy(0x0C); } //名称:1602液晶指定地址显示函数 void LCD1602_Disp(unsigned char x,unsigned char y,unsigned char buf) { LCD1602_Write_address(x,y); LCD1602_Write_data_busy(buf); } //名称: 主函数 void main(void) { unsigned char i; TRISA=0B11111111; TRISB=0B00000000; PORTA=0B00000000; PORTB=0B00000000; LCD1602_init(); //调用1602液晶初始化函数 //****A/D模块初始化**** ADCON1=0B00000000; //RA0为A/D输入口;ADFM=0,转换后数据左移,ADRES为高8位数据 ADIE=0; //禁止A/D中断 //********************* while(1) { for(i=0;i<16;i++) //连续采样16次,然后取平均数 { //***启动一次A/D转换*** ADCON0=0B00000001; //选择AN0通道准备进行A/D转换,启动A/D模块 asm("NOP"); asm("NOP"); asm("NOP"); asm("NOP"); GODONE=1; while(GODONE) continue; adcbuf[i]=ADRES; //将8位A/D转换结果暂存在数组中 //********************* } ADbuf=0; for(i=0;i<16;i++) { ADbuf+=adcbuf[i]; } ADbuf=ADbuf/16; i_val=(double)ADbuf; i_val=(i_val*500)/255; f_val = modf(i_val, &i_val); if(i_val>999) i_val=999; ADbuf=(int)i_val; //******************************* LCD1602_Disp(0,0,(ADbuf/100)+0x30); //百位 LCD1602_Disp(1,0,'.'); LCD1602_Disp(2,0,(ADbuf%100)/10+0x30); //十位 LCD1602_Disp(3,0,(ADbuf%10)+0x30); //个位 LCD1602_Disp(4,0,'A'); LCD1602_Disp(4,1,'o'); } } 求大神帮忙修改下程序,弄成4线控制1206的。。。。弄不好呀,没反映!
|
|
相关推荐
1个回答
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
418 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1083 浏览 0 评论
846 浏览 0 评论
886 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
882 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11831 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-30 17:38 , Processed in 0.623390 second(s), Total 73, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号