收藏 分销(赏)

单片机硬件设计报告.doc

上传人:仙人****88 文档编号:12039408 上传时间:2025-09-01 格式:DOC 页数:22 大小:1.80MB 下载积分:10 金币
下载 相关 举报
单片机硬件设计报告.doc_第1页
第1页 / 共22页
单片机硬件设计报告.doc_第2页
第2页 / 共22页


点击查看更多>>
资源描述
单片机硬件实验 实验2 P1口实验 2 思考题: 2 实验3 简单I/O口扩展实验一——交通灯控制实验 5 思考题: 5 实验5 中断实验———有急救车的交通灯控制实验 9 思考题: 9 实验6 定时器实验———循环彩灯实验 14 思考题: 14 实验11 8279键盘显示接口实验 17 思考题: 17 实验15 A/D转换实验 20 思考题: 20 实验2 P1口实验 一、实验目的: 1. 学习P1口既做输入又做为输出的使用方法。 2. 学习数据输入、输出程序的设计方法。 二、实验原理图: 三、实验步骤: 平推开关的输出K1接P1.0;K2接P1.1; 发光二极管的输入L1接P1.2;L2接P1.3;L5接P1.4;L6接P1.5。 运行实验程序,K1做为左转弯开关,K2做为右转弯开关。L5、L6做为左转弯灯,L7、L8做为右转弯灯。 结果显示:1:K1接高电平K2接低电平时,左转弯灯(L1、L2)以一定频率闪烁,右转弯灯(L5、L6)灭; 2:K2接高电平K1接低电平时,左转弯灯(L1、L2)灭,右转弯灯(L5、L6)以一定频率闪烁; 3:K1、K2同时接低电平时,发光二极管全灭; 4:K1、K2同时接高电平时,发光二极管全亮。 思考题: 修改程序,使K1,K2接高电平时,所有发光二极管闪烁。 四、参考程序:T2.ASM NAME T2 CSEG AT 0000H LJMP START CSEG AT 4100H START: SETB P1.0 SETB P1.1 ;用于输入时先置位口内锁存器 MOV A,P1 ANL A,#03H ;从P1口读入开关状态,取低两位 MOV DPTR,#TAB ;转移表首地址送DPTR MOVC A,@A+DPTR JMP @A+DPTR TAB: DB PRG0-TAB DB PRG1-TAB DB PRG2-TAB DB PRG3-TAB PRG0: MOV P1,#0FFH ;向P1口输出#0FFH,发光二极管全灭 ;此时K1=0,K2=0 JMP START PRG1: MOV P1,#0F3H ;只点亮L5、L6,表示左转弯 ACALL DELAY ;此时K1=1,K2=0 MOV P1,#0FFH ;再熄灭0.5秒 ACALL DELAY ;延时0.5秒 JMP START PRG2: MOV P1,#0CFH ;只点亮L7、L8,表示右转弯 ACALL DELAY ;此时K1=0,K2=1 MOV P1,#0FFH ;再熄灭0.5秒 ACALL DELAY JMP START PRG3: MOV P1,#00H ;发光二极管全亮,此时K1=1,K2=1 ACALL DELAY ;延时0.5秒 MOV P1,#0FFH ;再熄灭0.5秒 ACALL DELAY JMP START ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DELAY: MOV R1,#5 ;延时0.5秒 DEL1: MOV R2,#200 DEL2: MOV R3,#126 DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; END 实验3 简单I/O口扩展实验一——交通灯控制实验 一、实验目的: 1. 学习在单片机系统中扩展简单I/O接口的方法。 2. 学习数据输出程序的设计方法。 3. 学习模拟交通灯控制的实现方法。 二、实验内容: 扩展实验箱上的74LS273做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。 三、实验原理: 本实验需要用到实验箱上八个发光二极管中的六个。不妨将L1(红)、L2(绿)、L3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。 四、实验原理图 五、实验步骤: 74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273接片选信号CSO. 运行实验程序,观察LED显示情况是否与实验内容相符。 思考题: 修改程序,要求将红绿灯控制循环中,红绿灯转换时,黄灯闪烁5次后的“红灯亮, 黄、绿灯全灭”状态,改为“红绿灯全灭,东西、南北方向黄灯闪烁10次”。 程序:T3.ASM ;74LS273的输出O0~O7接发光二极管L1~L8 ;?4LS273的片选CS273接片选信号CSO NAME T3 ;I/O口扩展实验一 PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP ;调用273显示单元(以下雷同) ACALL DE3S ;延时3秒 LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP ACALL DE10S ;延时10秒 MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP MOV R2,#05H ;R2中的值为黄灯闪烁次数 TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次 MOV R2,#0AH ;黄灯闪烁10次 ACALL GGG1 MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮 ACALL DISP ACALL DE10S ;延时10秒 MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭 ACALL DISP MOV R2,#05H ;黄灯闪烁五次 GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭 ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次 MOV R2,#0AH ;黄灯闪烁10次 ACALL GGG1 JMP LLL ;转LLL循环 GGG1: MOV A,#44H ;黄灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#00H ;黄灯灭 ACALL DISP ACALL DE02S;延时0.2秒 DJNZ R2,GGG1 RET DE10S: MOV R5,#100 ;延时10秒 JMP DE1 DE3S: MOV R5,#30 ;延时3秒 JMP DE1 DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET DISP: MOV DPTR,#PORT ;273显示单元 CPL A MOVX @DPTR,A RET END 实验5 中断实验———有急救车的交通灯控制实验 一、实验目的: 1. 学习外部中断技术的基本使用方法。 2. 学习中断处理程序的编程方法。 二、实验内容: 在实验三的内容的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。本实验以单脉冲为中断申请,表示有急救车通过。 三、 实验原理图: 四、实验步骤: 74LS273的输出O0~O7接发光二极管L1~L8,74LS273的片选CS273\接片选信号CS2,此时74LS273的片选地址为CFB0H~CFB7H之间任选。单脉冲输出端P-接CPU板上的INT0。 思考题: 修改程序,要求按下单脉冲按钮Pulse后,红灯状态由常亮方式改为闪烁方式,时间10秒,然后恢复原状态。 五、程序:T5.ASM ;74LS273的输出O0~O7接发光二极管L1~L8 ;74LS273的片选CS273\接片选信号CS2, ;单脉冲输出端P-接CPU板上的INT0。 NAME T5 ;中断控制实验 OUTPORT EQU 0CFB0H ;端口地址 SAVE EQU 55H ;保存从端口CFB0输出的数据 CSEG AT 0000H LJMP START CSEG AT 0003H ;中断向量为0003H LJMP INT CSEG AT 4100H START: SETB IT0 SETB EX0 SETB EA MOV A,#11H ;置首显示码 MOV SAVE,A ;保存 ACALL DISP ;显示输出 ACALL DE3S ;延时3秒 LLL: MOV A,#12H ;东西路口绿灯亮,南北路口红灯亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延时10秒 MOV A,#10H ;东西路口绿灯灭 MOV SAVE,A ACALL DISP MOV R2,#05H ;东西路口黄灯闪烁5次 TTT: MOV A,#14H MOV SAVE,A ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#10H MOV SAVE,A ACALL DISP ACALL DE02S ;延时0.2秒 DJNZ R2,TTT MOV A,#11H ;红灯全亮 MOV SAVE,A ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#21H ;东西路口红灯亮,南北路口绿灯亮 MOV SAVE,A ACALL DISP ACALL DE10S ;延时10秒 MOV A,#01H ;南北路口绿灯灭 MOV SAVE,A ACALL DISP MOV R2,#05H ;南北路口黄灯闪烁5次 GGG: MOV A,#41H MOV SAVE,A ACALL DISP ACALL DE02S MOV A,#01H MOV SAVE,A ACALL DISP ACALL DE02S DJNZ R2,GGG MOV A,#11H ;红灯全亮 MOV SAVE,A ACALL DISP ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1 DE3S: MOV R5,#30 ;延时3秒 JMP DE1 DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET INT: CLR EA PUSH ACC ;中断处理 PUSH PSW MOV A,R5 PUSH ACC MOV A,R2 PUSH ACC MOV R2,#19H DAME: MOV A,#11H ;红灯亮 ACALL DISP ACALL DE02S ;延时0.2秒 MOV A,#00H ;红灯灭 ACALL DISP ACALL DE02S;延时0.2秒 DJNZ R2,DAME MOV A,SAVE ;取SAVE中保存数据输出到cfa0端口 ACALL DISP POP ACC ;出栈 MOV R2,A POP ACC MOV R5,A POP PSW POP ACC SETB EA ;允许外部中断 RETI DISP: MOV DPTR,#OUTPORT CPL A MOVX @DPTR,A RET END 实验6 定时器实验———循环彩灯实验 一、实验目的: 1. 学习8031内部计数器的使用和编程方法。 2. 进一步掌握中断处理程序的编写方法。 二、实验设备: CPU挂箱,8031CPU模块 三、实验原理: 1. 定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样, 为振荡频率的1/12。本实验中时钟频率为6.0 MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每隔0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。 时间常数可按下述方法确定: 机器周期=12÷晶振频率=12/(6×10⁶)=2us 设计数初值为X,则(2e+16-X)×2×10(-6)=0.1,可求得X=15535 化为十六进制则X=3CAFH,故初始值为TH1=3CH,TL1=AFH 2. 初始化程序 包括定时器初始化和中断系统初始化,主要是对IP、IE、TCON、TMOD的相应位进行 正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。 3. 设计中断服务程序和主程序 中断服务程序除了要完成计数减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 四、实验电路: 思考题:修改程序,使彩灯变化花样为:①L1、L2、…L8依次点亮;②L1、L2、…L8依次熄灭;③以双灯方式L1L2、L3L4、…依次点亮;④以双灯方式L8L7、L6L5、…依次熄灭。 程序:T6.ASM NAME T6 ;定时器实验 CSEG AT 0000H LJMP START CSEG AT 001BH ;定时器/计数器1中断程序入口地址 LJMP INT CSEG AT 4100H START: MOV A,#01H ;首显示码 CPL A MOV R1,#03H ;03是偏移量,即从基址寄存器到表首的距离 MOV R0,#05H ;05是计数值 MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0AFH ;装入时间常数 MOV TH1,#03CH ORL IE,#88H ;CPU中断开放标志位和定时器 ;1溢出中断允许位均置位 SETB TR1 ;开始计数 LOOP1: CJNE R0,#00,DISP MOV R0,#05H ;R0计数计完一个周期,重置初值 INC R1 ;表地址偏移量加1 CJNE R1,#1BH,LOOP2 MOV R1,#03H ;如到表尾,则重置偏移量初值 LOOP2: MOV A,R1 ;从表中取显示码入累加器 MOVC A,@A+PC CPL A JMP DISP DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,03H,0FH,3FH,0FFH,3FH,0FH,03H,00H DISP: MOV P1,A ;将取得的显示码从P1口输出显示 JMP LOOP1 INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#0AFH ;重置时间常数初值 MOV TH1,#03CH SETB TR1 ;开始计数 RETI ;中断返回 END 实验11 8279键盘显示接口实验 一、实验目的: 1. 进一步了解8279键盘、显示电路的编程方法。 2. 进一步了解键盘电路工作原理及编程方法。 二、实验设备: CPU挂箱,8031CPU模块 三、实验原理: 本实验用到了8279的键盘输入部分。键盘部分提供的扫描方式最多可和64个按键或传感器阵列相连,能自动消除开关抖动以及对多键同时按下采取保护。 由于键盘扫描由8279自动实现,简化了键盘处理程序的设计,因而编程的主要任务是实现对扫描值进行适当处理,以两位十六进制数将扫描码显示在数码管上。 可省略对8279进行初始化,因为监控程序对8279已经进行了初始化,详见第三章键盘操作说明的4.5节。 四、实验题目 利用实验箱上提供的8279,键盘电路,数码显示电路,组成一个键盘分析电路,编写程序,要求在键盘上按动一个键,就将8279对此键扫描的扫描码显示在数码管上。 五、实验接线: 将键盘的KA10~KA12接8279的KA0~KA2;RL10~RL17接8279的RL0~RL7; 思考题: 键盘的扫描电路共分为3行8列,现要求修改源程序,使得按数字键0~9时,可在最左侧的LED数码管上直接显示对应数字。 程序名:T11.ASM ;将键盘的KA10~KA12接8279的KA0~KA2 ;RL10~RL17接8279的RL0~RL7; NAME T11 ;8279键盘实验二 CSEG AT 0000H LJMP START CSEG AT 4100H START: MOV DPTR,#0CFE9H ;8279命令字 MOV A,#0D1H ;清显示 MOVX @DPTR,A LOOP1: MOVX A,@DPTR ANL A,#0FH JZ LOOP1 ;有键按下?没有则循环等待 MOV A,#0A0H ;显示\消隐命令 MOVX @DPTR,A MOV A,#40H ;读FIFO命令 MOVX @DPTR,A MOV DPTR,#0CFE8H ;读键值 MOVX A,@DPTR MOV R1,A ;保存键值 MOV DPTR,#0CFE9H ;写显示RAM命令 MOV A,#80H ;选中LED2 MOVX @DPTR,A MOV A,R1 ANL A,#0FH ;取后半字节 MOV DPTR,#TAB MOVC A,@A+DPTR ;取段显码 MOV DPTR,#0CFE8H ;写显示RAM MOVX @DPTR,A MOV DPTR,#0CFE9H ;写显示RAM命令 MOV A,#81H ;选中LED1 MOVX @DPTR,A MOV A,R1 ANL A,#0F0H SWAP A ;取后半字节 MOV DPTR,#TAB MOVC A,@A+DPTR ;取段显码 MOV DPTR,#0CFE8H ;写显示RAM MOVX @DPTR,A MOV DPTR,#0CFE9H SJMP LOOP1 TAB: DB 3FH,06H,5BH,4FH,4FH,4FH,66H,6DH,7DH,07H ;段显码表 db 07H,07H,7fh,6fh,77h,7cH END 实验15 A/D转换实验 一、实验目的: 1. 掌握A/D转换与单片机的接口方法。 2. 了解A/D芯片ADC0809转换性能及编程方法。 3. 通过实验了解单片机如何进行数据采集。 二、实验内容: 利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。 三、实验电路: 四、实验步骤: 1. 0809的片选信号CS0809接CS0。 2. 电位器的输出信号AN0接0809的ADIN0。 3. EOC接CPU板的INT0. 思考题: 将P1.0接LED1,P1.1接LED2;修改源程序,满足以下要求(2,3小题选作一题即可): 1) 将ADC0809的采样方式改为中断响应,利用中断处理程序读取转换结果。 2) 当采样值大于0F0H,LED1亮;当采样值小于010H,LED2亮。 参考程序 T15.c #include <reg51.h> #include <absacc.h> #define Led_dat XBYTE[0xcfe8]//8279数据口地址 #define Led_ctl XBYTE[0xcfe9]//设置8279控制字 #define ad_port XBYTE[0xcfa0]//ADC0809地址 sbit P10=P1^0; sbit P11=P1^1; void Display_byte(unsigned char loc,unsigned char dat) { unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; loc &=0xf;//1111 Led_ctl = loc|0x80;//选中LED1 Led_dat = table[dat>>4]; /*显示高4位*/ loc++; Led_ctl = loc|0x80;//90H,选中LED2 Led_dat = table[dat&0xf]; /*显示低4位*/ } void delay(unsigned int t) { for(;t>0;t--); } void main(void) { EA=1; EX0=1; IT0=1; Led_ctl = 0xd1;//清屏显示 while((Led_ctl&0x80)==0x80); Led_ctl = 0x31; ad_port = 0;//启动A/D转换 while(1); } /*将ADC0809的采样方式改为中断响应,利用中断处理程序读取转换结果。*/ void int0_int(void) interrupt 0 { Display_byte(0,ad_port); delay(10000); if(ad_port>0xf0)P10=0;//当采样值大于0F0H,LED1亮 if(ad_port<0x10)P11=0;//当采样值小于010H,LED2亮 if(ad_port>=0x10&ad_port<=0xf0)P10=P11=1; ad_port = 0; } - 21 -
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服