logo资料库

ADC0809多路同时采样.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
/******************************************************************** 串行 12864 显示.c ***********************************************************************/ #include #include #define uchar unsigned char #define uint unsigned int sbit CS=P2^7; sbit SID=P2^6; sbit SCLK=P2^5; //片选信号 //数据信号 //时钟信号 //sbit RST=P2^4; //sbit CH=P2^3; RST 及 WR 为低电平 CH 及 PSB 低电平使用串行显示 STR=P2^3; sbit sbit EOC=P2^4; sbit OE=P0^4; sbit A7=P0^5; sbit B7=P0^6; sbit C7=P0^7; uint adc0808_init(); uint adc0809_init(); uint adc0810_init(); void init_timer(); int i,s,dat_1,dat_2,dat_3,t,n; /******************************************************************** * 名称 : delay() * 功能 : 延时,延时时间为 100us * t。这是通过软件延时,有一定误差。 * 输入 : t * 输出 : 无 ***********************************************************************/ void delay(unsigned int t) { unsigned int i,j; for(i=0; i
void sendbyte(unsigned char zdata) { unsigned int i; for(i=0; i<8; i++) { if((zdata << i) & 0x80) { SID = 1; } else { SID = 0; } SCLK = 0; SCLK = 1; } } /******************************************************************** * 名称 : write_com() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无 ***********************************************************************/ void write_com(unsigned char cmdcode) { CS = 1; sendbyte(0xf8); sendbyte(cmdcode & 0xf0); sendbyte(cmdcode << 4); delay(2); } /******************************************************************** * 名称 : write_data() * 功能 : 写串口指令 * 输入 : cmdcode * 输出 : 无 ***********************************************************************/ void write_data(unsigned char Dispdata) { CS = 1; sendbyte(0xfa); sendbyte(Dispdata & 0xf0);
sendbyte(Dispdata << 4); delay(2); } /******************************************************************** * 名称 : lcdinit() * 功能 : 初始化函数 * 输入 : cmdcode * 输出 : 无 ***********************************************************************/ void lcdinit() { delay(100); delay(20000); write_com(0x30); delay(50); write_com(0x0c); delay(50); } /******************************************************************** * 名称 : hzkdis() * 功能 : 显示字符串 * 输入 : *s * 输出 : 无 ***********************************************************************/ void hzkdis(unsigned char code *s) { while(*s > 0) { write_data(*s); s++; delay(50); } } /******************************************************************** * 名称 : Test() * 功能 : 显示子函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Test() {
"); BMW write_com(0x03); delay(50); write_com(0x80); hzkdis(" write_com(0x90); hzkdis("1."); write_com(0x88); hzkdis("2."); write_com(0x98); hzkdis("3."); /*s++; if(s==10) { s=0; } write_com(0x89); write_data(s+0x30);*/ } /******************************************************************** * 名称 : Main() * 功能 : 主函数 * 输入 : 无 * 输出 : 无 ***********************************************************************/ void Main() { init_timer(); delay(1); lcdinit(); delay(10); i=0; s=1; while(1) { adc0808_init(); delay(50); dat_1=dat_1*1.0/255*500; write_com(0x91); write_data(dat_1/100+0x30); hzkdis("."); write_com(0x92);
write_data(dat_1/10%10+0x30); write_data(dat_1/100%10+0x30); adc0809_init(); dat_2=dat_2*1.0/255*500; write_com(0x89); write_data(dat_2/100+0x30); hzkdis("."); write_com(0x8A); write_data(dat_2/10%10+0x30); write_data(dat_2/100%10+0x30); adc0810_init(); dat_3=dat_3*1.0/255*500; write_com(0x99); write_data(dat_3/100+0x30); hzkdis("."); write_com(0x9A); write_data(dat_3/10%10+0x30); write_data(dat_3/100%10+0x30); Test(); delay(500); } } uint adc0808_init() { A7=1; B7=1; C7=1; STR=0; STR=1; STR=0; OE=1; while(EOC==0); OE=0; dat_1=P1; return dat_1; } uint adc0809_init() { A7=0; B7=1; C7=1; STR=0; //ADC0809 采样 //ADC0809 采样
//ADC0809 采样 STR=1; STR=0; OE=1; while(EOC==0); OE=0; dat_2=P1; return dat_2; } uint adc0810_init() { A7=1; B7=0; C7=1; STR=0; STR=1; STR=0; OE=1; while(EOC==0); OE=0; dat_3=P1; return dat_3; } void init_timer() { EA=1; ET0=1; ET1=1; TMOD=0x11; TH0=0xfc; TL0=0x18; TR0=1; } void t0() interrupt 1 using 0 //更改这里可以完成 8 路采样 { TH0=0x15; TL0=0x9f; t++; if(t==7) { adc0808_init();
} //每 10ms 启动 A/D if(t==14) { adc0809_init(); } //每 10ms 启动 A/D if(t==20) { adc0810_init(); t=0; } }
分享到:
收藏