郭天祥51单片机笔记

合集下载

郭天祥51单片机授课视频内容

郭天祥51单片机授课视频内容

郭天祥51单片机授课视频内容 讲次内容细节

第一讲学单片机预备知识、

如何点亮一个发光管

单片机能做什么,基本电子知识,如何用TX-1C单

片机学习板学习单片机,C51知识简介,如何申请

免费芯片样品。点亮一个发光管,

第二讲流水灯设计、蜂鸣器发声、

继电器控制

简单延时程序、子程序调用、带参数子程序设计、

流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱

动继电器,集电极开路的概念及应用。

第三讲数码管显示的原理、

数码管的静态显示

共阳、共阴数码管显示原理、定时器工作方式介绍、

重点讲述工作方式2、中断概念及中断函数写法、

外部中断试验、定时器中断应用

第四讲数码管的动态显示原理及

应用实现

动态扫描概念、

定时器、中断加深

用单片机的定时器及中断设计一个60秒定时器

第五讲独立键盘、矩阵键盘

的检测原理及实现

键盘用来做什么、如何键盘检测、消抖、键盘编码、

带返回值函数写法及应用

第六讲AD、DA的工作原理

及实现、运放电路

模拟电压与数字电压的关系、为什么要使用AD及

DA、ADC0804的操作方法、DAC0832的操作方法

第七讲串口通讯原理及操作流程串口通讯工作方式、

10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。

第八讲 1602液晶最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作

第九讲IIC总线AT24C02芯片工

作原理

IIC总线工作原理、

目前非常通用的一种通信机制

第十讲利用51单片机的定时器设

计一个时钟

综合运用51单片机知识设计一个可以随意调节时

间、带整点闹铃的时钟。(其中用到定时器、中断、

单片机C51学习笔记

单片机C51学习笔记

单⽚机C51学习笔记

单⽚机C51学习笔记

⼀, C51内存结构深度剖析

⼆, reg51.头⽂件剖析

三,浅淡变量类型及其作⽤域四, C51常⽤头⽂件

五,浅谈中断

六, C51编译器的限制

七,⼩淡C51指针

⼋,预处理命令

黄杰(amwjie72@163)

写于2011-2-11(正⽉初九)

⼀,C51内存结构深度剖析

在编写应⽤程序时,定义⼀个变量,⼀个数组,或是说⼀个固定表格,到底存储在什么地⽅;当定义变量⼤⼩超过MCU的内存范围时怎么办;如何控制变量定义不超过存储范围;以及如何定义变量才能使得变量访问速度最快,写出的程序运⾏效率最⾼。以下将⼀⼀解答。

1 六类关键字(六类存储类型)

data idata xdata pdata code bdata

code:code memory (程序存储器也即只读存储器)⽤来保存常量或是程序。code memory 采⽤16位地址线编码,可以是在⽚内,或是⽚外,⼤⼩被限制在

64KB

作⽤:定义常量,如⼋段数码表或是编程使⽤的常,在定义时加上code 或明确指明定义的常量保存到code memory(只读)

使⽤⽅法:

char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};

此关键字的使⽤⽅法等同于const

data data memory (数据存储区)只能⽤于声明变量,不能⽤来声明函数,该区域位于⽚内,采⽤8位地址线编码,具有最快的存储速度,但是数量被限制在

128byte或更少。

使⽤⽅法:

郭天祥-单片机学习心得

郭天祥-单片机学习心得

生活,就是面对现实微笑,就是越过障碍注视未来;生活,就是用心灵之剪,在人生之路上裁出叶绿的枝头;生活,就是面对困惑或黑暗时,灵魂深处燃起豆大却明亮且微笑的灯展。17过去与未来,都离自己很遥远,关键是抓住现在,抓住当前。

致阅读本书的大学生朋友

在哈尔滨工程大学六年,我在学校电子创新实验室呆了四年,这四年里创新实验室给我提供了良好的学习环境和完善的实验设备;在与众多电子爱好者的交流中,使我学到了更多的专业知识;在学校老师们的教导下,让我学会了如何做一名合格的大学生。因此,在这里我要感谢哈尔滨工程大学的历任领导,我今天成绩的取得得益于他们不断完善的教育体制;衷心地感谢曾经教导过我的刁鸣教授、付永庆教授、王松武教授,没有他们对我的培养,也就没有我的今天。同时我也希望能有更多的电子爱好者加入创新实验室,在完善自我的同时,在电子行业做出更突出的业绩。2007 年,我以全新的教学方式推出了一套讲述51 单片机的教学视频课程——“十天学会单片机”,该视频自从网上发布后,得到了电子爱好者的一致好评,诸多的单片机初学者通过这套视频走上了单片机开发之路。有很多学员来信或打电话希望我能够将视频中的内容著书出版,让更多的人受益。为此,2007 从年9 月至2008 年7 月,我用了近十个月的时间将本书写完。本书的写作风格与我在教学视频中的讲课风格相似,它与传统讲授单片机的书籍完全不同,我以学单片机“过来人”的思路,抱着如何才能更容易掌握单片机的态度,理论与实践完全结合的方式清晰地讲解了单片机部分。其余大部分内容为我多年做项目的经验积累,也有部分内容来自于网络电子高手们的精华总结,应当说,在本书中有太多的知识是大家平时在书本上学不到的。在这里,先将我在大学期间的学习和生活经历与大家分享,借此鼓舞大家珍惜大学时光,多学习文化知识,开创更加美好的明天。

51单片机自学笔记(基础部分)

51单片机自学笔记(基础部分)

一、51单片机的硬件结构

1. 硬件结构框图

说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。例如:未处理、查表、状态检测、中断处理等。

○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。

○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。

○4中断系统:5个中断源,2级优先权。

○5定时器/计数器:2个16位定时/计数器,四种工作方式。

○6串行口:1个全双工串行口,四种工作方式。可进行串口通信,扩展并行I/O口,多机通信

等。

○7P1、P2、P3、P0口:四个8位并行I/O口。

○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。

2. 引脚排列

(1)电源及时钟引脚

○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。

○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。

XTAL1(19脚):内部反相放大器的输入端。若接晶振则应接地;XTAL2(18脚):内部反相放大器

的输出端。若采用外部时钟振荡器,该引脚接收时钟振荡信号。

(2)控制引脚

○1RST/Vpd(9脚):复位信号输入,高电平有效。单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。平时应为0.5V低电平;Vpd为第二功能,备用电源

51单片机C语言教程-郭天祥-PDF转word版第二章

51单片机C语言教程-郭天祥-PDF转word版第二章
按钮用于编译我们正在操作的文件。
按钮用于编译修改过的文件,并生成应用程序供单片机直接下载。
按钮用于重新编译当前工程中的所有文件,并生成应用程序供单片机直接下载。因为很多工程有不止一个文件,当有多个文件时,我们可使用此按钮进行编译。
按钮用于打开《OprionsforTarget》对话框,也就是为当前工程设置选项。使用该对话框可以对当前工程进行详细设置,关于该对话框的设置方法将在使用时再做详细讲解。
在输入上述程序时,Keil会自动识别关键字,并以不同的颜色提示用户加以注意,这样会使用户少犯错误,有利于提高编程效率。若新建立的文件没有事先保存的话,Keil是不会自动识别关键字的,也不会有不同颜色出现。程序输入完毕后,如图2.2.1所示。
我们暂且不要管这几句程序表示什么意思,先学会编译及错误处理,然后我再详细介绍代码的含义。接下来我们编译此工程,看看程序代码是否有错误。先保存文件,再单击K全部编译〗快捷图标圖。建议大家每次在执行编译之前都先保存一次文件,从一开始就养成良好的习惯对你将来写程序有很大好处,因为进行编译时,Keil软件有时会导致计算机死机,使你不得不重启计算机,若你在编写一个很大的工程文件时没有及时保存,那么重启后你将找不到它的任何踪影,只得重写。虽然这种情况极少发生,但出于安全考虑,建议大家及时
通过以上(1)〜(6)步我们学习了如何在Keil编译环境下建立一个工程,在开始编写程序之前,我们有必要先学习编辑界面上一些常用的按钮功能与用法。

51单片机学习笔记(郭天祥版)(6)——键盘的作业题、AD、DA、DS18B20(这里之后。。。

51单片机学习笔记(郭天祥版)(6)——键盘的作业题、AD、DA、DS18B20(这里之后。。。

51单⽚机学习笔记(郭天祥版)(6)——键盘的作业题、AD、DA、DS18B20(这⾥之后。。。

A:analog,D:digital

AD,就是模拟量转换为数字量,DA就是数字量转换为模拟量

为什么要转换?

单⽚机是数字芯⽚,内部只有0和1,没法表⽰模拟量

⽐如我们如果需要2.5V怎么办?其实是由单⽚机控制DA加上功率放⼤实现的(因为还需要电流)

如果是⼀个8位的DA,8个1表⽰5V,0个1表⽰0V,中间呈线性变化。

DA转换器内部有很多种构成⽅式,这是其中⼀种

V REF参考电压的输⼊端,D7~D0是数字控制端,每个上⾯有⼀个0和1,1越多,I O1越⼤。

看到I O2这⾥接地了,说明D0上的电阻2R和其右侧电阻是并联,那么电阻之和就是R,然后⼜和前⾯⼀个电阻串联,总电阻就是2R,⼜和D1上电阻并联,那么总电阻就是R,以此类推,那么D7电阻右侧所有电阻串并联之和是2R,和D7上电阻之和是R。如果D7~D0全是1,那么电流全流⼊I O1,那么电流就是V REF/R。如果只有D7是1,由于D7上电阻右侧所有电阻之和是2R,那么电阻分为了相等的两部分,所以I O1=I/2=V REF/2R。如果D7和D6都是1,那么⼜多分了⼀半的⼀半,就是2的2次⽅分⽀1,⼀次类推

图中2的7次⽅是最⾼位,把I/2的⼋次⽅带进去就得到了I/2,所以是最⾼位的。

所以DA芯⽚是通过内部电阻分流产⽣变化的模拟量的值

位数越⾼,对功率要求就越⾼,DA还有转换速度,刚刚看到的内部电路⽹络,跟温度、线性关系什么的都有关系

线性度是最⼤的误差,常⽤最⼤的误差⽐满量程值表⽰。线性度越好,DA性能越好

51单片机,郭天祥,第三章,PDF,Word

51单片机,郭天祥,第三章,PDF,Word

3.4中断概念

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一, 是我们学习单片机必须要掌握的。很多初学者被困在中断中,学了很久仍然不知道中断究竟是个什么东西,大家千万不要认为它有多难,其实只要掌握正确的学习方法,没有哪个知识点是学不会的。

51单片机内部一共有5个中断源,也就是说,有5种情况发生时,会使单片机去处理中断程序。在本章我们只讲解其中的一种中断情况——定时器中断,只要大家从理论和实践中真正明白了中断的概念,其他几种情况便能轻松掌握。

为了能让大家更容易理解中断概念,我们先来举一个生活事例:你打开火,烧上一壶水, 然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断,其流程图如图3.4.1所示。

对于单片机来讲,中断是指CPU在处理某一事件A时,发生了另一事件B,请求CPU 迅速去处理(中断发生);CPU暂时停止当前的工作(中断响应),转去处理事件B (中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A (中断返回),这一过程称为中断,其流程图如图3.4.2所示。

再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。单片机在执行程序时其程序流程图如图3.4.3所示。

郭天祥51单片机开发板原理图

郭天祥51单片机开发板原理图

P0C0802 P0C0801
P0R0101
P0R0102
P0C0702
P0CJ201
3
R7 R8 P0R801 R9 P0R901
P0R701 N0WR WR N0RD RD
R01 10K R02 10K
P0R0201 P0R0202
A
2
U5
VCC
P0U5020 20 P0U5019 19 P0U5018 18 P0U5017 17 P0U5016 16 P0U5015 15 P0U5014 14 P0U5013 13 P0U5012 12 P0U5011 11
TAP
VCC 1 P0Re201
R15 10k B Re2
P0Re202 N0CSAD CSAD 1 P0U501 N0RD P0U502 RD 2 N0WR WR 3 P0U503 4 P0U504 5 P0U505 6 P0U506 P0R1202 7 P0U507 8 P0U508 9 P0U509 10 P0U5010 P0R1402
LED1
LED2
LED3
LED4
LED5
LED6 N0D0 D0 N0D1 D1 N0D2 D2 N0D3 D3
N0D4 D4 N0D5 D5 N0D6 D6 N0D7 D7 N0ALE ALE N0CSUSB CSUSB

(完整版)十天学会单片机C语言_郭天祥---课后习题答案

(完整版)十天学会单片机C语言_郭天祥---课后习题答案

(完整版)十天学会单片机C语言_郭天祥---课后习题答案

郭天祥十天学通单片机TX-1C单片机实验板

所有课作业+答案,特别整理,供单片机爱好与学习者使用

讲次内容细节

第一讲学单片机预备知识、

如何点亮一个发光管单片机能做什么,基本电子知识,如何用TX-1C单片机学习板学习单片机,C51知识简介,如何申请免费芯片样品。点亮一个发光管,

第二讲流水灯设计、蜂鸣器发声、继电器控制简单延时程序、子程序调用、带参数子程序设计、流水灯同时蜂鸣器响、如何驱动蜂鸣器,及如何驱动继电器,集电极开路的概念及应用。

第三讲数码管显示的原理、数码管的静态显示共阳、共阴数码管显示原理、定时器工作方式介绍、重点讲述工作方式2、中断概念及中断函数写法、外部中断试验、定时器中断应用

第四讲数码管的动态显示原理及应用实现动态扫描概念、定时器、中断加深

用单片机的定时器及中断设计一个60秒定时器

第五讲独立键盘、矩阵键盘

的检测原理及实现键盘用来做什么、如何键盘检测、消抖、键盘编码、带返回值函数写法及应用

第六讲AD、DA的工作原理

及实现、运放电路模拟电压与数字电压的关系、为什么要使用AD 及DA、ADC0804的操作方法、DAC0832的操作方法

第七讲串口通讯原理及操作流程串口通讯工作方式、10位数据通讯、波特率概念、如何根据波特率计算定时器初值、串口打印在调试程序中的应用。

第八讲1602液晶、12864液晶显示原理及实现最简单液晶工作原理、如何开始对一个没有任何概念的芯片开始单片机的操作第九讲IIC总线AT24C02芯片工作原理IIC总线工作原理、

跟郭天祥学单片机

跟郭天祥学单片机

教学争鸣新课程NEW CURRICULUM

跟郭天祥学单片机

刘玉秀

(山东诸城市潍坊工商职业学院)

单片机技术是电子信息类学生必须掌握的一门技术,也是现

代工科学生就业的一个基本条件,成为理工科院校,同时也是高职院校电子类专业的主要专业课程,它可以充分体现学生利用自己所掌握的知识解决实际工程问题的能力。在单片机教学过程中,学生不仅要掌握单片机的原理和应用,还应具有“开发”能力,由于其教学内容纷繁复杂,与各种学科相互渗透,如何提高教学的效率是单片机教学过程中的一个研究课题。传统的单片机教学,就是教师在上面枯燥地讲解理论、程序,下面的学生听得一头雾水,阻碍了学生的学习的兴趣,学生跟教师缺少交流与讨论。下面介绍单片机的领军人物郭天祥是如何利用他的单片机系统学习单片机的。

郭天祥,老家新疆伊宁,原哈尔滨工程大学学生,后接触单片机,已经成为单片机领域的一个企业家,名下有天祥电子网站,其最大成就之一是开设了十天学会单片机系列课程并录制出来,网

络上广泛流传,他建立了个人网站(天祥电子),公司的网站是,主要是产品宣传与销售。他的单片机研发基地位于哈尔滨工程大学国家大学科技园创业中心4楼,1000多平方米,设备包括多功能贴片机、无铅回流焊机、无铅波峰焊机、BGA返修工作站、流水线组装线等。拥有完整的小型产品生产线,能够完全满足公司产品焊接需求,此外还可对外承接焊接订单。

他的火爆视频教程介绍:单片机外围电路设计及C语言编程视频教程介绍:这是一部学单片机革命性的视频教程,教程全部十二讲,每讲3小时左右,看视频的同时可以用TX-1C单片机实验板一个实验一个的演示,给学员解释每条指令的意思及原理,通过10天的时间让学生完全掌握单片机的C语言编程及单片机外围电路设计的思想。全程的屏幕,声音,用屏幕录像,实验板现象用摄像头拍摄,这部教程算是国内首个如此创新的以教师亲自实践为主,学员现场写程序,直接下载到实验板看现象,讲单片机的视频教程,只要你认真看,认真听,保证10天让你学会单片机应用和C语言编程。

51单片机自学笔记(基础部分)

51单片机自学笔记(基础部分)

一、51单片机的硬件结构

1. 硬件结构框图

说明:○1微处理器(CPU):51单片机含一个8位CPU,与通用的CPU功能基本相同,含运算器和控制器,不仅可以字节处理,还可以位处理。例如:未处理、查表、状态检测、中断处理等。

○2数据存储器(RAM):51为128B,52为256B;片外最大可扩展到64K。

○3程序存储器(ROM/EPROM):8031没有,8051有4K的ROM,8751有4K的EPROM;片外可扩展至64K。

○4中断系统:5个中断源,2级优先权。

○5定时器/计数器:2个16位定时/计数器,四种工作方式。

○6串行口:1个全双工串行口,四种工作方式。可进行串口通信,扩展并行I/O口,多机通信

等。

○7P1、P2、P3、P0口:四个8位并行I/O口。

○8特殊功能寄存器(SFR):共21个,对片内部件进行管理、控制、监视;实际上是一些控制寄存器和状态寄存器,是一个具有特殊功能的RAM区。

2. 引脚排列

(1)电源及时钟引脚

○1电源引脚:Vcc(40脚)解5V电源、Vss(20脚)接地。

○2时钟引脚:两个始终引脚XTAL1、XTAL2外接晶振,或接晶体与片内反相放大器构成振荡器。

XTAL1(19脚):内部反相放大器的输入端。若接晶振则应接地;XTAL2(18脚):内部反相放大器

的输出端。若采用外部时钟振荡器,该引脚接收时钟振荡信号。

(2)控制引脚

○1RST/Vpd(9脚):复位信号输入,高电平有效。单片机运行时,此脚持续2个机器周期(24个时钟振荡周期)的高电平,就可复位。平时应为0.5V低电平;Vpd为第二功能,备用电源

Proteus制作的郭天翔《十天学会51单片机》的学习板

Proteus制作的郭天翔《十天学会51单片机》的学习板

Proteus制作的郭天翔《十天学会51单片机》的学习板

本文链接:/s/blog_574d08530100hqw0.html

此篇文章说明:

1.想免费体验郭天翔TX-1C的51学习板而又不怕麻烦请往下看,怕麻烦的请再去别处找找吧。

2.这篇文章的作用:在没有郭天翔《十天学会51单片机》视频配套的TX-1C开发板的情况下,你也可以在Proteus下体验一下TX-1C的大部分功能。也就是说

用我提供的TX-1.DSN文件(我在Proteus下手动绘制的TX-1C开发板的仿真文件的文件名),你可以在Proteus下边看边动手学完郭天翔《十天学会51单片机

》视频的1-10课,第10-11课我自己也没时间学,大家自学。12课是讲protel99的,13课是讲altium designer 的。

3.个人强烈推荐大家在Proteus下体验完TX-1.DSN后,再去郭天翔的官方网站上买一块实物TX-1C开发板,亲密接触下实物51单片机,对学习单片机会更有

好处的。

4.下面给出Proteus下仿真TX-1C学习板的TX-1.dsn仿真学习板文件下载地址及相关的必装软件

TX-1.dsn仿真学习板CSDN下载地址:/source/1974798

Proteus 7.5 sp3

keil2

Proteus和keil2联调驱动CSDN下载地址:/source/1834258

安装keil和Proteus联调驱动说明

串口调试助手

虚拟串口

5.下面给出学习必备课本教材的PDF下载地址:

郭天翔的《十天学会51单片机》视频教程下载地址:ftp:///

51单片机问题与解答

51单片机问题与解答

本问题与解答仅用于结合郭天祥51单片机学习板理解和应用方便,实际有些说法总结不一定正确或准确。

1、Int取值范围?(一句话16位,65536)

单片机是8位机还是16位机?

STC学习板单片机是8位的,一般单片机是几位的,他的字节也就是几位的,所以STC的字节应该是8位。

而字符一般是占用字节最少的数据类型,所以字符类型是8位,int类型一般是字符类型的2倍-16位,浮点数类型是4倍字符-32位,最长的是双精度的8倍字符,也就是64位。

总之,单片机是N位的,则单片机字符类型也是N位的,整型是2N位,浮点数是4N位。其他围绕着三种类型来展开。

2、数码管显示锁存器的使用?(一句话存完数据再关闭即可)

DULA WELA

打开段选,打开位选,段选选哪个管,位选选单管数据。

应用流程:打开锁存,送入数据,关闭锁存。举例:dula=1;P0=0xff;dula=0;(也可以送入数据后再打开锁存,打开后再关闭P0=0xff; dula=1;dula=0)

备注:

1、段选可以先送入P0=0XFF,这个是先关闭数码管显示,防止有乱码,也可以消影。

2、延时问题,通常0.1秒才可以开始分清数码管的数据。动态显示时,通常是1ms左右延时。再长可能会闪烁。

3、流水灯控制的两种方法?

总线法、位操作法

总线法:直接对P1口整体赋值。比如P1=0x5f;

位操作法:首先对P1口位定义,然后再赋值0或者1。LED1=P1^0;LED1=1;

4、11.0592晶振2种软件延时方法的时间精度问题?(一句话110为1毫秒)

第一种:while(a--);这个a=1,就认为延时了0.01毫秒。

51单片机笔记经典2

51单片机笔记经典2

51单片机笔记经典2

一、填空题

1、A T89S51单片机为8位单片机,共有40个引脚。

2、M CS-51系列单片机的典型芯片分别为8031、8051、8751 。

3、A T89S51访问片外存储器时,利用ALE信号锁存来自P0 口发出的低8 位地址信号。

4、A T89S51的P3 口为双功能口。

5、A T89S51内部提供2个可编程的16位定时/计数器,定时器有4种工作方式。

6、AT89S51有2级中断,5个中断源。

7、AT89S51的P2 口为高8 位地址总线口。

8、设计一个以AT89C51单片机为核心的系统,如果不外扩程序存储器,使其内部4KB闪烁程序存储器有效,那么其EA*引脚应该接+5V

9、单片机系统中使用的键盘分为独立式键盘和行列式键盘,其中行列式键盘的按键识别方法有扫描法和线反转法。

10、AT89S51内部数据存储器的地址范围是00H~7FH,位地址空间的字节地址范围是 20H~2FH ,对应的位地址范围是 00H~7FH ,外部数据存储器的最大可扩展容量是 64K 。

11、如果(A)=34H,(R7)=0ABH,执行XCH A, R7;结果(A)= 0ABH,(R7)=34H 。

12、在R7初值为00H的情况下,DJNZ R7, rel指令将循环执行256次。

13、欲使P1 口的低4位输出0,高4位不变,应执行一条ANL P1, #0F0H命令。

14、假设CPU使用的是存放器第1组,R0~R7的地址范围是08H-0FH。15、单片机进行串行通信时,晶振频率最好选择11.0592MHz 16、当MCS-51执行MOVX A,@R1指令时,伴随着RD*控制信号有效。17、假设A中的内容为67H,那么,P标志位为1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1)二极管

导通电流I:3mA-10mA;导通压降v:1.7V。

(排阻计算公式:R = VCC(5V)-v(1.7V)/I(3mA) )。

2)电源指示灯

开关电源:内部有开关控制电流大小,不稳定。

去耦电容:稳压,去波。

3)锁存器(74HC573)

OE:OutEnable,低电平有效(必须为低电平)。

输入端:OE(1),LE(11锁存端diola),D(D0(2)-D7(9),一般接P1^0-P1^7)。

输出端:Q(1Q-8Q)。

Z:高阻状态,非高非低电瓶。

LE:为高时,Q端与D同变换;为低电平时,Q端保持上次状态。

sbit LED00 = 0x80; //位指针;指针大小占一个字节;指针控制一个位的值;

sfr LED0 = 0x80; //字节指针;指针大小占一个字节;指针控制一个字节的值;4)51库函数

头文件:#include

函数:unsigned char _crol_(unsigned char c,

unsigned char b);

描述:The _crol_ routine rotates the bit pattern for the character c left b bits. This routine is implemented as an intrinsic function. The _crol_ routine returns the

rotated value of c.

5) 蜂鸣器

名称:b:基极;C:集电极;e:发射集;

原理:e极发射电子;当b极接低电平时,

ce导通,并且放大电流;当b接高电平时,

ce截止。JPFMQ接P3.6管脚。

分类:有源蜂鸣器;无缘蜂鸣器。(源:

震荡源)

Proteus:buzzer-有源;sounder、speaker-

无源。

端口电压:0.02v。

6) 数码管

P0管脚:没有上拉电阻,所有有三态。P1、P2、P3管脚:有上拉电阻,没有三态。

分类:共阴极;共阳极。

显示方法:静态,动态。

段选:P0.0-P0.7。

位选:P2.0-P2.7。

7)继电器

接口:P3.7。

D4:引流二极管,防止断电烧坏电炉原件。

8)独立键盘

K1-K4:P3.2-P3.5。

K5-K8:P1.4-P1.7。

独立键盘检测程序:

#include

void main()

{

while(1)

{

if(K1 ==0)

{

delay(20);//大约延时10-20ms

if(K1 ==0)

{

//确独立按键K1按下

}

}

while(!K1);//确认为一次动作

}

}

9)4*4矩阵键盘

行线:P1.0-P1.3。

竖线:P1.4-P1.7。

优点:占用端口少,硬件电

路简单。

缺点:编程较复杂。

矩阵键盘的检测方法:扫描

法和线反转法。

程序实例:

1)扫描法

#include

#define uchar unsigned char

#define uint unsigned int

uchar i,j,temp_num,num =16;

uchar code scan[]={0xfe,0xfd,0xfb,0xf7};//1111 1110 - 1111 0111

uchar code coding[][4]={//扫描码

0xee,0xde,0xbe,0x7e,

0xed,0xdd,0xbd,0x7d,

0xeb,0xdb,0xbb,0x7b,

0xe7,0xd7,0xb7,0x77};

uchar code num_code[]={

0xc0,0xf9,0xa4,0xb0,//数码管0-16编码

0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,

0xc6,0xa1,0x86,0x8e,

0xfe};

void delay(uint k)//延迟函数

{

uint data i,j;

for(i=0;i

{for(j=0;j<180;j++)

{;}}

}

void main()

{

P1 =0xff;

while(1)

{

P1 =0xf0;

if(0xf0!= P1)//第一次检测

{

// delay(20); //消抖

// P1 = 0xf0; //第二次检测

// if(0xf0 != P1)//实践证明不必消抖也是可以的

// {

temp_num = num;

for(i=0;i<4;i++)

{

P1 = scan[i];

for(j=0;j<4;j++)

{

if(coding[i][j]== P1)

{

num =4*i + j;

break;

}

相关文档
最新文档