单片机项目实践教程刘燎原-项目三手动计数器
单片机应用技术项目教程(C语言版)全书教案完整版课程设计整本书电子教案单元设计
项目一 发光二极管LED控制课时(学时)8学时终极目标1.能完成单片机最小系统和输出电路设计;2.能应用C语言程序完成单片机输入输出控制,实现对LED控制的设计、运行及调试。
促成目标1.了解AT89S52单片机结构;2.掌握AT89S52单片机的引脚功能;3.掌握AT89S52单片机最小系统电路设计;4.掌握C语言基本构成和基本语句;5.会利用单片机I/O口实现点亮一个LED和控制LED闪烁。
教学重点1.AT89S52单片机引脚功能;2.AT89S52单片机最小系统电路设计;3.C语言基本构成和基本语句;4.LED闪烁控制设计与实现。
教学难点 1. AT89S52单片机的引脚功能;2. AT89S52单片机最小系统电路设计;3. LED闪烁控制设计与实现。
教学内容一、工作模块1点亮一个LED;1.AT89S52单片机结构;2.AT89S52单片机引脚功能;3.AT89S52单片机最小系统。
二、工作模块2 LED闪烁控制设计与实现;1.C语言程序的基本构成;2.C语言基本语句。
教学手段多媒体演示及实训练习相结合教学方法设计1.项目驱动2.教学做一体项目二 LED循环点亮控制课时(学时)10学时终极目标 1.能完成单片机的输入输出电路设计;2.能应用C语言程序完成单片机输入输出控制,实现对LED循环点亮控制的设计、运行及调试。
促成目标 1. 掌握P0、P1、P2和P3功能及应用技能;2. 掌握内部数据存储器的地址分配及特殊功能寄存器;3. 掌握C语言数据类型、常量和变量;4. 会利用单片机I/O口实现开关控制LED循环点亮和步进机电控制。
教学重点 1. AT89S52单片机P0、P1、P2和P3功能;2.内部数据存储器的地址分配及特殊功能寄存器;3.C语言数据类型、常量和变量;4.开关控制LED循环点亮。
教学难点 1.电路图的设计;2.51单片机的内存空间地址分配。
教学内容 一、工作模块3 LED循环点亮控制模块1.工作任务要求;2. LED循环点亮电路设计;3. LED循环点亮程序设计;4. 并行I/O端口电路介绍。
单片机应用技术项目教程项目三任务2
知识点一 中断的相关概念
2.中断源 中断源是指在单片机系统中向CPU发出中断请求的来源,
中断源可以人为设定,也可以是为响应突发性随机事件而设置。 单片机系统的中断源一般有外部设备中断源、控制对象中
断源、定时器/计数器中断源、故障中断源等。
知识点一 中断的相关概念
3.中断优先级 一个单片机系统可能有多个中断源,且中断申请是随机的,
知识点三 中断标志与控制
(5)IE1(TCON.3):外部中断1边沿触发中断请求标志位。 当CPU检测到INT1(P3.3脚)上有外部中断请求信号时,IE1由 硬件自动置位,请求中断;当CPU响应中断进入中断服务程序 后,IE1被硬件自动清除。 (6)IT1(TCON.2):外部中断1触发类型选择位。IT1状态可 由软件置位或清除,当IT1=1时,设定的是后边沿触发(即由 高变低的下降沿)请求中断方式;当IT1=0时,设定的是低电 平触发请求中断方式。 (7)IE0(TCON.1):外部中断0边沿触发中断请求标志位, 其功能与IE1类同。 (8)IT0(TCON.0):外部中断0触发类型选择位,其功能与 IT1类同。
中断函数的定义格式如下:
void 函数名(void) interrupt 中断编号 [using 工作寄存器组编号] { 可执行语句; }
例如:void Timer( ) interrupt 1 using 2 {}
知识点三 中断标志与控制
AT89C51中断标志位集中安排在定时器控制寄存器TCON和 串行口控制寄存器SCON中。 1.控制寄存器TCON
知识点二 中断源与中断函数
2.定时器中断 51单片机内部定时器/计数器T0和T1,在计数发生溢出时,
单片机内硬件自动设置一个溢出标志位,申请中断。 3.串行中断
单片机项目实践教程刘燎原项目九串行课件
02
项目九串行课件介绍
项目背景与目标
01
02
项目背景:随着信息技 术的发展,串行通信技 术在各个领域得到广泛 应用。为了使学生更好 地掌握串行通信技术, 特开设项目九串行课件 。
项目目标
03
04
05
掌握串行通信的基本原 理和技术。
学会使用单片机实现串 行通信。
培养学生对串行通信技 术的实际应用能力。
04
单片机与其他技术的结合将产生更多的创新应用,如与机器学习、云 计算等技术结合,实现更智能化的数据处理和分析。
感谢您的观看
THANKS
项目需求分析
硬件需求
01
单片机开发板、串行通信模块、电脑等。
软件需求
02
单片机开发软件、串行通信软件等。
技术难点
03
如何实现单片机与电脑之间的串行通信,如何处理数据传输过
程中的错误等。
项目实施计划
任务一
了解串行通信的基本原理和技术,包 括数据传输方式、波特率、数据位数 、停止位和校验位等。
01
02
中断服务程序用于处理单片机接收到的中断 信号,实现实时响应和快速处理。
调试与测试
调试工具
常用的调试工具有仿真器和逻辑分析仪,它们可以帮助开发者定位程序中的错误和问题 。
测试方法
测试是保证单片机程序正确性和稳定性的重要环节,包括单元测试、集成测试和系统测 试等。
05
系统集成与调试
系统集成方法与步骤
串行通信协议制定
协议格式
串行通信协议需要规定数据包的格式,包括 起始码、数据段、校验码和结束码等部分。
波特率
为了保证数据传输的稳定性和正确性,需要 选择合适的波特率,即数据传输速率。
手动计数器测数的原理
手动计数器测数的原理
手动计数器是一种机械设备,用于计数物体的数量。
它的工作原理主要包括以下几个步骤:
1. 初始状态:手动计数器初始状态为零,即未计数任何物体。
2. 计数:当要计数一个物体时,用户手动按下计数器的计数按钮。
这个按钮通常是一个大的可按压的按钮,按下后会触发一系列机械装置的动作。
3. 记数机构:按下计数按钮后,计数机构开始工作。
计数机构通常包括一个齿轮装置,每按下一次计数按钮,齿轮就会转动一定的角度。
4. 显示:齿轮的转动会传递给数字显示机构,该机构能够根据齿轮的转动角度将数字显示到计数器的显示板上。
每按下一次计数按钮,显示板上的数字就会递增一次。
5. 重置:当需要重置计数器时,用户可以按下重置按钮,将计数器的状态重新设置为零。
总的来说,手动计数器通过机械装置将用户手动按下的计数按钮的动作转化为数字显示,从而实现计数功能。
它的原理比较简单,主要依靠齿轮装置和数字显示机构的协同工作。
单片机控制技术项目训练教程任务三 键控流水灯控器制作-PPT课件
2
任务分析:
前面一个任务我们已经完成了LED流 水灯的制作,本任务与前一任务相比仅是 增加了按键的控制,即点按一次按键K后 立即执行“流水灯程序”。“点按按键一 次”通常的理解是先按下按键,然后又放 开,所以编程时,首先要判断按键是否真 正的按下,若按下,就等待按键释放。释 放后,这次按键的动作就完成了。
}
程序知识点:
(1)if语句的使用
if(表达式) {语句}
if(表达式) {语句1}
else {语句2}
if(表达式1) {语句1} else if(表达式2 ) {语句2}
...... else {语句n}
(2)带参数的延时程序使用
//无参数延时程序 void delay() {
unsigned int x; for(x=30000;x>0;x--); }
P1口赋值数据 计算表格
次序 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P1值 1 0 0 0 1 1 1 1 1 0x1F 2 1 0 0 0 1 1 1 1 0x8F 3 1 1 0 0 0 1 1 1 0xC7 4 1 1 1 0 0 0 1 1 0xE3 5 1 1 1 1 0 0 0 1 0xF1 6 1 1 1 1 1 0 0 0 0xF8 7 0 1 1 1 1 1 0 0 0x7C 8 0 0 1 1 1 1 1 0 0x3E
键控LED流水灯硬件模块接线图(YL-236单片机实训装置)
4
软件编程
主程序流程图:
参考程序:
{ u n sig n ed ch ar i; //定 义 无 符 号 字 符 型 变 量 i P1= 0xff; //开 机 时 8个 LED 全 灭 w h ile(1 )//主 程 序 循 环 { K = 1 ;//把 按 键 管 脚 拉 高 if(K = = 0 )//首 次 判 断 按 键 是 否 按 下 { d elay _m s(1 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 消 除 按 键 抖 动 if(K = = 0 )//再 次 判 断 按 键 是 否 按 下 { w h ile(K = = 0 );//等 待 按 键 释 放 w h ile(1 )//流 水 灯 的 循 环 { fo r(i= 0 ;i< 8 ;i+ + )//循 环 8 次 { P 1 = D M [i]; //查 询 在 D M 数 组 中 取 出 对 应 值 d elay _m s(3 0 0 0 0 ); //调 用 带 参 数 的 延 时 子 函 数 } } } } }
单片机项目实践教程刘燎原-项目六扩展1 LCD
实验:用LCD显示键盘的键值
总结试验:LCD显示按键个数
电路 编程步骤: 如何统计按键个数? 利用单片机本身的计数器T0,工作在计数状态。书上110页和119页。 1.LCD初始化 2.计数初始化 3.开始计数 3.设置LCD第一行地址 4.显示第一行字符串 5.读取当前计数值---〉A 6.把A转化为十进制数的十位和个位 6.设置第二行地址 7.十位转化为ASCII码,显示单个字符 8.个位转化为ASCII码,显示单个字符
Void main() {… for(j=0;j<13;j++) {wd(hy[j]);} … }
4.设定第二行显示起始地址
Void main()
{…
wc(0xc8);
…
}
5.送数据到数据端口,显示数据
void dispd(unsigned char c)
{unsigned char d;
比如大写的字符“1”的代码是00110001B(31H),显示“1”时,则我们只需 将ASCII码31H存入DDRAM(专门用来存放要显示的字符的ASCII码的存储器, 简称为DDRAM)即可。显示时模块把地址31H中的点阵字符图形显示出来,我们就 能看到数字“1”了。
另外用户可以自定义的字符产生存储器,成为CRRAM,用户可以编程将字符图案写入 CRRAM中。
不同类型的液晶显示器件其组成可能会有所不同,但是所有液晶显示器件都 可以认为是由两片光刻有透明导电电极的基板,夹持一个液晶层,封接成一 个扁平盒,有时在外表面还可能贴装上偏光片等构成。
液晶显示的原理是液晶在电场的作用下,液晶分子的排列方式发生了改变, 从而使其光学性质发生了变化。
2. LCD显示器分类 从显示的形式上通常可分笔段型、字符型和点阵图形型。
单片机原理实验教案参考程序doc资料
广东松山职业技术学院《MCS-51单片机原理》实验指导书宁玉珊黄晓林使用Proteus辅助设计与仿真实训项目1 Proteus辅助设计与仿真的使用一、实训目的学习并熟练掌握PROTEUS辅助设计与仿真软件的使用。
通过使用Proteus的ISIS组件绘制A T89C51功能接口原理图,并对原理图编写程序和调试程序,观察在仿真条件下的实现功能的效果。
二、实训内容在PROTEUS仿真环境下实现一个发光二极管(LED)闪烁。
要求LED亮0.5s灭1s,并绘制原理图和编写实现程序,同时用虚拟的示波器观察硬件和软件实现的效果。
三、实训器材安装有Proteus7软件的计算机 1 台。
四、实训步骤1)在硬盘建立文件夹用来保存新建项目的所有文件。
如在D盘建立PROJECT文件夹。
2)选择‘开始→程序→Proteus7 professional→ISIS professional(或者双击桌面图标ISIS)’,进入Proteus仿真环境,如图P1_1和P1_2所示。
图P1-1图P1-23)选择菜单【File/New Design】创建一个新的设计项目,如图P1_3所示。
图P1-34)此时系统会弹出模板选择窗口,选择‘DEFAULT’点击【OK】即可,如图P1_4所示。
图P1_45)点击界面左侧工具栏中的图标,接着点击元件池上方的按钮,将要用到的元器件从系统库调到当前设计文件库中。
在弹出的Pick Devices对话框左上角的‘Keywords’文本框中键盘输入元件名(或元件的其它关键词)搜索到需要的元器件。
双击‘Results’栏下的目标元件,该元件即调出到当前设计文件库的元件列表中,如图P1_5所示。
本实训中所要用到的元件如表PS1_1所示。
图P1_5元件名称搜索关键词元件序号数值备注电阻器ResistorR1 10k电阻器Resistor R2 1k电解电容器MINELECT1U63V C1 4.7μ陶瓷电容器CERAMIC22P C2、C3 22p晶振CRYSTAL X1 12MHz单片机AT89C51 U1发光二极管LED-YELLOW D1表PS1_1元件列表6)点击界面左侧工具栏中的图标,选择元件列表中的元件,在原理图编辑框中放置元件、布局及连线,构成原理图主体,如图P1_6所示。
单片机项目实践教程刘燎原项目八电机模块
单片机项目实践教程刘燎原项目八电 机模块
3. 1-2相励磁方式 当脉冲一个一个发来时,如果按A->A、B->B-> B、C-
>C-> C、A->...的顺序通电,则电机转子便按顺时针 转动,这种通电方式成为1-2相励磁方式。 顺时针轮回 A→AB→B→BC→C→CA→A 逆时针轮回 A→AC→C→CB→B→BA→A
u 在工业控制系统中,通常要控制机械部件的平移和转动, 这些机械部件的驱动大部分都采用交流电机、直流电机、 步进电机。在这三种电机中,步进电机最适合数字控制, 因此在数控机床、家用电器、精密仪器中得到广泛应用。
单片机项目实践教程刘燎原项目八电 机模块
一、概述 u 一般电机(直流电机)都是连续运转的,而步进电机却
u 管脚: u OUT1、OUT2、OUT3、OUT4引脚是L298的输出端,这4个
引脚之间可以接2个直流电机.
单片机项目实践教程刘燎原项目八电 机模块
u IN1、IN2、IN3、IN4引脚通过置高电平和低电平组合实现两个 电机的正反转.
u ENA、ENB为使能端,高电平有效,分别为 IN1和IN2、IN3和 IN4的使能端,该端口一般和单片机软件产生的PWM波输出端相 连,实现电机的调速。
例如减速比为1/64,是指内部转子转64圈,外部转1圈。
例如上图为28BYJ48型5线四相八拍步进电机
单片机项目实践教程刘燎原项目八电 机模块
u 5线四相八拍,相序表如下:
P1.3210
拍数 DCBA(脉冲) 对应值
1 0001 01
2 0011 03 3 0010 02 4 0110 06 5 0100 04
单片机应用技术项目教程(C语言版)习题答案
单片机应用技术项目教程(C语言版)习题答案项目一1-1 填空题(1)8031,8751(2)存储器,定时器/计数器,输入/输出接口电路(3)上电自动复位,手动复位(4)12,1μs,1,4(5)1(6)4,1,2,51-2选择题(1)A(2)C(3)D(4)C(5)A1-3(1)Keil C51软件的主要功能Keil C51软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。
μVision2 集成开发环境可以完成工程建立和管理、编译、连接、目标代码的生成、软件仿真和硬件仿真等完整的开发流程。
(2)PROTEUS软件的主要功能Proteus不仅是模拟电路、数字电路、模/数混合电路的设计与仿真平台,也是目前较先进的单片机和嵌入式系统的设计与仿真平台。
在计算机上,能完成从原理图与电路设计、电路分析与仿真、单片机代码级调试与仿真、系统测试与功能验证到形成PCB的完整的电子设计、研发过程。
1-4 简叙单片机的发展及发展趋势。
单片机的发展主要有以下几个方面:(1)增加字长,提高数据精度和处理的速度;(2)改进制作工艺,提高单片机的整体性能;(3)由复杂指令集CISC转向简单指令集RISC的技术;(4)多功能模块集成技术,使一块“嵌入式”芯片具有多种功能;(5)微处理器与DSP技术相结合;(6)融入高级语言的编译程序;(7)低电压、宽电压、低功耗。
目前,国际市场上8位、16位单片机系列已有很多,32位的单片机也已经进入了实用阶段。
随着单片机技术的不断发展,新型单片机还将不断涌现,单片机技术正以惊人的速度向前发展。
1-5 简叙单片机的主要应用领域。
单片机的主要应用领域:工业控制、智能仪表、外设控制、家用电器、机器人、军事装项目二LED循环点亮控制 2置等。
1-6 简叙单片机的主要特点。
(1)体积小、重量轻,价格低、功能强,电源单一、功耗低,可靠性高、抗干扰能力强。
(2)使用方便灵活、通用性强。
单片机项目实践教程刘燎原项目三手动计数器
u #include <reg51.H> //包含AT89X52.H头文件
u sbit k1=P3^4;
unsigned char code sz1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
u void Delay(unsigned int t)
u{
共阴极
D7 D6 D5 D4 D3 D2 D1 D0
101 0 01 0 0 dp g f e d c b a
共阳极 单片机项目实践教程刘燎原项目三手 动计数器
表 十六进制数及空白字符与P的显示段码
单片机项目实践教程刘燎原项目三手 动计数器
(3)LED数码管的显示方式 a.静态LED显示器电路
u 数码管的COM端接不变的高/低电平,每位数码管的a~g和h端与一 个8位的I/O 相连。
u
{
u
i=m/10;
u
j=m%10;
u
P2=sz1[i];
u
P3=sz1[j];
u
delay(1000);
u
}
u}
u}
单片机项目实践教程刘燎原项目三手 动计数器
例5:设计可以记录按键次数的计数器(0~99),两位数码管显示
静态显示
单片机项目实践教程刘燎原项目三手 动计数器
u #include <REG51.h>
{ P1=sz1[m];
u
Delay(200);}
u
}
u
else
u
{for(m=0;m<8;m++)
u
{P1=sz1[7-m];
u
Delay(200);}
单片机项目实践教程刘燎原项目六扩展2点阵
第二个点阵: 第一行输入列值100000000(80H) 第二行输入列值01100000(60H) 第三行:40H 第四行:FEH 第五行:00H 第六行:F8H 第七行:00H 第八行:F8H
单片机项目实践教程刘燎原项目六扩 展2点阵
如何把编码送给对应的点阵的列? 存入数组,查得编码。然后再分别送给对应点阵的列 建立表格如下:
u
E1=E2=0,时,可译码低电平输出
u
单片机项目实践教程刘燎原项目六扩 展2点阵
例: 用4个8*8点阵组合成16*16点阵循环显示“信息”两个字。 u 显示”信”,再显示”息”,然后循环
单片机项目实践教程刘燎原项目六扩 展2点阵
u 显示”信”:逐行显示 第一个点阵:
第一行输入列值00001000(08H) 第二行输入列值00001100(0CH) 第三行:18H 第四行:17H 第五行:30H 第六行:33H 第七行:50H 第八行:93H 第三个点阵: 八行列值为:10H,13H,12H,12H, (第九到十六行) 12H,13H,12H,00H 第四个点阵: 八行列值为:00H,F8H,08H,08H, (第九到十六行)08H,F8H,08H,00H u 显示”息“
单片机项目实践教程刘燎原项目六扩 展2点阵
6.显示汉字原理( 16*16点阵) u 我们把显示器的每一个点理解为一个像素,那么8*8点阵只能显示64像素范围以内
的任何图形和字符(不清楚)。如果想显示更大像素的图形,怎么办? 组合
u 一般我们使用点阵显示汉字是用的16*16的点阵宋体字库,所谓16*16,是每一个 汉字在行、列各16点的区域内显示的。也就是说得用四个8*8点阵组合成一个 16*16的点阵。
u 编程:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
随时响 应按键
手动计数器
手动计数器
数码管显 示控制
按键控制
PROTEUS仿 真
PROTEUS仿 真
项目三 手动计数器 --------单片机控制数码管静态显示
知识目标: 1.掌握数码管的动态、静态显示不同、电路连接 2. 掌握查表指令 3.掌握按键的编程 4.掌握单片机的外部中断
技能目标: 1.掌握PROTEUS中数码管的共阴、共阳的不同 2.掌握数码管和单片机的连接方法
1.LED数码管简介 (1)结构、工作原理 由LED发光二极管组合显示字符的显示器件。它使用了8个LED发光二 极管,其中7个用于显示字符,1个用于显示小数点,故通常称之为7段(也 有称作8段)发光二极管数码显示器。
“8”字型LED数码管结构及原理
共阳极
a
f
e
g
b
c dp
a b c d e f g dp
unsigned char code sz1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Delay(unsigned int t) { unsigned int i, j; for(i=0;i<t;i++) {for(j=0;j<120;j++);} } void main ( ) { unsigned char m; while(1) { if(k1==0) {for(m=0;m<8;m++) { P1=sz1[m]; Delay(200);} } else {for(m=0;m<8;m++) {P1=sz1[7-m]; Delay(200);} } }
C1
30p
C2 X1
30p CRYSTAL 18 19
U1
XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
共阴极
a b c d e f g dp
COM
d
(2)LED的编码方式
COM +5V
字型 码的 5BH 定义
D7
D6 D5 D4 D3 D2
D1 D0
D7
D6 D5 D4 D3 D2
D1 D0
0 1 0 1 1 0 1 1 dp g f e d c b a 共阴极
1 0 1 0
dp g f
0 1 0 0 e d c b a
D5
LED-GREEN 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 1 2 3 4 5 6 7 8 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51
D6
LED-GREEN
D7
LED-GREEN
D8
LED-GREEN
例3:用开关控制数码管显示 设计电路和程序,用开关作为输入元件,用数码管显示4位开关的 二进制数。(例如4个开关都闭合,则4个开关状态0000,则数码管 显示0。以此类推)
U1
XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
R9
10k
XTAL2
C3
1uF
9
RST
29 30 31
PSEN ALE EA
R2 R3 R4 300 R5 300 R6 300 R7 300
300 300
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51
R9
10k
XTAL2
C3
1uF
9
RST
29 30 31
PSEN ALE EA
R2 R3 R4 300 R5 300 R6 300 R7 300
300 300
1 2 3 4 5 6 7 8
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51
程序清单: #include <REG51.h> unsigned char code sz1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa 1,0x86,0x8e} ; void delay(unsigned int a) { unsigned char i; while(a--) C1 { for(i=0;i<120;i++); 30p } C2 U1 19 39 } X1 XTAL1 P0.0/AD0 38 CRYSTAL P0.1/AD1 37 30p void main() P0.2/AD2 18 36 XTAL2 P0.3/AD3 35 { R9 P0.4/AD4 34 P0.5/AD5 33 10k unsigned char j; P0.6/AD6 C3 9 32 RST P0.7/AD7 while (1) 21 R2 P2.0/A8 1uF 22 R3 P2.1/A9 { 23 R4 300 P2.2/A10 29 24 R5 300 PSEN P2.3/A11 for(j=0;j<16;j++) 30 25 R6 300 ALE P2.4/A12 31 26 R7 300 EA P2.5/A13 { P2=sz1[j]; 27 300 P2.6/A14 28 300 P2.7/A15 delay(1000); 1 10 P1.0 P3.0/RXD } 2 11 P1.1 P3.1/TXD 3 12 P1.2 P3.2/INT0 4 13 } P1.3 P3.3/INT1 5 14 P1.4 P3.4/T0 6 15 } P1.5 P3.5/T1
2.应用 例1:设计电路,程序,使1位数码管(共阳)依次显示0~F,每个 数字的显示时间是1s. 电路:
C1
30p
C2 X1
30p CRYSTAL 18 19
U1
XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17
看仿真效果
7 8 P1.6 P1.7 AT89C51 P3.6/WR P3.7/RD 16 17
例2:用开关控制LED显示 设计电路程序,用8个开关作为输入,8个发光二极管作为输出, 显示8位开关的二进制数。
D1 C1
LED-GREEN 30p
D2
LED-GREEN
C2 X1
30p CRYSTAL 18 19
循环完 8次后 再响应 按键
#include <AT89X52.H> //包含AT89X52.H头文件 #include <intrins.H> sbit k1=P3^4; void Delay(unsigned int t) { unsigned int i, j; for(i=0;i<t;i++) {for(j=0;j<120;j++);} } void main (void) { P1=0xfe; while(1) { if(k1==0) {P1=_crol_(P1,1); Delay(200);} else {P1=_cror_(P1,1); Delay(200);} } }
微控制器系统设计与应用
江苏建筑职业技术学院 刘燎原
实验
1.KEIL使用步骤 2.单片机开发板使用方法,烧录程序步骤 3. K1按下, 8个流水灯从上到下逐个点亮,若K1断开, 8个流水灯从 下到上逐个点亮,然后依次循环
#include <reg51.H> sbit k1=P3^4;
//包含AT89X52.H头文件
D3
LED-GREEN
R9
10k
XTAL2
C3
1uF
9
RST
D4
LED-GREEN
29 30 31