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 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 兜兜的c51自学笔记-流水灯 -> 正文阅读

[嵌入式]兜兜的c51自学笔记-流水灯

时值2021暑假,兜某申请留校,开始51单片机学习之路。

正文开始之前,得感谢实验室学长的帮助

正文

c51对现在得我来说,就是一块可以被点亮得板子,从io口到寄存器,实际上我都是一知半解,那么我就从我的角度来讲一讲吧,在代码世界里0和1构成了全部,那么代码时如何干涉现实得呢,答案是电路,电路的开合构成了代码干涉现实的基础。

跑流水灯之前,首先得让灯亮起来,单片机上电之后,led模块由于它所具有的上拉电阻(我也不太能理解这个玩意)所表现得是高电平,而点亮他,只需要给它对应的Io(输入输出端)接上低电平即可也就是赋0(兜某使用的普中板子,led对应io是P2);所以不管是给P2(io总线)整体给0,还是P2下的0-7分线赋值0,都可。

例程1,点亮led模块第一个灯

#include<reg52.h>
 sbit  led=P2^0;
 void  main()
 {
 led=0;
 }

sbit位,简单来讲就是告诉编译器,这个P2的孩子0-7中的某一个,他不听话,你不要给他供电了,然后这个孩子觉得不满,表现出来就是亮了(随口一说)

例程2,点亮所有led灯

#include<reg52.h>
 sbit led1=P2^0;
 sbit led2=P2^1;
 sbit led3=P2^2;
 sbit led4=P2^3;
 sbit led5=P2^4;
 sbit led6=P2^5;
 sbit led7=P2^6;
 sbit led8=P2^7;

 void main()
 {
 led1=led2=led3=led4=led5=led6=led7=led8=0;
 }

笑死了,简单粗暴吧,哈哈哈。

 #include<reg52.h>
 #define uint  unsigned  int
 void  main()
 {	
 while(1)
 P2=0x00;
 
 
 }

也可以这样,这块有意思的i地方就是十六进制的问题了,因为普中板的P2总线下有八个led而前文说过要想让Led处于亮的状态只需要给它0,那么,对总线赋00000000就ok,由于十六进制转二进制0x00就是00000000,所以,给P2这个值即可。

十六进制赋总线数0xaa=10101010,0的位置亮1的位置灭(单片机内部都是以二进制存储的,只要是同一个数值的数就可,所以十六进制转十进制P2=170也能完成同样的效果)

流水灯实现的第二步

你可以通过十六进制自由的选择自己想让那个io口的led亮起之后,自然的就开始考虑,如何让led闪烁起来了,如何闪烁呢,你肯定想到了,给他不断地赋值0和1,它就闪起来了,你想的一点都没错,那么例程一来了

#include<reg52.h>
 
 sbit led=P2^0;
 
 void main()
 {
 while(1){
 led=0;

 led=1;
 
 }}
 

你观察一下,你的肉眼能区分到它的闪烁嘛?

答案是不行

为啥呢,因为闪的太快了,肉眼无法观察到,那么,接下来要做的就是对它进行延时,你给暗下去的那个过程延时,它自然就能观察到明显的明暗现象了。

#include<reg52.h>
 #define  uint  unsigned  int
 sbit led=P2^0;
 void  delay();
 void main()
 {
 while(1){
 led=0;
 delay();
 led=1;
 delay();
 }}
 void  delay()
 {
 uint i,j;
 for(i=500;i>0;i--)
 for(j=110;j>0;j--)
 ;
 }

延时的奥义就是给一个循环,给他进行无意义计算,拖慢进程,所以,那个分号别忘记写哦。

关于延时函数在此不予赘述,嗯,留一个可调用的函数就欧克,

void  delayms(unsigned  int xms){
uint i,j;
for(i=xms;i>0;i--)
for(j=110;J>0;j--)
;
}
//i=xms极为延时约xms毫秒

如何使用延时对它进行流水灯的点亮呢

#include<reg52.h>
 #define  uint  unsigned  int
 #define  uchar  unsigned  char
 sbit led1=P2^0;
 sbit led2=P2^1;
 sbit led3=P2^2;
 sbit led4=P2^3;
 sbit led5=P2^4;
 sbit led6=P2^5;
 sbit led7=P2^6;
 sbit led8=P2^7;
 void  delayms(unsigned  int xms){
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--)
;
}
//i=xms极为延时约xms毫秒

 void main()
 {	  while(1){
 led1=led2=led3=led4=led5=led6=led7=led8=0;
delayms(500);
   led1=led2=led3=led4=led5=led6=led7=led8=1;
	  delayms(500);
	  
	  led1=0;delayms(500);		  led1=1;
	  led2=0;delayms(500);		  led2=1;
	  led3=0;delayms(500);		  led3=1;
	  led4=0;delayms(500);		  led4=1;
	  led5=0;delayms(500);		  led5=1;
	  led6=0;delayms(500);		  led6=1; 
	  led7=0;delayms(500);		  led7=1;
	  led8=0;delayms(500);		  led8=1;
	 
 }
 
  
 }

就像这样,是不是很繁琐,ok,下面说不繁琐的,先上代码

/流水灯  调用左右移函数在inteins.h文件下的_crol_(,)和_cror_(,)具体分辨以最后一位分辨l——left,r——right;
 #include<reg52.h>
 #include<intrins.h>
 #define  uint  unsigned  int
 #define  uchar  unsigned  char
  void  delayms(unsigned  int xms){
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--)
;
}
 uchar led;
void delay();

void main()
{
	led = 0xfe;
	P2 = led;
	while(1)
	{
		
		led  = _cror_(led,1);
		P2 = led;
		delayms(500);

	} 

}

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:46:50  更:2021-07-11 16:48:20 
 
开发: 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年11日历 -2024/11/25 19:22:11-

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