IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机学习笔记(二) -> 正文阅读

[嵌入式]51单片机学习笔记(二)

一、 从点亮LED开始的第一个程序

上一篇文章中介绍了51单片机相关软件及驱动的下载调试方法,而本次将正式进入实战教学。
在单片机学习中点亮LED相当于C语言中的HELLO WORLD,非常适合新手操作,同时也能对单片机有更好的认识。

1.建立工程

首先打开安装好的KEIL5,选择’Project’选项中的’New uVision Project’开始建立一个新的工程;
请添加图片描述
建议为每一个项目建立一个单独的文件夹,不要把所有项目直接建在同一个文件夹内,养成分类整理的好习惯( ?? ω ?? )?;
请添加图片描述
在选择芯片时要注意,在KEIL中STC89系的都变成了AT89xx的形式,直接搜索STC89C52是找不到的;
请添加图片描述
点击’OK’后会再出现一个对话框,会将一个启动文件加入工程,目前没有用处,可忽略。

2.添加文件

建立完工程后,我们就可以在这个工程中添加C文件了,右键点击工程文件夹,选择‘Add New Item to Group ···’
请添加图片描述
可以选择C语言、C++或者汇编语言(ASM),这里我选择C语言;
请添加图片描述
完成O(∩_∩)O。
请添加图片描述

3.调节字体

由于KEIL默认的字体较小,我们可能需要更改字体设定,可以直接点击工具栏中的红框中的按钮进行设置。
请添加图片描述

4.了解LED工作原理

在开始编写程序之前,我们需要先了解一下LED的工作原理:
LED的中文名称是发光二极管,在生活中有着广泛的应用,尤其在大屏幕中使用 最为频繁;

请添加图片描述
LED有两个引脚,分别是正极和负极,在实物图中,一般遵照长正短负的原则进行判断;
请添加图片描述
在电路图中,LED一般用带横线的箭头来表示,箭头上端为正极,下端为负极。
要想使LED发光,就必须在其两端加上电压,并且电流方向必须是从正极到负极
请添加图片描述
通过查阅单片机的原理图,我们可以知道,单片机的8个LED的正极都与供电电源VCC相连。也就是说,要想使某个LED发光,只要让对应的接口为低电平“0”就行了。
请添加图片描述
一般来说,我们写的程序是通过CPU对寄存器的读写来改变引脚的值,从而改变相对应的外设的状态。由此可知,只要改变P2 的值,就能控制相应的LED的亮灭。

5.编写程序

二进制十六进制二进制十六进制
0000010008
0001110019
001021010A
001131011B
010041100C
010151101D
011061110E
011171111F
#include <REGX52.H>

void main()
{
	while(1)
	{
		P2 = 0xFE;//即1111 1110,P20引脚为0,D1亮
	}
}
	

6.下载程序

经过“编译”和“组建”无误后,就可以进行程序的下载了,点击图中的按钮进入配置界面,
请添加图片描述
选择’Output’选项卡,勾选’Create HEX File’,点击‘OK’,再次进行组建,若下方对话框中出现‘creating hex file from “.\Objects\project”…’则表示HEX文件创建成功。
请添加图片描述
打开STC-ISP软件,选择好对应的芯片型号和串口,打开程序文件,选择刚刚创建的HEX文件,完成后点击下载。
请添加图片描述
下载时,若出现一直在检测单片机的提示时,应选择冷启动的方式,即先点击下载按钮,然后在打开单片机电源(全程都要保持单片机与计算机连接)。
请添加图片描述

二、改进程序

尝试编写流水灯程序:

#include <REGX52.H>

void Delay1ms(unsigned int xms)		//12.000MHz时钟频率时延时x毫秒
{
	while(xms)
	{
		unsigned char i, j;

		i = 2;
		j = 239;
		do
		{
			while (--j);
		} while (--i);
		xms--;
	}
}

void main()
{
	unsigned int time = 100;//延迟时间,可改变流水灯的速度
	while(1)
	{
		P2 = 0xFE;//1111 1110,依次打开各个LED
		Delay1ms(time);//延时timex1ms
		P2 = 0xFD;//1111 1101
		Delay1ms(time);
		P2 = 0xFB;//1111 1011
		Delay1ms(time);
		P2 = 0xF7;//1111 0111
		Delay1ms(time);
		P2 = 0xEF;//1110 1111
		Delay1ms(time);
		P2 = 0xDF;//1101 1111
		Delay1ms(time);
		P2 = 0xBF;//1011 1111
		Delay1ms(time);
		P2 = 0x7F;//0111 1111
		Delay1ms(time);
	}
}

TIP:
STC-ISP软件中有可以准确生成延时函数的功能,可以直接复制过来使用
请添加图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:34:55  更:2021-08-10 13:38:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 14:11:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码