教室人数统计系统,单片机课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与接口技术
课程设计说明书课程名称:微机原理与接口技术综合实验
设计题目:教室人数统计系统(第68组)
院系:机械与电子控制工程学院
班级:
设计者:
指导教师:
实验设计时间:
机电学院《微机原理与接口技术》课程设计任务书
设计要求:扩展两个光电传感器和一块8*8点阵LED显示器,控制系统需要实现:
1.检测教室里的人数。并在8*8点阵LED显示器显示出来;
2.设置一个按键实现复位清零。
3.用发光二极管模拟电灯,当教室有人时,发光二极管发光,无人时发
光二极管不发光。
4.
工作计划安排:
在初期大体上我们组细化为五个部分
1.对硬件器材的学习与认识
2.硬件电路板的焊接
3.程序设计与调试
4.系统软硬件知识的综合学习与研究
5.试验总结及实验报告的书写
我组组员工作的具体分工如下
卢航:主程序设计与过程调试
张沈汇:显示程序设计与过程调试
李明华、森达:辅助程序设计及过程调试
金晓东、郑斌:实验报告的撰写及程序设计调试
在本次实验中,我组齐心协力,共同研究与学习,虽各有分工,但又互相帮助,互相学习。做到每一个人各有侧重点的同时,又对总体的每一步有所参与,对总体的设计与调试都有所掌握。
目录
一,系统基本功能和实施方案(第4页)
二,设计思路及硬件部分(第4-8页)
三,程序流程图(第9-11页)
四,系统制作过程及结果(第11-12页)
五,调试程序(第12-15页)
六,心得体会(第15-16页)
七,参考文献
一、系统基本功能和实施方案
1、设计目的:
如果在进自习室前就能知道教室里有多少人,是否满员,而不用推门进去才知道,将会节省自习同学的很多时间,同时也节省管理人员的很多时间,带来很大的方便,不会更多的影响自习的同学。因此我们小组选择了设计这个教室人数统计系统,利用51单片机系统和两个光电对管器件统计教室进出的人数,最后把教师当前人数显示在一个8*8LED显示器上,方便想要自习的同学选择教室,以及管理人员的管理工作。
2、基本功能的实施方案:
模拟教室人员的进出,在出入口安装两个光电对管GK102,分别G1和G2;一块8*8LED显示教室目前人数;一个发光二极管显示教室人数是否为零;还有一个复位按键显示器清零。当有人进去时,先响应G1,后响应G2,此时将人数加一并显示出来;当有人出去时,先响应G2,后响应G1,此时将人数减一并显示出来。如果人数为零则发光二极管熄灭。如检测到复位按键按下则熄灭发光二极管,同时将人数变成零并显示出来。
二、1)设计思路
本程序分主程序、两中断程序、显示子程序与延时子程序四部分。
各部分功能如下:
1、主程序:
主程序完成相应存储单元和标志位的清零、8155的设置、开机界面显示、中断设置、对按键按下方式的检测和处理等工作。
按键按下方式及系统相应完成的功能如下:
系统起始功能:显示教室中人数并根据人数控制发光二极管亮灭。
2、中断程序:
两中断程序分别对人数增减标志位(R0)进行赋1和-1的操作。两中断响应先后决定对人数增减标志位(R2)进行赋1还是-1。具体实现方式为:在一个中断程序中加入对另一中断是否响应的判断。如另一中断没有响应,则进行赋1或-1的操作。
3、显示子程序:
显示子程序采用定行值,扫描列值的方法。具体见8*8LED原理的介绍。4、延时子程序:(一个)
本程序中有两个延时子程序,分别完成2ms的延时。
以上各部分程序的具体实现方式见程序流程图和源程序。
2)硬件部分
系统电路原理图:
主体元件工作原理如下:
1、8*8 点阵LED的工作原理:
图(1)为8×8点阵LED外观及引脚图,其等效电路如图(2)所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。例如如果想使左上角LED点亮,则Y0=1,X0=0即可。应用时限流电阻可以放在X轴或Y轴。
图1:8×8点阵LED外观及引脚图图2:8×8点阵LED等效电路
图3:8×8点阵LED电路原理
点阵LED扫描法介绍
点阵LED一般采用扫描式显示,实际运用分为三种方式:
(1)点扫描;
(2)行扫描;
(3)列扫描。
若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。
若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms 即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。如图3所示。
本程序采用第三种方式。其对应的字形编码如下:
如下图所示,假设显示数字“00”
1 2 3 4 5 6 7 8
7CH 82H 82H 7CH 7CH 82H 82H 7CH
送显示代码过程如下所示:
送第一列线代码到P0端口,同时置P3端口第一列线P3.0为“0”,P3口的其它列线为“1”,延时2ms左右。
送第二列线代码到P0端口,同时置P3端口第二行线P3.1为“0”,P3口的其它列线为“1”,延时2ms左右。
如此下去,在显示完十位后,接着扫描显示个位,直到送完最后一列代码,又从头开始送。
同理可得“0”到“9”的字形代码。如:
DB 7CH,82H,82H,7CH;
DB 00H,42H,0FEH,02H;
DB 4EH,92H,82H,62H;
DB 44H,92H,92H,4CH;
DB 18H,28,0FEH,08H;
DB 0F2H,92H,92H,4CH;
DB 7CH,92H,92H,4CH;
DB 0C0H,80H,0BEH,0C0H;
DB 6CH,92H,92H,6CH;
DB 64H,92H,92H,7CH;
三、流程图