




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验一 I/O口输入输出实验实验参考程序;/* ;文件名: Port for MCU51 ;功能: I/O口输入、输出实验 ;接线: 用导线连接八位逻辑电平输出模块的K0到CPU模块的RXD(P3.0口); ; 用8位数据线连接八位逻辑电平显示模块的JD2B到CPU模块的JD8(P1口)。 ;/* DIR BIT P3.0 ORG 0000H LJMP START ORG 0100H START: OUTPUT1: MOV A, #0FEH MOV R5, #8 LOOP1: CLR C MOV C,DIR JC OUTPUT2 MOV P1, ARL AACALL DELAY DJNZ R5
2、, LOOP1 SJMP OUTPUT1 OUTPUT2: MOV A, #07FH MOV R5, #8 LOOP2: CLR C MOV C,DIR JNC OUTPUT1 MOV P1, A RR A ACALL DELAY DJNZ R5,LOOP2 SJMP OUTPUT2 DELAY: MOV R6,#0 DELAYLOOP1: MOV R7,#0 DELAYLOOP2: NOP NOP DJNZ R7,DELAYLOOP2 DJNZ R6,DELAYLOOP1 RETEND 实验二 定时/计数器实验实验参考程序;/*;文件名: TIMER FOR MCU51;功能: 定时/计数器
3、实验;接线: 导线连接CPU模块P10到八位逻辑电平显示模块的L0.;/* TICK EQU 10000 ; 10000 X 100US = 1S T100US EQU 156 ; 100US时间常数(6M) C100US EQU 30H ; 100US记数单元 LEDBUF BIT 20H ORG 0 LJMP START ORG 000BHT0INT: PUSH PSW MOV A, C100US+1 JNZ GOON DEC C100USGOON: DEC C100US+1 MOV A, C100US ORL A, C100US+1 JNZ EXIT ; 100US 记数器不为0, 返回
4、 MOV C100US, #27H ; #HIGH(TICK) MOV C100US+1, #10H ; #LOW(TICK) CPL LEDBUF ; 100US 记数器为0, 重置记数器 ; 取反LEDEXIT: POP PSW RETISTART: MOV TMOD, #02H ; 方式2, 定时器 MOV TH0, #T100US MOV TL0, #T100US MOV IE, #10000010B ; EA=1, IT0 = 1 SETB TR0 ; 开始定时 CLR LEDBUF CLR P1.0 MOV C100US, #27H ;#HIGH(TICK) MOV C100US+
5、1, #10H ;#LOW(TICK)LOOP: MOV C, LEDBUF MOV P1.0, C LJMP LOOPEND实验三 交通灯控制实验实验参考程序;/*;文件名:交通灯程序 FOR MCU51;功能:双色LED模拟交通灯信号,并通过调用静态数码显示状态时间。;接线:P1.0同时接G1、G3,P1.1接R1、R3,P1.2接G2、G4,P1.3同时接R2、R4,;P1.6、P1.7接静态数码显示的DIN、CLK。;/* SECOND1 EQU 30H ;东西秒寄存器 SECOND2 EQU 31H ;南北秒寄存器 DBUF EQU 40H ;显示缓冲1 TEMP EQU 44H ;
6、显示缓冲2 LED_G1 BIT P1.0 ;东西绿灯 LED_R1 BIT P1.1 ;东西红灯 LED_G2 BIT P1.2 ;南北绿灯 LED_R2 BIT P1.3 ;南北红灯 DIN BIT P1.6 ;串行显示数据 CLK BIT P1.7 ;串行显示时钟 ORG 0000H LJMP START ORG 0100HSTART: LCALL STATE0 ;调用状态0 LCALL DELAY ;调用延时 MOV TMOD,#01H ;置T0工作方式1 MOV TH0, #3CH ;置T0定时初值50MS MOV TL0, #0B0H SETB TR0 ;启动T0 CLR EALO
7、OP: MOV R2,#20 ;置1S计数初值 50MS*20=1S MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAY LCALL STATE1 ;调用状态1WAIT1: JNB TF0,WAIT1 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H SETB TR0 ;启动T0 DJNZ R2,WAIT1 ;判1S到否?未到继续状态1 MOV R2,#20 ;置50MS计数初值 DEC SECOND
8、1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT1 ;状态1维持20S MOV R2,#5 ;置50MS计数初值 5*4=20 MOV R3,#3 ;绿灯闪3S MOV R4,#4 ;闪烁间隔200MS MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;南北秒显示初值5S LCALL DISPLAYWAIT2: LCALL STATE2 ;调用状态2 JNB TF0,WAIT2 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B
9、0H DJNZ R4,WAIT2 ;判200MS到否?未到继续状态2 CPL LED_G1 ;东西绿灯闪 MOV R4,#4 ;闪烁间隔200MS DJNZ R2,WAIT2 ;判1S到否?未到继续状态2 MOV R2,#5 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT2 ;状态2维持3S MOV R2,#20 ;置50MS计数初值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL D
10、ISPLAYWAIT3: LCALL STATE3 ;调用状态3 JNB TF0,WAIT3 ;查询30MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H DJNZ R2,WAIT3 ;判1S到否?未到继续状态3 MOV R2,#20 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT3 ;状态3维持2S MOV R2,#20 ;置50MS计数初值 MOV R3,#20 ;红灯20S MOV SECOND1,#25 ;东西秒显示
11、初值25S MOV SECOND2,#25 ;南北秒显示初值25S LCALL DISPLAYWAIT4: LCALL STATE4 ;调用状态4 JNB TF0,WAIT4 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值50MS MOV TL0, #0B0H DJNZ R2,WAIT4 ;判1S到否?未到继续状态4 MOV R2,#20 ;置50MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT4 ;状态4维持20S MOV R2,#5 ;置50MS计数初值
12、 5*4=20 MOV R4,#4 ;闪烁间隔200MS MOV R3,#3 ;绿灯闪3S MOV SECOND1,#5 ;东西秒显示初值5S MOV SECOND2,#5 ;南北秒显示初值5S LCALL DISPLAYWAIT5: LCALL STATE5 ;调用状态5 JNB TF0,WAIT5 ;查询50MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值100MS MOV TL0, #0B0H DJNZ R4,WAIT5 ;判200MS到否?未到继续状态5 CPL LED_G2 ;南北绿灯闪 MOV R4,#4 ;闪烁200MS DJNZ R2,WAIT5 ;判1
13、S到否?未到继续状态5 MOV R2,#5 ;置100MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT5 ;状态5维持3S MOV R2,#20 ;置50MS计数初值 MOV R3,#2 ;黄灯2S MOV SECOND1,#2 ;东西秒显示初值2S MOV SECOND2,#2 ;南北秒显示初值2S LCALL DISPLAYWAIT6: LCALL STATE6 ;调用状态6 JNB TF0,WAIT6 ;查询100MS到否 CLR TF0 MOV TH0, #3CH ;恢复T0定时初值1
14、00MS MOV TL0, #0B0H DJNZ R2,WAIT6 ;判1S到否?未到继续状态6 MOV R2,#20 ;置100MS计数初值 DEC SECOND1 ;东西秒显示减一 DEC SECOND2 ;南北秒显示减一 LCALL DISPLAY DJNZ R3,WAIT6 ;状态6维持2S LJMP LOOP ;大循环STATE0: ;状态0 MOV P1,#0 CLR LED_G1 SETB LED_R1 ;东西红灯亮 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE1: ;状态1 SETB LED_G1 ;东西绿灯亮 CLR LED_R1 CLR LE
15、D_G2 SETB LED_R2 ;南北红灯亮 RETSTATE2: ;状态2 CLR LED_R1 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE3: ;状态3 SETB LED_G1 SETB LED_R1 ;东西黄灯亮 CLR LED_G2 SETB LED_R2 ;南北红灯亮 RETSTATE4: ;状态4 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_G2 ;南北绿灯亮 CLR LED_R2 RETSTATE5: ;状态5 CLR LED_G1 SETB LED_R1 ;东西红灯亮 CLR LED_R2 RETSTATE6
16、: ;状态6 CLR LED_G1 SETB LED_R1 ;东西红灯亮 SETB LED_G2 SETB LED_R2 ;南北黄灯亮 RETDISPLAY: ;数码显示 MOV A, SECOND1 ;东西秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV AB MOV DBUF+1,A MOV A,B MOV DBUF, A MOV A, SECOND2 ;南北秒寄存器 MOV B, #10 ;16进制数拆成两个10进制数 DIV AB MOV DBUF+3, A MOV A,B MOV DBUF+2, A MOV R0,#DBUF MOV R1,#TEMP MOV R
17、7,#4DP10:MOV DPTR,#LEDMAP MOV A,R0 MOVC A,A+DPTR MOV R1,A INC R0 INC R1 DJNZ R7,DP10 MOV R0,#TEMP MOV R1,#4DP12:MOV R7,#8 MOV A,R0DP13:RLC A MOV DIN,C CLR CLK SETB CLK DJNZ R7,DP13 INC R0 DJNZ R1,DP12 RETLEDMAP: DB 3FH,6,5BH,4FH,66H,6DH ;0,1,2,3,4,5 DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,B DB 58H,5EH,7
18、BH,71H,0,40H ;C,D,E,F, , -DELAY: MOV R5, #5DLOOP0:MOV R6, #0DLOOP1:MOV R7, #0DLOOP2: NOP NOP DJNZ R7, DLOOP2 DJNZ R6, DLOOP1 DJNZ R5, DLOOP0 RETEND实验四 并行A/D 转换实验实验参考程序;/*;文件名: AD0809 FOR 51MCU;功能:并行A/D转换实验;接线:用导线对应连接并行模数转换模块的CS_0809、EOC到CPU模块的8000、P32;;电位器模块的输出端接并行模数转换模块的IN-0;;并行模数转换模块的VREF接5V电源;;CP
19、U模块的P10、P11接串行静态数码显示模块DIN、CLK。;/* DBUFEQU 30H TEMPEQU 40H D0809EQU 8000H ;通道0地址 DIN BIT P1.0 CLK BIT P1.1 ORG 0000H JMP START ORG 0080HSTART: MOV DBUF+3,#0AH MOV DBUF+2,#0DH MOV DPTR,#D0809 MOV A,#0 MOVX DPTR,A JNB P3.2,$ MOVX A,DPTR ; 读入结果 MOV B,A SWAP A ANL A,#0FH MOV DBUF+1,A INC R0 MOV A,B ANL A
20、,#0FH MOV DBUF,A ACALL DISP1 ACALL DELAY AJMP STARTDISP1: ; 串行数码显示MOV R0,#DBUFMOV R1,#TEMPMOV R2,#4DP10:MOV DPTR,#SEGTABMOV A,R0MOVC A,A+DPTRMOV R1,AINC R0INC R1 DJNZ R2,DP10MOV R0,#TEMPMOV R1,#4DP12:MOV R2,#8MOV A,R0DP13:RLC AMOV DIN,CCLR CLKSETB CLKDJNZ R2,DP13INC R0DJNZ R1,DP12 RETSEGTAB:DB 3FH,6
21、,5BH,4FH,66H,6DH ;0,1,2,3,4,5DB 7DH,7,7FH,6FH,77H,7CH ;6,7,8,9,A,BDB 58H,5EH,79H,71H,0,00H ;C,D,E,F,-DELAY: MOV R4,#80HAA1: MOV R5,#0FFHAA: NOP NOP DJNZ R5,AA DJNZ R4,AA1 RET END实验五 LCD 显示实验实验参考程序;/*;文件名: LCD_S FOR MCU51 (LCD12864串行接口程序);功能: LCD显示实验 ;接线: JT2B跳线器的两只短路帽置位上端。;对应连接液晶显示模块的RS、R/W、E、PSB、RS
22、T到CPU模块的P10P14。;/*;RS=CS=D/I;R/W=STD=STD;E=SCLK=SCLKCS BIT P1.0 ;D/I STD BIT P1.1 ;串行数据线 W/RSCLK BIT P1.2 ;串行时钟线 EPSB BIT P1.3 ;CS1RES BIT P1.4 ;RESSTART EQU 30H ;起始字节COM EQU 31H ;命令/数据HDATA EQU 32H ;命令/数据字节高位LDATA EQU 33H ;命令/数据字节低位ASC EQU 34H ;ASCII数据单元XPOS EQU 35HYPOS EQU 36H ORG 0000HMAIN: MOV S
23、P,#60H CLR RES SETB RES ; 可以直接接电源VDD SETB CS ; 可以直接接电源VDD CLR PSB ; 可以直接接地VSS CALL LCDRESET ; 模块系统初始化 CALL HZKDIS ; 显示汉字子程序 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#80H ; 设定显示位置 CALL LCDWRITE MOV START,#0FAH ;写数据 (11111010) MOV COM,#10H ;显示字符 CALL LCDWRITE MOV COM,#11H ;显示字符 CALL LCDWRITE MOV COM,#
24、1EH ;显示字符 CALL LCDWRITE MOV COM,#1FH ;显示字符 CALL LCDWRITE MOV START,#0F8H ; 写入命令(11111000) MOV COM,#34H ;扩充功能设定 CALL LCDWRITE MOV COM,#05H ;反白选择 CALL LCDWRITE CALL DL40MS ;延时 CALL DL40MS CALL DL40MS MOV A,#055H ;绘图方式下写55数据 CALL LCDFILL CALL CLEAR ;清屏 JMP MAINCLEAR: ;清屏子程序 MOV A,#00H CALL LCDFILL RETL
25、CDRESET: LCALL DL1MS ;延时等待内部复位 MOV START,#0F8H ; 写入命令(11111000)MOV COM,#30H ;使用基本指令集LCALL LCDWRITEMOV COM,#0CHLCALL LCDWRITE ;整体显示ONMOV COM,#01H ;清屏LCALL LCDWRITELCALL DL1MSMOV COM,#06H ;显示右移LCALL LCDWRITELCALL DL1MSRETLCDWRITE: ;模块写入子程序MOV A,COM ;送待发数据命令AANL A,#0F0H ;屏蔽低4位MOV HDATA,A ;将高4位送HDATA单元M
26、OV A,COM ;取低4位SWAP A ;高低4位互换ANL A,#0F0HMOV LDATA,A ;将低4位送LDATA单元MOV A,START ;取起始字节LCALL SENDBIT ;发送LCALL DL1MS ;延时1MSMOV A,HDATALCALL SENDBITLCALL DL1MSMOV A,LDATALCALL SENDBITLCALL DL1MSRETHZKDIS: ;显示汉字子程序 MOV R5,#2 MOV START,#0F8H ;写入命令(11111000) MOV COM,#80H ;设定显示位置 LCALL LCDWRITE MOV DPTR,#TAB ;
27、指向文字型代码表 MOV A,#00H ;取汉字代码低位 DIS_1: MOV R6,#8 ;每行八个汉字DIS_2: MOV START,#0FAH ;写数据 (11111010) CLR A MOVC A,A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR ;取汉字代码高位 CLR A MOVC A,A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR CALL DL40MS DJNZ R6,DIS_2 ;未显示完则继续 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#
28、90H ;第二行地址 CALL LCDWRITE DJNZ R5,DIS_1 MOV R5,#2 MOV START,#0F8H ;写入命令(11111000) MOV COM,#88H ;第三行地址 CALL LCDWRITEDIS_4: MOV R6,#08HDIS_3: MOV START,#0FAH ;写数据 (11111010) CLR A MOVC A,A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPTR ;取汉字代码高位 CLR A MOVC A,A+DPTR MOV COM,A CALL LCDWRITE ;写入显示模块 INC DPT
29、R CALL DL40MS DJNZ R6,DIS_3 ;未显示完则继续 MOV START,#0F8H ; 写入命令(11111000) MOV COM,#98H ;第四行地址 CALL LCDWRITE DJNZ R5,DIS_4 ;遇“0”结束显示 RET ;写完两行则结束LCDFILL: ;绘图 MOV R4,A MOV XPOS,#0 MOV YPOS,#0 MOV START,#0F8H MOV COM,#30H ;重新选择基本指令? CALL LCDWRITE MOV COM,#01H ;清屏 CALL LCDWRITE MOV COM,#36H ;扩充功能设定 CALL LCDWRITELCD_A1: MOV YPOS,#0LCD_A2: MOV START,#0F8H MOV A,XPOS ;设定绘图首地址 ADD A,#80H ; X坐标 MOV COM,A CALL LCDWRITE MOV A,YPOS ;Y坐标 ADD A,#80H MOV B,A MOV COM,A CALL LCDWRITE MOV START,#0FAH MOV COM,R4 CALL LCDWRITE C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年软件水平评测试题及答案
- 大数据处理框架考查试题及答案
- 软件开发布局与市场战略试题及答案
- 网络应用开发中的安全性试题及答案
- 行政管理考试准备试题及答案
- 如何评估法学概论的学习效果与试题与答案
- 河曲马可行性研究报告
- 财富分配与经济增长的关系研究试题及答案
- 2025年考点分析与试题及答案汇编
- 财务审计报告与计划
- 砂石入股合同协议书
- 海关退运协议书
- 2025届广西邕衡教育名校联盟高三下学期新高考5月全真模拟联合测试地理试题及答案
- 项目制员工合同协议
- 2025年下半年四川省成都市武侯区事业单位招聘80人易考易错模拟试题(共500题)试卷后附参考答案
- (二模)贵阳市2025年高三年级适应性考试(二)物理试卷(含答案)
- 《康复技术》课件-踝关节扭伤康复
- 首汽约车合同协议
- (二模)2025年深圳市高三年级第二次调研考试物理试卷(含标准答案)
- 2025-2030中国供电行业深度发展研究与“十四五”企业投资战略规划报告
- 物品置换合同协议
评论
0/150
提交评论