本科实验报告
课程名称: | 微机原理与接口技术 |
姓 名: | 陈肖苇 |
学 院: | 信息与电子工程学院 |
专 业: | 电子科学与技术 |
学 号: | 3140104580 |
指导教师: | 黄凯 |
2016年 12 月 29 日
专业:_电子科学与技术_
姓名: 陈肖苇
学号: 3140104580
日期: 2016.12.29
地点:教十一400室
实验报告课程名称: 微机原理与接口技术 指导老师: 黄凯 成绩:__________________
实验名称: 单片机硬件实验三四
实验三 按键与显示实验
1.基础型实验内容
1数码管显示实验
6个数码管以及小键盘的电路如图2-1所示,将CS0与KEY/LED_CS相连, 并使用内驱显示,在WAVE环境下运行程序,观察实验现象。
6个数码管以及小键盘的电路如图2-1所示,将CS0与KEY/LED_CS相连, 并使用内驱显示,在WAVE环境下运行程序,观察实验现象。
电路图与代码:略(实在是太长了 —_—!)
代码分析:
●功能:循环左移输出0~f。姓名代码转换器百度
●实现:通过位控制器OUTBIT与段控制器OUTSEG控制,首先通过位控制器选择最右侧位,
同时查表得对应的LED段的点亮码,写入OUTSEG,点亮之后,调用延时程序,进行延时,延时之后,左移一位显示,通过不断循环,来实现循环左移功能。
实验现象: 观察到0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f十六个字符循环左移,图片如下:
图一:显示为123456
图二:显示为abcdef
图三:显示为cdef01开始循环
2键盘扫描显示实验
在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入在其中一个数码管上显示出来。实验仪连接方式不变,理解并运行下面的程序,查看实验结果。
在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入在其中一个数码管上显示出来。实验仪连接方式不变,理解并运行下面的程序,查看实验结果。
实验代码:略
代码分析:
●功能:前面4个数码管显示8.8.8.8.,第五个数码管不点亮,第六个数码管显示输入的键值。
●实现:
主程序控制六个数码管,前面四个显示8.8.8.8.,后面两个不亮。
子程序实现利用行扫描法确定输入的键值,同时通过查表法查的对应的显示输出,在最后一个数码管上显示所按键值。
实验现象:前面4个数码管显示8.8.8.8.,第五个数码管不点亮,第六个数码管显示输入所对应的按键。
图四:按键输入2的显示
图五:按键输入5的显示
2.设计型实验内容
在最后一个数码管上依次显示a、 b、 ….f各段,每段显示时间为100ms,用T0定时器实现;
实验代码:
OUTBIT EQU 08002h ; 位控制口
OUTSEG EQU 08004h ; 段控制口
DBUF EQU 30H
ORG 0000H
LJMP DISP
ORG 0100H
DISP: MOV DBUF,#01H ;移位中间变量
MOV R2,#06H ;计数,显示6段
DP: MOV A,DBUF
MOV DPTR, #OUTSEG ;显示位
MOVX @DPTR,A ;将当前控制的位移入OUTSEG所在的段控制口进行输出显示
MOV DPTR, #OUTBIT
MOV A,#01H
MOVX @ DPTR, A ; 将01H,写入OUTBIT,只显示最后一位八段管(若写成ffh,则所有数码管会同时循环a~f段)
ACALL DELAY
MOV A,DBUF ;控制移位,点亮下一段
RL A
MOV DBUF,A
DJNZ R2,DP ;点亮6段
SJMP DISP ;再循环
DELAY:MOV TMOD,#01H ;延时子程序,实现延时0.1s,即100ms。
MOV R3,#02H ;循环两次
LOOP:MOV TH0,#3CH
MOV TL0,#0B0H ;装入初值,每次循环50ms
SETB TR0
JNB TF0,$
CLR TF0
DJNZ R3,LOOP ;循环两次
RET
END
实验现象:最后一位数码管上abcdefg段轮流被点亮,观察到外面一圈不停旋转点亮。
图六:点亮a段
图七:点亮e段
实验四 并行AD、 DA实验
1.基础型实验内容
1 图4-1为ADC0809的扩展电路图, 用导线将模数变换模块的IN0与电位器输出相连,AD_CS与CS0(实验板上方)相连,EOC与MCS51的INT0连接,将8255模块(实验板下方)的8255_CS与CS1相连,PA0-PA7依次与L0-L7相连。 说明AD转换的过程,并在WAVE环境设置断点运行以下程序,可调电源分别调至两个极端,观察小灯的变化。
●代码:
mode equ 082h ; 方式0, PA, PC输出, PB输入
CS0809 equ 8000h
PortA equ 9000h ; Port A
PortB equ 9001h ; Port B
PortC equ 9002h ; Port C
CAddr equ 9003h ; 控制字地址
org 0
mov dptr,#CAddr ;将控制字地址赋给dptr
mov a,#mode
movx @dptr,a ;将模式写入控制字地址
mov dptr, #CS0809
mov a, #0
movx @dptr, a ; 起动 A/D
mov a, #40h ;循环次数控制
djnz ACC, $ ; 因为AD转换需要100us,所以延时应大于100us(约为120us)
movx a, @dptr ; 读入结果
mov r7,#100 ;循环次数
dly:
mov dptr,#PortA
movx @dptr,a
djnz r7,dly ;延时
ljmp 0
end
代码解读:
代码实现将可调电源的输入读入AD转换器,经100us延迟转换为数字信号后,将结果读入51,通过PortA输出控制小灯泡的明灭。
实验现象:开始所有小灯泡全暗,转动可调电源旋钮,灯泡从右至左一次被点亮,且当前最前面一盏灯长亮,后面几盏灯随着旋钮转动会忽明忽暗,最后所有灯泡被点亮。推测原因是将旋钮输出的模拟量进行AD转换,输出从00000000~11111111所致,所以每个阶段的第一位长亮,后面几位从00…0~11…1进行变化。
图八:旋转可调电源旋钮,此时前六个灯亮,后两个不亮,对应的转换值应为11111100
2.设计型实验内容
① 采用中断法设计ADC0809数据采集程序,并将采集到的十六进制结果显示在LED显示模
块上。
MODE EQU 082H ; 方式0, PA, PC输出, PB输入
CS0809 EQU 8000H
PORTA EQU 9000H ; Port A
PORTB EQU 9001H ; Port B
PORTC EQU 9002H ; Port C
CADDR EQU 9003H ; 控制字地址
OUTBIT EQU 08002H ; 位控制口
OUTSEG EQU 08004H ; 段控制口
IN EQU 08001H ; 键盘读入口
LEDBuf EQU 60H ; 显示缓冲
LEDMAP: ; 八段管显示码
DB 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论