不需要写的那么繁琐,给你写个省略示例参考,你按实际电路修改端口定义。
- #include <STC15F2K60S2.H>
- #define uint unsigned int
- #define uchar unsigned char
- #define VCC_V 5 //宏定义电源电压5V
- uchar code table[]={//共阴数码管段码"0~f-."
- 0x3f,0x06,0x5b,0x4f,
- 0x66,0x6d,0x7d,0x07,
- 0x7f,0x6f,0x77,0x7c,
- 0x39,0x5e,0x79,0x71,0x40,0x80};
- uchar data dis_buf[4]; //缓存数组
- uint ADC_result; //ADC转换结果
- uint ADC_V;
- uchar i,j;
- void main()
- {
- //初始化略
- while(1)
- {
- // ADC_result=GetADCResult(0);//十位ADC程序略
- ADC_result=410;//模拟十位ADC结果
- ADC_V=VCC_V*100*(long)ADC_result/1024;//放大100倍,强制转换数据类型
- for(i=4;i>0;i--)
- {
- dis_buf[i-1]=ADC_V%10;//由低位到高位分解保存
- ADC_V/=10;
- }
- P0=0x00;//段消隐
- P2&=0xf0;//清位码
- P2|=~(0x01<<j);//送位码
- if(j==1)
- P0=table[dis_buf[j]]|0x80;//送段码加小数点
- else P0=table[dis_buf[j]];//送段码不加点
- j=++j%4;//循环计数
- }
- }
复制代码
|