完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
按设计要求用ADC0809,但proteus里没有这个模型,用的ADC0808,仿真不出来,截了三个图,弟弟我弄的头都蒙了,真心求解救
软件程序 #include #include #include #define uchar unsigned char #define uint unsigned int ***it rs=P3^5; ***it wr=P3^6; ***it lcden=P3^4; ***it WR12=P2^1; ***it CS=P2^0; ***it CLK=P3^1; ***it DIO=P3^2; ***it CS1=P3^3; uchar table1[]="input"; uchartable2[]="0000MA"; //uchartable3[]="output"; //uchar table4[]="MA"; //uchartable3[]="0000"; uchar keyflag;//进入中断标志 uchar c;//数组位置 bit set,jia,jian,right;//四个按键 uchar m;//K1按下次数的标志 uchar keyvalue; ***it k1=P2^2; ***it k2=P2^3; ***it k3=P2^4; ***it k4=P2^5;//uchar s;//总数 void delay(uint x) { uinta,b; for(a=x;a>0;a--) for(b=10;b>0;b--); } void delay20ms(void) //误差0us { unsigned char a,b; for(b=215;b>0;b--) for(a=45;a>0;a--); // _nop_; //if Keil,require useintrins.h // _nop_; //if Keil,require use intrins.h } void delay1(uint x) { uinta,b; for(a=x;a>0;a--) for(b=100;b>0;b--); } void write_com(uchar com) { P0=com; rs=0; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } void write_date(uchar date) { P0=date; rs=1; lcden=0; delay(10); lcden=1; delay(10); lcden=0; } void init() { wr=0; write_com(0x38); delay(20); write_com(0x0c); delay(20); // write_com(0x06); // delay(20); write_com(0x01); delay(20); } void keyscan() { if(k1==0) { delay20ms(); if(k1==0) { while(!k1); keyvalue=1; set=1; m++; } } if(k2==0) { delay20ms(); if(k2==0) { while(!k2); keyvalue=2; right=1; } } if(k3==0) { delay20ms(); if(k3==0) { while(!k3); keyvalue=3; jia=1; } } if(k4==0) { delay20ms(); if(k4==0) { while(!k4); keyvalue=4; jian=1; } } }//ad采集并返回 unsigned char A_D() { unsigned char i,dat; CS1=1; //一个转换周期开始 CLK=0; //为第一个脉冲作准备 CS1=0; //CS置0,片选有效 DIO=1; //DIO置1,规定的起始信号 CLK=1; //第一个脉冲 CLK=0; //第一个脉冲的下降沿,此前DIO必须是高电平 DIO=1; //DIO置1,通道选择信号 CLK=1; //第二个脉冲,第2、3个脉冲下沉之前,DI必须跟别输入两位数据用于选择通道,这里选通道CH0 CLK=0; //第二个脉冲下降沿 DIO=0; //DI置0,选择通道0 CLK=1; //第三个脉冲 CLK=0; //第三个脉冲下降沿 DIO=1; //第三个脉冲下沉之后,输入端DIO失去作用,应置1 CLK=1; //第四个脉冲 for(i=0;i<8;i++) //高位在前 { CLK=1; //第四个脉冲 CLK=0; dat<<=1; //将下面储存的低位数据向右移 dat|=(unsignedchar)DIO; //将输出数据DIO通过或运算储存在dat最低位 } CS1=1; //片选无效 return dat; //将读书的数据返回 } void main() { uchara,s,q=0,w=0,e=0,r=0,aa,bb; uintcc;//cc=(1000*table2[0]+100*table2[1]+10*table2[2]+table2[3])*3/255; CS=0; WR12=0; init(); write_com(0x80+0x00); delay(20); for(a=0;a<5;a++) { write_date(table1[a]); delay(20); } write_com(0xc0+0x00); delay(50); for(a=0;a<6;a++) { write_date(table2[a]); delay(40); } /* write_com(0x80+0x08); delay(50); for(a=0;a<6;a++) { write_date(table3[a]); delay(40); } write_com(0xc0+0x08); delay(50); for(a=0;a<6;a++) { write_date(table4[bb]); delay(40); }*/ while(1) { keyscan(); if((keyvalue==1)&&(m%2==1)) { write_com(0xc0+0x00); write_com(0x0f); } elseif((keyvalue==1)&&(m%2==0)) { write_com(0x0c); } if(set==1) { switch(keyvalue) { case2:c++; if(c==4) { c=0; } write_com(0xc0+0x00+c); write_com(0x0f); break; case3:table2[c]++; if(table2[c]>'9') { table2[c]='0'; } //table3[c]++; if(c==0) { q++; } if(c==1) { w++; } if(c==2) { e++; } if(c==3) { r++; } write_com(0xc0+0x00+c); write_date(table2[c]); write_com(0xc0+0x00+c); write_com(0x0f); break; case4: table2[c]--; if(table2[c]<'0') { table2[c]='9'; } //table3[c]--; if(c==0) { q--; } if(c==1) { w--; } if(c==2) { e--; } if(c==3) { r--; } write_com(0xc0+0x00+c); write_date(table2[c]); write_com(0xc0+0x00+c); write_com(0x0f); break; } keyvalue=0; } cc=(1000*q+100*w+10*e+r); //mm=cc*33.5; //s=(uchar)(mm>>8); s=(uchar)(cc*0.180); // CS=1; P1=s; aa=A_D(); bb=aa; if(bb>cc) s--; else if(bb s++; } } |
|
相关推荐
5个回答
|
|
在线等,后天就交了 很急,谢谢大家
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
6406 浏览 3 评论
7672 浏览 1 评论
7917 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9735 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1286 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 06:43 , Processed in 0.658046 second(s), Total 81, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号