单片机培训实验设计ECMT
- 格式:doc
- 大小:1.38 MB
- 文档页数:24
一、课程背景随着我国科技产业的快速发展,单片机技术在各个领域得到了广泛应用。
为了培养一批具备单片机设计、开发和应用能力的人才,本课程旨在为广大单片机爱好者、在校学生及在职人员提供一套全面、系统的单片机培训课程。
二、课程目标1. 使学员掌握单片机的基本原理、组成及工作流程;2. 使学员熟悉常用单片机的性能、特点和适用范围;3. 使学员具备单片机编程、调试和硬件设计能力;4. 使学员能够独立完成单片机应用系统的设计与开发。
三、课程内容1. 单片机基础知识1.1 单片机概述1.2 单片机发展历程1.3 单片机分类及特点2. 单片机硬件结构2.1 CPU2.2 存储器2.3 输入/输出接口2.4 定时器/计数器2.5 中断系统3. 单片机编程基础3.1 汇编语言编程3.2 C语言编程3.3 高级语言编程4. 单片机开发工具及仿真软件4.1 Keil uVision4.2 Proteus4.3 IAR Embedded Workbench5. 单片机应用实例5.1 简易计算器5.2 温度传感器5.3 LED灯光控制5.4 电机控制6. 单片机硬件设计6.1 电路设计6.2 PCB设计6.3 元器件选用7. 单片机调试与故障排除7.1 调试方法7.2 故障排除技巧四、教学方法1. 讲授法:讲解单片机基础知识、硬件结构、编程技巧等;2. 案例分析法:通过分析典型单片机应用实例,提高学员的实践能力;3. 实验法:组织学员进行单片机编程、调试和硬件设计实验;4. 互动讨论法:鼓励学员积极参与课堂讨论,分享学习心得。
五、课程安排1. 理论课时:40课时2. 实验课时:20课时3. 总课时:60课时六、考核方式1. 课堂表现:20%2. 实验报告:30%3. 期末考试:50%七、课程资源1. 教材:《单片机原理与应用》2. 电子资料:课程讲义、实验指导书、仿真软件等3. 实验设备:单片机实验板、编程器、示波器等八、课程特色1. 系统性强:涵盖单片机从基础知识到实际应用的全过程;2. 实践性强:注重学员动手能力的培养,通过实验提高学员的综合素质;3. 互动性强:鼓励学员积极参与课堂讨论,分享学习心得。
09单片机程序设计实训正文:一、实训背景及目的⑴实训背景在现代电子技术应用中,单片机广泛应用于各个领域,如家电控制、汽车电子、工业控制等。
熟练掌握单片机程序设计是一个电子工程师必备的基本技能。
⑵实训目的本实训旨在通过对单片机程序设计的学习和实践,提高学员对单片机的理解和应用能力,培养学员独立进行单片机程序设计的能力。
二、实训内容和流程⑴实训内容本实训主要包括以下内容:(1)单片机的基本概念及原理(2)单片机的开发环境搭建(3)单片机的编程语言及语法(4)单片机的输入输出控制(5)单片机的中断控制(6)单片机的计时器/计数器应用(7)单片机的串口通信⑵实训流程本实训的流程如下:(1)理论学习:学习单片机的基本概念、原理和编程语言等知识。
(2)实践环境搭建:安装单片机的开发环境,并进行相关配置。
(3)编写简单程序:使用单片机的编程语言编写简单的程序,实现LED闪烁的功能。
(4)输入输出控制:学习如何使用单片机控制输入输出设备,如按钮、LED灯等。
(5)中断控制:学习单片机的中断机制,并实现相应的中断处理程序。
(6)计时器/计数器应用:学习单片机的计时器/计数器的原理和应用,并进行相应的程序编写。
(7)串口通信:学习单片机的串口通信原理,并编写相应的程序进行串口通信。
三、实训要求⑴学员要求学员应具备一定的电子基础知识,了解电子元器件的基本原理和常用电路的组成方式。
⑵实训环境要求(1)硬件要求:学员需要准备一台支持单片机开发的计算机,并连接相应的开发板。
(2)软件要求:学员需要安装单片机的开发环境,并进行相关配置。
⑶实训成绩评定及证书(1)实训成绩评定:根据学员在课堂上的表现、实训作业的完成情况和实际操作的能力等进行综合评定。
(2)证书颁发:实训结束后,按照学员的成绩情况颁发相应的实训结业证书。
四、附件本文档涉及的附件包括:(1)实训课件:包括课堂讲解的PPT资料和实践操作的指导书。
(2)参考书籍:单片机程序设计相关的参考书籍。
单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本工作原理,掌握其内部结构和功能模块;2. 学生能掌握单片机编程的基本语法和常用指令,具备编写简单程序的能力;3. 学生能了解并运用单片机接口技术,实现与外围设备的通信和控制。
技能目标:1. 学生能运用所学知识,设计并实现简单的单片机控制系统;2. 学生能熟练使用编程软件和开发工具,进行单片机的程序编写、调试与优化;3. 学生能通过实验操作,培养动手能力和团队协作能力,提高问题解决能力。
情感态度价值观目标:1. 学生通过课程学习,增强对电子技术和编程的兴趣,培养主动探索和创新的意识;2. 学生在学习过程中,树立正确的价值观,认识到单片机技术在现实生活中的应用价值;3. 学生通过团队协作,培养沟通与协作能力,增强集体荣誉感和责任感。
课程性质:本课程为单片机原理与应用的综合实验课程,注重理论与实践相结合,以培养学生的动手能力和创新能力为主。
学生特点:学生具备一定的电子技术和编程基础,对单片机有一定了解,但实践经验不足。
教学要求:教师应结合学生特点和课程性质,采用任务驱动、案例教学等方法,引导学生主动参与实验,提高实践操作能力和创新能力。
同时,注重个体差异,因材施教,确保每位学生都能在课程中学有所获。
通过课程目标的分解与实现,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下三个方面:1. 单片机原理与结构- 熟悉单片机的内部结构,掌握其功能模块;- 了解单片机的工作原理,理解指令执行过程;- 学习单片机编程语言,掌握基本语法和常用指令。
教学大纲:参照教材第1章至第3章,共计6学时。
2. 单片机编程与接口技术- 学习单片机程序设计方法,掌握程序编写、调试与优化技巧;- 了解单片机接口技术,掌握I/O口、定时器、中断等应用;- 学习外围设备与单片机的通信协议,实现数据交换和控制。
教学大纲:参照教材第4章至第6章,共计10学时。
一、实训背景随着电子技术的飞速发展,单片机作为电子系统中的核心控制单元,其应用领域日益广泛。
为了使学生深入了解单片机的工作原理、应用方法以及设计过程,提高学生的动手能力和团队合作精神,特制定本单片机实训报告方案。
二、实训目的1. 掌握单片机的基本原理和结构,熟悉其各个模块的功能。
2. 熟悉单片机应用系统的一般设计过程,培养系统设计能力。
3. 提高学生的动手能力,通过实际操作加深对单片机知识的理解。
4. 增强团队合作意识,培养学生沟通协调能力。
5. 培养学生的创新意识和解决问题的能力。
三、实训内容1. 单片机基础知识- 单片机的结构和工作原理- 单片机的指令系统- 单片机的编程方法- 单片机的接口技术2. 单片机应用系统设计- 单片机最小系统设计- 单片机与外部设备接口设计- 单片机程序设计- 单片机应用系统调试3. 实践项目- LED流水灯- 设计目的:通过控制LED灯的闪烁,熟悉单片机的I/O操作。
- 设计要求:实现LED灯的快速闪烁,并实现闪烁频率的可调。
- 按键控制- 设计目的:通过按键控制LED灯的开关,熟悉单片机的中断系统。
- 设计要求:实现按键的识别和响应,控制LED灯的开关。
- 温度传感器- 设计目的:利用温度传感器采集环境温度,通过单片机处理并显示。
- 设计要求:实现温度的实时采集和显示,并具有超温报警功能。
- 智能小车- 设计目的:设计一款智能小车,实现避障、循迹等功能。
- 设计要求:实现小车的自动寻迹、避障和转向等功能。
四、实训步骤1. 理论学习- 讲解单片机的基本原理、结构、指令系统、编程方法等理论知识。
- 讲解单片机应用系统设计的一般流程和方法。
2. 实践操作- 学生分组,每组负责一个实践项目。
- 指导教师根据项目要求,讲解相关硬件和软件知识。
- 学生根据项目要求,进行硬件电路设计、软件编程和调试。
3. 作品展示- 学生完成项目后,进行作品展示和答辩。
- 指导教师对学生的作品进行评价和指导。
一、实训目的1. 掌握单片机的基本原理和组成。
2. 熟悉51单片机的编程方法及开发工具。
3. 培养动手实践能力,提高问题分析和解决能力。
4. 理解单片机在实际应用中的地位和作用。
二、实训内容1. 单片机基本原理- 单片机的组成结构- CPU的工作原理- 存储器分类及功能- I/O接口电路2. 51单片机编程- C语言编程基础- 51单片机指令系统- 程序设计方法- 常用函数和中断系统3. 单片机开发工具- Keil uVision软件的使用- 串口调试助手的使用- 实验箱的连接与调试4. 实训项目- 项目一:LED流水灯- 实现功能:通过单片机控制LED灯的闪烁,形成流水灯效果。
- 实训目标:熟悉单片机基本编程方法,掌握LED灯的控制。
- 项目二:按键控制LED灯- 实现功能:通过按键控制LED灯的开关。
- 实训目标:掌握按键输入的处理方法,了解中断系统。
- 项目三:数字时钟- 实现功能:通过单片机实现数字时钟的功能,显示时分秒。
- 实训目标:掌握定时器的工作原理,了解时钟系统的设计。
- 项目四:温度传感器数据采集- 实现功能:通过温度传感器采集环境温度,并在LCD显示屏上显示。
- 实训目标:学习传感器应用,掌握A/D转换器的工作原理。
三、实训步骤1. 准备工作- 熟悉实训环境,了解实验设备。
- 安装Keil uVision软件,配置实验箱。
2. 理论学习- 学习单片机基本原理、编程方法和开发工具。
- 阅读相关教材和资料,掌握知识点。
3. 项目实施- 根据实训项目要求,进行程序设计。
- 利用Keil uVision软件进行编译、调试和烧录程序。
- 连接实验箱,进行实际操作。
4. 结果分析- 分析程序运行结果,发现问题并解决。
- 总结实训过程中的经验和教训。
5. 撰写报告- 按照实训报告模板,撰写实训报告。
四、实训要求1. 严格遵守实训纪律,按时完成实训任务。
2. 认真学习理论知识,熟练掌握编程方法和开发工具。
单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及相关功能模块的使用方法。
2. 学生能掌握单片机编程的基本语法和技巧,能独立完成简单的程序设计。
3. 学生能了解单片机在现实生活中的应用,并学会分析实际案例。
技能目标:1. 学生能运用所学知识,完成单片机的基本操作和程序编写。
2. 学生能通过实验,学会使用相关开发工具和调试技巧,具备一定的故障排查能力。
3. 学生能运用单片机技术解决实际问题,提高创新实践能力。
情感态度价值观目标:1. 学生通过单片机综合实验课程,培养对电子信息科学的兴趣和热情。
2. 学生在团队协作中,学会沟通、分享和合作,提高解决问题的能力。
3. 学生能认识到单片机技术对社会发展的作用,树立正确的价值观和责任感。
课程性质:本课程为实践性课程,侧重于培养学生的动手能力和创新能力。
学生特点:学生已具备一定的单片机基础知识,对实际操作感兴趣,但编程能力和问题解决能力有待提高。
教学要求:结合学生特点,注重理论与实践相结合,强调动手实践和团队协作,提高学生的综合能力。
通过课程目标分解,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供依据。
二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础理论:回顾单片机的基本原理、内部结构、工作原理等,重点讲解中断系统、定时器/计数器、串行通信等模块的功能和应用。
2. 单片机编程语言:以C语言为基础,介绍单片机编程的基本语法、数据类型、运算符、控制语句等,并通过实例进行讲解。
3. 单片机实验操作:结合教材章节,进行以下实验:- 基本输入输出实验:学习单片机I/O口控制,实现LED灯、蜂鸣器等设备的控制。
- 中断控制实验:掌握中断系统的使用,实现外部中断控制。
- 定时器/计数器实验:学习定时器/计数器的配置,完成定时控制等功能。
- 串行通信实验:了解串行通信原理,实现单片机之间的数据传输。
一、实验目的1. 掌握单片机的基本工作原理和硬件结构。
2. 熟悉单片机的编程方法,提高编程能力。
3. 学习单片机的调试技巧,提高调试效率。
4. 通过实际操作,培养动手能力和团队合作精神。
二、实验仪器与设备1. 单片机实验开发板2. 编译器(如Keil、IAR等)3. 仿真软件(如Proteus、Multisim等)4. 连接线、电源、示波器等辅助设备三、实验步骤1. 熟悉单片机实验开发板(1)观察开发板的硬件结构,了解各个模块的功能和连接方式。
(2)熟悉开发板上的按键、LED、串口、I2C、SPI等接口。
2. 编写程序(1)根据实验要求,设计程序功能。
(2)选择合适的编程语言(如C语言、汇编语言等)。
(3)使用编译器编写程序代码,并进行语法检查。
3. 程序调试(1)使用仿真软件(如Proteus)对程序进行仿真调试。
(2)观察程序运行结果,检查程序是否存在错误。
(3)根据仿真结果,修改程序代码,直至程序正常运行。
4. 硬件连接(1)根据程序功能,连接开发板上的相关硬件模块。
(2)确保连接正确,避免短路或接触不良。
5. 实验运行(1)打开电源,启动单片机。
(2)观察程序运行情况,验证程序功能是否实现。
(3)根据实验要求,调整程序参数或硬件配置,优化程序性能。
6. 数据采集与记录(1)使用示波器等设备,采集实验过程中的数据。
(2)记录实验数据,为后续分析提供依据。
7. 结果分析(1)对实验数据进行整理和分析,评估程序性能。
(2)总结实验过程中的经验教训,提出改进措施。
8. 实验报告撰写(1)整理实验过程,包括实验步骤、实验数据、实验结果等。
(2)分析实验结果,总结实验经验教训。
(3)撰写实验报告,要求格式规范、内容完整。
四、实验注意事项1. 确保实验环境安全,避免触电、短路等事故。
2. 严格遵守实验操作规程,避免损坏实验设备。
3. 注意程序调试过程中的细节,提高调试效率。
4. 实验过程中,积极思考,勇于创新,提高动手能力。
单片机技能与认证培训设计报告题目:两路数字电压表的设计姓名:学号:系别专业:班级:完成时间:华南理工大学广州学院电子信息工程学院两路数字电压表的设计一、 设计任务设计一个两路数字电压表,电压表测量范围0~5V ,满足测量最小分辨率为0.019V ,测量误差约V 02.0二、 设计方案,元器件选取1、方案框图:2、AD 转换器的选择根据题目要求测量0~5V 的电压范围,最小分辨率为0.019V 。
12位的AD 最小分辨率=5/(2^12-1)=0.0012V8位的AD 最小分辨率=5/(2^8-1)=0.0196V8位AD 转换器可以瞒足题目要求,所以我选择TLC549,TLC549是 TI 公司生产的一种低价位、高性能的8位 A/D 转换器,它以8位开关电容逐次逼近的方法实现 A/D 转换,其转换速度小于 17us ,最大转换速率为 40000HZ ,4MHZ 典型内部系统时钟,电源为 3V 至 6V 。
它能方便地采用三线串行接口方式与各种微处理器连接,构成各种廉价的测控应用系统。
引脚功能:REF+:正基准电压输入 2.5V ≤REF+≤Vcc+0.1。
REF -:负基准电压输入端,-0.1V ≤REF-≤2.5V 。
且要求:(REF+)-(REF-)≥1V 。
VCC :系统电源3V ≤Vcc ≤6V 。
GND :接地端。
CS :芯片选择输入端,要求输入高电平 VIN ≥2V ,输入低电平 VIN ≤0.8V 。
DATA OUT :转换结果数据串行输出端,与 TTL 电平兼容,输出时高位在前,低位在后。
ANALOGIN :模拟信号输入端,0≤ANALOGIN ≤Vcc ,当 ANALOGIN ≥REF+电压时,转换结果为全“1”(0FFH),ANALOGIN≤REF-电压时,转换结果为全“0”(00H)。
I/O CLOCK:外接输入/输出时钟输入端,同于同步芯片的输入输出操作,无需与芯片内部系统时钟同步。
一、实训目的本次单片机电路设计实训旨在通过实际操作,使学生掌握单片机的基本原理和电路设计方法,提高学生的动手能力和实践能力。
通过本次实训,学生应能够独立完成单片机系统的电路设计、搭建和调试,并了解单片机在各个领域的应用。
二、实训内容1. 单片机最小系统电路设计(1)设计要求设计一个基于AT89C52单片机的最小系统电路,包括晶振电路、复位电路、电源电路、输入/输出电路等。
(2)电路设计①晶振电路:选用12MHz晶振,为单片机提供时钟信号。
②复位电路:采用上电复位和按键复位两种方式,保证单片机能够正常启动。
③电源电路:设计稳压电路,为单片机提供5V稳定电压。
④输入/输出电路:设计按键输入和LED输出电路,用于测试单片机的功能。
(3)电路搭建根据设计图纸,将各元器件焊接在面包板上,连接好各个电路。
(4)电路调试①检查电路连接是否正确,确保无误。
②上电,观察LED灯是否亮起,若亮起,则说明电路搭建成功。
2. 基于单片机的交通灯控制系统设计(1)设计要求设计一个基于AT89C52单片机的十字路口交通灯控制系统,实现红、黄、绿三种灯光的自动切换,并具有手动控制功能。
(2)电路设计①晶振电路、复位电路、电源电路与最小系统相同。
②输入/输出电路:设计按键输入和LED输出电路,用于控制交通灯的运行。
③控制电路:设计红、黄、绿灯的驱动电路,通过单片机控制灯光的切换。
(3)电路搭建根据设计图纸,将各元器件焊接在面包板上,连接好各个电路。
(4)电路调试①检查电路连接是否正确,确保无误。
②上电,观察交通灯是否按照预设程序自动切换,若切换正常,则说明电路搭建成功。
3. 基于单片机的电子琴设计与实现(1)设计要求设计一个基于AT89C52单片机的电子琴,实现多种音阶和音符的发音,并具有双重模式和LED显示功能。
(2)电路设计①晶振电路、复位电路、电源电路与最小系统相同。
②输入/输出电路:设计按键输入和LED输出电路,用于控制电子琴的音阶和模式。
实验四-1 数码管跑马显示一、实验目的1、熟悉51单片机并行口的输入方式,输出方式的编程;2、熟悉共阴极LED的工作特性及控制方法;3、学习在系统烧写单片机程序(在系统编程ISP)的方法。
二、实验电路和程序1、实验电路一个数码管由8个发光二极管组成,由于是共阴极,所以低电平(高电平)选通。
如图9.6所示,SN74ALS245A接成直通方式通过P0口驱动数码管。
由74LS138对P1口译码控制SN74ALS245A驱动6个数码管的位选,剩余两路,一路接到发光二极管,另一路控制蜂鸣器。
由程序进行选通控制。
2、程序(1)汇编程序:通过程序控制使数码管进行从0到9的跑马显示和0.到9.的跑马显示,两个数字显示的间隙发光二极管发光,当跑马显示完毕后,发光二极管继续闪亮。
通过复位按键进行复位。
P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7图9.6 实验电路图ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,#00HMOV P1,AMOV R0,#00HLS: MOV A,R0MOV DPTR,#TAB0MOVC A,@A+DPTRMOV P1,A ;数码管位选跑马MOV A,R0MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P0,A ;数码管数字显示INC R0ACALL DELAYMOV P1,#0E0HACALL DELAYSJMP LSDELAY: MOV R5,#08H ;延时DELAY1: MOV R6,#0FAHDELAY2: MOV R7,#0FAHDJNZ R7,$DJNZ R6,DELAY2DJNZ R5,DELAY1RETTAB0: DB 00H,20H,40H,60H,80H,0A0H,00H,20H,40H,60HDB 80H,0A0H,00H,20H,40H,60H,80H,0A0H,00H,20HTAB1: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H, 7FH,6FHDB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFHEND(2)C语言程序:通过程序控制使数码管进行从0到9的跑马显示和0.到9.的跑马显示,两个数字显示的间隙发光二极管发光,当跑马显示完毕后,发光二极管长亮。
通过复位按键进行复位。
#include <reg52.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intuint a[20]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};uint b[20]={0x00,0x20,0x40,0x60,0x80,0xa0,0x00,0x20,0x40,0x60,0x80,0xa0,0x00,0x20,0x40,0x60,0x80,0xa0,0x00,0x20};void delay(uint count) /*延时子程序*/{uint i;while(count--!=0){for(i=0;i<72;i++);}}main(){uint j;for(j=0;j<20;j++){P0=a[j]; /*数字显示*/P1=b[j]; /*数码管跑马*/delay(1000); /*延时*/P1=0xe0;delay(1000); /*延时*/}P1=0xe0;}(3)自编程序:编程并烧写程序,6个数码管依次显示6,5,2,3,0.,9;然后,6个数码管同时点亮,显示65230.9。
再编一个小程序,在五个数码管上显示“HELLO”。
#include <reg52.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intvoid delay(uint count) /*延时子程序*/{uint i;while(count--!=0){for(i=0;i<72;i++);}}main(){for(j=0;j<1;j++) /*65230.9*/{uint a[6]={0x7d,0x6d,0x5b,0x4f,0xff,0x6f};uint b[20]={0x00,0x20,0x40,0x60,0x80,0xa0};for(i=0;i<6;i++){P1=b[i];P0=a[i];delay(500);}}for(j=0;j<500;j++)/*HELLO */{uint a[5]={0x76,0x79,0x38,0x38,0x3f};uint b[20]={0x00,0x20,0x40,0x60,0x80,0xa0};for(i=0;i<6;i++){P1=b[i];P0=a[i];delay(1);}}delay(500);P1=0xe0;}三、编写程序并在实验板上执行通过1、数码管跑马显示0~9,0.~9.,测试数码管性能;2、数码管依次显示6,5,2,3,0.,9,由于数码管位选决定每次只有一个数码管点亮,所以利用视觉误差使6个数码管同时点亮,显示65230.9;3、自编数码管段代码,用数码管显示英文“HELLO”;4、复位按键复位,重复执行。
实验四-2 行列按键显示一、实验目的1、熟悉行列按键的定位方法;2、进一步学习在系统编程(ISP)的方法。
二、实验电路实验电路图如图9.7所示,按键信号由P2口进行识别,通过对按键坐标的判断来定义数码管的显示位和显示内容。
图9.7 实验电路图三、实验程序16个按键按照从左至右,从上至下的顺序排列,操作时分别显示0,1,2,3,4,5,6,7,8,9,0.,1.,2.,3.,4.,8.;其中后六位分别代表A,B,C,D,E,F,复位键复位。
1、汇编程序:KEYBUF EQU 30HORG 0000HLJMP LS0ORG 0030HLS0: MOV P2,#0FH ;判断纵坐标MOV R1,#0FHAJMP SKHSKH: MOV A,P2ANL A,R1XRL A,R1MOV R0,ACJNE A,#0FH,LS1ACALL SKHLS1: MOV P2,#0F0H ;判断行坐标MOV R2,#0F0HAJMP SKLSKL: MOV A,P2ANL A,R2XRL A,R2MOV R6,ACJNE A,#0F0H,KEY0ACALL SKLKEY0: MOV A,R6 ;判断如果是第一个按键操作,则显示偏移量为0ADD A,R0CJNE A,#11H,KEY1MOV KEYBUF,#0LJMP UKKEY1: MOV A,R6 ;判断如果是第二个按键操作,则显示偏移量为1;依次类推ADD A,R0CJNE A,#21H,KEY2MOV KEYBUF,#1LJMP UKKEY2: MOV A,R6ADD A,R0CJNE A,#41H,KEY3MOV KEYBUF,#2LJMP UKKEY3: MOV A,R6ADD A,R0CJNE A,#81H,KEY4MOV KEYBUF,#3LJMP UKKEY4: MOV A,R6ADD A,R0CJNE A,#12H,KEY5MOV KEYBUF,#4LJMP UKKEY5: MOV A,R6ADD A,R0CJNE A,#22H,KEY6MOV KEYBUF,#5LJMP UKKEY6: MOV A,R6ADD A,R0CJNE A,#42H,KEY7MOV KEYBUF,#6LJMP UKKEY7: MOV A,R6ADD A,R0CJNE A,#82H,KEY8MOV KEYBUF,#7LJMP UKKEY8: MOV A,R6ADD A,R0CJNE A,#14H,KEY9MOV KEYBUF,#8LJMP UKKEY9: MOV A,R6ADD A,R0CJNE A,#24H,KEY10MOV KEYBUF,#9LJMP UKKEY10: MOV A,R6ADD A,R0CJNE A,#44H,KEY11MOV KEYBUF,#10LJMP UKKEY11: MOV A,R6ADD A,R0CJNE A,#84H,KEY12MOV KEYBUF,#11LJMP UKKEY12: MOV A,R6ADD A,R0CJNE A,#18H,KEY13MOV KEYBUF,#12LJMP UKKEY13: MOV A,R6ADD A,R0CJNE A,#28H,KEY14MOV KEYBUF,#13LJMP UKKEY14: MOV A,R6ADD A,R0CJNE A,#48H,KEY15MOV KEYBUF,#14LJMP UKKEY15: MOV A,R6ADD A,R0CJNE A,#88H,KEY16MOV KEYBUF,#15LJMP UKKEY16: LJMP LS0UK: MOV A,KEYBUF ;数码显示模块MOV DPTR,#TAB1MOVC A,@A+DPTRMOV P1,ALCALL DELAYMOV A,KEYBUFMOV DPTR,#TAB0MOVC A,@A+DPTRMOV P0,ALCALL DL10MSLJMP LS0DELAY: MOV R2,#0FEHDELAY1: DJNZ R2,DELAY1RETDL10MS: MOV R3,#14HDL10MS1: LCALL DELAYDJNZ R3,DL10MS1RETTAB1: DB 00H,20H,40H,60H,80H,0A0H,00H,20HDB 40H,60H,80H,0A0H,00H,20H,40H,60HTAB0: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07HDB 7FH,6FH,0BFH,86H,0DBH,0CFH,0E6H,0FFH END2、C语言程序:#include <reg52.h>#include <stdio.h>#define uchar unsigned char#define uint unsigned intuchar a[4][4]={{0x00,0x20,0x40,0x60},{0x80,0xa0,0x00,0x20},{0x40,0x60,0x80,0xa0},{0x00,0x20,0x40,0x60}}; uchar b[4][4]={{0x3f,0x06,0x5b,0x4f},{0x66,0x6d,0x7d,0x07}, {0x7f,0x6f,0xbf,0x86},{0xdb,0xcf,0xe6,0xff}}; uchar rnum,lnum;void delay(uint count) /*延时*/{uchar t;while(count--!=0){for(t=0;t<72;t++);}}uchar keysacn(void){P2=0x0f; /*确定按键列*/if((P2&0x0f)!=0x0f){delay(5);if((P2&0x0f)!=0x0f){if(P2==0x0e)rnum=1;if(P2==0x0d)rnum=2;if(P2==0x0b)rnum=3;if(P2==0x07)rnum=4;}P2=0xf0; /*确定按键行*/if((P2&0xf0)!=0xf0){if(P2==0xe0)lnum=1;if(P2==0xd0)lnum=2;if(P2==0xb0)lnum=3;if(P2==0x70)lnum=4;}P0=b[rnum-1][lnum-1];P1=a[rnum-1][lnum-1];delay(1000);}}main(){while(1){keysacn();}}3、自编程序编程并烧写程序,按键1按下,数码管显示65230.9,数码管2按下显示“HELLO”。