Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >单片机从入门到送走.第一天下

单片机从入门到送走.第一天下

作者头像
云深无际
发布于 2022-02-09 02:39:04
发布于 2022-02-09 02:39:04
22500
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

本来应该搞点电子元件然后装模作样的看看你现象啥的,but,我就懒得弄了,直接调试就行。

调试就是看这些变量有没有按照我们的想法去工作,就是看看寄存器里面的东西。

一开始简单,就看看IO就行。

开了调试以后在上面的外设里面打开

选端口

逻辑分析仪记得大写端口

可以使用了

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "STC89C5xRC.H"

sbit LED_EN = P2^4;
sbit D1 = P0^0;
sbit D2 = P0^1;
// 上面都是定义要操作的IO口,是具体的一个端口
void delay_ms(unsigned int t);

void main()
{
    LED_EN = 0;
    // 置低
    while (1)
    {
        D1=0;
        D2=1;
        delay_ms(500);
        D1=1;
        D2=0;
        delay_ms(500);
    }
}
void delay_ms(unsigned int t)
{
    unsigned int x, y;
    for (x = t; x > 0; x--)
    {
        for (y = 100; y > 0; y--)
        {
        }
    }
}

如果不打断点调试,会在人口处停下。

F11是一步步的走,当到了一个子程序的时候,就进去,然后继续一步步的执行。

叫跟踪

单步呢,和上面的一样,但是跟的没有这么紧。到子函数的时候就当完事了继续下一步运行。

如果你运行到一个子函数里面,比如一个100000的循环,咋办?

运行到退出,全速运行出去。

还有我们感兴趣的蹲点,就运行到这里就行。

看黄色部分

符号列表

SEC是运行一个语句的时间

如果是已经开始调试了,这里灰色的条,点一下就打断点了。

复位后全为1

这是库文件的文档

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Keil_v5\C51\INC

这里是51支持的函数头

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
extern unsigned char _crol_    (unsigned char, unsigned char);

位循环函数,第一个是要处理的字符型变量,后面是循环位数

实例

  1. 常数放片内CODE
  2. 短变量
  3. 使用局部变量
  4. 使用无符号的变量计算

头文件里面自己写的

打勾

sfr使用字节寻址

对寄存器的每一位使用位寻址

关于这个点数码管,其实就是点灯,然后灯做成了不一样的样子,所以还是控制IO的电平。

不过要想点亮灯需要一次点亮若干个管子,所以一组管子的IO状态就是所谓的字形码。

但是一个数码管就占8 个IO,我的天。。。

比如我的就连在了P0口,显示1,就是P0.1,P0.2低电平就行

也就是说:1111 1001 -> F9H,那么2就是A4H

然后就是把这个东西做个表叫段码表。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

#include "STC89C5xRC.H"

sbit seg1=P2^0;
sbit seg2=P2^1;
sbit seg3=P2^2;
sbit seg4=P2^3;
unsigned char code seg[] ={
    0xC0,0xF9,0xA4,0xB0,
    0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,
    0xC6,0xA1,0x86,0x8E
}
// 共阳段码表
void delay_ms(unsigned int t);

void main()
{
    seg1=0; seg2=0; seg3=0; seg4=0;
    delay_ms(1);
    P0=seg[1];
    while(1);
}
void delay_ms(unsigned int t)
{
    unsigned int x, y;
    for (x = t; x > 0; x--)
    {
        for (y = 100; y > 0; y--)
        {
        }
    }
}

上面1,2,3,4是4给数码管

第一个段码给P0,就是1

但是这种东西太土豪了,一个数码管8个IO。这样写,4个数码管全亮了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include "STC89C5xRC.H"
sbit seg1=P2^0;
sbit seg2=P2^1;
sbit seg3=P2^2;
sbit seg4=P2^3;
unsigned char code seg[] ={
    0xC0,0xF9,0xA4,0xB0,
    0x99,0x92,0x82,0xF8,
    0x80,0x90,0x88,0x83,
    0xC6,0xA1,0x86,0x8E
}
unsigned char z;
// 共阳段码表
void delay_ms(unsigned int t);

void main()
{
    while(1)
    {
        seg4=0;
        P0=seg[1];
        delay_ms(300);
        P2=0xFF;
        P0=0xFF;
        delay_ms(1);
        seg3=0;
        P0=seg[2];
        delay_ms(300);
        P2=0xFF;
        P0=0xFF;
        delay_ms(1);
        seg2=0;
        P0=seg[3];
        delay_ms(300);
        P2=0xFF;
        P0=0xFF;
        delay_ms(1);
        seg1=0;
        P0=seg[4];
        delay_ms(300);
        P2=0xFF;
        P0=0xFF;
        delay_ms(1);
    }
}
void delay_ms(unsigned int t)
{
    unsigned int x, y;
    for (x = t; x > 0; x--)
    {
        for (y = 100; y > 0; y--)
        {
        }
    }
}

依次显示1~4

我这一天就瞎写。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
教程 | 数码管还能这么玩,别样流水灯
本节内容的视频讲解,时长18分钟,请在wifi下观看,土豪请随意。 由于视频网站压缩的问题,上传后为标清,高清视频请移步到优酷或文末点击阅读原文观看 http://v.youku.com/v_show
单片机技术宅
2020/03/17
5570
单片机从入门到送走.第一天上
今天这文章写的很水,看官莫喷。最近写NXP的东西感觉力不从心,重新把51撸一次找找感觉。起名字好难。
云深无际
2022/02/09
4340
单片机从入门到送走.第一天上
51单片机数码管动态显示
#include//该程序实现的时1,2,3,4,5,6依次变化 #define uchar unsigned char #define uint unsigned int sbit dula=P2^6; sbit wela=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delayms(uint); void main()
Gorit
2021/12/09
3980
学习单片机第2天
做了以下几个实验,点亮LED、,LED流水灯,蜂鸣器, 静态数码管LED流水灯代码#include"reg52.h"unsigned char led[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};void delay_ms(int n){unsigned int i=0,j=0;for(i=0;i<n;i++)for(j=0;j<123;j++);}void main(){unsigned char i;while(1){for(i=0;i<8;i++){P0=
笃信好学
2022/09/08
2740
单片机入门:数码管秒表
采用8位数码管进行秒表设计。 仿真原理图: 程序设计: /* 数码管秒表设计 */ #include<reg52.h> unsigned char LedBuff[]={ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF }; unsigned char code LedChar[]={ 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e };//共阳 /* unsigned c
电子工程师成长日记
2022/07/21
6430
单片机入门:数码管秒表
单片机入门:按键消抖
按键按下都会发出一声响,虽然有的按键声音很轻微,但这都是金属导体碰撞产生的震动,这种现象称为键盘抖动。如果不对键盘的抖动进行处理,按键会对系统电路或程序产生意外的干扰。
电子工程师成长日记
2022/07/21
9250
单片机入门:按键消抖
基于51单片机的八路抢答器设计开题报告_8路抢答器设计51单片机
随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也越来越重要。本文设计出以STC89C52RC单片机为核心的八路抢答器。
全栈程序员站长
2022/11/01
5330
基于51单片机的八路抢答器设计开题报告_8路抢答器设计51单片机
蓝桥杯单片机必备知识—–(9)超声波测距
超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离(s),即:s=340t/2 。这就是所谓的时间差测距法。 超声波测距的原理是利用超声波在空气中的传播速度为已知,测量声波在发射后遇到障碍物反射回来的时间,根据发射和接收的时间差计算出发射点到障碍物的实际距离。由此可见,超声波测距原理与雷达原理是一样的。 测距的公式表示为:L=C×T 式中L为测量的距离长度;C为超声波在空气中的传播速度;T为测量距离传播的时间差(T为发射到接收时间数值的一半)。 超声波测距主要应用于倒车提醒、建筑工地、工业现场等的距离测量,虽然目前的测距量程上能达到百米,但测量的精度往往只能达到厘米数量级。 由于超声波易于定向发射、方向性好、强度易控制、与被测量物体不需要直接接触的优点,是作为液体高度测量的理想手段。在精密的液位测量中需要达到毫米级的测量精度,但是目前国内的超声波测距专用集成电路都是只有厘米级的测量精度。
全栈程序员站长
2021/04/16
8110
蓝桥杯单片机必备知识—–(9)超声波测距
蓝桥杯单片机NE555编程
蓝桥杯单片机中的NE555模块的编程,其实是很简单。简单来说就是计算一秒钟之内有多少个频率响应。中间所谓的频率响应也就是计算定时器作为计数器时候溢出的个数而已。能够考察的点就是这样子了,也要稍微了解,之后进行编程,就能够熟练掌握了。
全栈程序员站长
2021/11/15
6500
蓝桥杯单片机DS18B02温度测量(小数点显示)
DS18B02芯片可以说是在蓝桥杯中是极为常考的一个芯片模块了,熟练掌握是必须的。 简单说明一下吧:温度读取时候呢?首先读出的是温度的低八位,其次读出的是温度的高八位,组成一个16位的二进制值就是DS18B20测量到的温度值。16位中的高5位代表着温度值的正负,一般环境下就没有必要考虑了,因为我们身边的环境温度都是高于零度的啦。最低的4位呢是小数位,需要显示小数位的时候就需要进行处理,没有这方面的要求时候可以直接忽略了。
全栈程序员站长
2021/12/23
9410
51单片机linux环境LED、数码管、开关、循环、判断演示
示例程序如下,有bug,能运行但效果可提升: #include <8052.h> #define LSA P1_5 #define LSB P1_6 #define LSC P1_7 char SEG[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; void init0(void) { LSA = 1; LSB = 0; LSC = 0; } void init1(void) { LS
zhangrelay
2021/12/02
3700
51单片机linux环境LED、数码管、开关、循环、判断演示
单片机入门:数码管滚动显示
数码管从左到右依次滚动显示0~7,程序通过每次仅循环选通一只数码管! 仿真图如图所示: 程序如下: #include <reg52.h> #include <intrins.h> #define uchar unsigned char #define uint unsigned int uchar code DSY_CODE[]= { 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 }; void DelayMS(uint x) {
电子工程师成长日记
2022/07/21
1.4K1
单片机入门:数码管滚动显示
51单片机开发中数码管显示与应用
综合来说,控制段选是由一串二进制数字控制的,1111 1110,转化为十六进制为0xfe,只有第一个二极管会亮
Gorit
2021/12/09
2860
你有几种方法写流水灯
流水灯,学单片机时,编程第一课的内容,多少小伙伴的单片机之路都是从流水灯开始的。那有没有想过,我们能用几种方式来写流水灯,各有什么优缺点呢?今天小代就来聊聊流水灯的写法。
单片机技术宅
2021/02/22
1.3K0
你有几种方法写流水灯
蓝桥杯单片机必备知识—–(11)EEPROM
由于EPROM操作的不便,后来出的主板上BIOS ROM芯片大部分都采用EEPROM(Electrically Erasable Programmable ROM,电可擦除可编程ROM)。EEPROM的擦除不需要借助于其它设备,它是以电子信号来修改其内容的,而且是以Byte为最小修改单位,不必将资料全部洗掉才能写入,彻底摆脱了EPROM Eraser和编程器的束缚。EEPROM在写入数据时,仍要利用一定的编程电压,此时,只需用厂商提供的专用刷新程序就可以轻而易举地改写内容,所以,它属于双电压芯片。借助于EEPROM芯片的双电压特性,可以使BIOS具有良好的防毒功能,在升级时,把跳线开关打至“on”的位置,即给芯片加上相应的编程电压,就可以方便地升级;平时使用时,则把跳线开关打至“off”的位置,防止CIH类的病毒对BIOS芯片的非法修改。所以,仍有不少主板采用EEPROM作为BIOS芯片并作为自己主板的一大特色。 IIC.H添加
全栈程序员站长
2021/04/16
6620
蓝桥杯单片机必备知识—–(11)EEPROM
别怕!51 单片机从入门到应用,小白也能轻松吃透
这篇教程专为单片机小白打造,从 51 单片机基础讲起,带你搭建开发环境,学习汇编与 C 语言编程。通过 LED 灯闪烁、按键控制、数码管显示等基础实验,以及简易电子钟、温度检测系统等应用案例,结合代码实操,助你快速掌握 51 单片机开发。
羑悻的小杀马特.
2025/03/24
4880
水流量霍尔传感器工作原理_51单片机温度传感器
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/11
1.2K0
水流量霍尔传感器工作原理_51单片机温度传感器
蓝桥杯单片机定时器1的编码以及数码管的动态显示
简单使用蓝桥杯单片机上面的定时器,进行设置一个简单的秒表吧,用于练手,同时熟练操作定时器的操作以及熟练数码管的动态显示,虽然简单,但是也两个知识点都是常考的,也是必须掌握的模块喔。
全栈程序员站长
2021/11/15
4180
基于单片机的遥控器设计
随着科技的不断发展,红外遥控器已经成为我们日常生活中普遍使用的一种电子设备。它能够给我们带来便捷和舒适,减少人工操作的繁琐性。然而,在实际应用中,有时候我们可能需要制作一个自己的红外遥控器,以便于更好地满足个性化需求。这样的需求可能来自于家庭影音设备的控制、智能家居系统的控制,或者其他自动化控制方案等。
DS小龙哥
2023/09/02
4560
基于单片机的遥控器设计
设计分享|单片机8路抢答器
51单片是一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,三个16 位 定时器/计数器,一个6向量2级中断结构,全双工串行口。另外 STC89X51 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35Mhz,6T/12T可选。
电子工程师成长日记
2022/07/27
6380
设计分享|单片机8路抢答器
推荐阅读
相关推荐
教程 | 数码管还能这么玩,别样流水灯
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验