单片机

更新时间:2024-03-21 15:35:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

目 录

第一章 Digital LAB(A)51实验板原理及使用说明 ……………….………………2 1. Digital LAB(A)51实验用户板简介……………………………………2

2. Digital LAB(A)51实验板结构原理…………………………..……… .4

3. Digital LAB(A)51实验板使用说明… ………………………5 第二章 软件实验…………………………………………………………………….14

第三章 第四章 第五章1. 存储器块清零............................................. ................... ......................14 2. 内存块移动……………………………………………………………15 3. 二进制到BCD码转换................... ................... ................... ..............17 4. 二进制到ASCII码转换 ................................... ................................. 18 5. 程序跳转表…………............................................................................21 6. 数据排序.................................................................................................23

单片机内部功能单元实验 ………………………………………………..25

1. P1,P2,P3口输出实验…………….........................................................25 2. P1,P2,P3口输入实验…………….........................................................27 3. 定时器实验………….............................................................................28 4. 计数器实验. .......................................................................................... 31 5. 外部中断实验……….…………............................................................32 6. 单片机串行口通讯实验.........................................................................35

功能扩展实验………………………………………………………………38 7. A/D转换实验.................................................................................. ......38 8. D/A转换实验 .....................................................................................40 9. 八段数码管显示.....................................................................................43 10. 键盘扫描显示实验...............................................................................46 15. 液晶显示屏控制实验...........................................................................52 16. 打印机控制实验.................................................................................. 58

课程设计综合实验………………….………………….…………………..62

Digital LAB (A) 51实验指导书

第一章 Digital 51实验用户板使用方法

一:Digital LAB(A)51实验用户板简介

1.Digital 51实验用户板特点:

(1) 可做MCS51系列单片机的实验 (2) 具有在线编程功能

(3) 系统采用CPU独立,界面分离的方式 (4) 提供17种单元电路

2.Digital 51实验用户板电路单元

(1) 数模变换电路,提供0~-5V,-5V~0V,-5V~+5V三路输出 (2) 模数变换电路,可接入八路模拟量。 (3) 逻辑电平输入开关 (4) 逻辑电平显示电路 (5) 单脉冲电路 (6) 多级分频电路。

(7) 模拟量电压(电位器)电路 (8) 串口通信实验电路 (9) 扬声器驱动电路

(10) 八位8段码LED数字显示器 (11) 4x6键盘 (12) 存储器

(13) 电子时钟芯片电路 (14) 串行数转并行数电路 (15) 并行数转串行数电路 (16) 液晶屏显示电路 (17) 打印机驱动电路

3. Digital 51实验用户板系统配备 (1) 实验仪 一台 (2) DC9V电源 一个 (3) 8PIN排线 四条 (4) 4PIN排线 四条 (5) 2PIN排线 八条 (6) 下载线 一条 (7) 延长线 一条

北京联合大学 第 1 页

Digital LAB (A) 51实验指导书

二: Digital LAB(A)51结构原理

1. Digital LAB(A)51结构布局图

北京联合大学 第 2 页

Digital LAB (A) 51实验指导书

U1VCCU2U31Q2Q3Q4Q5Q6Q7Q8Q1918171615141312A0A1A2A3A4A5A6A7A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14RP91098765432524212322627A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14D0D1D2D3D4D5D6D71112131516171819D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D72764~27512插座兼容2817A插座兼容123456781213INT0INT1GND1RXDTXDP32P33P34P35WRRDAT89C51JP3P20P21P22P23P24P25P26P27ALE/PPSENRDWR17RD16WR30ALE29A1574HC573I/O 输出、输入中断0、1 输入定时器0、1输入272561415T0T1EA/VPRESETX2X1RXDTXD31918191011I/O方式P3口VccGND2122232425262728A8A9A10A11A12A13A14A1511COC10Kx8VPP1Vcc GND 2022CEOE12U30A74HC0412U31A74HC323CS0RDWR222720SK0OEWECS62256用于多机主从通信P1.0~P1.7I/O输出、输入口JP112345678P10P11P12P13P14P15P16P17P10P11P12P13P14P15P16P1712345678P10P11P12P13P14P15P16P17P00P01P02P03P04P05P06P07D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D739383736353433321D2D3D4D5D6D7D8D23456789987654321U4A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14109876543252421232261A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14D0D1D2D3D4D5D6D71112131516171819D0D1D2D3D4D5D6D7TO 62256U6VccCS1片内、片外ROM选择D1的作用保护输出端口D1U0TXDTO 6116JP3_2GNDA1165474HC1381N581731234P104U30B74HC0445U31B74HC326A2A1A0E3E2E1321IMP707VccGND23VCCGNDRSTRXDRESETRSETPFONC5687Vcc41PFIMRCBAY7Y6Y5Y4Y3Y2Y1Y079101112131415Y7Y6Y5Y4Y3Y2Y1Y0(NC)U72. Digital LAB(A)51原理图

RESETS_INTP1U32A74HC023121UART TxD RxD串口 I/O 扩展用于多机主从通信JP3_1GNDP1091234213CY0A8掉电信号输出U31C74HC3285U30C74HC0412610JP0CS2JP2TO DS12C887U31D74HC3211GND87654321C030PGNDA3D7D6D5D4D3D2D1D08765432112.00MC130P9GNDU30D74HC0489108CS3U36CTO LCD74HC32A15A14A13A12A11A10A9A8A0A1A2A3A4A5A6A7A8A9A1087654321232219A0A1A2A3A4A5A6A7A8A9A10D0D1D2D3D4D5D6D7RDWRCS1202118OEWECED0LED_PDR10330可以读、写6116、2816、2716I/O方式P0口I/O方式P2口欠压指示(低于4.60V)

6116910111314151617D0D1D2D3D4D5D6D7 北京联合大学 第 3 页

Digital LAB (A) 51实验指导书

D7D6D5D4D3D2D1D0987654321118D7D6D5D4D3D2D1DOCCLK8Q7Q6Q5Q4Q3Q2Q1Q1213141516171819共阴八段数码管87654321910111213141516abcdefgdpa7b6c4d2e1f910gdpDG7U27583abcdefdpgComComU974HC574WRRP0110x8a7b6c4d2e1f910gdpDG6GNDVcc645U32B74HC02583abcdefdpgComComU26Y0D7D6D5D4D3D2D1D0987654321118D7D6D5D4D3D2D1DOCCLK8Q7Q6Q5Q4Q3Q2Q1Q121314151617181987654321GNDIN 7IN 6IN 5IN 4IN 3IN 2IN 1VTCCOU 7OUT 6OUT 5OUT 4OUT 3OUT 2OUT 1910111213141516DG7DG6DG5DG4DG3DG2DG1a7b6c4d2e1f910gdpDG5U25583abcdefdpgComComU11ULN2003A109887654321GNDIN 7IN 6IN 5IN 4IN 3IN 2IN 1VTCCOU 7OUT 6OUT 5OUT 4OUT 3OUT 2OUT 1910111213141516a7b6c4d2e1f910gdpDG4DG0U24583abcdefdpgComComU1074HC574WRY1GNDVccU12ULN2003AGNDVcca7b6c4d2e1f910gdpDG3U23583abcdefdpgComComU32C74HC02 北京联合大学 第 4 页

Max7219选择4321J2J3VCCR210KR2_1200KDOUT2412113CSDINCLKDIG0DIG1DIG2DIG3DIG4DIG5DIG6DIG7SdpSgSfSeSdScSbSa21167310582217152123201614DG0DG1DG2DG3DG4DG5DG6DG7a7b6c4d2e1f910gdpDG2U22583abcdefdpgComComISET18dpgfedcba19VCCGND49VCCGNDGNDa7b6c4d2e1f910gdpDG1U21583abcdefdpgComCom(9.53K)U8MAX7219a7b6c4d2e1f910gdpDG0U20583abcdefdpgComCom

Digital LAB (A) 51实验指导书

U13112CY132.768K18MR3CINCOUT10COUTQ4Q5Q6Q7Q89QQ10Q12Q13Q141KHz7546141315123912RST12345678910D7D6D5D4D3D2D1D0GND987654321118D7D6D5D4D3D2D1DOCKCL8Q7Q6Q5Q4Q3Q2Q1Q1213141516171819C320PC282PGNDVCCGNDVCCVCCGNDVCCJ42048~2 Hz74HC574K3K2K1K01R41MR510KR610KR710K R810KJ9K7K6K5K4U15MC4060J5217GNDENKCLRQ0Q1Q2Q334561234BELLD31N41481~1/8 HzK11K10K9K8VCCU17AMC4518U33A74HC00WR121311J6_1K15K14K13K12132H L12U32D74HC02Y213121113U36D74LS32U33D74HC00 北京联合大学 第 5 页

SK3SK41112RDK19K18K17K16191J6_2U33B74HC002G1G2Y42Y32Y22Y11Y41Y31Y21Y12A42A32A22A11A41A31A21A1171513118642Vcc45H L6123579D7D6D5D4K23K22K21K209108U33C74HC0012141618U1474HC24454321RP210Kx4RP110Kx8VCC564219S_INTK1074HC08U34BU34C74HC0874HC088U34A31SW0SW1GND123456789VccSW2SW3SW4GNDU16515EIEO74HC148SW514J7GSCBA123467901234567432113121110SW6SW7Digital LAB (A) 51实验指导书

U18D0D1D2D3D4D5D6D7基准电压+5VVcclsbDI0DI1DI2DI3DI4DI5DI6msbDI7Rfb+10V765416151413Vref9LM3246U45AIout1112GND3GNDIout2ILE311LM3242RW_410K57U45BVcc8R1118KR1218KS_V2-5V ~ +5V12GNDDEVICES0LCD128*64GNDVccDAC08322A0A111234563GNDVCCVEERSR/WE4-5~0VS_V012R139.1KU45DGNDS_V113LM3241412GNDGNDS_RW1VccY4WR1912U35A74HC02CSWR1-10VAGNDVcc20Vcc10GNDU34D74HC08GNDGND1817WR2XferGNDRW_310KD0D1D2D3D4D5D6D778910111213140~+5V12DB0DB1DB2DB3DB4DB5DB6DB7ST7920LCD 128 X 641111VccRST151617PSBNCRST1213J1012345678D/A0832输出Vo=0~5VVccVccGND0~+5V12RDWRCS3VccGND181920VOUTLED+LED-U19U35C74HC02RDD7D6D5D4D3D2D1D08109S_RW2RW_110KRW_210K0~+5V12GNDWR1DEVICES1PRINT 31Y62STBY3U35B74HC02ENABLECLOCKALESTARTEOC7ADD-AADD-BADD-Cref(+)ref(-)1054WRD0D1D29226252423U17B14131211Q3Q2Q1Q0RMC4518ENCLK15GND10Vcc9ALEGNDGNDU36A74HC326(基准电压+5V)12Vcc16GND(8051:ALE= 1/6 osc)S_EOC1D0D1D2D3D4D5D6D7357911131517DB0DB1DB2DB3DB4DB5DB6DB7Print WHU44D04D15D26D37D48D59D610D711DS12C887CS2WRRDALE13151714CSR/WDSAS1RDY746574LS321191G2GVccAD0AD1AD2AD3AD4AD5AD6AD7IRQSQWNCNCNCNCNCNCVSS1923(IRQ-OC)201623212212GND1S_SQWU36BD4D5D6D7975374HC244RSTMOT18RST1GNDR910KS_IRQU39VccD0D1D2D3181614121Y11Y21Y31Y42Y12Y22Y32Y41A11A21A31A42A12A22A32A4246811131517GND192125423ACKBUSYSELERRPE26826VEEVEEVEEVEEGND1012141618202224GNDGNDGNDGNDGNDGNDGNDGND 北京联合大学 第 6 页

ADC0809212019188151417msb2-12-22-32-42-52-62-7lsb2-8IN-0IN-1IN-2IN-3IN-4IN-5IN-6IN-726272812345

Digital LAB (A) 51实验指导书

共阳绿色U42RP8470x8U43共阳绿色VccVcc123456789C40.1C50.1C60.1C70.1C80.1C90.1C100.1C110.1C120.1C130.1GNDVccabcdefdpgComComabcdefdpgComComC140.1C150.1C160.1C170.1C180.1C190.1C200.1C210.1C220.1C230.1GNDL15L14L13L12L11L10L9L8SK2C240.1C250.1910111213141516GNDVcc7642191058376421910583VccVcc1615141312111016151413121110C260.1GND9RP5330x89RP6330x8Vcc876543211234567812345678CD51000ufRP710Kx8123456789CD61000ufCD71000ufCD81000ufCD91000ufGNDGNDU45CU35D10U4174LS24489LM324Vcc111Y11Y21Y31Y42Y12Y22Y32Y41Y11Y21Y31Y42Y12Y22Y32Y4U2974LS247U4074LS244abcdefg131274HC02GNDGND整机最大电流480maJ0321GNDS_MusicF10.75AVccGNDCD10SPEAKER1111087654321876543218765432187654321J16J17J19J18U30E47uf74HC04R14200输出 硬件译码 软件译码 二进制显示二进制DIP开关量输出 J121蓝色高亮电源指示D2POWERR11MGNDU30F74HC041312GND向实验板外供电(无过流保护) 北京联合大学 第 7 页

13121110951141816141218161412975397531A11A21A31A42A12A22A32A41A11A21A31A42A12A22A32A4LTRB11G2G62174352468111192468111191315171315171G2GDCBAB1Vcc

Digital LAB (A) 51实验指导书

短路后可以自发自收进行自检RP3470x8GNDU28MAX2021011TXD25DB 2-TxD 3-RxD 7-GNDJ11GNDSK1VccT2-IT1-IRXDT2-OT1-O9124513R2-OR1-OC2+C2-C1+C1-R2-IR1-IV+V-VCCGND714813RP410Kx8123456789Vcc5948372611234567898765432191011121314151626+10V-10VJ15L7L6L5L4L3L2L1L01615VccCD4100ufCD210ufCD310ufJ1413121110654314Q7Q6Q5Q4Q3Q2Q1Q0Q7Q7CLK1PLCLK2CLK821979211510SERBAMRP7P6P5P4P3P2P1P0U3774LS1641312116543U3874LS165GND1234J12J13J12~J14 连接J3串口模式0及异步通讯实验1-TxD 2-GND 3-RxD 4-P17

12341234CD010ufCD110ufGNDCD0、CD1、CD2、CD3耐压10uf/50V 北京联合大学 第 8 页

Digital LAB (A) 51实验指导书

A1512U30:174HC0412U31:174HC323CS0TO 62256U6VccCS1TO 6116U31:274HC326A2A1A0654U30:274HC044532174HC138A1134E3E2E1CBAY7Y6Y5Y4Y3Y2Y1Y079101112131415Y7Y6Y5Y4Y3Y2Y1Y09A8U31:374HC328CS25U30:374HC04610TO DS12C887U31:474HC32111213U30:4A39108CS3U36:3TO LCD74HC32974HC048Digital-LAB A型 系统地址译码电路

A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 地址 选择 1 1 0 0 0 0 0 0 0 0 0 1 X X X X X X X X 0 1 X X X X X X X X 0 1 X X X X X X X X 0 1 1 1 0 0 0 0 0 0 0 1 0 1 X X X X X X 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 8000 1 FFFF 0 0800 1 0FFF 0 0100 0 0008 0 0000 1 0007 CS0 62256 CS1 6116 X 1 X 1 X 0 X 0 X 0 X 0 CS2 1 01FF DS12887 CS3 1 000F ST7920 其他 Y7~Y0 X X X X 1 X X X X 1 X X X X 0 X X X X 0

74LS138输出地址分配: Y0 动态显示端输入 00H

北京联合大学 第 9 页

Y1 动态显示位输入 01H Y2 矩阵键盘输入输出 02H Y3 Y4 Y5 未用 Y6 向打印机输出选通 Y7 打印机状态输入及ADC0809 的EOC 07H ADC0809 DAC0832写入 写入 03H 04H 05H 06H

Digital LAB (A) 51实验指导书

3. Digital LAB(A)51跳线器说明

SK0:1-2短接 单片机程序从89C51片内运行

2-3短接 单片机程序从EPROM27256运行,实验仪出厂不配27256,6116 JP0 :P0口的8个I/O JP1 :P1口的8个I/O JP2 :P2口的8个I/O JP3 :P3口的8个I/O

JP3_1:TXD为P3口的P3.0(RXD) RXD为P3口的P3.1(TXD), P1-0为 P1口的P1.0 JP3_2:TXD为P3口的P3.0(RXD) RXD为P3口的P3.1(TXD), P1-0为 P1口的P1.0

J2:1-2短接使用74HC574驱动LED显示

2-3短接使用MXA7219驱动LED显示, 实验仪出厂不配MAX7219芯片 J3:CLK对应MAX7219的13脚 Din对应MAX7219的1脚 CS 对应MAX7219的12脚 Dout对应MAX7219的24脚

J4:多级分频电路输出, 2048Hz,1024Hz,512Hz,256Hz,128Hz,64Hz,32Hz,8Hz,4Hz,2Hz J5:多级分频电路输出, 1Hz,1/2Hz,1/4Hz,1/8Hz J6_1: 单拍脉冲输出端, H 产生上升弦脉冲 L 产生下降弦脉冲 J6_2: 单拍脉冲输出端, H 产生上升弦脉冲 L 产生下降弦脉冲 J9:短接蜂鸣器允许使用

J10:对应的ADC0809的8个A/D输入端

J11:1脚对应RS-232C的2脚接收,MAX202的13脚 2脚对应RS-232C的3脚发送, MAX202的14脚 J12:CLK对应芯片74LS164的8脚CP

A B对应芯片74LS164的1, 2脚数据输入 MR 对应芯片74LS164的9脚 J13:CLKI对应芯片74LS165的2脚CP1 Q7 对应芯片74LS165的9脚 Q7 PL 对应芯片74LS165的1脚 PL J14:TXD 对应芯片MAX202的11脚TXD RXD 对应芯片MAX202的12脚RXD J16:对应的74LS247的输入端 J17:对应的74LS247的输入端

北京联合大学 第 10 页

Digital LAB (A) 51实验指导书

J18:对应SK2 8个拨码输入端 J19:对应L8-L15发光二极管

北京联合大学 第 11 页

Digital LAB (A) 51实验指导书

三: Digital LAB(A)51实验步骤及相关软件使用说明

1. Digital LAB(A)51实验板实验步骤

(1) 利用调试集成软件包WAVE或其他调试集成软件包(如Keil),完成对用户程序的编辑、汇编(或编译)、仿真调试,并将调试成功的用户程序生成.HEX或.BIN目标文件以供烧写;(本实验过程中采用WAVE软件包);

(2) 将下载线和延长线连接好,在计算机和实验板断电情况下,用连接好的下载线及其延长线将试验箱与计算机的打印机口相连,然后打开计算机,接通实验板电源; (3) 利用在线编程SLISP软件将WAVE集成软件包生产的目标文件下载进单片机; (4) 断开单片机系统电源,然后按照所做实验中实验电路及连线部分完成外围电路的连接,

(5) 接通实验板电源,根据相应操作显示实验结果。 注意事项:

(1) 下载线连接计算机时必须在计算机关闭状态下安装或拆除;

(2) 下载线连接单片机系统时,必须在单片机系统断电的情况下连接或拆除; (3) 下载程序时必须保证所有外围电路连接为断开状态。

(4) 在连接实验电路图时,应确保实验板电源关闭,接线时应特别注意彩虹排线的方向。

2. WAVE软件的基本操作

(参见教材259页-262页)

3.SLISP软件的基本操作步骤

(1) 双击桌面SLISP图标,进入ISP软件,在通信参数设置及器件选择项中分别选择LPT1、FAST、AT89S52; (2) 在FLASH存贮器栏中,单击文件按钮,选择需要下载的程序(经过编译生成.HEX或.BIN目标文件);

(3) 在编程选项中选定重载文件、擦除、校验芯片ID码、FLASH四项; (4) 在加密模式中选定Lock Mode 1;

(5) 双击编程按钮,即可进行程序下载操作,编程过程中会显示擦除、写入、校验等信息。

四、实验要求及注意事项

(1) 实验课前必须预习实验内容,编写好实验程序,否则取消实验资格。 (2) 每逢实验课须按照排定的时间准时到实验室,不得迟到。 (3) 每次实验完后按要求完成实验报告并在下次实验前交回。

(4) 在第一次实验课前由实验指导老师安排座位并进行登记,此后不得任意调换位置。

(5) 每次领到实验箱后,首先检查实验台上的仪器设备和配件有无短缺损,如有问题及时向实验指导老师声明,否则事后发现须承担赔偿责任。

(6) 插接线路时一定要关闭实验仪电源,绝不能热插拔;在不进行联机调试的情况下请随手将实验仪的电源关闭。

(7) 在实验室内禁止玩游戏、浏览与实验无关的网页。

北京联合大学 第 12 页

Digital LAB (A) 51实验指导书

(8) 应保持实验室的整洁、卫生,不要大声喧哗。

(9) 做完实验后,关闭计算机电源,整理好实验台,待实验指导老师检查完后方可离开。

五、实验报告要求

(1) (2) (3) (4) (5) (6) (7) (8) (9)

实验题目 实验目的 实验要求 设计方案

电路原理图(硬件实验) 程序流程图 程序清单 调试结果

收获体会、存在问题

说明:电路图和程序清单手写或打印均可

北京联合大学 第 13 页

Digital LAB (A) 51实验指导书

第二章 软件实验

实验一 存储器块清零

一、 实验目的

1. 掌握存储器读写方法 2. 了解存储器的块操作方法

二、 实验要求

1. 指定存储器中某块的起始地址和长度,要求能将其内容清零。

三、 实验说明

通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编程,调试方法。

四、 程序框图

设置块起始地址 设置块长度 当前地址内容清零 地址加1 否 是否清除完 是 结束 北京联合大学 第 14 页

Digital LAB (A) 51实验指导书

五、 程序参考

Block equ 0100h

mov dptr, #Block mov r0, #0 clr a Loop:

movx @dptr, a

inc dptr djnz r0, Loop ljmp $ end

思考1:上述程序对哪一部分存储单元进行了清零操作,该存储单元的位置和物

理地址是什么?数据块的长度是多少?

思考2:如何将存储器块的内容置成某固定值(例全填充为055H)? 请学生修改程

序,完成此操作,运行程序看执行结果。

软件实验二 内存块移动

一、 实验目的

一、了解内存的移动方法。 二、加深对存储器读写的认识。

二、实验要求

将指定源地址和长度的存储块移到指定目标位置

三、实验说明

块移动是计算机常用操作之一,多用于大量的数据复制和图象操作。

四、实验内容:

按下面所给程序框图编程将外部数据存储器0100H~01FFH单元内容移到0200H~02FFH单元。(为清楚看出实验结果可先利用实验一对0100H~01FFH单元赋值后移动)

北京联合大学 第 15 页

Digital LAB (A) 51实验指导书

五、程序框图

设置块的源地址 设置块的目标地址 设置移动长度 从源地址取数 保存到目标地址中 源地址加1 目标地址加1 否 是否移动完 是 结束 思考:本框图是给出起始地址,用地址加一方法移动块,请思考给出块结束地址,

用地址减一方法移动块的算法。另外,若源块地址和目标块地址有重叠,该如何避免?

北京联合大学 第 16 页

Digital LAB (A) 51实验指导书

软件实验三 二进制到BCD转换

一、 实验目的

1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法

二、 实验要求

将给定的一个二进制数,转换成二十进制(BCD)码

三、 实验说明

计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。

四、 实验内容

参考下面所给子程序框图,编写出完整的实验程序,给累加器赋值,调用二进制数转换BCD码子程序;运行程序,查看结果是否正确。

五、 程序框图(二进制数转换BCD码子程序)

给出要转换的二进制数 将数除以100,得百位数 保存百位数 将余数再除以10,得十位数 保存十位数 余数为个位数,将其保存 结束 北京联合大学 第 17 页

Digital LAB (A) 51实验指导书

六、 参考程序: Result equ 20h org 0 ljmp Start BinToBCD:

mov b, #100 div ab

mov Result, a ; 除以 100, 得百位数 mov a, b mov b, #10 div ab

mov Result+1, a ; 余数除以 10, 得十位数 mov Result+2, b ; 余数为个位数 ret Start:

mov sp, #40h mov a, #123 call BinToBCD ljmp $ end

思考1:上述程序属何种程序结构、所要转换的二进制数是什么?转换结果所在存储单

元是什么?

思考2:如何将BCD转换成二进制数,试编程。

软件实验四 二进制到ASCII码转换

一、 实验目的

1. 了解BCD值和ASCII值的区别 2. 了解如何将BCD值转换成ASCII值

3. 了解如何查表进行数值转换及快速计算。

二、 实验要求

给出一个BCD数,将其转换成ASCII值。

三、 实验说明

此实验主要让学生了解数值的BCD码和ASCII码的区别,利用查表功能可能快速地进行数值转换。进一步了解数值的各种表达方式。

四、 实验内容

参考下面所给子程序框图,编写出完整的实验程序,给累加器赋值,调用二进制数转换ASCII码子程序;运行程序,查看结果是否正确。

北京联合大学 第 18 页

Digital LAB (A) 51实验指导书

五、 程序框图

六、 参考程序:

Result equ 20H org 0000H ljmp Start ASCIITab:

db '0123456789ABCDEF' ; 定义数字对应的ASCII表 BinToASC:

mov dptr, #ASCIITab

mov b, a ; 暂存 A swap a

anl a, #0fh ; 取高四位 movc a, @a+dptr ; 查ASCII表 mov Result, a

mov a, b ; 恢复 A

北京联合大学 第 19 页

给出要转换数BCD码 取出BCD码高四位 查表得到ASCII码 保存高位ASCII码 取出BCD码低四位 查表得到ASCII码 保存低位ASCII码 结束

Digital LAB (A) 51实验指导书

anl a, #0fh ; 取低四位 movc a, @a+dptr ; 查ASCII表 mov Result+1, a ret Start:

mov sp, #40h mov a, #1ah call BinToASC ljmp $ end

思考1:上述程序中数字的ASCII码是如何存放在表格中的,表格的首地址是什么? 思考2:上述程序属何种程序结构、所要转换的二进制数是什么?转换结果所在存储单

元是什么? 转换的结果是什么?

北京联合大学 第 20 页

Digital LAB (A) 51实验指导书

软件实验五 程序跳转表

一、 实验目的

1. 了解程序的多分支结构

2. 了解多分支结构程序的编程方法

*

二、 实验要求

在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。

三、 实验说明

多分支结构是程序中常见的结构,若给出调用号来调用子程序,一般用查表方法,

查到子程序的地址,转到相应子程序。

四、 程序框图

五、 参考程序

org 0000H ljmp Start Func0: mov a, #0 ret

Func1: mov a, #1 ret

Func2: mov a, #2 ret

Func3: mov a, #3 ret FuncEnter:

add a, acc ; ajmp 为二字节指令, 调用号 X 2

北京联合大学 第 21 页

设置调用号 根据调用号查表 得到跳转地址 跳转到相应程序段 调用返回 Digital LAB (A) 51实验指导书

mov dptr, #FuncTab jmp @a+dptr FuncTab:

ajmp Func0 ajmp Func1 ajmp Func2 ajmp Func3 Start:

mov a, #0 call FuncEnter mov a, #1 call FuncEnter mov a, #2 call FuncEnter mov a, #3 call FuncEnter ljmp $ end

思考:上述程序属何种程序结构、程序执行后的结果是什么?

北京联合大学 第 22 页

Digital LAB (A) 51实验指导书

软件实验六 数据排序

一、 实验目的

1. 了解数据排序的简单算法。 2. 了解数列的有序和无序概念

*

二、 实验要求

给出一组随机数,将此组数据排序,使之成为有序数列

三、 实验说明

有序的数列更有利于查找。本程序用的是“冒泡排序”法,算法是将一个数与后面的数相比较,如果比后面的数大,则交换,如此将所有的数比较一遍后,最大的数就会在数列的最后面。再进行下一轮比较,找出第二大数据,直到全部数据有序。

四、 程序框图

设置数据区地址 设置数据区长度 清除交换标志 当前地址取数A 地址加1 当前地址取数B 是 A<=B? 否 设置交换标志 否 数据比较完 是 否 全部有序? 是 交换A,B数位置 结束 北京联合大学 第 23 页

Digital LAB (A) 51实验指导书

五、 参考程序

Size equ 10 Array equ 50h

Change equ 0 ; 交换标志 Sort:

mov r0, #Array mov r7, #Size-1 clr Change Goon:

mov a, @r0 mov r2, a inc r0 mov B, @r0

cjne a, B, NotEqual sjmp Next NotEqual:

jc Next setb Change xch a, @r0 dec r0 xch a, @r0 inc r0 Next:

djnz r7, Goon jb Change, Sort ljmp $ end

思考:上述程序对哪一部分数组进行了排序?程序执行后数据从小到大排列,请编

程实现将上述数组中的数从大到小排列?

北京联合大学 第 24 页

Digital LAB (A) 51实验指导书

第三章 单片机内部功能单元实验

硬件实验一 P1,P2,P3口输出实验

一、 实验目的

学习P1、P2、P3口作为输出方式使用的方法;掌握延时子程序的编写和使用。

二、 实验内容

P1口做输出口,接8个发光二极管,编写程序,使发光二极管循环点亮。

三、 实验原理

P1口为8位准双向口,每一位可独立定义为输入口或输出口。CPU对P1口的操作可以是字节操作也可以是位操作。实验中P1口接8个发光二极管,编写程序,通过P1口控制LED的状态。

延时程序的实现常用的有两种方法:一是用定时器中断来实现,二是用指令循环来实现。在系统时间允许的情况下,可以采用后一种方法。

以12MHz晶振为例,一个机器周期为1μs,如果要实现一个0.1s的延时,可这样实现:

MOV R1,#0A3H

DL1: MOV R2,# X DL2: DJNZ R2,DL2

DJNZ R1,DL1

以上程序中的MOV和DJNZ指令均为两个机器周期,即执行该指令需2μs,则X值可由式(2X+2+2)×200+2=100,000 求出X=248,即F8H。

四、 实验电路

89S52 P1.0 · · · · P1.7 P10 L8 · · · · P17 L15 LED×8 +5V 五、 接线方法

1 P1 J19 北京联合大学 第 25 页

Digital LAB (A) 51实验指导书

连线 连接端1 连接端2 六、 实验框图

开始 设置初始值 数据输出 左移一位 延时 P1口循环点灯程序框图 七、 参考程序

汇编程序:

ORG

AJMP ORG MAIN: MOV MOV LOOP: MOV LCALL RL LJMP DL: MOV DL1: MOV DL2: DJNZ DJNZ

0000H

MAIN 0100H SP,#60H A,#0FEH P1,A DL A LOOP R1,#0A3H R2,#0F8H R2,DL2 R1,DL1

;送亮1个发光二极管控制字 ;送P1口 ;延时 ;左移 ;循环 ;延时子程序

北京联合大学 第 26 页

Digital LAB (A) 51实验指导书

RET END

八、 练习题

P2口接8个LED灯,编写程序,使8个LED每隔2个右移循环点亮,间隔时间为一秒钟。

硬件实验二 P1,P2,P3口输入实验

一、 实验目的

学习P1口作为输入口的使用方法

二、 实验内容

P1口做输入口,接8位拨码开关;P3做输出口,接8个发光二极管。编写程序读取P1口的开关量输入状态,输出到P3口,由P3口的二极管指示出来。

三、 实验原理

P1口为准双向口,P1口的每一位都能独立的定义为输出线或输入线。作为输入的口线,必须向锁存器相应位写入“1”,该位才能作为输入。

四、 实验电路

89S52 K0 P1.0 P1.0 P3.0 · · · · · · · · P1.7 P3.7 P30 P3. LED×8 L8 · · · · P3.7 P3 L15 J19 +5V K7 J18 P1.7 P1 五、 连线方法

连线 1 2 连接端1 P1.0~P1.7 P3.0~P3.7 连接端2 J18(K0-K7) L8~L15

六、 参考程序

ORG AJMP ORG

0000H MAIN 0100H

北京联合大学 第 27 页

Digital LAB (A) 51实验指导书

MAIN: LOOP: MOV

MOV MOV MOV LJMP END

SP,#60H P1,#0FFH A,P1 P3,A LOOP

;将P1口各引脚置“1” ;读P1口输入状态 ;由P3口输出 ;循环

思考:程序中MOV

P1,#0FFH, MOV A,P1,两条指令执行后,累加器A中的内容是什

么?这两条指令的作用是什么?

硬件实验三 定时器实验

一、 实验目的

了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在定时器方式下的编程方法。

二、 实验内容

定时器实验:在使用12MHz晶振的条件下,用定时器1产生10ms定时,由P1.0口输出周期为2s的方波信号,并通过接在P1.0口的 LED灯的亮灭来显示。

三、 实验原理

80C51内部有T0、T1两个定时器/计数器,都可以工作于定时方式或事件计数器方式。工作方式的选择由特殊功能寄存器TMOD中的M1M0控制位决定。

工作于定时器方式时,计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值增1。每个机器周期等于12个振荡周期,则计数速率是振荡频率的1/12,在本实验中采用12MHz晶振,计数速率为1MHz。

程序中定时器1采用工作方式1,用查询方法来实现1s的延时。在定时器1的计数寄存器(TH1、TL1)中设置一个时间常数,使其每隔0.01秒溢出标志位TF1置1,CPU查询到后R0中计数值减1,令(R0)= 64H,即可实现1秒的延时。

时间常数可按以下方法确定:

机器周期=12/晶振频率=12/12=1-6s

定时器初值设为X,则(216—X)×1=10-2s,由此求出X=55536 化为十六进制:X=D8F0H,故初始值为:TH1=D8H,TL1=F0H。

四、 实验电路

80C31 P1.0 P10 T1 L1 +5V 北京联合大学 第 28 页 Digital LAB (A) 51实验指导书

五、 连线方法

连线 1 连接端1 P1.0 连接端2 L8

六、 实验框图 开始 置T1中断工作方式 设置初始状态 设置定时常数 设置计数值 启动定时 等待定时时间到 重新设置定时常数 否 计数值-1=0?

是 输出状态位 七、 参考程序

ORG AJMP

0000H MAIN

北京联合大学 第 29 页

Digital LAB (A) 51实验指导书

ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#10H

CLR P1.0

MOV TL1,#0F0H MOV TH1,#0D8H LP MOV R0,#64H SETB TR1

LP1: JBC TF1,LP2 SJMP LP1

LP2: MOV TL1,#0F0H MOV TH1,#0D8H

DJNZ R0,LP1

CPL P1.0 SJMP LP END

;设置定时器1模式1 ;设置定时器初值 ;设置计数值 ;启动定时器1 ;查询溢出标志 ;重置初值

;定时器溢出100次,P1.0取反 ;循环

八、 练习题

采用定时器0工作在方式0实现由P1.0口输出周期为2s的方波信号,并通过接在P1.0口的 LED灯的亮灭来显示。

北京联合大学 第 30 页

Digital LAB (A) 51实验指导书

硬件实验四 计数器实验

一、 实验目的

了解MCS-51单片机中定时器/计数器的基本结构、工作原理和工作方式,掌握工作在计数器方式下的编程方法。

二、 实验内容

利用51内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数。将其数值按二进制数在P1口驱动LED灯上显示出来。

三、 实验原理

80C51内部有T0、T1两个定时器/计数器,都可以工作于定时方式或事件计数器方式。工作方式的选择由特殊功能寄存器TMOD中的M1M0控制位决定。

工作于计数器方式时,计数脉冲来自相应的外部引脚T0或T1。当输入信号由1至0跳变时,计数寄存器的值增1。在本实验中引脚T0(P3.4)接外部输入信号。

四、 实验电路

+5V 89S52 P1.0 S1 P3.4/T0 T0 P1.3 P1.3 L11 P1.0 L8 +5V 五、 连接方法

连线 连接端 1 连接端2 四、实验说明P1.0 L-8 1 P1.1 L-9 2 P1.2 L-10 3 1: J6_1中H口的单脉冲输出接4 P1.3 L-11 T0 (P3-4) 5 J6_1中H口 T0(P3-4) 单次脉冲

六、 实验框图

开始 设置工作方式 开始计数 计数,输出计数值 北京联合大学 第 31 页 Digital LAB (A) 51实验指导书

硬件实验五 中断实验

一、 实验目的

了解MCS-51单片机的中断组成、中断原理、中断处理过程、外部中断的中断方式,掌握中断功能的编程方法。

二、 实验内容

(1)定时器中断实验:在使用12MHz晶振的条件下,采用中断方法实现1s定时,由P1.0口输出周期为2s的方波信号,并通过示波器观察P1.0的输出波形。

(2)外部中断实验:通过按键产生单脉冲作为中断源,触发外部中断,中断响应后由P1.0口输出信号,使发光二极管点亮。

三、 实验原理

请参考MCS-51单片机系列教程或手册的相关内容。

四、 实验电路

+5V 89S52 P1.0 S1 P3.3/I1 INT1 P1.0 L8 +5V 五、 连线方法

连线 1 2* 连接端1 P1.0 J6-1中的L端 连接端2 L8 INT1(P3.3)

*定时器中断实验不需要连接此线

六、 实验框图

北京联合大学 第 32 页

Digital LAB (A) 51实验指导书

定时器中断实验 开始 定时中断入口 置T1中断工作方式 置定时常数 设置定时常数 秒计数值减1 否 设置初始状态位 是否到1秒 Y 是 设置秒计数值 重新设置秒计数值 中断允许 状态位取反 输出状态位 中断返回 等待中断 主程序框图 定时中断子程序框图

七、 参考程序

(1)定时器中断实验

ORG AJMP ORG AJMP ORG MOV SETB MOV MOV

0000H MAIN 001BH T1INT 0100H SP,#60H P1.0

TMOD,#10H TL1,#0F0H

MAIN:

;定时器1工作方式1 ;置定时器初值

北京联合大学 第 33 页

Digital LAB (A) 51实验指导书

MOV TH1,#0D8H MOV IE,#88H MOV R0,#64H SETB TR1 HERE: SJMP HERE

T1INT: MOV TL1,#0F0H MOV TH1,#0D8H DJNZ R0,LOOP CPL P1.0 MOV R0,#64H LOOP: RETI

(2)外部中断实验

ORG AJMP ORG AJMP

0000H MAIN 0013H EXINT1

;中断允许 ;启动定时器1

;定时器中断服务程序

ORG 0100H MAIN: MOV SP,#60H MOV A,#01H MOV P1,A SETB P3.2

SETB IT1

MOV IE,#84H HERE: SJMP HERE EXINT1: PUSH A

CLR P1.0 POP A MOV P1,A

RETI

;外部中断1口置高 ;下降沿触发 ;中断允许 ;等待中断

;外部中断服务程序

八、 练习题

编写程序实现外部中断源每申请一次中断发光管点亮2秒钟。

北京联合大学 第 34 页

Digital LAB (A) 51实验指导书

硬件实验六 串行通讯实验

一、 实验目的

了解MCS-51单片机串行口(UART)的结构、PC机串行通讯的基本要求、串行通讯的原理和数据交换过程,掌握单片机与单片机间以及单片机与PC机间进行串行通讯的编程方法。

二、 实验内容

单片机之间串行通讯实验:甲机将一组立即数(00H~0FH)通过串口发送到乙机,乙机接收到后保存到片内RAM的50H~5FH中,串口采用工作方式1,波特率为4800。

三、 实验原理

参考MCS-51单片机系列教程或手册的相关内容。

说明:

1、通讯双方的RXD、TXD信号本应经过电平转换(如图1)后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接(如图2)。也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。

2、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。

3:实验仪与PC机通讯时,将实验仪通过RS232电缆与PC的COM口连接。PC机上需安装串口调试助手程序。

四、 实验电路

图1

北京联合大学 第 35 页

Digital LAB (A) 51实验指导书

图2

连线 1 2 3 89S52 P3.1/TX TXD RXD GND P3.0/RXGND P3.1/TXP3.0/RXGND 89S52 TXD RXD GND 甲机 乙机 五、 连线方法

连接端1 【甲机】P31/TXD 【甲机】P30/RXD GND 连接端2 【乙机】P30/RXD 【乙机】P31/TXD GND 六、 参考程序 发送端程序:

MAIN: SE1: SE2: SE3:

ORG AJMP ORG MOV MOV MOV MOV MOV MOV SETB MOV MOV MOV JBC SJMP INC DJNZ SJMP END

0000H MAIN 0100H SP,#60H TMOD,#20H TL1,#0F3H TH1,#0F3H SCON,#40H PCON,#80H TR1 R7,#10H A,#00H SBUF,A TI,SE3 SE2 A

R7,SE1 $

;定时器1模式2 ;设置定时器初值 ;设置串口方式1 ;波特率加倍 ;启动定时器1

;发送数据

;是否发送完毕

北京联合大学 第 36 页

Digital LAB (A) 51实验指导书

接收端程序:

ORG

AJMP ORG MAIN: MOV MOV MOV MOV MOV MOV SETB

MOV

MOV RE1: JBC SJMP RE2: MOV MOV INC

DJNZ

SJMP END

七、练习题:

0000H MAIN 0100H SP,#60H TMOD,#20H TL1,#0F3H TH1,#0F3H SCON,#50H PCON,#80H TR1 R0,#50H R7,#10H RI,SE2 SE1

A,SBUF @R0,A R0

R7,RE1 $

;定时器1模式2 ;设置定时器初值

;设置串口为方式1,允许接收 ;波特率加倍 ;启动定时器1 ;数据缓冲区首址

;接收数据

;是否接收完毕

将甲乙两台实验仪的TXD与RXD连接,甲机的P1口接J18DIP开关,乙机的P2口接J19LED显示,编程实现将甲机P1口的DIP开关状态发送给乙机并通过接在乙机P2口的LED进行显示。

北京联合大学 第 37 页

Digital LAB (A) 51实验指导书

第四章 系统扩展实验

硬件实验七 A/D转换实验

一、 实验目的

1. 掌握A/D转换与单片机的接口方法。 2. 了解A/D芯片ADC0809转换性能及编程。 3. 通过实验了解单片机如何进行数据采集。

二、 实验内容

利用实验板上的ADC0809做A/D转换器,实验板上的电位器提供模拟量输入,编制程序,将模拟量转换成二进制数字量存放在内部RAM并在LED灯上显示。

三、 实验原理

参考MCS-51单片机系列教程或手册的相关内容。

A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好;价格便宜,但速度慢;二是逐次逼近A/D转换器,精度,速度,价格适中;三是并行A/D转换器,速度快,价格也昂贵。

实验用的ADC0809属第二类,是八位A/D转换器。每采集一次一般需100us。本程序是用查询方式读入A/D转换结果,也可以用中断方式读入结果,在中断方式下,A/D转换结束后会自动产生EOC信号,将其与CPU的外部中断相接,有兴趣的同学可以试试编程用中断方式读回A/D结果.

四、 实验电路及连线

ADC0809的AD通道6和电位器RW_1中输出端已经连接, ADC0809的AD通道7和电位器RW_2中输出端已经连接

按键盘6,调节RW_1电位器;按键盘7,调节RW_2电位器。

74LS138输出地址分配:(参见原理图) Y0 动态显示端输入 00H

北京联合大学 第 38 页

Y1 动态显示位输入 01H Y2 矩阵键盘输入输出 02H Y3 Y4 Y5 未用 Y6 向打印机输出选通 Y7 打印机状态输入及ADC0809 的EOC 07H ADC0809 DAC0832写入 写入 03H 04H 05H 06H Digital LAB (A) 51实验指导书

五、 实验框图

开始 初始化 启动A/D 否 A/D转换完 数据输出 清读数标志 主程序框图 北京联合大学 第 39 页

Digital LAB (A) 51实验指导书

六、 参考程序

ORG 0000H AJMP MAIN ORG 0100H

MAIN: MOV SP,#60H MOV DPTR,#0003H ;选通A/D MOV A,#06H ;选择通道 MOVX @DPTR,A ;启动A/D转换 ADEOC:MOV DPTR,#0007H ;循环读取EOC信号 MOVX A, @DPTR; JNB ACC.4,ADEOC; MOV DPTR,#0003H MOVX A,@DPTR ;读转换结果 MOV 50H,A MOV P1,A SJMP $ END

七、 练习题

1. 给出用中断方式进行A/D转换的电路原理图并编程实现 2. 编写程序,循环采集8路模拟量

硬件实验八 D/A转换实验

一、 实验目的

1、了解D/A转换的基本原理。

2、了解D/A转换芯片0832的性能及编程方法。 3、了解单片机系统中扩展D/A转换的基本方法。

二、 实验要求

利用DAC0832,编制程序产生正锯齿波,用示波器观看。

三、 实验原理

参考MCS-51单片机系列教程或手册的相关内容 说明: 1、D/A转换是把数字量转换成模拟量的变换,实验台上D/A电路输出的是模拟电压信号。

2、产生锯齿波和三角波的表格只需由数字量的增减来控制,同时要注意三角波要

北京联合大学 第 40 页

Digital LAB (A) 51实验指导书

分段来产生。要产生正弦波,较简单的方法是造一张正弦数字量表。即查函数表得到的值转换成十六进制数填表。

D/A转换取值范围为一个周期,采样点越多,精度越高些。本例采用的采样点为256点/周期。

3、8位D/A转换器的输入数据与输出电压的关系为 U(0∽-5V)=Uref/256×N

U(-5V∽+5V)=2·Uref/256×N-5V (这里 Uref为+5V)

四、 实验电路及连线

五、 实验框图

开始 置转换初值 选通D/A D/A转换 改变转换值 转换完毕 否 是 北京联合大学 第 41 页

Digital LAB (A) 51实验指导书

六、 参考程序

ORG AJMP ORG

MAIN: MOV DA1: MOV MOV DA2: MOV MOVX INC CJNE AJMP END

0000H

MAIN 0100H SP,#60H

DPTR,#0004H R6,#80H A,R6

@DPTR,A R6 R6,#0FFH,DA2 DA1

;选D/A通道 ;置转换初值 ;启动D/A转换 ;数字加1

;为FFH时跳转

七、 练习题

编写程序,使D/A输出正弦波。

北京联合大学 第 42 页

Digital LAB (A) 51实验指导书

硬件实验九 八段数码管显示

一、 实验目的

1. 了解数码管动态显示的原理。

2. 了解用总线方式控制数码管显示

二、 实验内容

利用实验仪提供的显示电路,从第一位开始,依次显示0~7 8个数字.

三、 实验原理

参考MCS-51单片机系列教程或手册的相关内容

按地址输出相应数据,实现对显示器的控制。显示共有8位,用动态方式显示。8位数码管的8段段码由一片74HC574控制输出(显示字型段码表如下),8位数码管的8个位选是由一片ULN2003倒相驱动后,选择相应显示位。

七段数码管的字型代码表如下表: 显示字形 g f e d c b a 段码 0 1 2 3 4 5 6 7 8 9 A b C d E F 0 1 1 1 1 1 1 3fh 0 0 0 0 1 1 0 06h 1 0 1 1 0 1 1 5bh 1 0 0 1 1 1 1 4fh 1 1 0 0 1 1 0 66h 1 1 0 1 1 0 1 6dh 1 1 1 1 1 0 1 7dh 0 0 0 0 1 1 1 07h 1 1 1 1 1 1 1 7fh 1 1 0 1 1 1 1 6fh 1 1 1 0 1 1 1 77h 1 1 1 1 1 0 0 7ch 0 1 1 1 0 0 1 39h 1 0 1 1 1 1 0 5eh 1 1 1 1 0 0 1 79h 1 1 1 0 0 0 1 71h a f b g e c d 。dp

北京联合大学 第 43 页

Digital LAB (A) 51实验指导书

四、 实验线路及连线

五、 程序框图

开始 初始化显示参数 延时 取显示数据 位选通信号移位 输出段码数据 指向下一个显示数据 否 8位完成 是 返回 输出位选通信 北京联合大学 第 44 页

Digital LAB (A) 51实验指导书

六、 参考程序

ORG 0000H

************************************************************************* ;从第一位开始,依次显示0~7。

MOV R4, #00H; R4决定显示循环次数,即显示时间。 DIS_2:

MOV R2, #00H; R2表头地址。 MOV R3, #01H; R3显示位地址 DIS_1:

MOV A, R2;

MOV DPTR, #DISTAB; 送字型码。 MOVC A, @A+DPTR;

MOV DPTR, #0000H; MOVX @DPTR, A;

MOV A, R3;

MOV DPTR, #0001H; 显示位。 MOVX @DPTR, A; LCALL TIME_1ms; MOV A, R3; MOV DPTR, #0001H; MOVX @DPTR, A; MOV A, R3; RL A; MOV R3, A; INC R2;

CJNE R2, #08H, DIS_1; DJNZ R4, DIS_2;

;************************************************************************ ;共阴数码管显示字型码表。 DISTAB:

DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,; 表地址00~07H,数字0~7字型码。

;************************************************************************ ;延时1ms子程序 TIME_1ms:

MOV R7, #00H; (一个循环256×4=1000微秒) TIME_1ms0:

北京联合大学 第 45 页

Digital LAB (A) 51实验指导书

NOP; NOP;

DJNZ R7, TIME_1MS0; RET;

硬件实验十 键盘扫描显示实验

一、 实验目的

1、掌握键盘和显示器的接口方法和编程方法。 2、掌握键盘扫描和LED八段码显示器的工作原理。

二、 实验要求

在上一个实验的基础上,利用实验仪提供的键盘扫描电路和显示电路,做一个扫描键盘和数码显示实验,把按键输入的键码在八位数码管上显示出来。

实验程序可分成三个模块。

①键输入模块:扫描键盘、读取一次键盘并将键值存入键值缓冲单元。 ②显示模块:将显示单元的内容在显示器上动态显示。 ③主程序:调用键输入模块和显示模块。

三、 实验原理

参考MCS-51单片机系列教程或手册的相关内容

本实验仪提供了一个6×4的小键盘,向列扫描码地址逐列输出低电平,然后从行码地址读回。如果有键按下,则相应行的值应为低,如果无键按下,由于上拉的作用,行码为高。这样就可以通过输出的列码和读取的行码来判断按下的是什么键。在判断有键按下后,要有一定的延时,防止键盘抖动。参见地址译码,详细原理参见原理图

四、 实验电路及连线

北京联合大学 第 46 页

Digital LAB (A) 51实验指导书

五、 实验框图

开始 显示缓冲区初始化 否 LED显示 是 有键输入 是 读取键值 开始 初始化地址参数 输出列扫描信号 列扫描信号移位 读入行信号 是 该列有键输入? 否 否 键值转换为显示数据 6列扫描完? 是 返回 主程序框图 按照行列计算键值 显示程序框图见前个实验 查表得键码 等待按键释放 返回 读键输入子程序框图

北京联合大学 第 47 页

Digital LAB (A) 51实验指导书

六、 参考程序

ORG 0000H

MOV SP, #60H; 堆栈指针。

LCALL RAMBLANK; 显示缓存区内容置为“1BH”,其显示代码为“空”。 KEYIN:

LCALL KEYOP; 调用键值查找子程序,F0=1有键按下,A=键值。 JNB F0, KEYIN_1; 没有键按下,转跳显示DISBUF中的内容。 MOV B, A;

LCALL XCHMOV; 将输入的键值放到KEYBUF的低地址单元,其他单 ;元内容移一位。 MOV A, B;

MOV DPTR, #DISTAB; 由键值查找共阴数码管显示字型码。 MOVC A, @A+DPTR;

CPL A; 由于P1口数码管共阳,A求反。 KEYIN_2:

LCALL KEYOP;

JB F0, KEYIN_2; 判断按键是否释放。 KEYIN_1:

LCALL DISRAM_N; 显示KEYBUF中的内容。 LJMP KEYIN;

;************************************************************************** ;按键处理子程序:

;F0=1表示有键按下,键值在A中。程序使用R2、R3、R4、R5。子程序使用11区,退出时恢复为00区。

;使用R2~R5,MCS-51没有PUSH R 及POP R 指令,使用改变R0~R7映射区。 KEYOP:

SETB RS0; 改变R0~R7映射区。 SETB RS1;

CLR F0; 清标志F=1时有键盘输入。 MOV R2, #00H; R2键值(00~1BH)。 MOV R3, #00H;

MOV R4, #06H; 列数,决定扫描次数 MOV R5, #01111111B; 从第一(D7)列开始。 K_AGAIN:

MOV A, R5; 输出扫描列 MOV DPTR, #0002H; MOVX @DPTR, A; NOP; NOP;

北京联合大学 第 48 页

Digital LAB (A) 51实验指导书

MOVX A, @DPTR; 输入行值。

ORL A, #0FH; 将输入的值变为××××1111,

CPL A; 求反,输入的值变为××××0000, JNZ K_OPRAT; 求反后,如果不是全“0”,表示有键按下。 MOV A, R5; 如果是全“0”,表示没有键按下。 RR A;

MOV R5, A; 扫描列右移,表示扫描下一列,保存在R5。 MOV A, R2;

ADD A, #04H; 扫描列每移动一位,R2的值增加04(每列4行)。 MOV R2, A;

DJNZ R4, K_AGAIN; 6列是否扫描完,扫描6行,一次扫描结束。 CLR F0; 没有键按下,强调F0=0,退出子程序。 LJMP KEYEND; ;有键按下处理。 K_OPRAT:

CPL A; 恢复键值。

SWAP A; 4位键值置换到低4位。 SETB C; K_NEXT:

RRC A;

JNC K_OP1; 移出行位值=0,由R3得到行值。 INC R3;

CJNE R3, #04H, K_NEXT; 行值为00~03,当R3=4,表示4行查找结束。 MOV R3, #00H; LJMP K_AGAIN; ;有键按下,找到行值后出来。 K_OP1:

MOV A, R3; 由列值、行值得到键值。 ADD A, R2;

SETB F0; 设置有键输入标志F0。 KEYEND:

CLR RS0; 恢复R0~R7映射区。 CLR RS1; RET;

;************************************************************************* ;子程序DISRAM_N,显示N个连续存储单元的内容,储存单元的低位地址=DISBUF。 DISBUF EQU 30H; 要显示的单元地址 COUNT EQU 08H; 显示的单元个数。 DISRAM_N:

北京联合大学 第 49 页

本文来源:https://www.bwwdw.com/article/eeb8.html

Top