返回 Case=0 显示时间 Case=1 显示年 Case=2显示日月 Case=3 修改时间 Case=4修改年月日 Case=5称重显示 Case=6显示数据传输 模式选择 入口
图4.3 LED显示流程
4.2 A/D转换称重程序
A/D转换器要将时间和幅值都连续的模拟量,转换为时间、幅值都离散的数字量,一般要经过取样、保持和量化和编码几个过程。本系统该模块的功能是:设置数据的采集频率和转换的格式,将采集到的数据转换成单片机能识别的数字信号。当主程序调用A/D转换程序时,首先须对A/D转换模块的采样频率和采样精度进行设置,再等待传感器检测信号的输入,如有前端数据输入,则对输入数据进行预处理,采集、调整频率和幅值,最后输出数字信号。AD转换程序有三大模块组成:
①AD转换器启动程序: ②查询等待转换结束程序; ③读取转换结果程序。
本次毕业设计采用的是逐次比较型AD转换器。它的转换原理和天平称重的原理比较类似。天平的称重原理和过程是从最重的砝码开始放,并与物体进行比较,看是砝码重还是物体重。物体重就砝码留,砝码重就物体留。照着这个方法就可以依次往下加就可以称出物体的重量。仿照这个思路逐次比较型AD转换器就是将输入模拟信号与不同的的参考电压做多次的比较,使得所得的数字量依次逼近输入模拟量。而我们常用的ADC0809就是其中的一种,本次设计也是采用的这种逐次比较型AD转换器。ADC0809集成AD转换器的输入电压为0—5V,集成电路内有8通道模拟开关,可接入8个模拟量输入。
入口 flag1==1? Y 启动A/D转换 N 转换完成保存数据 返回
图4.4AD转换流程图
本次设计我们采用了基于AD0809的AD转换程序设计 程序设计内容
(1). 进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。 (2). 进行A/D转换之前,要启动转换的方法:
ABC=110选择第三通道
ST=0,ST=1,ST=0产生启动转换的正脉冲信号 . C语言源程序如下:
void chengzhong(void) //A/D转换 {
ST = 1; // ST端产生正脉冲 ST = 0; while(1) {
if(EOC == 1) // 转换结束 {
OE = 1; // 输出转换得到的数据 getdata = P0; // 记下得到的数据 OE = 0;
4.3IC卡的子程序
在称重过程中我们需要把每次煤车的时间日期和称重重量有效的记录下来,这时我们就需要IC卡来帮我们来完成这一切。本次设计中我们采用的是SLE442IC卡。单片机在称重过程中把以仪器储存的重量数据和对应的日期写入IC卡中。读写SLE4442IC卡的主程序如图4-5所示。
开始 IC卡上电 卡片的复位和复位响应 密码效验是 否成功? 是 IC卡的读写操作 IC卡的下电 结束
图4.5 IC卡流程图
否