1 #include 2 #define uchar unsigned char //宏定义无符号字符型 3 #define uint unsigned int //宏定义无符号整型 4 code uchar seg7code[10]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //显示段码 数码管字跟 5 uchar wei[4]={0XEf,0XDf,0XBf,0X7f}; //位的控制端 //位控制码 6 sbit ST=P3^0; //A/D启动转换信号 7 sbit OE=P3^1; //数据输出允许信号 8 sbit EOC=P3^2; //A/D转换结束信号 9 sbit CLK=P3^3; //时钟脉冲 10 uint z,x,c,v,AD0809, date; //定义数据类型 11 /****************************************************************** 12 延时函数 13 ******************************************************************/ 14 void delay(uchar t) 15 { 16 uchar i,j; 17 for(i=0;i 19 for(j=13;j>0;j--); 20 { ; 21 } 22 } 23 } 24 /********************************************************************** 25 数码管动态扫描 26 *********************************************************************/ 27 void xianshi() //显示函数 28 { 29 uint z,x,c,v; 30 z=date/1000; //求千位 31 x=date%1000/100; //求百位 32 c=date%100/10; //求十位 33 v=date%10; //求个位 34 35 P2=0XFF; 36 P0=seg7code[z]&0x7f; 37 P2=wei[0]; 38 delay(80); 39 P2=0XFF; 40 P0=seg7code[x]; 41 P2=wei[1]; 42 delay(80); 43 P2=0XFF; 44 P0=seg7code[c]; 45 P2=wei[2]; 46 delay(80); 47 P2=0XFF; 48 P0=seg7code[v]; 49 P2=wei[3]; 50 delay(80); 51 P2=0XFF; 52 } 53 /************************************************************************* 54 CLK振荡信号 55 **************************************************************************/ 56 void timer0( ) interrupt 1 //定时器0工作方式1 57 { 58 59 TH0=(65536-2)/256; //重装计数初值 60 TL0=(65536-2)%256; //重装计数初值 61 CLK=!CLK; //取反 62 } 63 64 /************************************************************************* 65 主函数 66 **************************************************************************/ 67 void main() 68 { 69 TMOD=0X01; //定时器中断0 70 71 CLK=0; //脉冲信号初始值为0 72 TH0=(65536-2)/256; //定时时间高八位初值 73 TL0=(65536-2)%256; //定时时间低八位初值 74 EA=1; //开CPU中断 75 ET0=1; //开T/C0中断 76 TR0=1; 77 while(1) //无限循环 78 { 79 ST=0; //使采集信号为低 80 ST=1; //开始数据转换 81 ST=0; //停止数据转换 82 while(!EOC); //等待数据转换完毕 83 OE=1; //允许数据输出信号 84 AD0809=P1; //读取数据 85 OE=0; //关闭数据输出允许信号 86 if(AD0809>=251) //电压显示不能超过5V 87 AD0809=250; 88 date=AD0809*20; //数码管显示的数据值,其中20为采集数据的毫安值 89 xianshi(); //数码管显示函数 90 91 } 92 }
上一篇:自定义reg52.h头文件(单片机学习重难点核心知识点)
下一篇:基于AT89C51单片机烟雾传感器
推荐阅读最新更新时间:2024-11-13 18:20
设计资源 培训 开发板 精华推荐
- ADCLK950/PCBZ,ADCLK950 时钟扇出缓冲器评估板
- 使用 Microchip Technology 的 TC05BC 的参考设计
- 使用 Infineon Technologies AG 的 IRU3004 的参考设计
- ADR280 高 PSRR 负参考电压的典型应用
- 使用 ROHM Semiconductor 的 BA15BC0WT-V5 的参考设计
- 使用 MaxLinear, Inc 的 SP6222 的参考设计
- LT1619、24W、4.75V 至 5.25V 输入、48V/5A 输出电源
- 具有欠压锁定功能的 LT1317IS8 2 节电池至 5V DC/DC 转换器的典型应用电路
- 使用 Diodes Incorporated 的 PT8A 3519CPE 的参考设计
- AD8066ARM-EBZ,高速通用评估板专为具有 AD8066ARMZ 功能而设计,还可帮助客户快速制作新的双运放电路原型并缩短设计时间