单片机高级实训项目教程(2)
单片机实训指导书
实训项目一让单片机动起来1、实训目的及要求:1)掌握单片机开发板的使用方法(驱动识别,程序下载)2)掌握单片机程序开发软件KEIL的使用3)掌握单片机程序烧录软件STC-ISP下载软件的使用2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1)流程图2)实训程序一:#include "reg52.h"sbit LED=P1^0;void main(){LED=0;while(1);}实训程序二:#include "reg52.h"#define LED P1;void main(){LED=0xaa;while(1);}3)实训步骤①打开KEIL软件编写LED控制程序。
②程序调试无误后,使用KEIL生产HEX文件。
③将生产的HEX文件烧录到单片机芯片中,并观察实验现象。
3)实验现象记录实训程序一:。
实训程序二:。
4)实训报告要求①将实训程序中的注释补充完整,了解每条语句作用。
实训项目二LED的闪烁1、实训目的及要求:1)掌握单片机控制LED点亮和熄灭的方法。
2)了解单片机延时程序的原理及设计。
3)了解单片机中常用的变量类型及其定义方法。
2、实训内容1)根据实训报告内容编写单片机程序2)调试程序并使用ISP下载软件将程序烧录到单片机芯片中3)观察实验现象并记录4)完成实训报告内容3、实训准备硬件:单片机开发板、电脑、杜邦线软件:keil uvision4 、STC-ISP4、实训过程1)流程图2)实训程序:#include "reg52.h"#define uchar unsigned char //定义uchar为定义字符型变量,范围#define uint unsigned int //定义uint为定义整型变量,范围sbit LED=P1^0;uint i;//定义整型变量ivoid main(){while(1){LED=0;for(i=0;i<20000;i++);LED=1;for(i=0;i<20000;i++);}}3)实训步骤①打开KEIL软件编写LED闪烁控制程序。
单片机应用技能实训教案--项目2汇编
课后作业
自我测评1题、2题、3题、5题。
任务2广告灯电路的硬件、软件设计
一、案头
任务
广告灯电路的硬件、软件设计
授课时间
年月日
授课班级
教学形式
讲授、讨论
授课时数
2课时
教学用具
多媒体
教学资源
课件、单片机应用制作成品
参照图2-2介绍其工作原理,重点是如何作用。
多媒体展示图2-13或画在黑板上,重点介绍使用方法。
同上
同上
相关指令作为重点进行讲授,除教案中的使用举例之外,还要再通过更多的例子让学生练习以达到理解和灵活运用指令编写程序的目的。
课堂小结
1、MCS-51单片机并行接口结构原理及使用方法。P0口用于输出时,注意外接上拉电阻,P1~P3口可直接用于输出。P0~P3口用于输入时,要先向端口写1再输入。
根据上述接线原理,可设计出由P0口输出控制8个发光管模拟广告灯的电路原理图。
3、元件选择
本项目涉及到的元件选择主要有发光二极管和限流电阻两种元件。
发光管的选择主要考虑颜色、亮度和直径;限流电阻的选择依据是发光管的工作电压和工作电流。请同学们来选择。
二、应用程序设计
1、应用程序的基本结构
为了使应用程序清晰明了,方便编写和修改,一般可按下面结构编写程序。
(1)作为通用I/O端口输出数据。使用时注意外接上拉电阻。该功能在前面已介绍过。
(2)作为通用I/O端口输入数据。输入数据的路径是:外部引脚P0.x→下三态缓冲器→内部数据总线。在输入数据时,为避免T2对引脚数据的影响,应使T2截止,即先向锁存器写“1”。
《单片机原理与应用》实训指导书
佛山市顺德区郑敬诒职业技术学校《PIC单片机原理与应用》实训指导书制定:审核:审批:制定日期:二00七年九月实训项目一 熟悉实验环境及MPLAB 的使用实验目的:熟悉实验软硬件环境,能够对单片机编程并进行调试。
实验内容:了解实验平台软、硬件的构成,熟悉实验环境,掌握MPLAB 的使用方法;建立工程,编程,调试并运行程序。
基本要求:能够在计算机上使用MPLAB 建立一个工程,应用简单指令编写简单的程序进行编译,并在实验板上调试成功。
扩展要求:1、编写一段程序让PORTD 口输出二进制数‘10101010’。
2、编写跑马灯程序。
电路原理:单片机与LED:RD0RD1 RD2: RD7 程序流程:实现D 口小灯四亮四灭的程流程图单片机PORTD实验步骤:1、打开MPLAB。
双击桌面上名为“MPLAB IDE”的图标,打开MPLAB编译环境。
2、进入工程向导。
点击MPLAB上面菜单中的Project(工程),选择ProjectWizard(工程向导),通过工程向导来建立工程。
3、选择单片机。
进入欢迎界面(下图),点击下一步,在Device(设备)中选择PIC16F877A,如果该项为PIC16F877A则直接点下一步。
4、选择编译语言。
选择MPASM汇编语言编译器,如果该项为MicrochipMPASM Toolsuite,则直接点下一步。
5、创建工程文件。
请在D盘下建立一个存放工程的文件夹,文件名可以用英文、数字或英文数字混合,注意:不要用中文或标点符号,文件夹名和工程名长度不要超过8个字符。
下面以建立文件夹名为abcd , 工程名为LED 为例。
此处写入工程名字,可以和实验内容相关,如LED此处写入存放工程的路径,如D:\abcd,建议通过点击右边Browse(浏览)来选择建立好的文件夹6、添好工程名和路径后点击下一步,下图表示可以添加程序文件到工程中,如果是初次编程或没有编好的程序文件,可直接点击下一步。
单片机实践项目课程设计
单片机实践项目课程设计一、课程目标知识目标:1. 学生能够理解单片机的基本结构、工作原理及其在各行各业的应用。
2. 学生掌握单片机编程的基础知识,如指令系统、寄存器、I/O 口控制等。
3. 学生能够描述并分析单片机外围电路的原理及其功能。
技能目标:1. 学生能够运用所学知识,独立完成单片机的编程和调试。
2. 学生能够设计简单的单片机控制系统,解决实际问题。
3. 学生通过实践项目,提高动手能力,培养创新意识和团队协作精神。
情感态度价值观目标:1. 学生培养对单片机及电子技术的兴趣,激发学习热情。
2. 学生在实践过程中,培养耐心、细致的工作态度,提高解决问题的能力。
3. 学生认识到单片机在现代科技发展中的重要作用,树立为国家和民族科技事业作贡献的信念。
课程性质:本课程为实践性较强的学科,强调理论知识与实际操作的相结合。
学生特点:学生处于高年级阶段,已具备一定的电子技术基础和编程能力,具有较强的探究欲望和自主学习能力。
教学要求:教师需注重引导学生将所学知识应用于实践,鼓励学生创新思维,提高解决问题的能力。
通过课程学习,使学生能够达到预定的学习成果。
二、教学内容1. 单片机基础知识:介绍单片机的基本结构、工作原理,重点讲解CPU、内存、I/O 口等组成部分的功能及相互关系。
教材章节:第一章 单片机概述2. 单片机编程语言:讲解单片机编程所需的基础知识,如指令系统、寄存器、汇编语言等。
教材章节:第二章 单片机编程语言3. 单片机外围电路设计:介绍单片机与外围电路的连接方法,讲解常用外围元器件的原理及功能。
教材章节:第三章 单片机外围电路设计4. 单片机实践项目:设计多个实践项目,涵盖灯光控制、温度测量、电机控制等方面,让学生动手实践,巩固所学知识。
教材章节:第四章 单片机实践项目5. 单片机系统设计与调试:讲解单片机系统设计的方法和步骤,培养学生独立设计单片机控制系统及调试的能力。
教材章节:第五章 单片机系统设计与调试教学内容安排和进度:共15课时,其中基础知识3课时,编程语言4课时,外围电路设计3课时,实践项目4课时,系统设计与调试1课时。
单片机应用技术项目化教程 第2版 项目二 单片机开发工具应用
二、知识链接
只有单片机ROM中存储了程序,系统 才可以运行,产品才能投放到市场。
ISP(在系统可编程)器件插接在应 用系统电路板中,便能实现程序的多次 擦除和下载。AT89S51和STC系列等单片 机均具有ISP功能
三、 STC单片机ISP典型应用电路
四、 STC单片机ISP软件的使用
四、 STC单片机ISP软件的使用
项目二 单片机开发工具应用
任务一 生成目标代码程序 任务二 下载程序 任务三 仿真运行单片机一、任务要求 本任务将使读者学会单片机程序的开
发工具Keil 软件的一般应用,包括如何 输入源程序、建立工程、对工程进行设 置,以及如何编辑C源程序代码,创建 HEX文件。
1、将所需元器件加入到对象选择器窗口
“Pick Devices”页面
2、放置元器件至图形编辑窗口
放置对象的步骤: (1)根据对象的类别在工具箱选择相应模式的图标(mode icon)。 (2)根据对象的具体类型选择子模式图标(sub-mode icon)。 (3)如果对象类型是元件、端点、管脚、图形、符号或标记,从选 择器里(selector)选择你想要的对象的名字。对于元件、端点、管脚 和符号,可能首先需要从库中调出。 (4)如果对象是有方向的,将会在预览窗口显示出来,你可以通过 预览对象方位按钮对对象进行调整。 (5)最后,指向编辑窗口并点击鼠标左键放置对象。
2.将程序(chengxu2_1_2.c)填加到 项目lianxi.μV2中。
3.编译项目lanxi.μV2生成lianxi.hex文 件。
任务二 下载程序
一、任务要求
将目标程序下载到单片机中,看一下 程序的运行效果。
通过本任务,读者将会焊接STC系列 单片机程序下载电路,学会STC单片机 ISP软件的使用及下载方法。
《单片机实训项目》课件
总结与反思
项目总结
总结了各个项目的实现过程、遇到的问题及解决方法,以及项目所涉及的知识点和技能 。
个人反思
分享了参与单片机实训项目的体会和收获,反思了自己在项目中的表现和不足之处,为 今后的学习和实践提供了借鉴和改进方向。
05 单片机实训项目经验总结
遇到的问题和解决方法
问题1
程序调试困难
解决方法
系统测试
对整个单片机系统进行测试,包括功能测试、性 能测试和稳定性测试等,确保系统满足项目要求 。
04 单片机实训项目成果展示
成果介绍
单片机控制LED闪
烁
该项目实现了通过单片机控制 LED灯的闪烁,展示了单片机的 输入输出功能和控制能力。
温度监测系统
利用单片机实现对环境温度的实 时监测,并通过LCD显示屏显示 温度值,具有温度报警功能。
编程、测试与调试等。
收获2:提高解决问题能力
在遇到问题时,学会了独立思考和团 队协作,提高了解决问题的能力。
收获3:增强实践能力
通过实际操作,增强了动手能力和实 践经验,对理论知识有了更深入的理 解。
对未来学习的建议
在此添加您的文本17字
建议1:加强基础知识学习
在此添加您的文本16字
建议在学习单片机之前,先掌握数字电路、微机原理等基 础知识,为单片机学习打下基础。
程序架构设计
根据项目需求,设计程序架构,包括主程序、中断服 务程序、函数库等。
代码编写与调试
按照程序架构,编写程序代码,并通过调试确保程序 逻辑正确。
调试与测试
1 2 3
仿真器与调试工具选择
根据单片机型号,选择合适的仿真器和调试工具 ,如JTAG仿真器、串口调试工具等。
单片机综合实训教案
单片机综合实训教案一、实训目的与要求1. 目的(1)了解单片机的基本原理和结构。
(2)掌握单片机的编程方法和应用技巧。
(3)培养动手能力和团队协作精神。
2. 要求(1)熟悉单片机的基本硬件组成。
(2)掌握单片机编程语言(如C语言、汇编语言等)。
(3)能够独立完成简单单片机程序的设计与调试。
二、实训内容与课时安排1. 实训内容(1)单片机硬件认识与搭建。
(2)单片机编程基础。
(3)单片机常见外设接口编程。
(4)单片机应用系统设计。
(5)综合实训项目。
2. 课时安排(1)单片机硬件认识与搭建:2课时。
(2)单片机编程基础:4课时。
(3)单片机常见外设接口编程:6课时。
(4)单片机应用系统设计:4课时。
(5)综合实训项目:8课时。
三、实训步骤与方法1. 实训步骤(1)单片机硬件认识与搭建:了解单片机的硬件组成,搭建实验平台。
(2)单片机编程基础:学习单片机编程语言,掌握基本编程技巧。
(3)单片机常见外设接口编程:学习并掌握常见外设接口(如LED、按键、串口等)的编程方法。
(4)单片机应用系统设计:结合实际项目,设计并实现一个完整的单片机应用系统。
(5)综合实训项目:完成一个综合性的实训项目,提高实际应用能力。
2. 实训方法(1)讲解与演示:教师讲解单片机相关知识,并进行现场演示。
(2)实践操作:学生动手进行实验,巩固所学知识。
(3)讨论与提问:学生之间互相讨论,解答疑问。
(4)项目实践:以小组为单位,完成综合性实训项目。
四、实训评价与考核1. 评价方式(1)平时表现:30%。
(2)实验报告:40%。
(3)综合实训项目:30%。
2. 考核标准(1)平时表现:参与课堂讨论、提问、实验操作等。
(2)实验报告:内容完整、分析深入、表达清晰。
(3)综合实训项目:项目完成度高、创新性强、实用性好。
五、教学资源与工具1. 教学资源(1)教材:单片机原理与应用。
(2)课件:单片机相关知识。
(3)实验器材:单片机开发板、编程器、实验器件等。
单片机应用实训教程 (2)
(a)
(b)
图1.1.1 进入窗口
第1章 MCS-51单片机基础应用实训 图1.1.2 集成开发环境界面
第1章 MCS-51单片机基础应用实训 图1.1.3 设置菜单项
第1章 MCS-51单片机基础应用实训
(a)
(b)
图1.1.4 编译、汇编、连接配置窗口
第1章 MCS-51单片机基础应用实训
第1章 MCS-51单片机基础应用实训
实训1.1 单片机开发系统及使用 实训1.2 数字钟应用电路 实训1.3 LCD显示器电路 实训1.4 中断与定时/计数器的应用 实训1.5 A/D转换接口 实训1.6 串行通信接口 实训1.7 语音电路的应用 实训1.8 实时时钟/日历芯片的应用
第1章 MCS-51单片机基础应用实训 (4) 新建NEW(或打开Open)文件。
图1.1.5 文件处理菜单项
第1章 MCS-51单片机基础应用实训 图1.1.6 新建文件界面
第1章 MCS-51单片机基础应用实训 (5) 对源程序进行汇编(或编译)。
图1.1.7 项目管理菜单
第1章 MCS-51单片机基础应用实训
(6) 排除错误。 (7) 产生代码并装入仿真器。 (8) 调试程序。 (9) 输出代码文件。
第1章 MCS-51单片机基础应用实训 图1.1.8 程序调试菜单
第1章 MCS-51单片机基础应用实训
2) 常用调试方法 (1) 单步运行调试(F8)。 (2) 跟踪运行调试(F7)。 (3) 全速运行至光标处调试(F4)。 (4) 全速连续运行调试(F9)。 (5) 设置断点调试(F2)。 (6) 自动单步运行调试。 (7) 设置程序计数器PC的内容(Ctrl+N)。
④ 根据提示进行纠错。
精品课件-单片机应用实训教程(张永枫)-第2章
C#键:检测6264的连接,低4位的4个二极管点亮。 D#键:检测2864的连接,高4位的4个二极管点亮。 E#键:检测8155连接的LED,8个LED全部显示8。 F#键:检测ADC0809的连接,改变电阻R25,LED显示结 果连续变化。
为了方便实训,在单片机P1口连接了8个发光二极管, 同时将常用的I/O口、外部中断、定时器输入脉冲等引出,具体 电路连接参见书末附图。
第2章 MCS-51单片机综合应用实训 图2.1.1 多功能实训电路板
第2章 MCS-51单片机综合应用实训
2) 测试程序 (1) 电路制作完成后,要通过程序测试系统各部分是否 正常工作。要求本实训电路的测试程序运行后,首先点亮P1口连 接的8个二极管,以确定电路能否正常工作;再运行键盘程序以 按键查询。每个按键完成相应电路的检测,具体分配如下:
3.项目设计要求 完成基于MCS-51单片机的多功能实训电路,包括8个发 光二极管模拟信号灯的显示、RAM/ROM扩展电路、LED数码显示、 键盘电路、模/数转换电路以及与PC机的接口电路。
第2章 MCS-51单片机综合应用实训
4.实训内容
1) 硬件设计
单片机实训电路主要为教学配套使用,因此在电路设计 上尽量全面,基本包括了单片机系统的所有部分,以完成各个实 训项目。在该电路板中,核心器件是8031单片机芯片,外部扩展 了一片EPROM2764、一片RAM6264、一片EEPROM2864A、一片8155、 一片ADC0809和MAX232等,这些主要芯片的功能如下所述。
;点亮低4位二极管
AJMP START
MOV A,#0FH
;D#键,检测2864
综合项目单片机应用技能实训教案(2)
单片机应用技能实训(C语言)教案—项目8 项目8 数字显示交通灯控制电路制作任务1 项目有关知识学习一、案头二、教学实行过程实行环节教学内容导学办法组织教学1、检查学生出勤状况并做好记录。
2、调节学生注意力,为上课作准备。
互动交流复习提问1、依照前面所学知识,如何进行I/O端口扩展?2、交通灯作用是什么?有什么功能?本项目终极目的是制作一种单片机控制能显示倒计时时间交通灯控制电路。
提问导思导入在项目6中用数码管显示时间,为了不导致资源挥霍,咱们运用串行口方式0进行输出口扩展。
但运用串行口方式0扩展并行输出口,在使用上有一定局限性,因此,咱们在进行项目制作之前,学习MCS-51单片机简朴I/O口扩展办法。
启发学习积极性讲授新课一、并行I/O端口扩展由于简朴I/O端口扩展办法简朴实用,下面对该办法加以简介。
1、简朴I/O端口扩展芯片简介普通采用三态缓冲器(例如74LS244、74LS541)来扩展并行输入,用8D锁存器(例如74LS373、74HC573)来扩展并行输出。
图8-2是74LS541和74HC573逻辑符号图。
74LS541是三态缓冲器,74HC573是8D锁存器,采用20脚双列直插封装。
图8-2 74LS541 74HC573逻辑符号图2、简朴I/O端口扩展举例例8.1 运用两个8D锁存器74HC573扩展两个8位并行输出口。
单片机扩展两个8位并行输出端口硬件电路如图10-3所示,在预解决命令中将p20定义为P2.0,将p21定义为P2.1。
当需要将A中数据从U2输出时,执行如下指令:p20=0;//U2锁存数据用多媒体展示图8-2进行简介。
重点简介引脚使用。
p21=0;//U3锁存数据P0=ACC;//将ACC数据送给P0p20=1;//数据从U2输出p20=0;//U2锁存数据当需要将A中数据从U3输出时,执行如下指令:p20=0;//U2锁存数据p21=0;//U3锁存数据P0=ACC;//将ACC数据送给P0p21=1;//数据从U3输出p21=0;//U3锁存数据图8-3 扩展并行输出采用本例办法,运用P0、P2最多可扩展8个8位并行输出端口。
单片机高级实训项目教程
31.6位数显频率计数器1.实验任务利用AT89S51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计数,计数的频率结果通过8位动态数码管显示出来。
要求能够对0-250KHZ的信号频率进行准确计数,计数误差不超过±1HZ。
2.电路原理图图4.31.13.系统板上硬件连线(1).把“单片机系统”区域中的P0.0-P0.7与“动态数码显示”区域中的ABCDEFGH端口用8芯排线连接。
(2).把“单片机系统”区域中的P2.0-P2.7与“动态数码显示”区域中的S1S2S3S4S5S6S7S8端口用8芯排线连接。
(3).把“单片机系统”区域中的P3.4(T0)端子用导线连接到“频率产生器”区域中的W A VE端子上。
4.程序设计内容(1).定时/计数器T0和T1的工作方式设置,由图可知,T0是工作在计数状态下,对输入的频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。
对于频率的概念就是在一秒只数脉冲的个数,即为频率值。
所以T1工作在定时状态下,每定时1秒中到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理。
送到数码管显示出来。
(2).T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采用定时50ms,共定时20次,即可完成1秒的定时功能。
5.C语言源程序#include <AT89X52.H>unsigned char code dispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsigned char dispbuf[8]={0,0,0,0,0,0,10,10};unsigned char temp[8];unsigned char dispcount;unsigned char T0count;unsigned char timecount;bit flag;unsigned long x;void main(void){unsigned char i;TMOD=0x15;TH0=0;TL0=0;TH1=(65536-4000)/256;TL1=(65536-4000)%256;TR1=1;TR0=1;ET0=1;ET1=1;EA=1;while(1){if(flag 1){flag=0;x=T0count*65536+TH0*256+TL0;for(i=0;i<8;i++){temp[i]=0;}i=0;while(x/10){temp[i]=x%10;x=x/10;i++;}temp[i]=x;for(i=0;i<6;i++){dispbuf[i]=temp[i];}timecount=0;T0count=0;TH0=0;TL0=0;TR0=1;}}}void t0(void) interrupt 1 using 0{T0count++;}void t1(void) interrupt 3 using 0{TH1=(65536-4000)/256;TL1=(65536-4000)%256;timecount++;if(timecount 250){TR0=0;timecount=0;flag=1;}P0=dispcode[dispbuf[dispcount]];P2=dispbit[dispcount];dispcount++;if(dispcount 8){dispcount=0;}}32.电子密码锁设计1.实验任务根据设定好的密码,采用二个按键实现密码的输入功能,当密码输入正确之后,锁就打开,如果输入的三次的密码不正确,就锁定按键3秒钟,同时发现报警声,直到没有按键按下3种后,才打开按键锁定功能;否则在3秒钟内仍有按键按下,就重新锁定按键3秒时间并报警。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
17.99秒马表设计1.实验任务(1.开始时,显示“00”,第1次按下SP1后就开始计时。
(2.第2次按SP1后,计时停止。
(3.第3次按SP1后,计时归零。
2.电路原理图图4.17.13.系统板上硬件连线(1.把“单片机系统”区域中的P0.0/AD0-P0.7/AD7端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P0.0/AD0 对应着a,P0.1/AD1对应着b,……,P0.7/AD7对应着h。
(2.把“单片机系统”区域中的P2.0/A8-P2.7/A15端口用8芯排线连接到“四路静态数码显示模块”区域中的任一个a-h端口上;要求:P2.0/A8对应着a,P2.1/A9对应着b,……,P2.7/A15对应着h。
(3.把“单片机系统“区域中的P3.5/T1用导线连接到”独立式键盘“区域中的SP1端口上;4.程序框图主程序框图T0中断服务程序框图图4.17.25.汇编源程序TCNTA EQU 30HTCNTB EQU 31HSEC EQU 32HKEYCNT EQU 33HSP1 BIT P3.5ORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV KEYCNT,#00H MOV SEC,#00HMOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,AMOV A,BMOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,AMOV TMOD,#02H SETB ET0SETB EAWT: JB SP1,WTLCALL DELY10MSJB SP1,WTINC KEYCNTMOV A,KEYCNT CJNE A,#01H,KN1 SETB TR0MOV TH0,#06HMOV TL0,#06HMOV TCNTA,#00H MOV TCNTB,#00H LJMP DKNKN1: CJNE A,#02H,KN2 CLR TR0LJMP DKNKN2: CJNE A,#03H,DKN MOV SEC,#00HMOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLE MOVC A,@A+DPTR MOV P0,AMOV A,BMOV DPTR,#TABLE MOVC A,@A+DPTR MOV P2,AMOV KEYCNT,#00H DKN: JNB SP1,$LJMP WTDELY10MS:MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RETINT_T0:INC TCNTAMOV A,TCNTACJNE A,#100,NEXTMOV TCNTA,#00HINC TCNTBMOV A,TCNTBCJNE A,#4,NEXTMOV TCNTB,#00HINC SECMOV A,SECCJNE A,#100,DONEMOV SEC,#00HDONE: MOV A,SECMOV B,#10DIV ABMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,AMOV A,BMOV DPTR,#TABLEMOVC A,@A+DPTRMOV P2,ANEXT: RETITABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END6.C语言源程序#include <AT89X51.H>unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};unsigned char second;unsigned char keycnt;unsigned int tcnt;void main(void){unsigned char i,j;TMOD=0x02;ET0=1;EA=1;second=0;P0=dispcode[second/10];P2=dispcode[second%10]; while(1){if(P3_5 0){for(i=20;i>0;i--)for(j=248;j>0;j--);if(P3_5 0){keycnt++;switch(keycnt){case 1:TH0=0x06;TL0=0x06;TR0=1;break;case 2:TR0=0;break;case 3:keycnt=0;second=0;P0=dispcode[second/10];P2=dispcode[second%10]; break;}while(P3_5 0);}}}}void t0(void) interrupt 1 using 0 {tcnt++;if(tcnt 400){tcnt=0;second++;if(second 100){second=0;}P0=dispcode[second/10];P2=dispcode[second%10];}}18.“嘀、嘀、……”报警声1.实验任务用AT89S51单片机产生“嘀、嘀、…”报警声从P1.0端口输出,产生频率为1KHz,根据上面图可知:1KHZ方波从P1.0输出0.2秒,接着0.2秒从P1.0输出电平信号,如此循环下去,就形成我们所需的报警声了。
2.电路原理图图4.18.13.系统板硬件连线(1.把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上,(2.在“音频放大模块”区域中的SPK OUT端口上接上一个8欧或者是16欧的喇叭;4.程序设计方法(1.生活中我们常常到各种各样的报警声,例如“嘀、嘀、…”就是常见的一种声音报警声,但对于这种报警声,嘀0.2秒钟,然后断0.2秒钟,如此循环下去,假设嘀声的频率为1KHz,则报警声时序图如下图所示:上述波形信号如何用单片机来产生呢?(2.由于要产生上面的信号,我们把上面的信号分成两部分,一部分为1KHZ 方波,占用时间为0.2秒;另一部分为电平,也是占用0.2秒;因此,我们利用单片机的定时/计数器T0作为定时,可以定时0.2秒;同时,也要用单片机产生1KHZ的方波,对于1KHZ的方波信号周期为1ms,高电平占用0.5ms,低电平占用0.5ms,因此也采用定时器T0来完成0.5ms的定时;最后,可以选定定时/计数器T0的定时时间为0.5ms,而要定时0.2秒则是0.5ms的400倍,也就是说以0.5ms定时400次就达到0.2秒的定时时间了。
5.程序框图主程序框图中断服务程序框图图4.18.26.汇编源程序T02SA EQU 30HT02SB EQU 31HFLAG BIT 00HORG 00HLJMP STARTORG 0BHLJMP INT_T0START: MOV T02SA,#00HMOV T02SB,#00HCLR FLAGMOV TMOD,#01HMOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 SETB TR0SETB ET0SETB EASJMP $INT_T0:MOV TH0,#(65536-500) / 256 MOV TL0,#(65536-500) MOD 256 INC T02SAMOV A,T02SACJNE A,#100,NEXTINC T02SBMOV A,T02SBCJNE A,#04H,NEXTMOV T02SA,#00HMOV T02SB,#00HCPL FLAGNEXT: JB FLAG,DONECPL P1.0DONE: RETIEND7.C语言源程序#include <AT89X51.H> unsigned int t02s;unsigned char t05ms;bit flag;void main(void){TMOD=0x01;TH0=(65536-500)/256;TL0=(65536-500)%256;TR0=1;ET0=1;EA=1;while(1);}void t0(void) interrupt 1 using 0 {TH0=(65536-500)/256;TL0=(65536-500)%256;t02s++;if(t02s 400){t02s=0;flag=~flag;}if(flag 0){P1_0=~P1_0; }}。