郭天祥51单片机笔记

合集下载

郭天祥新概念51单片机C语言教程例题Word版

郭天祥新概念51单片机C语言教程例题Word版

目录例2.2.1 编写程序,点亮第一个发光二极管(part2_1.c P27 ) .................. - 4 -例2.5.1利用for语句延时特性,编写第一个发光二极管以间隔1S亮灭闪动的程序(part2_3.c P42) ............................................................................................. - 5 -例2.6.1编写程序使第一个发光二极管以间隔500ms亮灭闪动。

(part2_4.c P48) .................................................................................................................................. - 5 -例2.7.1编写程序使第一个二极管以亮200ms、灭800ms的方式闪动。

(part2_5.c P49) ........................................................................................................................... - 6 -例2.8.3利用C51自带库_crol_(),以间隔500ms,实现流水灯程序(part2_6.c P53) .................................................................................................................................. - 6 -例3.2.1编写程序使第一个数码管显示8(part2.1_.1c P59) ......................... - 7 -例3.2.2让实验板上6个数码管同时点亮,依次显示0到F,时间间隔为0.5ms,循环下去。

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为第二功能,备用电源输入端。

○2:ALE为地址锁存允许,正常工作时,ALE不断输出正脉冲信号。

当访问外部存储器时,ALE输出信号的负跳变沿用作低8位地址的锁存信号;PROG’为编程脉冲输入端。

○3PSEN’(Program Strobe Enable,29脚):程序存储器允许输出控制端。

低电平是外部程序存储器选通。

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所示。

再回来看前面讲的生活事例,与单片机中断结合分析,你的主任务是洗衣服,水开报警这是一个中断请求,这一时刻相当于断点处,你响应中断去关火,然后将开水灌入暖水瓶中,这一动作实际上就是处理中断程序,灌完开水后再回去继续洗衣服,相当于处理完中断程序后再返回主程序继续执行主程序。

这里需要注意的是,水开是随时都有可能的,但是无论什么时候开,只要一开你将立即去处理它,处理完后再回来继续接着洗刚才那件衣服。

单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。

郭天祥pdf

郭天祥pdf

跑飞的情况,因此我们也很难人为制造出使单片机程序跑乱的情况,下面的
程序演示利用看门狗的溢出时间来使程序自动复位运行。
【例】:在 TX-1C 实验板上实现如下描述:程序启动后设定看门狗溢
出时间为 2 秒左右,然后点亮第一个发光二极管,稍延时一会,然后熄灭发
光二极管,使程序进入等待死循环状态,并且在死循环中大约每隔 1 秒喂狗
一次,看程序运行是否正常。
新建文件 part3.4.2.c,程序代码如下:
#include <reg52.h>
//52 系列单片机头文件
#define uchar unsigned char
#define uint unsigned int
sfr WDT_CONTR=0xe1;
sbit led1=P1^0;
上图设置存储器模式为 large 模式 其次,为安全起见,当程序中定义多于 128 字节的其它变量时,最好申明为 xdata 型,如 uchar xdata table[100];意思为定义一个 100 个字节容量的数组,将其在扩展 RAM 中分配存储空间。另外 一定要注意,在 large 模式下,编写程序时,定义的变量总数千万不要超过对应单片机的内部最大
倍速与双倍速的设置在下载程序软件界面上有设置选择,大家可自行
下载测试程序运行速度。预分频数的值由 PS2、PS1 和 PS0 的组合确
定,如表 4.2.2 所示。晶振频率即为当前系统的时钟频率。
下面我们通过两个例子来进一步讲解使用看门狗和不使用看门狗时程
序运行的区别,由于 STC 单片机的高抗干扰特点,至今我还未曾遇到过程序
ቤተ መጻሕፍቲ ባይዱRAM 字节数,因为即使超过了,编译器也不会提示错误,但是程序必定会出错。

郭天祥51单片机教程

郭天祥51单片机教程
﹡ Intel的:80C31、80C51、87C51,80C32、 80C52、87C52等;
﹡ ATMEL的:89C51、89C52、89C2051等; ﹡ Philips、华邦、Dallas 、STC
Siemens(Infineon)等公司的许多产品 。 补充:关于型号的介绍
80C51的引脚封装
第一讲
▪ 学单片机需要什么基础? ▪ 什么是单片机、单片机能做什么、怎么开始
学习单片机。 ▪ 学单片机需要的一些预备知识 ▪ C51基础知识。 ▪ 了解TX-1C单片机学习板系统结构 ▪ 如何用TX-1C单片机学习板在短时间内掌握
51C语言编程。 ▪ KEIL工程建立详细介绍及KEIL软件使用方法 ▪ 从点亮实验板上的一个发光二极管开始
16
-32768~32767
16
-32768~32767
32
-2147483648~2147483647
16
0~65535
16
0~65535
32
0~4294967295
32
3.4e-38~3.4e38
64
1.7e-308~1.7e308
8
-128~127
8
0~255
C-51的数据类型扩充定义
sfr:特殊功能寄存器声明 sfr16:sfr的16位数据声明 sbit:特殊功能位声明 bit:位变量声明 例:sfr SCON = 0X98;
◆单板机 将CPU芯片、存储器芯片、I/O接口芯片和
简单的I/O设备(小键盘、LED显示器)等装 配在一块印刷电路板上,再配上监控程序(固 化在ROM中),就构成了一台单板微型计算 机(简称单板机)。
单板机
单板机的I/O设备简单,软件资 源少,使用不方便。早期主要用 于微型计算机原理的教学及简单 的测控系统,现在已很少使用。

51单片机第四节数码管

51单片机第四节数码管

51单⽚机第四节数码管本笔记默认学习者已拥有:1.Keil5和stc 烧写⼯具 等各种软件、驱动、环境;2.有⼀个属于⾃⼰的 51单⽚机开发板及相关零件 ;3.认识C 语⾔的语法;本⼈使⽤的51开发板为 郭天祥C51 TX-1C 增强版开发板 ;本笔记根据B 站up 主:江科⼤⾃化协的教学视频 整理得到ヾ(•ω•)4-1 静态数码管显⽰上图为TX-1C 的 数码管及LED 模块 原理图138译码器和74HC245 都是⽤来控制 数码管显⽰ 的;单数码管1.上图为 ⼀位数码管,数码管有两种连接⽅式(对应 右边上下两幅图);2.右上图的原理图,8个LED的阴极都连在⼀个引脚上,称为共阴极连接;3.右下图的原理图,8个LED的阳极都连在⼀个引脚上,称为共阳极连接;TX-1C 开发板的连接⽅式是 共阴极连接;4.左下⾓的 左边图⽚ ,定义了8个LED的名称;5.左下⾓的 右边图⽚ ,定义了引脚的名称,与右图的引脚名称⼀⼀对应假设数码管连接⽅式为 共阳极连接,观察可以发现,数码管中的 LED 的引脚引出,使⽤的是就近原则;假设数码管连接⽅式为 共阴极连接,如果上数码管显⽰ 数字6 ?1.要让数码管显⽰ 数字6,让要 LED-A、C、D、E、F、G亮起;2.共阴极的公共端 要接地(给数据‘0’,或者是低电平);3.阳极(称为位选端)根据LED的亮灭需求给 数据0或1(1亮、0灭) ,称为 段码(阳码) (1011 1110 即为段码);如果 共阳极连接,共阳极端 要接到 VCC (⾼电平),阴极给 数据0或1 (1灭,0亮),称为 段码(阴码),和共阴极正好是相反关系;共阳极连接→共阳极端接VCC 并选中→阴极(位选端)传递(阴码)段码(1亮、0灭)→数码管显⽰共阴极连接→共阴极端接GND 并选中→阳极(位选端)传递(阳码)段码(1灭、0亮)→数码管显⽰四位⼀体数码管开发板上即为 四位⼀体的数码管,且有两个,正好组成了 ⼋位数码管;⽽TX-1C 上 包含的是六位数码管,⽽⾮⼋位;1.四位数码管 也有 两种连接⽅式,即 共阴极连接 和 共阳极连接 ;{Processing math: 100%2.四位数码管,(每位的公共端 单独引出来,位选端全部连在⼀起(所有A段连在⼀起、所有B段连在⼀起……),总共有12个引脚;假设数码管连接⽅式为共阴极连接,如何在第三位显⽰数字1 ?1.给第三位的公共端 赋值 0(低电平),给其他位的公共端 赋值 1(⾼电平);这样等同于 其他位的公共端(负极)接到了正极上,⽆论如何都亮不了;只有第三位能亮;2.这样给 LED-B、C 的位选端 赋值 1,其他 位选端 赋值0共阳极连接即为公共端赋值 1(⾼电平)亮,其他以此类推;3.发现这样⼀个现象,数码管⽆法在同⼀时间显⽰多个数字,其在同⼀时刻下只能有⼀个显⽰,只有⼀个数码管能被点亮,即使有多个被选中的数码管,显⽰的数字也是相同的;这种共⽤引脚的现象,是为了减少控制数码管IO⼝;(四位数码管有32个LED,如果都采⽤共阴极连接的⽅式,也要32+1(公共端)=33个引脚;)(采⽤这种链接,就只需要12个引脚即可控制四位数码管;)如何让数码管多位显⽰不同数字(动态数码管显⽰)?1.利⽤ ⼈眼视觉的暂留 和 数码管显⽰的余辉 的原理先让第⼀位数码管显⽰1,然后很快地让第⼆位数码管显⽰2,再很快地让第三位数码管显⽰3,让它不断地扫描,重复显⽰1、2、3的过程,这样三个数字就“同时”显⽰了;原理分析138译码器1.观察到 原理图右图 与数码管有关的,有138译码器(74LS138)和74HC245两枚芯⽚;TX-1C的原理图为左图,也有两个74HC573芯⽚与数码管有关;芯⽚名称与功耗、电压、说明符号有关,具体内容不做分析;2.如图,数码管连接⽅式为 共阴极连接,这样传输数据,就能让第三位显⽰ 数字1 了;3.⽽上⾯的 LED1 ~ 8,其实接在了138译码器的输出端,138译码器正好可以实现让LED1 ~ 8输出 0或1;LED1 ~ 8 对应了 TX-1C 六位数码管的SEG DS 1 ~ 6;4.138译码器可将LED 1 ~ 8的⼋个端⼝ 转化为 由 3个端⼝ (P22、P23、P24)控制,⽽G1、G2A、G2B端⼝ 被 称为 使能端;使能端相当于⼀种开关,如果电平有效,它就可以⼯作;如果电平⽆效,它就不⼯作;观察原理图发现,使能端是已经接好 VCC 和 GND 的,也就是说,其上电其实就会⼯作TX-1C的74HC573也是同理,但其并未压缩控制端⼝的数量;5.138译码器也叫“38线译码器”,是由3个线到8个线,其中C是⾼位、A是低位,CBA组成的数符合8进制,控制着Y0 ~ Y7 这8个端⼝;6.所以,138译码器的作⽤就是⽤来选中某⼀位数码管的74HC2451.74HC245是⼀种 双向数据缓冲器,VDD、GND都可视为电源,OE为使能(其 接地 就⼯作);2.DIR(direction),是⽅向的意思,它接到了VCC(⾼电平)上,将数据从左边输出到右边,从右边将数据读取回左边;DIR若接到低电平上,会将数据从右边输出到左边,从左边将数据读取回右边;3.单⽚机的⾼电平 驱动能⼒有限,其输出的最⼤电流不能太⼤;其低电平 驱动能⼒强;因此,LED模块才采⽤了低电平点亮的模式;4.如果⽤⾼电平 直接点亮 数码管,电流会很⼩,灯会很暗;所以其加⼀个缓冲器,缓冲器可以提⾼ 其驱动能⼒,如果直接将 数据 输出 给 数码管,数据就会被视为 驱动数据;现在增加了缓冲器,数据 就变成了 控制信号,控制信号 只需要很微弱,缓冲器 就可以接收到,缓冲器再通过⾃⼰接到的电源,输出 数据 到引脚上,这样控制的电流只需要⾮常⼩,就能驱动数码管 以⽐较亮的形式显⽰;2电容 是⽤来 稳定电源的,叫电源滤波;6.图右有 ⼀ 排阻,阻值为100R(即为100Ω),作⽤为 限流电阻 ,防⽌数码管的电流过⼤;TX-1C既没有电容,也没有排阻;原理总结1.⽤ 138译码器 使 数码管 的某⼀位 被选中;2.再给P0⼝⼀个 段码数据;TX-1C虽然⽤P0⼝控制段码输⼊,但也⽤P0⼝控制位选;需要先⽤ P2.6⼝和P2.7⼝控制输⼊数据是段码还是位选;P2.6⼝控制段码的输⼊;P2.7⼝控制位选的输⼊;例,给P2.6 数据1 (⾼电压)、给P2.7 数据 0 (低电压),就可以确定现在给数据是段码;1.由TX-1C的原理图可知,数码管内 LED灯 与 P0端⼝ 的顺序关系:(1)LED的名称定义是通⽤⽆疑的;(2)数码管本⾝的引脚名称不重要,重要的是 LED与哪个 P0 的 引脚 相连;2.由TX-1C的原理图可知, P0.0引脚 控制 数码管的最左位,P0.5引脚控制 数码管的最右位,剩余引脚是没有控制 数码管 位选 的作⽤的,哪个P0 的 引脚 控制 六位数码管的 哪位 很重要;代码实现静态数码管显⽰(让数码管第三位显⽰3).c#include<reg51.h>sbit D=P2^6; //段码⼝sbit W=P2^7; //位选⼝void main(){D=0;W=1;P0=0xFB;//1111 1011W=0;D=1;P0=0x4F;//0100 1111while(1);}下⾯写出了⼀个通⽤函数,可以让数码管在 第⼏个位置 显⽰ 哪个数#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;void NixieTube(uchar wei,uchar duan){ //NixieTube是数码管的英⽂uchar WEI,DUAN; //(Nixie是⼥⽔妖的意思)D=0;W=1;switch(wei){ //位选部分case 1:WEI=0xFE; break;case 2:WEI=0xFD; break;case 3:WEI=0xFB; break;case 4:WEI=0xF7; break;case 5:WEI=0xEF; break;case 6:WEI=0xDF; break;}P0=WEI;W=0;D=1;switch(duan){ //段码部分case 0:DUAN=0x3F; break;case 1:DUAN=0x06; break;case 2:DUAN=0x5B; break;case 3:DUAN=0x4F; break;case 4:DUAN=0x66; break;case 5:DUAN=0x6D; break;case 6:DUAN=0x7D; break;case 7:DUAN=0x07; break;case 8:DUAN=0x7F; break;case 9:DUAN=0x6F; break;case 10:DUAN=0x77; break; //Acase 11:DUAN=0x7F; break; //Bcase 12:DUAN=0x39; break; //Ccase 13:DUAN=0x3F; break; //Dcase 14:DUAN=0x79; break; //Ecase 15:DUAN=0x71; break; //Fcase 16:DUAN=0x80; break; //.}P0=DUAN;}void main(){NixieTube(3,3);while(1);}运⾏结果如下:4-2 动态数码管显⽰1.如果只是单纯让其显⽰完⼀个再显⽰⼀个,代码如下:#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};//将两个switch改进为数组void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:2.这是⼀个数码管的常见问题,称为 数码管的消影 ;位选-->段选-->位选-->段选-->位选-->......在这⼀位的段选(输⼊段码)结束,进⾏下⼀位的位选时,很短的时间内,上⼀位的数据会串到下⼀位数据⾥⾯去;所以我们在段选和位选之间,增加⼀个 P0 清零的操作;动态数码管显⽰(数码管同时显⽰123).c#include<reg51.h>#define uchar unsigned charsbit D=P2^6;sbit W=P2^7;uchar Nixiewei[]={0,0xFE,0xFD,0xFB,0xF7,0xEF,0xDF};uchar Nixiecode[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7F,0x39,0x3F,0x79,0x71,0x80};void Delayms(unsigned int x){unsigned int j;for(;x>0;x--) for(j=110;j>0;j--);}void NixieTube(uchar wei,uchar duan){D=0;W=1;P0=Nixiewei[wei];W=0;D=1;P0=Nixiecode[duan];Delayms(1); //让数码管稳定显⽰,⽴刻清零会让数码管显⽰较暗P0=0; //清零操作}void main(){while(1){NixieTube(1,1);NixieTube(2,2);NixieTube(3,3);}}运⾏结果如下:相关知识1.在运⾏某些代码时,TX-1C的LED点阵模块会乱闪2.将左下⾓ DOT-OE旁的跳线帽 拔下来即可 断开LED点阵模块,3.拔下来的跳线帽不要乱丢,可以 只插⼀个脚放在原处,也可以妥善保管在其他地⽅上图即为拔下来的跳线帽1.此元件为电容;2.104的数量规则与 第⼆节 所讲的电容是相同的,其单位是pF1000pF=1nF, 1000nF=1uF, 1000uF=1000mF, 1000mF=1FF 是⼀个很⼤的单位,正常电容都是uF、nF级别的;超级电容能达到1 ~ 2 F,其⼀般作为备⽤电池;3.TX-1C的原理图上,电容的量都是直接⽤单位标记好的。

郭天祥之十天学会单片机视频配套程序-实用!

郭天祥之十天学会单片机视频配套程序-实用!

Lesson1作业1、用位操作点亮第一个发光管.适用TX-1C单片机实验板晶振为 11.0592M/*********************************************************/#include<reg52.h>// 52单片机头文件sbit led1=P1^0; void main()// 单片机管脚位声明// 主函数{led1=0;// 将单片机P1.0 口清零while(1);// 程序停止在这里,在后面会讲到为什么这样写。

}2 、用总线操作点亮第一个发光管./*********************************************************/#include<reg52.h> // 52 单片机头文件void main(){// 主函数P1=0xfe; while(1);// 将单片机P1 口的 8 个口由高到低分别赋值为11111110 // 程序停止在这里,在后面会讲到为什么这样写。

}3、用位操作点亮最后一个发光管./*********************************************************/ #include<reg52.h>// 52单片机头文件sbit led8=P1^7; void main()// 单片机管脚位声明// 主函数{led8=0;// 将单片机P1.7 口清零while(1);// 程序停止在这里,在后面会讲到为什么这样写。

}4、用总线操作点亮最后一个发光管./*********************************************************/#include<reg52.h> // 52 单片机头文件void main(){// 主函数P1=0x7f; while(1);// 将单片机P1 口的 8 个口由高到低分别赋值为01111111 // 程序停止在这里,在后面会讲到为什么这样写。

单片机大师-郭天祥 亲述自己单片机成长经历【推荐新手必看】

单片机大师-郭天祥 亲述自己单片机成长经历【推荐新手必看】

研究生郭天祥放弃15万年薪回校自主创业“2002年刚入校时,我就给自己设定了一个目标,将来一定要自己去创业。

大二下学期,我突然感觉到:如果想在自己的专业领域进行创业,必须要先学会动手。

所以,我就找到同学商量一起参加学校的电子设计竞赛。

”郭天祥说。

在首次尝试中,他失败了。

当时学校教电路基础课的付永庆教授被两个年轻人的求知热情感动了,将他们吸纳入创新实验室工作。

这之后,实验室便成了郭天祥的另一个家。

“单片机相当于电子产品的大脑,如果这个核心控制器件失灵的话,那么家里的电冰箱、微波炉、电视、空调等电子产品恐怕都要变成废品了。

”得悉这个信息之后,郭天祥将自己的研究方向定在了单片机上。

当时苦于没有硬件实验环境,身边又没有会的人可以请教,郭天祥只好上网查找资料自学。

看见网上有卖单片机学习板的,他省下生活费狠心买了一块300多元的单片机学习板做练习用。

“那时我每天就摆弄单片机,自己一个人摸索非常难懂的汇编语言。

快放暑假时,终于做出来第一个单片机作品——一个电子钟。

”为寻找锻炼的机会,郭天祥每天早上起床后就拿着书去实验室,白天在实验室写程序、调电路,做各种硬件练习,晚上回来补充理论知识,模电、数电、高频一遍遍地重复看,几乎每天都要熬到第二天凌晨两点。

这一年中,郭天祥陆续参加了国家及省级竞赛,也获得了不少奖项。

放弃15万年薪回校创业2007年9月,郭天祥以实习生的身份到一家太阳能公司做硕士课题。

实习期间,他经常与技术人员热烈讨论并交流,在一次次研发思路碰撞中,他们的产品创新思路也在一步步地改进完善。

此时,随着专业知识进一步升华,创业的想法在郭天祥的头脑中也越来越强烈。

直到去年夏天,他毅然决定离开公司回到学校创业。

当他提出回学校的想法时,没想到公司老总极力挽留他。

当时对方答应,如果郭天祥留下,将给予其年薪15万。

“这么高的年薪,在同行业中并不多见。

经过考虑,我最终还是婉拒了他们的盛情。

虽然创业会有风险,但是不能因为有风险就不敢去尝试。

  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 <intrins.h>函数: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 therotated 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 <reg52.h>void main(){while(1){if(K1 ==0){delay(20);//大约延时10-20msif(K1 ==0){//确独立按键K1按下}}while(!K1);//确认为一次动作}}9)4*4矩阵键盘行线:P1.0-P1.3。

竖线:P1.4-P1.7。

优点:占用端口少,硬件电路简单。

缺点:编程较复杂。

矩阵键盘的检测方法:扫描法和线反转法。

程序实例:1)扫描法#include <reg52.h>#define uchar unsigned char#define uint unsigned intuchar i,j,temp_num,num =16;uchar code scan[]={0xfe,0xfd,0xfb,0xf7};//1111 1110 - 1111 0111uchar 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<k;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;}if(num != temp_num)break;}}//}P1 =0xf0;while(0xf0!= P1);//防止多次检测}P0 = num_code[num];P2 =0x7F;}}2)线反转法#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit P37 = P3^7;//继电器接口uchar code coding[]={0xee,0xde,0xbe,0x7e,0xed,0xdd,0xbd,0x7d,0xeb,0xdb,0xbb,0x7b,0xe7,0xd7,0xb7,0x77};uchar code num_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xfe};uchar Key =16;//表示按键编号void delay(uint m){uint k;while(--m){for(k=0;k<180;k++);}}uchar detection()//检测按键{uchar scan1,scan2,key_code,i;P1 =0xf0;scan1 = P1;if(0xf0!= scan1){// delay(30);// scan1 = P1;// if(0xf0 != scan1)// {P1 =0x0f;scan2 = P1;key_code = scan1 | scan2; //组合编码for(i=0;i<16;i++){if(key_code == coding[i]){Key = i;P37 =!P37;return i;}}// }// P1 = 0xf0; 去掉上面的return就可以,两种区别是: // while(0xf0 != P1);1)按下就显示;// 2)按下放开之后才显示.}elseP1 =0xff;return16;}void dispalyI(uchar i)//数码管显示函数{P2 =0x7f;P0 = num_code[i];}void main()P1 =0xff;while(1){detection();dispalyI(Key);}}10)中断、计时、计数1.中断源:1)两个外部中断源:INT0(P3.2),INT1(P3.3)。

(INT: interrupt)2)三个片内定时器:T0(外部计数P3.4),T1(外部计数P3.5),T2。

(Timer)3)一个串口中断请:TI/RI。

2.定时器控制寄存器TCONTF0/TF1(Timer Flag):定时器0/定时器1溢出中断申请标志位,=0未溢出,=1溢出申请中断,进入中断后自动清零。

TR0/TR1(Timer Running):定时器运行启动控制位,=0定时器停止运行,=1定时器启动运行。

IT0/IT1(Interrupt Trigger触发):外部中断请求触发方式选择位,=0外部中断低电平触发,=1外部中断负跳变触发。

IE0/IE1:外部中断申请标志位,=0没有外部中断,=1有外部中断。

3.定时器允许寄存器IE(Interrupt Enabled)EX0/EX1(Enabled eXternal):分别是外部中断INT0/INT1中断允许控制位,=0禁止中断,=1允许中断。

ET0/ET1(Enabled Timer):分别是片内计时器T0/T1中断允许控制位,=0,禁止中断,=1允许中断。

ET2:T2中断允许控制位。

EA:总中断控制位,=0禁止全部中断,=1允许中断。

4.中断优先级控制寄存器IP(Interrupt Priority)PX0/PX1(Priority eXternal):INT0/INT1优先级控制位,=0低优先级,=1高优先级。

PT0/PT1/PT2(Priority Timer):T0/T1/T2中断优先级控制。

PS1(Priority serial port):串口中断优先级控制位。

5.定时器方式寄存器TMOD常用工作方式:(M1,M0) = (0,1):16位定时器。

(M1,M0) = (1,0):8位自动重装定时器。

C/T:计数器/定时器选择位,=0定时,片内计数;=1片外计数(T0,T1)。

GATE门控制位:=0由TRx启动计数器/定时器(TRx=1启动);=1由TRx和INTx 共同启动(TRx=1,INTx=1启动)计数器/定时器。

6.interrupt m修饰符m:0—外部中断INT01—定时/计数中断T02—外部中断INT13—定时/计数中断T14—串口中断5—定时/计数中断T2外部中断过程:1)开启中断总开关EA = 1;//Enabled All2)开启外部中断INT0开关EX0 = 1;3)选择外部中断的中断触发方式IT0 = 1;//0低电平触发,1负跳变触发4)设定优先级PX0 = 1;//0低优先级,1高优先级5)声明外部中断函数void EexternInterrupt()interrupt 0 //0外部中断0{…}定时器/计数器发生过程:1.定时器/计数器选择:定时器和计数器都是片内16位计数内存工作,当作为计数器时,片内16位计数内存是对外部T0/T1引脚的矩形波进行计数;当做为定时器时,片内16位计数内存是对晶振产生的方波进行12分频后所得的方波进行计数;定时和计数是由定时器方式寄存器TMOD的C/T位进行选择的。

2.定时/计数溢出事件方法当片内16位计数内存溢出时则触发溢出事件,溢出事件的发生可以有定时/计数中断产生,也可由软件检测溢出标志位TFx位的值产生。

定时/计数中断程序过程:1)打开总中断开关EA = 1;2)打开计时器中断开关ET0 = 1;3)选择启动方式、计数/定时、计数方式TMOD = 0x01;//TR0启动,定时(片内计数),16计数方式4)计数内存高低位置初值TH0 = 0x01;TL0 = 0x01;5)启动计数/定时器TR0 = 1;6)声明中断函数void TimerInterrupt()interrupt 1{TH0 = 0x01;//重装计数内存TL0 = 0x01;…}定时/计数软件检测程序过程:1)选择启动方式、计数/定时、计数方式TMOD = 0x01;//TR0启动,定时(片内计数),16计数方式2)计数内存高低位置初值TH0 = 0x01;TL0 = 0x01;3)启动计数/定时器TR0 = 1;4)软件检测TFx标志位While(1){if(TF0 == 1){TF0 =0;//必须手动清零TH0 = 0x01;//重装计数内存TL0 = 0x01;…}}。

相关文档
最新文档