c语言转速数码管显示,AD转换的数码管显示(C语言)

/*本例程采用AD0804芯片,硬件电路:cs片选端接P2.3,WR写数据端写P3.6,RD读数据端接P3.7,锁存端接P2.6脚,数码管位选端分别接P3.2 ,P3.3,P3.4,段选端接P1口*/

#include//头文件

#define uint unsigned int//宏文件

#define uchar unsigned char//宏文件

uchar num;//变量

void delay3(uint z);//延时定义

void dissy();//延时函数定义

sbit ge=P3^2;//个位定义

sbit shi=P3^3;//十位定义

sbit bai=P3^4;//百位定义

sbit ad_cs=P2^3;//片选端

sbit ad_wr=P3^6;//写数据端

sbit ad_rd=P3^7;//读数据端

sbit pian=P2^6;//锁存器片选

void add();//ad转换子函数

void delay(uint i);//延时子函数申明

uchar code table[]={

0xc0,0xf9,0xa4,0xb0,0x99,

0x92,0x82,0xf8,0x80,0x90,

0x88,0x83,0xc6,0xa1,0x86,

0x8e

};//数组

/************主函数**********/

void main()

{

while(1)

{

add();//调用AD转换子函数

dissy();//数码管显示子函数

}

}

/************AD转换子函数**********/

void add()//AD转换子函数

{

uchar i;

ad_cs=1;//将片选关闭

ad_cs=0;//将片选打开

ad_wr=1;//写数上升沿

ad_wr=0;//写数下降沿

ad_wr=1;//写数上升沿

P1=0xff;//送数到P0口

ad_rd=1;//读数上升沿

delay(25);//延时一会儿

ad_rd=0;//读数下降沿

//**************因为AD转换时间周期长,我现在的数码管没有采用锁存器,AD转换时间大于显示时间,所以显示时会闪烁,解决此问题方法是,连续调用了显示子程序七次,这样显示时就和AD转换时一至,显示出来的数就不闪了********************//

for(i=0;i<7;i++) //调用7次,相当于delay(255)

void dissy();

//**********************************//

num=P1;//将数给计数器num

}

/************显示子函数**********/

void dissy()//显示子函数

{

P0=table[num/100];//百位显示数据

bai=0;//百位打开

delay(14);//延时一会

bai=1;//关闭百位

P0=table[num%100/10];//十位显示数据

shi=0;//十位打开

delay(14);//延时一会

shi=1;//关闭十位

P0=table[num%10];//百位显示数据

ge=0;//关闭十位

delay(14);//延时一会

ge=1;//关闭十位

}

/**************延时子函数*************/

void delay(uint i)//延时函数

{

uint j,k;//定义变量

for(j=i;j>0;j--)//外循环

for(k=30;k>0;k--);//内循环

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值