摘要
本次课程设计选择的是条纹计数器,这篇报告内容主要包括硬件和软件方面;硬件方面主要涉及到ATS51单片机最小系统、光电管、比较器、共阳极数码管(一对四位数码管);软件方面:程序主要用C语言编写;用两对光电管来采集黑白条纹信息,转换成电平信号通过比较器比较送给可以让单片机接受的信号,经过单片机处理送给数码管显示(包括条纹数和扫描方向);程序通过对高低电平计数让数码管显示数字,用两对数码管的好处是容易确定方向(L表示往左扫描,R表示往右扫描)
关键词:计数器、ATS51单片机、光电管、数码管、方向
1
单片机课程设计
目录
摘 要………………………………………………………………………………….1 第一章 总体设计的目的、要求和指标……………………………..3
1.1课题名称………………………………………………………………………..………..3 1.2设计目的……………………………………………………………………..…………..3 1.3实现功能……………………………………………………………………..…………..3 1.4课题要求及指标……………………………………………………..……………….3
第二章 总体框图设计………………………………………..………………4
2.1模块组成…………………………………………………………..……………………..4 2.2基本原理……………………………………………………..…………………………..4 2.3系统组成……………………………………………..…………..………………………4
第三章 功能模块设计………………………………………………………….5
3.1 C51单片机最小系统…………………………………………………..….……..5
3.1.1系统组成…………………………………………………………..…………………….……5 3.1.2基本原理………………………………………………………..…………………………….5
3.2 光电扫描电路…………………………………………………………………………..6
3.2.1电路组成…………………………………………………………………….………………..6 3.2.2基本原理…………………………………………………………………….………………..6
3.3 比较器电路…………………………………………………………….………………..9
3.3.1电路组成……………………………………………………….……………………………..9 3.3.2基本原理……………………………………………………….……………………………..9
3.4 显示模块(数码管)………………………………………………..10
3.4.1 电路组成………………………………………………………………..…………….…….10 3.4.2 基本原理………………………………………………………………..………….……….10
第四章 实验心得……………………………………………..…………………11 参考文献…………………………………………………..…………………………12 附录………………………………………………………..…………………….……..13
附录1 程序清单…………………………………….…………………………………….13 附录2 作品图片…………………………………….…………………………………….16
2
单片机课程设计
第一章 总体设计目的、要求和指标
1.1、 课题名称
条纹计数器
1.2、 设计目的
通过设计条纹计数器加深对51单片机的熟练掌握程度,并强化自己的编程能力,和加深对此门课的了解,为以后学习做准备。
1.3、 实现功能
在A4纸上布满黑白相间的条文,条文宽度为1CM,实现对黑白条纹的计数和显示并显示方向。
1.4、课题要求及指标
(1)控制模块选用ATS51单片机,应完成51单片机最小应用系统的设计; (2) 能记录并显示黑白条纹的数目,误差≤3条; (3)能判断扫描的方向
3
单片机课程设计
第二章 总体框图设计
2.1、 模块组成
主要由四个模块组成:ATS51单片机最小系统、信号采集模块(对光电管)、比较器、显示模块(数码管)。
2.2、 基本原理
本条纹计数器由光电扫描电路、比较器、C51单片机最小系统、显示电路构成的。其工作原理是由光电扫描电路扫描固定于A4纸上的黑白条纹,每次扫描方向固定。光电管检测到黑白条纹后,经电压比较器输出到C51单片机最小系统的两个引脚,根据引脚的高低电平判断检测到黑线还是白线,在本设计中,光电管检测到黑线输出为低电平“0”,检测到白线输出高电平“1”。单片机端口与显示器对应脚相连,当检测到黑白条纹后,显示器显示黑白条纹数,程序通过两个光电管检测黑线的时刻不同,比较确定扫描方向,通过数码管显示L表示往左扫描,R表示向右扫描;
2.3、系统组成
这一系统具体分为四大主要部分:信号采集模块(对光电管)、比较器、ATS51单片机最小系统、显示模块(数码管)。这四部分都在整个电路中起到不可缺少的作用,但又起到各自不同的功能,其中C51单片机最小系统实现定时和识别作用,数码管显示电路实现译码显示功能,光电扫描电路实现黑白条纹的检测,比较器转换成稳定的高低电平,把他们互相之间配合起来组成整个系统,实现条纹计数器计数的功能。其系统功能组成总体框图如下所示:
信号采集 比较器 单片机最小系统 数码管显示 计
4
单片机课程设计
第三章 功能模块设计
3.1、C51单片机最小系统
3.1.1 系统组成
C51单片机最小系统由复位电路、振荡电路及C51单片机构成。
复位电路:实现复位功能。本次课设采用按钮复位,此种复位方法由按钮S1、电阻R2
(1K)、电容C1(30pF)组成,按钮按下,单片机进入复位状态;
振荡电路:实现定时控制功能。本次课设采用外部振荡方式。此种方式由晶振(12MHz)和两个完全一样的元片电容C3、C2(30pF)组成,晶振两端分别接单片机
18和19引脚。
3.1.2基本原理
单片机的P0口对应接至四位数码管的段选端,P2口对应接至两对四位数码管的位选端;P1^0、P1^1对应接光电管通过比较器的输入端 其原理图如下图所示:
5
单片机课程设计
3.2、光电扫描电路
3.2.1电路组成
该电路由两对光电管组成,每对光电管扫描原理相同。光电管一端接+5V电源,另一端串联电阻和接地,其中发射管串联R1(500),接受管串联R9(20K),输出口接比较器。电路原理图如图所示:
6
单片机课程设计
3.2.2 基本原理
仔细观察可以发现,上图红外光电管分为两部分,一部分为无色透明类似于 LED,这是 红外的发射部分,给他通电后能够产生人眼不可见的红外光,另外一部分为黑色的红外接收 部分,它的电阻会随着接收到红外光的多少而变化,由于它们也是二极管,因此可以用判断 二极管的方法辨别极性,判断光电管好坏最简单的测试方法为用万用表的欧姆档连接接收管 的两端,然后将接收管放入台灯下观察阻值的变化,如果用的是指针式万用表的话则黑表笔 的一端为正极,同时注意电阻的变化幅度。一般引脚的正负放置可能有所差异,上图的光电
7
单片机课程设计
管经过我的测试发射管长脚的一端为正,而接收端长脚的一端为负,这个自己在使用之前一 定要自己测试一下。
红外光电管由于感应的是红外光,常见光对它的干扰较小,是在小车、机器人等制作中 广泛采用的一种方式。红外光电管检测黑线的原理为,由于黑色吸光,当红外发射管发出的 光照射在上面后反射的部分就较小,接收管接收到的红外线也就较少,表现为电阻比较大, 通过外接的电路就可以读出检测的状态,同理当照射在白色表面时发射的红外线就比较多, 表现为接收管的电阻就比较小。
光电扫描示意图如图所示:
两对光电管分开距离超过两厘米(一条黑线加一条白线的宽度),这样做的目的是为了更准确的拉开LED1和LED2的计数值的差距,便于确定方向,当往右扫描时LED1计数一直比LED2大,通过程序处理可以显示扫描方向,同理往左扫描也是一样。 程序模块如下:
Void direct() {
if(step1 count_black++; } else if(step1>last1) { } 8 count_white++; 单片机课程设计 if(step2 last1=step1; last2=step2; if(count_black>count2) { count=count_black; P2=0xff; P0=0x88;//往右扫描 direct=0; delay(1); } else if(count_black P0=0xc7;//往左扫描 direct=0; delay(1); } } 3.3、比较器电路 3.3.1电路组成 电路由两个LM339和两个比较器组成其中一端接光电管输出端,一端输出到单片机P1^0、P1^1端。 9 单片机课程设计 3.3.2基本原理 图中的 R1-1为分压电阻,为比较器提供参考电压,具体参考电压的设定应根据输入的电压决定,,假如输入脚的电压变化为 1.7~4.7V 则参考电压就可以设定在 3V左右,正脚电压高于参考电压时输出为高,反之为低,在实际应用过程中可以根据当前的环境状况进行调整。对于比较器可以单独用一个电位器分压提供参考电压,如果为了简化电路也可以几路电压比较器共用一路参考电压,各有优劣可以自行选择。 3.4、显示模块(数码管) 3.4.1电路组成 电路由两个四位共阴极数码管组成,位选端接NPN三极管驱动,同时位选端选端都接了限流电阻。 10 单片机课程设计 3.4.2基本原理 当单片机输出一个高电平,三极管导通,送数码管位选端低电平,此时当段选端为高电平时,数码管就会亮,根据此原理可以让数码管亮你需要的数;每个数码管亮后延时很短的时间让下一个数码管亮,依次让所有数码管亮,由于延时很短,眼睛来不及反应,会以为所有数码管一起亮,这就是数码管动态扫描。 动态数码管扫描程序如下: void display(uchar ge_b,uchar shi_b,uchar bai_b,uchar ge_w,uchar shi_w,uchar bai_w) { P2=0xff; P0=table[ge_b]; gewei=0; delay(1); P2=0xff; P0=table[shi_b]; shiwei=0; delay(1); P2=0xff; P0=table[bai_b]; baiwei=0; delay(1); P2=0xff; P0=table[ge_w]; 11 单片机课程设计 gewei2=0; delay(1); P2=0xff; P0=table[shi_w]; shiwei2=0; delay(1); P2=0xff; P0=table[bai_w]; baiwei2=0; delay(1); } 第四章 实验心得 1、刚开始光电管有一对不亮(用手机观察),经检查是有一个电阻虚焊了,重新焊好之后便能正常工作了; 2、比较器中画原理图时把电位器画到负的一端了,可以正常工作但并不是最完善的,即光电输出低,经比较器后依然输出为低; 3、数码管动态扫描延时时间老是调不好;又时会看不见,有时会闪烁,经过在网上查资料才找到合适的延时方案; 4、往单片机烧程序时有时会烧不进去,换根下载线就好了; 5、调程序时很多变量会有时分辨不过来,在纸上记录一下便一目了然了; 6、光电管的距离要适当距离才能有好的效果; 总结体会: 通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战,勇敢过,也战胜了,胜利的钟声也就一定会为我们而敲响。 12 单片机课程设计 参考文献: 【1】 赵友德 单片微型机 复旦大学出版社 第五版 P26页 【2】 李正浩 51单片机在LED数码管显示中的应用 电子科技大学出版社 TP274.1 【3】 程蓉 基于光电管的智能车路径识别研究 兵工自动化期刊 TP273+.5 【4】 李森 C51语言及编程浅析 魅力中国期刊 TP3 TU3 13 单片机课程设计 附件: 附件1、程序清单: #include #define uchar unsigned char #define uint unsigned int uchar code table[]={ 0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};//共阳极数码管表 sbit direct=P2^0; sbit gewei=P2^1; sbit shiwei=P2^2; sbit baiwei=P2^3; sbit gewei2=P2^4; sbit shiwei2=P2^5; sbit baiwei2=P2^6; sbit led1=P1^0; sbit led2=P1^1; int last1=1; int last2=1; int step1=1; int step2=1; int count_black=0; int count=0; int count2=0; int count_white=0; uchar ge_b,shi_b,bai_b,ge_w,shi_w,bai_w; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=200;y>0;y--); } void display(uchar ge_b,uchar shi_b,uchar bai_b,uchar ge_w,uchar shi_w,uchar bai_w) { P2=0xff; P0=table[ge_b]; gewei=0; delay(1); P2=0xff; P0=table[shi_b]; 14 单片机课程设计 shiwei=0; delay(1); P2=0xff; P0=table[bai_b]; baiwei=0; delay(1); P2=0xff; P0=table[ge_w]; gewei2=0; delay(1); P2=0xff; P0=table[shi_w]; shiwei2=0; delay(1); P2=0xff; P0=table[bai_w]; baiwei2=0; delay(1); } void init() { TMOD=0X10; TH1=(65536-50000)/256; TL1=(65536-50000)%256; TR1=1; EA=1; ET1=1; } void fre_t0() interrupt 3 { TH1=(65536-50000)/256; TL1=(65536-50000)%256; step1=led1; step2=led2; } void main() { init(); 15 单片机课程设计 while(1) { if(step1 else if(step1>last1) { } if(step2 last1=step1; last2=step2; if(count_black>count2) { count=count_black; P2=0xff; P0=0x88;//向右扫描 direct=0; delay(1); } else if(count_black P0=0xc7;//向左扫描 direct=0; delay(1); } ge_b=count%10; shi_b=(count/10)%10; bai_b=count/100; ge_w=count_white%10; shi_w=(count_white/10)%10; bai_w=count_white/100; display(ge_b,shi_b,bai_b,ge_w,shi_w,bai_w); count_white++; 16 单片机课程设计 附件2、作品图片: 数码管: 最小系统: 17 单片机课程设计 比较器: 光电管: 18 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- stra.cn 版权所有 赣ICP备2024042791号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务