c语言点亮十六个小灯亮灭闪烁原理

Python018

c语言点亮十六个小灯亮灭闪烁原理,第1张

用C语言实现点亮16只小灯亮灭闪烁的状态,首先我们定义一个两个字节的变量x,并赋了初始值,每一位表示一只灯的状态,1为亮,0为灭,正好是16只小灯。

单片机16个小灯亮灭闪烁c语言,需要利用到MSP430F247单片机的P1和P4端口控制16个发光二极管D1~D16,发光二极管有8种花样显示,显示速度可调,由P2端口的三个按键控制,分别是模式按键、加速按键、减速按键。模式按键按下一次,花样显示模式变换一次,按下8次后循环到第一种模式,加速和减速按键可以控制LED的闪烁速度。十六进制数也就是十进制数的把这些数转化为二进制数,然后进行按位与运算

单片机的话,如端口上电默认高电平,那直接led一头接电源一头接端口,一个led对应一个端口。

一、简单讲:想要灯亮,就将对应端口置0。反之就是灯灭。

二、详细讲:假设用keil编写,新建工程->选择单片机型号->新建源文件->设置output(点魔术棒图标勾选create hex file)。

我们用P2^0端口连接一个led(led另一端连电源)。先给端口起别名sbit led1=P2^0之后代码中需要灯亮就写led1=0;即可。(头文件自行导入)。

程序写好,编译后将生成的hex(路径在之前的设置中)写入单片机或加载到仿真电路中运行。

可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。 具体实现方法可以参考如下程序: #include #include #define uint unsigned int#define uchar unsigned charvoid delay(uint a)void main(){ P1=0xfewhile(1) { // 向左循环点亮LED for(i=0i<7i++) { P1=_crol_(P1,1)// 左移一位,点亮下一位LED delay(55)} // 向右循环点亮LED for(i=0i/ 右移一位,,点亮上一位LED delay(55)} }}// 延时函数,延时a毫秒void delay(uint a){ uint x,yfor(x=ax>0x--) for(y=110y>0y--)}