- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includeAT89X51.H
#includeintrins.h
/***************************
数码管为共阴数码管
***************************/
sbit s0=P2^7;//个位选通
sbit s1=P2^6;//十位选通
sbit s2=P2^5;//百位选通
sbit s3=P2^4;//千位选通
sbit dp=P0^7;//小数点
sbit in=P3^2;//外部中断,接CX20106的脚
sbit csb=P3^3;//40KHz方波输出脚
#define seg P0 //数码管的数据口为P1口
#define uchar unsigned char
#define uint unsigned int
#define nop _nop_()
/****************************/
void init(void);//初始化
void delay_nms(uint n);//延时nms
void delay100us();//延时us
void display(uint dat);//4位数码管显示函数,只用了位
void tran(void);//超声波测量函数
/***************************/
uint dis,H=100,L=20;
uchar flag=0,high_time,low_time,m=0;
uchar leddata[]={
0x3F, //0
0x06, //1
0x5B, //2
0x4F, //3
0x66, //4
0x6D, //5
0x7D, //6
0x07, //7
0x7F, //8
0x6F, //9
0x77, //A
0x7C, //B
0x39, //C
0x5E, //D
0x79, //E
0x71, //F
0x76, //H
0x38, //L
0x37, //n
0x3E, //u
0x73, //P
0x5C, //o
0x40, //-
0x00, //熄灭
0x00 //自定义
};
void delay100us()
{
uchar i;
for(i=0;i50;i++)
;
}
/**********************************
函数名称:主函数
修改日期:
入口参数:无
返回值: 无
**********************************/
void main(void)
{
init();
while(1) //循环测量并显示
{
tran();//发送超声波信号测距
display(dis);//显示距离
}
}
/**********************************
函数名称:初始化函数
修改日期:
入口参数:无
返回值: 无
**********************************/
void init(void)
{
TMOD=0x01;//定时器方式用于计时
TH0=0;
TL0=0; /* 设定T0的工作模式为*/
EA=1;
IT0=1;//下降沿有效,左传感器
}
/**********************************
函数名称:延时函数
修改日期:
入口参数:n
返回值: 无
**********************************/
void delay_nms(uint n)
{
uchar i;
while(n--)
{
for(i=123;i0;i--);
}
}
/**********************************
函数名称:显示函数
修改日期:
入口参数:data
返回值: 无
**********************************/
void display(uint dat)
{
uchar i,j,k;//分别为百十个位的缓存
i=dat/100;//百位
j=dat%100/10;//十位
k=dat%100%10;//个位
s3=1;s2=0;s1=1;s0=1;
seg=~leddata[i];
dp=0;
delay_nms(2);
dp=1;
s2=1;
s3=1;s2=1;s1=0;s0=1;
seg=~leddata[j];
delay_nms(2);
s1=1;
s3=1;s2=1;s1=1;s0=0;
seg=~leddata[k];
delay_nms(2);
s0=1;
}
/**********************************
函数名称:超声波测量函数
修改日期:
入口参数:无
返回值:
文档评论(0)