单片机数据采集系统

2026/1/27 13:45:27

单片机原理及系统课程设计报告

(2)A/D转换子程序

A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图13所示。

开始 数据采集 启动转换 否 A/D转换结束? 是 输出数据

结束

图4 模数转换结构图

(3)显示子程序

显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得LED显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在70HZ左右时,能够产生比较好的显示效果,一般可以采用间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms[10]。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器0溢出中断功能实现11μs定时,通过软件延时程序来实现5ms的延时。

5总结

这次单片机课程设计有很多的收获,锻炼了自己的实践动手能力,温习了单片机编程知识,很有意义!在这过程中遇到了很多很多的问题:1、硬件电路的搭建问题。找到了ADC0809,AT89C51,但是显示器不知道用哪个好,前面两个都是自己熟悉的芯片,显示器很陌生,这是遇到的第一个问题,最后想了想,上网查了些资料,学习了显示的芯片,最终解决问题。2、芯片选择好了后发现屏幕不

4

单片机原理及系统课程设计报告

会亮,很纠结,刚开始想着是程序出了问题,但是最终没能找出错误,又再看了显示器芯片的介绍,最终发现是没接显示亮度的端口。总的来说,这次能够独立的做一个单输入的电压器,培养和锻炼了自己,很有意义,以后要多做这样的练习!

6参考文献

[1]张金敏.单片机原理与应用系统设计[M].成都:西南交通大学出版社2011:233-250 [2]李华.计算机控制系统[M].北京:机械工业出版社,2011:151-158 [3]李华.单片机原理及应用[M].兰州:兰州大学出版社,2001:190-198

5

单片机原理及系统课程设计报告

7附录

#include #include

#define uchar unsigned char/*定义uchar为无符号字符型*/ sbit P2_3=P2^3;/*定义p2_3为P2口的第四位*/ sbit OE=P3^0;/*定义OE为p3口的第一位*/ sbit EOC=P3^1;/*定义EOC为P3口的第二位*/ sbit P2_1=P2^1;/*定义P2_1为P2口的第二位*/ sbit P2_2=P2^2;/*定义P2_2为P2口的第三位*/ sbit ST=P3^2; sbit P3_4=P3^4; sbit P3_5=P3^5; sbit P3_6=P3^6;

uchar code leddata_dot[]={0x40,0x79,0x24,0x30,0x19,0x12};

uchar code leddata[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay(uchar n)/*延时函数delay*/ {

uchar i,j;

for(i=0;i

for(j=0;j<125;j++); }

void convert(uchar volt_data)/*转换函数*/ {

uchar temp;

P0=leddata_dot[volt_data/51]; P2_1=1;

delay(3);/*启动延时函数delay*/ P2_1=0;

if((volt_dataQ)<0x19) {

P0=leddata[(volt_dataQ)*10/51]; P2_2=1;/*P2.2被赋值为1*/ delay(3);

P2_2=0;/*P2.2被清零*/ } else {

P0=leddata[(volt_dataQ)*10/51+5];/*定义p0口*/ P2_2=1; delay(3); P2_2=0; }

temp=(((volt_dataQ)*10)/51)*10Q; if(temp<0x19) {

P0=leddata[temp*10/51];/*重新定义P0口*/

6

单片机原理及系统课程设计报告

P2_3=1; delay(3); P2_3=0; } else {

P0=leddata[temp*10/51+5];/*定义P0口*/ P2_3=1; delay(3); P2_3=0; } }

void main()/*主函数*/ {

uchar volt_data;/*定义volt_data为无符号字符型*/ P3_4=1;/*置位p3.4*/ P3_5=1;/*置位p3.5*/ P3_6=0;/*把p3.6清零*/ while(1)/*无限循环*/ {

ST=0; _nop_(); ST=1; _nop_(); ST=0;

if(EOC==0)/*当AD转换结束时,就进入到延时程序*/ delay(100);

while(EOC==0);

OE=1;/*输出使能为1时,能输出已转换的数字量*/ volt_data=P1;

OE=0;/*输出使能为0,AD转换器不输出数据*/ convert(volt_data); } }

7


单片机数据采集系统.doc 将本文的Word文档下载到电脑
搜索更多关于: 单片机数据采集系统 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219