单片机 adc0804的DB口接p0时怎么写显示程序(下面的程序是DB接p1口时)
#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharsbi...
#include <reg51.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned charsbit wr=P3^6;sbit rd=P3^7;uchar code dis[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳显示代码 void delay(uint x) //延时函数 delay(1)延时0.992ms,大约为1ms{ uchar i; while(x--) for(i=0;i<120;i++); }void display(uchar db) //数码管显示函数,用于显示模数转换后得到的数字量{ uchar bw,sw,gw; //bw,sw,gw分别等于db百位,十位,个位上的数 bw=db/100; sw=db%100/10; gw=db%10; P2=0x01; //点亮第一只数码管 P0=dis[bw]&0x7f; //最高位置0,点亮第一只数码管的小数点, delay(5); P2=0x02; //点亮第二只数码管 P0=dis[sw]; delay(5); P2=0x04; //点亮第三只数码管 P0=dis[gw]; delay(5); P2=0x08; //点亮第四只数码管 P0=dis[0]; //第四只数码管一直显示0 delay(5);} void main(){ uchar i; while(1) { wr=0; //在片选信号CS为低电平情况下(由于CS接地,所以始终为低电平), _nop_(); //WR由低电平到高电平时,即上升沿时,AD开始采样转换 wr=1; delay(1); //延时1ms,等待采样转换结束 P1=0xff; //这条语句不能少,我也还不知道为什么 rd=0; //将RD脚置低电平后,再延时大于135ns左右(这里延时1us), _nop_(); //即可从DB脚读出有效的采样结果,传送到P1口 for(i=0;i<10;i++) //刷新显示一段时间 display(P1); //显示从DB得到的数字量 } }
展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询