微机原理学训报告书 学训四
班 级:电气15-1 姓 名: 学 号: 指导老师: 浙江水利水电学院 电气工程学院 学训结合项目四:键盘与数码管显示电路 1、学习目标 通过本项目教、学、作一体的学习,熟悉单片机键盘接口电路与数码管显示电路的工作原理、电路的设计和编程。 2、所需器材 PC机一台,仿真开发软件,编程器,万用表一块,单片机最小系统PCB板,电烙铁,LED数码管,按键,排插,连接线等。 3、学习参考资料 4、学训内容 (1)在单片机的最小系统PCB板上焊制四个按键,用排插和排线和单片机I/O接口相连,键盘采用独立式键盘,一个按键占用一根I/O线,如下图: (2)在单片机的最小系统PCB板上焊制四位一体共阳极的LED数码管,用排插和排线和单片机I/O接口相连,显示方式为动态扫描显示,如下图: (3)编写键盘四按键识别的子程序。 (4)编写数码管动态扫描显示的子程序。 (5)编写键盘显示测试程序:(键盘程序用程序扫描方式) 实现功能要求:开机时数码管显示‘0000’,按S0显示‘1111’,按S1显示‘2222’,按S2显示‘3333’,按S3显示‘4444’。
5、单元学习思考题 1、简述51单片机的键盘和数码管显示电路的工作原理?
键盘是由一组排列成矩阵方式的按键开关组成,通常有编码键盘和非编码键盘两种类型,IBM系列个人微型计算机的键盘属于非编码类型。微机键盘主要由单片 机、译码器和键开关矩阵三大部分组成。其中单片机采用了INTEL8048单片微处理器控制,这是一个40引脚的芯片,内部集成了8位 CPU、1024×8位的ROM、64×8位的RAM、8位的定时器/计数器等器件。由于键盘排列成矩阵格式,被按键的识别和行列位置扫描码的产生,是由 键盘内部的单片机通过译码器来实现的。单片机在周期性扫描行、列的同时,读回扫描信号线结果,判断是否有键按下,并计算按键的位置以获得扫描码。当有键按 下时,键盘分两次将位置扫描码发送到键盘接口;按下一次,叫接通扫描码;释放时再发一次,叫断开扫描码。因此可以用硬件或软件的方法对键盘的行、列分别进 行扫视,去查找按下的键,输出扫描位置码,通过查表转换为ASCII码返回。
静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。
| 单元学习体会
1、通过本单元学习,你有哪些收获?
通过这章的学习本人对键盘的工作原理,按键的结构和特点还有编码有了初步的了解。键盘的四按键识别,数码管显示程序的一系列编程让我学到了好多
2、对本单元的学习内容有哪些建议?
这些都学不好,没有建议,不敢有建议。
单元学习自我评价
你认为自己在本单元学习阶段中成绩为(优、良、中、及格、不及格)理由如下:中
在课上对一些内容的理解不够,课后未有很好的思考与理解导致
后来的编程有了很多问题,在学习上不够自觉有待改进。
本单元学习教师评分
该同学本单元学习成绩为:( 优、良、中、及格、不及格)
- ORG 0000H
- AJMP MAIN;
- ORG 0030H
- MAIN:MOV SP,#30H;设置堆栈
- MOV P1,#0FFH;;设p1口为输入方式
- MOV 60H,#0
- MOV 61H,#0
- MOV 62H,#0
- MOV 63H,#0
- MAIN0:CALL DIS
- CALL KEYMON
- AJMP MAIN0
- ************************数码管显示程序******************************
- DIS:MOV R1,#60H;指向显缓区首址
- MOV R2,#11111011B;;从右面第一位开始显示
- LD0:MOV P0,#0FFH;送字形前先关显示,P0作普通i/O
- MOV A,@R1;;取显示字符
- MOV DPTR,#TABLE;;指向字符代码表首址
- MOVC A,@A+DPTR;;取字符相应编码
- MOV P0,A;;字符编码送p0口
- MOV P2,R2;位控码送p2口
- LCALL DELAY;延迟
- INC R1;指向下一显缓单元
- MOV A,R2;取当前位控码
- JNB ACC.3,LD1;是否扫描到最左边,是返回
- RL A;否,左移以一位
- MOV R2,A;保存内容到B
- AJMP LD0;继续扫描显示
- LD1:
- RET;返回
- ***********************键盘扫描*********************************
- LOOP:LCALL KEYMON;在主程序中循环调用键盘扫描子程序
- KEYMON:MOV A,P1;取p1口当前状态
- ANL A,#3FH; 屏蔽高两位
- CJNE A,#3FH,KEY; 有键按下,转键处理key
- RET
- KEY:MOV B,A; 保存键闭合信息到B
- LCALL DELAY
- LP:MOV A,P1; 取p1口
- ANL A,#3FH; 屏蔽高四位
- CJNE A,#3FH,LP;等待键释放
- LCALL DELAY;
- MOV A,B;取键闭合信息
- JNB ACC.0,KEY0;若K0按下,转键处理程序KEY0
- JNB ACC.1,KEY1;若K1按下,转键处理程序KEY1
- JNB ACC.2,KEY2;若K2按下,转键处理程序KEY2
- AJMP KEY3;转键处理程序KEY3
- KEY0:MOV 60H,#1
- MOV 61H,#1
- MOV 62H,#1
- MOV 63H,#1
- MOV 64H,#1
- MOV 65H,#1
- RET
- KEY1:MOV 60H,#2
- MOV 61H,#2
- MOV 62H,#2
- MOV 63H,#2
- MOV 64H,#2
- MOV 65H,#2
- RET
- KEY2: MOV 60H,#3
- MOV 61H,#3
- MOV 62H,#3
- MOV 63H,#3
- MOV 64H,#3
- MOV 65H,#3
- RET
- KEY3:MOV 60H,#4
- MOV 61H,#4
- MOV 62H,#4
- MOV 63H,#4
- MOV 64H,#4
- MOV 65H,#4
- RET
- AJMP $
- ;**********************延迟程序
- D1: NOP
- NOP
- DJNZ R7,D1
- RET
- TABLE:DB 0C0H,0F9H,0A4H,0B0H,099H
- END
复制代码
完整的Word格式文档51黑下载地址:
学训项目四:显示与键盘电路.doc
(720.21 KB, 下载次数: 8)
|