大学生电子实验室·田开坤(tkaikun@163.com)·200901
连续两次 AD 采集数据并将数据写入外部扩展 RAM 变量缓冲区,之间的时间间隔实测略小于 21us
的,需要适当延时。这在高速档数据采集时增加了一定延时等待就是这个原因。
图形显示有很多种,LCD 显示稍难,ADC 得到的结果如何在 LCD 上描点,这确实是一个难点,
涉及 LCD 驱动问题,需要花费很大篇幅才能完成。
最初调试我们可以选用串口来做,借助他人现成的工具软件。下面介绍基于串口和上位机工具
软件的波形显示程序设计。
串口初始化函数 rs232_port_init(void)。
void rs232_port_init(void) //串口初始化
{
SCON=0x50; //串口工作在方式 1,异步模式
PCON=0x80; //波特率翻倍
TMOD=0x20; //定时器 1 工作在方式 2
TH1=0xff; //波特率 115200bps,单片机时钟晶振为 22.1184MHz
TL1=0xff;
TR1 = 1; //开启时钟
RI = 0; //清空接受标志位
TI = 0; //清空发送标志位
}
往串口写 1 字节函数 void uart_put_uchar(unsigned char c)。
void uart_put_uchar(unsigned char c) //往串口写 1 字节无符号数据
{
SBUF = c;
while(!TI);
TI = 0;
}
从串口读 1 字节函数 unsigned char uart_get_uchar()。
unsigned char uart_get_uchar() //从串口读 1 字节无符号数据
{
while(!RI);
RI = 0;
return SBUF;
}
以上这几个函数是学单片机的人一定要掌握的,能够随手拿来就用,通过串口调试程序,很方
便。有了以上 4 个函数,再建一个 keil 工程,添加一个主函数,就可以演示了。
#include "mini51b.h" //所有与硬件相关的接口函数定义
#include "uart.h"
void main()
{
rs232_port_init(); //串口初始化
read_adc(); //首个 ADC 数据丢失
while(1) {
if(uart_get_uchar()==0x55) uart_put_uchar(read_adc()/4); //10bit/4 变 8bit
第 2 页,共 34 页
评论0
最新资源