51单片机实例讲解,彩灯键盘显示程序
彩灯键盘显示控制要求:用10个数字键控制选择彩灯的10种变化,并用数码管显示器显示按键号。
10种变化彩灯如下:●花样一:一盏灯从右至左点亮,即从LED1开始向LED8方向流水移动点亮。
●花样二:一盏灯从左至右点亮,即从LED8开始向LED1方向流水移动点亮。
●花样三:要求一盏灯从左至右逐个点亮不灭,即从LED8开始向LED1方向逐个点亮不熄灭,直到全部点亮。
●花样四:让全亮的灯从右至左逐个熄灭,即从LED1开始向LED8方向,彩灯逐个熄灭。
●花样五:两盏灯从右至左点亮,即LED1+LED2→LED3+LED4→LED5+LED6→LED7+LED8。
●花样六:两盏灯从左至右点亮,即LED8+LED7→LED6+LED5→LED4+LED3→LED2+LED1。
●花样七:一盏灯从左至右先按单数流水点亮,后按双数流水点亮,即LED1→LED3→LED5→LED7→LED2→LED4→LED6→LED8。
●花样八:一盏灯从右至左先按双数流水点亮,后按单数流水点亮,即LED8→LED6→LED4→LED2→LED7→LED5→LED3→LED1。
●花样九:8只发光从左至右依次点亮一只,即LED1亮→LED1+LED2亮→LED1+ LED2+LED3亮→LED1+LED2+LED3+LED4亮→LED1+LED2+LED3+LED4+LED5亮→LED1+LED2+LED3+LED4+LED5+LED6亮→LED1+LED2+LED3+LED4+LED5+ LED6+LED7亮→LED1+LED2+LED3+LED4+LED5+LED6+LED7+LED8亮。
●花样十:8只发光二极管从右至左依次点亮一只,即LED8亮→LED8+LED7亮→LED8+LED7+LED6亮→LED8+LED7+LED6+LED5亮→LED8+LED7+LED6+LED5+ LED4亮→LED8+LED7+LED6+LED5+LED4+LED3亮→LED8+LED7+LED6+LED5+ LED4+LED3+LED2亮→LED8+LED7+LED6+LED5+LED4+LED3+LED2+LED1亮。
(1)彩灯键盘显示硬件电路(见图46)。
图46 彩灯键盘显示接线原理图
(2)彩灯键盘显示硬件电路元器件(见表19)。
表19 彩灯键盘显示硬件电路元器件表
(3)彩灯键盘显示程序流程图(见图47)。
图47 彩灯键盘显示程序流程图
(4)彩灯键盘显示程序。
51单片机之LED灯
实验要求
LED灯以一秒的频率闪烁
众所众知,软件编程的第一个小程序就是打印“hello world”,同样硬件的编程也有他的第一个小程序,那就是LED灯的点亮,如果不做一个这样的小实验,学再多理论也是纸上谈兵。下面我们来实现LED灯闪烁的实验。
物料清单
电容
12M晶振
点阵开关
电阻
LED灯
AT89C52单片机(和51效果一样)
原理图
为了更形象的讲解LED灯闪烁的实验,笔者特意画了LED闪烁的原理图,他们的作用如下:
18脚和19脚接的是12M晶振系统,它是系统时序的由来;
9脚所接的是复位系统,当我们按下按键之后,系统会从程序最开始的代码开始运行;
P0.0接了一个电阻和一个LED灯,为什么接这个电阻呢?如果不加电阻,电流过大可能会烧坏LED灯,所以LED灯使用的时候一般都加限流电阻。
复位电路和晶振电路是单片机的固定外围电路,数据手册上已经给出,不需要我们花心思研究。
程序
我们要做的是让单片机控制LED灯以一秒的频率闪烁,这就避免不了写程序,看看现在的硬件产品吧,哪一个硬件产品里面没有集成电路,又有哪一个没有代码的“参与”。所以不要说硬件工程师就只做硬件,写单片机代码也是硬件工程师分内的事。下面把完整代码分享给大家。
#include <reg51.h>
void delay(void)
void main()
{
while(1)
{
P0=0x01;
delay();
P0=0x01;
}
void delay(void)
{
unsigned char a,b,c;
for(c=167;c>0;c--)
for(b=171;b>0;b--)
for(a=16;a>0;a--);
_nop_;
}
}
delay()函数是由单片机小精灵生成的,如果我们自己计算的话太麻烦了。
实验现象
视频加载中...
最后
我们实验的当中只用到了一个LED灯,所以直接用单片机驱动也可以,但是单片机的总的驱动电流就很小,如果LED灯多了的话,51单片机是驱动不了的,这时候就需要外加电源和开关管来驱动LED。
相关问答
...状态等.本文给出了一种基于MCS- 51单片机 的16×16点阵_作业帮[最佳回答]IsbecomesbasedonthemonolithicintegratedcircuitLEDdisplaymonitorbymanyindependentLEDli...
51单片机 如何实现 led 的256级灰度 显示 ?灰度传感器有三条线,VCC,GND,和信号线,他信号线输出的是模拟电压,普通的51只能通过电压比较器LM339来辨别两种不同的颜色,但是如果用增强的51就可以用他自带...
51单片机 用 led 是多大电阻?51单片机控制LED的电阻大小通常取决于两个因素:供电电压和LED的额定工作电流。LED需要适当的电流来工作,过高的电流会损坏LED,过低的电流会导致LED不发光。...
51单片机 按住复位键时 led 亮但是松开就不亮了?1.不亮2.这种情况可能是由于复位键按下时,导致51单片机的复位电平被拉低,从而导致系统重新启动。而当复位键松开时,复位电平恢复正常,但是由于程序中没有对...
51单片机 一个 LED 灯闪烁电路图原理-ZOL问答3条回答:【推荐答案】图上是用R1、C3构成的复位电路,文字说明有点问题。。文字说明中的R2对应图上的R1,文中的C1对应图上的C3,文字说明没什么问题,主要是和图不是...
51单片机 sbitled=P1^0是什么意思?语句里面起什么作用,怎么看...[最佳回答]sbit这个是说明你定义的类型为位.led=P1^0;这里表示定义单片机I/O口P1.0的伪名称叫led这样你要对P1.0控制时直接写led=1;或者=0让灯亮或者...
本人想把 led 灯接到 51单片机 上不知道肿么接,哪位师傅懂的,请...很简单,led正极接1k左右的电阻,负极接单片机任意P端口(8位)找个51的电路图看看将led灯的正极加一个330欧的电阻接正5伏,负极接p口。接接51单片机和LED灯其实...
51单片机 灯从里至外依次点亮?51单片机灯不是从里至外依次点亮而是从左到右依次点亮因为8个LED从左到右循环依次点亮(第①号灯亮、第①②号灯亮……第①②③④⑤⑥⑦⑧号灯亮),间隔1s,直到8...
对于下面的 51单片机LED 闪烁实验C程序,为什么 LED 会一直不停...[最佳回答]因为你的代码后面的“空白”处都是复位命令,所以你的代码执行完了就复位了,就闪啦。。
用C语言控制 51单片机 P2口的8个 LED 小灯,2468亮,1357不亮?P2=0xaa;即可(因为0xaa=10101010),好久没看过了,应该差不多这样P2=0xaa;即可(因为0xaa=10101010),好久没看过了,应该差不多这样