8051 单片机 ADC0804 模数转换显示,四舍五入实现
include <reg51.h>
sbit cs =p1^3; sbit wr =p1^2; sbit rd =P1^1; int seg []=(0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90); unsigned char dat ; void adc0804(); void display (); void delay ( int i ) while ( i --);
void main () while (1) adc0804(); display ();
void adc0804()
cs =0; wr =0; cs =1; wr = l ; delay (500); cs =0; rd =0; dat =P3; cs = l ; rd =1;void display (){ unsigned int vol ; vol = dat *500.0/255;p2=0xfb; P0= seg [ vol /100]&0x7f; delay (200); p2=0xfd; P0= seg [ vol %100/10]; delay (200); P2=0xfe; P0= seg [ vol %10]; delay (200);
// 四舍五入实现 unsigned int vol ; vol = (dat * 500.0 + 127.0) / 255; // 添加 127.0 用于四舍五入 p2=0xfb; P0= seg [ vol /100]&0x7f; delay (200); p2=0xfd; P0= seg [ vol %100/10]; delay (200); P2=0xfe; P0= seg [ vol %10]; // 删除之前的行 if (vol % 10 >= 5) P0 |= 0x80; // 如果最后一位数字大于等于 5,则进位 delay (200);
原文地址: https://www.cveoy.top/t/topic/ofHI 著作权归作者所有。请勿转载和采集!