完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
#include
#include #include #define uchar unsigned char #define uint unsigned int #define out P0 /***********端口定义**********************************************************/ ***it rs=P1^0; ***it rw=P1^1; ***it e=P2^5; ***it adc_din=P3^0; ***it adc_clk=P3^1; ***it adc_drdy=P3^2; ***it adc_cs=P1^2; /***********函数申明**********************************************************/ void check_busy(void); void write_command(uchar com); void write_data(uchar dat); void LCD_initial(void); void lcd_test(void); void show(void); void delay(uint); void AD7705_init(void); void AD7705_read(); /***********数据定义**********************************************************/ unsigned int readword(); unsigned char NM[10]={0x30+0,0x30+1,0x30+2,0x30+3,0x30+4,0x30+5,0x30+6,0x30+7,0x30+8,0x30+9}; unsigned int a0,a1,a2,a3; int voltage; uint ad_out; /***********adc写函数**********************************************************/ void write_adc(unsigned char a) //发送数据 a { uchar i; adc_cs=0; adc_clk=1; _nop_(); _nop_(); _nop_(); for(i=0;i<8;i++) { adc_clk=0; _nop_(); adc_din=a&0x80; _nop_(); _nop_(); adc_clk=1; a<<=1; _nop_(); _nop_(); _nop_(); } adc_cs=1; adc_din=1; } void AD7705_init() //7705初始化 { unsigned char i; adc_clk = 1; adc_din = 1; for(i=0;i<50;i++) { adc_clk = 0; adc_din=1; adc_clk = 1; } write_adc(0x10); write_adc(0x40); write_adc(0x20); write_adc(0x0c); } /***********adc读数据函数**********************************************************/ unsigned int readword() { uchar i; uchar DATA_OUT; while(adc_drdy); adc_cs=1; adc_clk=1; _nop_(); _nop_(); adc_cs=0; _nop_(); _nop_(); for(i=0;i<8;i++) { DATA_OUT<<=1; adc_clk=0; _nop_(); DATA_OUT=DATA_OUT|(uchar)adc_din; _nop_(); _nop_(); adc_clk=1; _nop_(); _nop_(); } adc_cs=1; _nop_(); adc_drdy=1; return(DATA_OUT); } /***********adc完成读函数及数据转换函数**********************************************************/ void AD7705_read() { uchar MSB,LSB; write_adc(0x38); MSB=readword(); LSB=readword(); ad_out=(uint)MSB; ad_out<<=8; ad_out=ad_out|(uint)LSB; voltage=ad_out*5000/65536; // 原数据*1000 保留四位数据; } /***********延时函数**********************************************************/ void delay(uint j) { uchar i=250; for(;j>0;j--) { while(--i); i=249; while(--i); i=250; } } //查忙程序 void show() { write_command(0x80); write_data(0x54); write_data(0x5f); write_data(0x41); write_data(0x4c); write_data(0x43); write_data(0x4f); write_data(0xa0); write_data(NM[a0]); write_data(NM[a1]); write_data(NM[a2]); write_data(0x47); write_data(0x2f); write_data(0x4d); write_data(0x4c); write_command(0x80+0x40); write_data(0x4d); write_data(0x5f); write_data(0x41); write_data(0x4c); write_data(0x43); write_data(0x4f); write_data(0xa0); write_data(0x2e); write_data(0x47); write_data(0x2f); write_data(0x4d); write_data(0x4c); delay(100); delay(5); write_command(0x01); //清屏 } void check_busy(void) { uchar dt; do { dt=0xff; e=0; rs=0; rw=1; e=1; dt=out; } while(dt&0x80); e=0; } //写控制指令 void write_command(uchar com) { check_busy(); e=0; rs=0; rw=0; out=com; e=1; _nop_(); e=0; delay(1); } //写数据指令 void write_data(uchar dat) { check_busy(); e=0; rs=1; rw=0; out=dat; e=1; _nop_(); e=0; delay(1); } //液晶屏初始化 void LCD_initial(void) { write_command(0x38);//8位总线,双行显示,5X7的点阵字符 write_command(0x0C);//开整体显示,光标关,无黑块 write_command(0x06);//光标右移 write_command(0x01);//清屏 delay(1); } void main() { LCD_initial(); //LCD1602 初始化 AD7705_init(); while(1) { delay(10); while(adc_drdy); AD7705_read() ; a0=voltage/1000; a1=(voltage%1000)/100; a2=(voltage%100)/10; a3=voltage%1000; show(); } } |
|
相关推荐
6 个讨论
|
|
你正在撰写讨论
如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。
528 浏览 0 评论
654 浏览 0 评论
858 浏览 0 评论
837 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
770 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17058 浏览 31 评论
浏览过的版块 |
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 11:10 , Processed in 1.115948 second(s), Total 68, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
554