80c51单片机
整合了51学习过程中遇到的一些基础的项目,以及一些中级扩展项目
老尚嵌入式
这个作者很懒,什么都没留下…
展开
-
模拟高速路灯
利用按键代替雾气可见度led闪烁速度代表雾灯闪烁速度#include "reg52.h" //定义一些寄存器的头文件typedef unsigned int u16; //重定义无符号整型变量为u16;即用u16代替无符号整形typedef unsigned char u8; //重定义无符号字符型变量为u8;即用u8代替无符号字符型sbit redled=P2^0; //定义红色led管脚sbit yellowled=P2^1;原创 2021-03-28 12:53:45 · 110 阅读 · 0 评论 -
简易记分器
数码管前4位用来计两个队的分数,后四位用来倒计时#include"reg52.h"typedef unsigned int u16;typedef unsigned char u8;#define time P0sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f原创 2020-12-26 20:26:36 · 242 阅读 · 0 评论 -
出租车打表
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit k1=P3^1;sbit k2=P3^2;sbit redled=P2^1;sbit greenled=P2^5;u8 code smgduan[17]={0x3f,0x0原创 2020-12-26 20:24:20 · 185 阅读 · 0 评论 -
51示波器输出方波
首先应该先初始化,打开定时器并确定其工作方式void init(){TMOD = 0x01; //确定定时器的工作方式TH0 = 0xff; //给累加器赋初值TL0 = 0xf7; //给累加器赋初值ET0 = 1; //允许定时器0中断TR0 = 1; //打开定时器中断EA = 1; //打开总中断}接下来就是确定,当发生中断的时候需要做什么,这里我用的是每溢出一次,让P0口的状态改变一次,从而输出方波void timer0() in原创 2020-12-24 20:25:40 · 4232 阅读 · 1 评论 -
51基本流水灯
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器#include<intrins.h> //因为要用到左右移函数,所以加入这个头文件typedef unsigned int u16; //对数据类型进行声明定义(重定义)typedef unsigned char u8;#define led P2 //将P2口定义为led 后面就可以使用led代替P2口/*************************************原创 2020-12-24 18:59:59 · 181 阅读 · 1 评论 -
DS18B20 1602
main.c/******************************************************************************** 此代码仅供参考,只提供学习作用,禁止在未经过作者授权下用做其他途径如有需要请联系作者qq256379446*******************************************************************************/#include "reg52.h" //此文件中定原创 2020-12-17 13:52:44 · 148 阅读 · 0 评论 -
DS18B20 1602 51单片机
51单片机实现DS18B20采集温度,并且用1602显示出来这里仅提供主函数部分,如果需要源代码和仿真图,请联系作者qq256379446#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器#include "temp.h"#include "lcd.h" typedef unsigned int u16; //对数据类型进行声明定义typedef unsigned char u8;sbit k1=P3^1;sbit k2=P3^0;sbit原创 2020-12-17 13:49:20 · 227 阅读 · 0 评论 -
基于51单片机的计算器
利用12864的成像,实现一些计算机的功能加减乘除,多位数计算,求余,阶乘,次方如果需要字模软件请自提链接:https://pan.baidu.com/s/1Lg184q04U9RQiGUHzJnl_w提取码:qwer12864头文件#ifndef _LCD12864_H#define _LCD12864_H#include <reg52.h>#include <intrins.h>#define uint8 unsigned char#define uint1原创 2020-11-28 16:43:59 · 1053 阅读 · 0 评论 -
51交通灯系统
基于51单片机实现基本交通灯系统通过外部中断0、1实现对交通灯状态的紧急控制倒计时用1602显示分别为SNTimeEWTimeWaitlcd头文件#ifndef __LCD_H_#define __LCD_H_/**********************************包含头文件**********************************/#include<reg52.h>#include"intrins.h"//---重定义关键词---//#原创 2020-11-28 16:36:25 · 513 阅读 · 0 评论 -
lcd1602显示接收红外信号
通过遥控改变lcd1602上显示的数值lcd1602头文件#ifndef __LCD_H_#define __LCD_H_/**********************************包含头文件**********************************/#include<reg52.h>#include"intrins.h"//---重定义关键词---//#ifndef uchar#define uchar unsigned char#endif原创 2020-11-28 16:29:46 · 458 阅读 · 0 评论 -
定时器和外部中断同时控制led
定时器控制led50ms秒变化一次中断令led全灭#include <reg52.h>#define uchar unsigned char#define uint unsigned intsbit K1=P3^2;void delay(int i){ while(i--);}void init(){ TMOD = 0x01; TH0 = 0x3c; TL0 = 0xb0; ET0 = 1; TR0 = 1; EX0=1; IT0=原创 2020-11-20 11:14:59 · 1930 阅读 · 0 评论 -
按键控制流水灯的停止和启动
外部中断实现流水灯的启动和停止如需要仿真请联系作者 #include "reg52.h" //定义一些特殊寄存器 #include<intrins.h> //调用led移动库(_CROL_ _CROR_)typedef unsigned int u16; //u16代替unsigned inttypedef unsigned char u8; //u8代替unsigned char#define led P2 //宏定义P2口 sb原创 2020-11-13 18:54:09 · 6012 阅读 · 4 评论 -
超声波测距,1602显示距离
利用HC—SR04实现超声波测距并且通过1602显示距离主函数部分#include "reg52.h" #include "lcd.h"#include "intrins.h"typedef unsigned int u16; typedef unsigned char u8;typedef unsigned long u32;sbit Echo = P2^0;sbit Trig = P2^1;u8 di[]="Distance";u8 code ASCII[13] =原创 2020-11-13 17:58:42 · 1882 阅读 · 0 评论 -
中断0和1同时使用
通过外部中断0控制蜂鸣器,外部中断1控制电机 #include "reg52.h" typedef unsigned int u16; typedef unsigned char u8;sbit led= P2^0;sbit k1=P3^1;sbit k2=P3^0;sbit k3=P3^2;sbit k4=P3^3;sbit beep=P1^5;sbit md=P1^0;u8 n=1; void delay(u16 i) { while(i--); }v原创 2020-11-12 09:40:55 · 1435 阅读 · 0 评论 -
多位数码管动态显示
8位数码管依次显示,后一位显示前一位不变通过while switch 实现数码管多位动态显示如果需要proteus仿真请联系作者#include<reg52.h> //定义一些特殊功能寄存器#include<intrins.h> //需要用到流水函数typedef unsigned int uint;typedef unsigned char uchar;#define LED P0 //P0口宏定义sbit tube2=P2^2; sbit tu原创 2020-11-11 15:46:47 · 2330 阅读 · 0 评论 -
51寻迹小车
集成了红外通信,超声波停车,寻迹,斑马线,迷宫的51单片机智能小车#include"reg51.h"#include "intrins.h"typedef unsigned int u16;typedef unsigned char u8; typedef unsigned long u32; sbit QIN1=P1^0;// P1.0输出pwmsbit QIN2=P1^1;// P1.1输出pwmsbit QIN3=P1^2;// P1.2输出pwmsbit QIN4=P原创 2020-11-11 15:32:38 · 1702 阅读 · 0 评论 -
按键控制流水灯转向
实现按键控制流水灯的启动和转向 #include "reg52.h" //定义一些特殊寄存器 #include<intrins.h> //调用led移动库(_CROL_ _CROR_)typedef unsigned int u16; //u16代替unsigned inttypedef unsigned char u8; //u8代替unsigned char#define led P2 //宏定义P2口 sbit k1=P3^1;原创 2020-11-11 13:42:32 · 5467 阅读 · 0 评论 -
简易交通灯系统
通过51单片机实现简易交通灯系统紧急情况可以按下按键让所有的信号灯全变为红色雨天雾天可以按下按键让所有的信号灯全变为黄色按下复位键即可重新开始工作利用定时器实现信号灯的倒计时,外部中断实现外部控制#define uchar unsigned char#define uint unsigned int#include <reg52.h>/*****定义控制位**********************/sbit EW_LED2=P2^3; //EW_LED2控制位sbit EW原创 2020-11-11 13:18:47 · 537 阅读 · 0 评论 -
按键实现led左右移动
51单片机通过独立按键实现led左右移动#include "reg52.h" //定义一些特殊功能寄存器typedef unsigned int u16;typedef unsigned char u8;sbit k1=P3^1; sbit k2=P3^0; //位定义 u8 n=0;u8 code a[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //1-8 led 点亮数组/******************************原创 2020-11-11 13:07:10 · 2773 阅读 · 0 评论 -
51单片机红外控制步进电机
通过红外遥控实现步进电机的步进电机的速度及正反转#include<reg52.h> //定义一些特殊寄存器typedef unsigned char u8;typedef unsigned int u16;u8 code FFW[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09};//转动数组u8 code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};u16 code smgduan[1原创 2020-11-11 12:54:02 · 3265 阅读 · 4 评论