单片机实验:节日彩灯控制器

任务

设计8路节日彩灯控制器,要求在Protues中设计接口电路图,并编程实现节日彩灯闪烁方式的控制:

  1. 通过P1.0到P1.2来控制3个按键。3个按键分别对应3种彩灯闪烁方式。
  2. 彩灯闪烁方式分别为:从上往下的循环、从下往上以及从中间向两边再从两边到中间三种流水方式。

代码

#include<reg52.h>
#include<intrins.h>  //包含循环左、右移位函数的头文件(_crol_, _cror_)
sbit S1=P1^0;
sbit S2=P1^1;
sbit S3=P1^2;
unsigned char keyval;    
void key_scan(void);    //按键扫描,取键值
void forward(void);       //从上到下闪烁
void backward(void);         //从下到上闪烁
void middleward(void);      //从中间到两边,再从两边到中间
void delay10ms(void);   //按键扫描延时,防抖动
void led_delay(void);
void main(void)
{keyval=0;			  //键盘初始化为0while(1){key_scan();		//调用键盘扫描函数switch(keyval){case 1:forward();			 //键值为1,从上到下闪烁break;case 2:backward();			 //键值为2,从下到上闪烁break;case 3:middleward();			  //键值为3,从中间到两边,再从两边到中间break;}}
}
void key_scan(void)
{P1=0xff;if((P1&0x0f)!=0x0f)		//检测到有键按下{delay10ms();if(S1==0)keyval=1;if(S2==0)keyval=2;if(S3==0)keyval=3;}
}
void forward(void)
{P2=0xfe;		    //1led_delay();P2=0xfd;			//2led_delay();P2=0xfb;			//3led_delay();P2=0xf7;			//4led_delay();P2=0xef;			//5led_delay();P2=0xdf;			//6led_delay();P2=0xbf;			//7led_delay();P2=0x7f;			//8led_delay();
}void backward(void)
{P2=0x7f;			//8led_delay();P2=0xbf;			//7led_delay();P2=0xdf;			//6led_delay();P2=0xef;			//5led_delay();P2=0xf7;			//4led_delay();P2=0xfb;			//3led_delay();P2=0xfd;			//2led_delay();P2=0xfe;		    //1led_delay();
}void middleward(void)
{P2=0xe7;led_delay();P2=0xdb;led_delay();P2=0xbd;led_delay();P2=0x7e;led_delay();P2=0xbd;led_delay();P2=0xdb;led_delay();
}
void led_delay(void)
{unsigned char i,j;for(i=0;i<220;i++)for(j=0;j<220;j++);
}void delay10ms(void)
{   unsigned char i,j;for(i=0;i<100;i++)for(j=0;j<100;j++);
}

仿真

键值为1,从上到下闪烁
在这里插入图片描述
键值为2,从下到上闪烁
在这里插入图片描述
键值为3,从中间到两边,再从两边到中间
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/560422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle关联分组查询,oracle中关联查询、分组查询

高级查询1.关联查询作用&#xff1a;可以跨越多表查询--查询出员工的名字和他所在部门的的名字//古老的写法select first_name,name from s_emp,s_dept where s_emp.dept_id s_dept.id;//现在的写法select e.first_name,s.name from s_emp e join s_dept s on e.dept_id s.id…

单片机实验:数据区传送程序

任务 将单片机片内存储器存储区首地址设置为60H、片外存储器存储区首地址设置为4000H&#xff0c;存入片内存储区内容为04H-14H共17个字节 &#xff0c;读取片内首地址为60H单元内容&#xff0c;将该内容传送到片外数据存储器存储区中保存(首地址4000H)&#xff0c;将保存在片…

shapefile导入oracle,shp2sdo.exe用法:shpfile导入OracleSpatial

在使用OracleSpatial时&#xff0c;不免需要将shpfile导入&#xff0c;本人使用shp2sdo.exe和oracle内置工具(sqlplus和sqlldr)来完成&#xff0c;使用熟了还比较方便&#xff0c;主要是手动操作四步,本人是在windows中进行的,导入cities.shp。1. 转换数据格式首先使用shp2sdo.…

信号与系统实验:信号抽样

已知一个连续时间信号f(t)sinc⁡(t)f(t)sinc⁡(t)f(t)sinc⁡(t)&#xff0c;取最高有限带宽频率fm1Hzf_m1Hzfm​1Hz &#xff08;1&#xff09;分别显示原连续信号波形和 fsfm、fs2fm、fs3fmf_sf_m、f_s2f_m、f_s3f_mfs​fm​、fs​2fm​、fs​3fm​三种情况下抽样信号的波形。…

php http 500 内部服务器错误,解决:phpmyadmin http 500 内部服务器发生错误

phpMyAdmin 设置(phpMyAdmin 4.2.9):下载解压缩后,打开phpMyAdmin 目录找到config.sample.inc.php 文件,将改文件名改成config.inc.php修改config.inc.php 文件找到以下代码并将cookie 改成http/* Authentication type */$cfg[Servers][$i][auth_type] cookie;改成$cfg[Server…

php 的html文件怎么打开,什么是html文件?html格式如何打开?(图)

打开html的软件有&#xff1a;1、记事本&#xff1b;2、Adobe Dreamweaver软件&#xff1b;3、sublime text软件&#xff1b;4、notepad软件&#xff1b;5、vscode软件等等。有时我们会遇到html格式的文件需要打开&#xff0c;那么什么是html格式&#xff1f;该怎么打开html格式…

信号与系统实验:用Matlab表示常用连续时间信号

(1)单位阶跃信号u(t)u(t)u(t) function yheaviside(t) y(t>0);单位阶跃信号的MATLAB源程序如下&#xff1a; t-10:0.001:10; yheaviside(t); plot(t,y,r);(2)单位冲激信号δ(t)δ(t)δ(t) 单位冲激信号的MATLAB源程序如下&#xff1a; x-100:0.1:100; ydirac(x); %狄拉克…

信号与系统实验:Matlab求连续时间信号的傅里叶变换

1.用Matlab符号运算求解法求单边指数信号f(t)e−2tu(t)f(t)e^{-2t}u(t)f(t)e−2tu(t)的FT MATLAB源程序为&#xff1a; ftsym(exp(-2*t)*heaviside(t)); fwfourier(ft)运行结果为&#xff1a; fw 1/(2 w*1i)2.用Matlab符号运算求解法求F(jw)11w2F(jw)\frac{1}{1w^2}F(jw)1…

oracle11g基目录和主目录,Red Hat Enterprise Linux4.0 安装oracle11g

在linux环境下安装前的准备1.内存空间大小 最少1GB的物理内存查看现有内存的命令#grep MemTotal /proc/meminfo2.交换分区的大小内存和交换分区的配置关系内存 (MB) 交换分区256~512 内存的2倍513~2048 内存的1.5倍2049…

数据结构实验:一元多项式计算器

一、实验内容及要求 1.任务描述&#xff1a; 实验内容&#xff1a; 设有一元多项式Am(x)和Bn(X)&#xff0c;编程实现多项式Am(x)和Bn(x)的加法、减法和乘法运算。其中多项式描述为&#xff1a; Am(x)A0A1x1A2x2A3x3….Amxm&#xff1b; Bn(x)B0B1x1B2x2B3x3….Bnxn。 输入和…

php保存gbk字符串,php判断字符串gbk/utf8编码和转换

代码就点击进来看吧。前段时间聊天的时候卜卜口提到可以由程序提取歌曲文件的ID3信息&#xff0c;这样就免去那些音乐上传时候用户填写表单的步骤。仔细想想这么利国利民的东西必需试试&#xff01;首先考虑到的就是编码的判断&#xff0c;在网上找到别人写好的代码&#xff0c…

数据结构实验:城市交通咨询模拟系统

一、 实验目的 1&#xff0e;目的&#xff1a;掌握图的存储、构建、搜索等操作和应用&#xff0c;能用最短路径及其搜索等算法编制较综合性的程序&#xff0c;求解最优路线问题&#xff0c;进行程序设计、数据结构和算法设计等方面的综合训练。 2&#xff0e;任务&#xff1a;…

传感器信号处理仿真实验(c语言实现),均值滤波,滑动滤波

文章目录总结test1、动态显示一段正弦波信号的曲线&#xff1a;test2、现提供随机信号函数&#xff0c;随意设定两路不同幅度的随机信号&#xff0c;动态显示出来。test3、用均值法将原始的传感器信号进行滤波处理test4、用滑动滤波法将原始的传感器信号进行滤波处理总结 1.为…

python和php合成,Python照片合成的方法详解

【相关学习推荐&#xff1a;python教程】文章目录前言Github效果实现过程整体代码前言看电影的时候发现一个照片墙的功能&#xff0c;觉得这样生成照片挺好玩的&#xff0c;于是就动手用Python做了一下&#xff0c;觉得用来作照片纪念的效果可能会不错。P:后面了解到我想做的功…

蓝桥杯入门练习1-4(python)

1.Fibonacci数列 Fibonacci数列的递推公式为&#xff1a;FnFn-1Fn-2&#xff0c;其中F1F21。 当n比较大时&#xff0c;Fn也非常大&#xff0c;现在我们想知道&#xff0c;Fn除以10007的余数是多少。 输入格式 输入包含一个整数n。 输出格式 输出一行&#xff0c;包含一个整数…

12514oracle数据库重启,12514(linux登录oracle数据库)

ora-12514的错误的原因有很多。但无外乎这几种&#xff1a;1)、 ORA-12541: TNS&#xff1a; 没有监听器 显而易见&#xff0c;服务器端的监听器没有启动&#xff0c;另外检查客户端IP地址或端口填写是否正.早上同事用PL/SQL连接虚拟机中的Oracle数据库&#xff0c;发现又报了“…

python常用输入输出の方法

获取用户输入&#xff1a; Python split()方法&#xff1a; #Python split()方法&#xff1a; """ 描述 Python split() 通过指定分隔符对字符串进行切片&#xff0c;如果参数 num 有指定值&#xff0c;则分隔 num1 个子字符串 语法 split() 方法语法&#xf…

存储器和寄存器数据传输(ARMv8)

存储器和寄存器交互操作(ARMv8) 1.为什么需要存储器和寄存器交互操作&#xff1f; 编程语言中可能有数组和结构体这样复杂的数据结构。处理器只能保存少量数据到寄存器&#xff0c;但是可以存储器中放数十亿数据&#xff0c;因此数据结构存在存储器中。LEGv8指令只对寄存器操…

linux下载命令 scp,linux命令详解之scp命令

作用scp命令常用于linux之间复制文件和目录。scp是secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。格式从本地复制到远程复制文件scp local_file remote_usernameremote_ip:remote_folder或者scp local_file remote_usernameremote_ip:remote_fil…

python常用类型转换の方法

python实现字符和ascll转换 # 用户输入字符 c input("请输入一个字符: ") # 用户输入ASCII码&#xff0c;并将输入的数字转为整型 a int(input("请输入一个ASCII码: ")) print( c " 的ASCII 码为", ord(c)) print( a , " 对应的字符为&…