软件设计
绘制曲线在软件设计上关键是画点和消点的程序。
ADC采用单次转换模式,总的转换周期数为14,总的转换时间70~280ms,预分频器的分频因子选为32,故ADC时钟频率为6M/32=187.5KHz。所以每一次的转换时间是14/187.5K=74.666ms,此ADC转换时间是在6M的晶体振荡频率下最快的采样时间。若选小于32的分频因子,则总的转换时间太快,将小于70ms,不能实现。考虑到实际需要,ADC转换时间越快越适宜,故不采用64以上分频。
用ox来记录X方向字节数,初始值为$00,随点的右移从1到30递增。当ox=30时,说明X方向已到达有效显示区的尾部。code记录点在字节中所处位置,画奇数点时code从$80开始右移,画偶数点时code从$40开始右移,每次移动2位,移完一字节后,ox加1。
ADC能转换的最大量程电压是电路基准电压Vre f的值,这里调节的是4V。1V占48个点距。某一时刻,输入信号Z V(Z≤4),则其在屏幕上Y向的位置是208-Z×48。MCU内嵌的ADC为10位精度,采样结果转化成点的高度的计算表达式为:
208-(AD值)×(4/1024)×48=208-(AD值)×3/16 (1)
考虑到输入信号的扫描时间和MCU的AD转换时间,整个屏幕在X方向要显示240点,只能采取隔列扫描的方法,分两帧画完全屏,第一帧画奇数点,第二帧画偶数点。先在工作期12ms内采样数据,进行120次AD转换,将其转换结果按顺序存入片内SRAM中,所以需要100ms启动ADC一次。同时,把信号的消隐期8ms加以利用,在整个20ms周期内画120个奇数点,20ms/120=166.666ms,我们设定每隔161.333ms画一个点。画点的具体方法为:从SRAM中取出AD值,将每组的AD采样结果用式(1)进行计算,转化成Y方向坐标,得到点的高度值,送入寄存器oy中。由于屏幕上一横行是320个点,即40字节,显示区距离左边框为3字节,可计算出该点的地址,结果存于寄存器r7: r6中,表达式为: