本科实验报告
课程名称:
微机原理与接口技术
姓    名:
陈肖苇
学    院:
信息与电子工程学院
专    业:
电子科学与技术
学    号:
3140104580
指导教师:
黄凯
2016年 12 月 29 日
专业:_电子科学与技术_
姓名: 陈肖苇     
学号: 3140104580   
日期: 2016.12.29 
地点:教十一400室 
实验报告
课程名称:      微机原理与接口技术      指导老师:    黄凯    成绩:__________________
实验名称:  单片机硬件实验三四               
实验三 按键与显示实验
1.基础型实验内容
1数码管显示实验
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.设计型实验内容
在最后一个数码管上依次显示ab….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段
实验四 并行ADDA实验
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小时内删除。