
51单片机的应用
生命随心所欲,但不能随波逐流
骐骥一跃,不能十步;驽马十驾,功在不舍
展开
-
51单片机定时器控制声控
用途:声控后延时10s#include<reg52.h>sbit led1 = P1^0;//REDsbit voice = P2^0;unsigned int i;void delay(unsigned int xms){ unsigned int i,j; for(i=0;i<xms;i++) for(j=0;j<112;j++);}vo...原创 2019-06-20 14:42:08 · 782 阅读 · 0 评论 -
红外NEC协议程序小结(1)
在接收二进制数据信号的过程中,怎样确定接收的逻辑1与逻辑0的时间,在0.56+0.565到0.56+1.69ms这个时间范围之内呢,见如下程序段;逻辑0的高低电平时间为1.125ms,而逻辑1的高低电平时间为2.25ms,此时irtime>=9,意味着时间为9*0.2777=2.499ms,很显然大于2.25ms,所以无法接受信号,但是如果改成6或7,即时间小于2.25ms,又能接收...原创 2019-06-18 10:01:59 · 1070 阅读 · 0 评论 -
单片机的机器周期与时钟周期
1.时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。12MHZ的晶振,表示每秒执行12000000次,时钟的周期=1/12us2.在80c51系列单片机中,机器周期=12 * 时钟周期...原创 2019-06-18 08:51:16 · 1951 阅读 · 0 评论 -
红外接收过程程序详解
先理解以下知识点:1.参看程序前,先参阅博文红外NEC协议,否则程序不好理解2.NEC协议重点查看,代码调制过程,以及逻辑“0”,逻辑“1”的高低电平时间特性3.另外需要注意的是发送的二进制数据段与接收的二进制数据段是反向的,什么意思呢,比如发送数据1001 0001,数据与38KHZ载波发送到接收端时,接收过程是1->0->0->0->1->0->...原创 2019-06-18 08:31:38 · 9430 阅读 · 2 评论 -
红外NEC协议解析
当进行红外信号的发送和接收过程中,需要调制与解调信号,调制用在发送的过程中,解调用在接收的过程中NEC协议是红外遥控协议中的一种,协议构成由引导码,地址码,地址反码,命令码以及命令反码构成NEC功能特点包含:1.地址码与地址反码,以及命令码与命令反码,具有数据校验作用,增强结果的准确性2.脉冲距离调制,调制占空比3.载波频率38KHZ4.逻辑位时间为逻辑0:1.125ms或...原创 2019-06-15 16:03:29 · 19126 阅读 · 0 评论 -
51单片机1602显示屏的应用
#include<reg52.h> #include<intrins.h>sbit RS = P1^0; //定义端口 sbit RW = P1^1;sbit EN = P2^5;#define RS_CLR RS=0 //选择命令#define RS_SET RS=1 //选择数据#define RW...原创 2019-06-13 13:54:37 · 1865 阅读 · 0 评论 -
51单片机编写60秒倒计时程序
#include <reg52.h>#define guan P0#define wei P2 #define uchar unsigned char#define uint unsigned intuint m=0;uchar a1,a0,k=0,j,k,s=60;sbit beep=P2^3;unsigned char code weiyu[]={0x1f...原创 2019-06-12 11:14:29 · 49193 阅读 · 7 评论 -
51单片机利用定时器T0让数码管延时显示数字
#include <reg52.h>#define guan P0#define wei P2 #define uchar unsigned char#define uint unsigned intsbit wei0=P2^4;sbit wei1=P2^5;sbit wei2=P2^6;sbit wei3=P2^7;uint m=0;unsigned ...原创 2019-06-10 14:44:36 · 5545 阅读 · 0 评论 -
51单片机数码管显示
#include <reg52.h>#define duan P0#define uchar unsigned charsbit wei0=P2^4;sbit wei1=P2^5;sbit wei2=P2^6;sbit wei3=P2^7;uchar code sz[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f...原创 2019-06-10 08:34:43 · 911 阅读 · 1 评论 -
51单片机定时时间的计算
单片机根据计时/计数模式的不同,来进行计算 M1 M0 工作模式 说明 0 0 0 13位计时计数器 (8192) 0 1 1 16位计时计数器 (65...原创 2019-06-06 14:31:48 · 12095 阅读 · 2 评论 -
51单片机重新载入计数值
51定时器的方式2就是8位自动重载模式。因定时器实质是计数器,而且是加法计数器,要定时,要先给定时器写一个初始值,然后在这个初始值的基础上开始加法计数。假设是8位定时器,当计数到最大值1111 1111,即FFH后,再加1就会溢出,回0了(定时时间到,可以中断),如果需要继续再计数,就必须再重新写初始值,否则就停了。所以,写程序时,必须每次时间到了都要重写初始值,有点麻烦,还影响定时的...原创 2019-06-06 08:59:59 · 1524 阅读 · 0 评论 -
51单片机寄存器分配表
寄存器一般使用格式 30H~7FH 一般数据或堆栈使用区 20H~28H 针对固定地址的区域 18H~1FH 寄存器组3 10H~17H 寄存器组2 08H~0FH 寄存器组1 ...原创 2019-06-06 08:03:27 · 1710 阅读 · 0 评论 -
51单片机中断详解
51单片机中断级别 中断源 默认中断级别 序号(C语言用) INT0---外部中断0 最高 0 T0---定时器/计数器0中断 第2 1 INT1---外部中断1 第3 2 T1----定时器/计数器1中断 第4 3 TX...原创 2019-06-03 14:37:17 · 4780 阅读 · 0 评论 -
51单片机之定时器控制流水灯实验
#include <intrins.h>#include <reg52.h>sbit led=P1;sbit led1=P1^0;sbit led2=P1^1;unsigned int i=0; //i的定义不能在void main()必须设成全局变量void timer_int0(){ TMOD=0x01; EA=1; ET0=1; TR0=...原创 2019-06-01 15:41:40 · 12436 阅读 · 4 评论 -
51单片机之中断使用
#include <reg52.h>void delay(unsigned int xms){ unsigned int i,j; for(i=xms;i>0;i--) for(j=112;j>0;j--);} void main() { P1=0x0f; //P1指示灯引脚 EX1=1; //外部中断0允许位 EA=1;...原创 2019-05-31 15:34:59 · 4173 阅读 · 2 评论 -
单片机定时器TMOD与TCON
TMOD:定时器/计数器模式控制寄存器TMOD是一个逐位定义的8位寄存器,但只能使用字节寻址,其字节地址为89H。 D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T ...原创 2019-05-30 15:09:03 · 10781 阅读 · 1 评论 -
51单片机中关于中断函数interrupt的使用
#include<reg52.h>void main(){ P1 = 0x0f;// 0000 1111 下面四个灯亮 上面四个灯灭 EX1 = 1;//INT1中断允许 EA = 1;//全局中断打开 IT1 = 1;//触发方式为下降沿触发 while(1);}void jump_low() interrupt 2{ P1 = ~P1; //位反转...原创 2019-05-28 16:57:11 · 45781 阅读 · 0 评论 -
51单片机之通过按键点灯程序
单片机芯片采用ATmel公司89c52芯片。1.流水灯电路图2.四位按键3.C语言代码(简单的按键控制灯的明暗)#include <reg52.h>sbit led1=P1^0;sbit led2=P1^1;sbit led3=P1^2;sbit led4=P1^3;sbit led5=P1^4;sbit led6=P1^5;sbit led7...原创 2019-05-25 14:50:51 · 14515 阅读 · 0 评论