void show_string_and_mass(void){ OLED_ShowString(0,0,weight); }
Main.c如下: #include \#include \float mass_get; float mass0; float mass; float mass00 = 0; u8 keypoint ; u8 oled_point; u8 get[5]; u8 stop_point = 1; float adc;
extern u8 fanhaoyang[5]; void ALL_Config(void) {
OLED_ShowString(68,3,weight2); get_char(fanhaoyang,mass);
OLED_ShowNum(20,3,fanhaoyang[4],1,1); OLED_ShowNum(28,3,fanhaoyang[3],1,1); OLED_ShowNum(36,3,fanhaoyang[2],1,1); OLED_ShowNum(44,3,fanhaoyang[1],1,1); OLED_ShowNum(52,3,fanhaoyang[0],1,1);
if(qupi_point == 0){
OLED_ShowCHinese(0,5,17); OLED_ShowCHinese(16,5,18); OLED_ShowCHinese(32,5,19);
}
}
RCC_Config(); LED_Config(); USART_Config(); ADC_Config(); keyboard_init(); oled_point = 1; OLED_Init(); OLED_Clear(); mass0 = 0;
int main() {
delay_ms(5000); ALL_Config(); ADC_Read(); mass00 = adc; while(1) {
TIM4_Int_Init(10,7199);
if(stop_point){
delay_ms(300); update_key(); ADC_Read(); show_mass();}
else{
OLED_Clear();
update_key();
}
//printf(\//printf(\
} }
第四节
结论与分析
确定设计方案后,在调试阶段经过电桥连接,调零电路、运放模拟、A/D模数转换器电路、单片机控制电路、数码管显示电路的实物模拟,各个部分工作正常。然后进行电路焊接,但是由于人为原因,电路存在虚焊、短接等错误,导致整个电路无法正常工作。经过反复检查调试,电路还是不能正常工作。
起初ad620n使用单电源供电方式,但是发现输出电压有区间限制在1.3V到3.3V,后把AD620N的REF脚接入-10V,VCC脚用+10V进行双电源供电。输出电压的限制就没有了,经过放大可以1V左右到3.3V(2kg满量程输入)。电压数据精确到mv位,满足从0~2kg最小分度值为1g的精确度。
4.3总结
在此次课程设计中,我们遇到了以下问题:
1、电桥偏位电压过大。由于偏位电压过大,使电子秤量程大大降低。因此,我们通过分压调零电路,消除偏位电压。
2、运算放大器小信号放大困难。由于电桥输出的变量信号非常小,因此,我们必须将该小信号放大到达到A/D转换器的分辨率。运放芯片我们先后尝试了LM358、OP07、LM741,经过对比发现,LM741对小信号的放大较为稳定,不会出现较大的跳跃。
经过八天的努力,最终如期完成任务,在做电子秤的过程中,我们碰到不少困难,但是经过请教老师、小组商讨、上网查资料,将困难一个个克服。
1、熟悉AT89S52单片机功能及工作特性,掌握其接口扩展方法。
2、通过对数据采集的分析,了解各种传感器、放大器及A/D转换器对信号的转换、传输,有了更深的认识。
元器件清单:
STM32最小系统板一个、LM358(附芯片座)一个、压力传感器一个、AD620N仪表放大器一个(附芯片座)、OLED显示屏一块、电路板一块、±10V电源(学生电源)、3.3V降压模块、电容,电阻、矩阵键盘。
评语:
成绩: