当前位置:首页 » 编程语言 » 花样c语言

花样c语言

发布时间: 2023-01-25 04:12:07

㈠ 怎样用C语言先输出一段文字,再输出心形图案

学习C语言其实并不是枯燥无味的,也有蛮多好玩的

  1. 代码如下:
    #include <stdio.h>

  2. int main()
    {
    int i,j;

  3. printf(" ****** ****** "
    " ********** ********** "
    " ************* ************* ");

  4. //前三排的规律性不强 所以直接显示就好了

  5. for(i=0;i<3;i++)//显示中间三排
    {
    for(j=0;j<29;j++)
    printf("*");
    printf(" ");
    }

  6. for(i=0;i<7;i++)//显示呈递减趋势规律的中间7排
    {
    for(j=0;j<2*(i+1)-1;j++)
    printf(" ");
    for(j=0;j<27-i*4;j++)
    printf("*");
    printf(" ");
    }

  7. for(i=0;i<14;i++)//最后一个星号*与上面的规律脱节了 所以独立显示
    printf(" ");
    printf("* ");
    return 0;
    }

就是我用C语言写的心形图案,花样心形图案,主要是用for语句写的,有兴趣的朋友可能试下

㈡ 单片机控制8盏灯花样亮法C语言编程怎么写

只要你搞懂原理了就不难,这个最好和定时器同时用。
假设先亮第一种,延时一段时间;关第一种,亮第二种,延时一段时间……依次类推,就能实现花样亮法

㈢ 单片机花样流水灯C语言问题

#include<reg52.h> //包含头文件,一般情况不需要改
void Delay(unsigned int t); //函数声明
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定义一个无符号字符型局部变量 i 取值范围 0~255
Delay(50000);
P1=0xfe; //赋初始值
while (1) //主循环
{
/**********下面是从1~8闪烁两次*****/
for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1
}
P1=0xfe; //重新赋初始值
/*********下面是从1~8闪烁一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部闪烁两次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循环中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}/*-----------------------------------------------
名称:IO口高低电平控制
论坛:www.doflye.net
编写:shifang
日期:2009.5
修改:无
内容:循环左移,始终一个led点亮,并循环执行流水动作,左移符号 << 逻辑或符号 |
------------------------------------------------*/
#include<reg52.h> //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义
void Delay(unsigned int t); //函数声明
/*------------------------------------------------
主函数
------------------------------------------------*/
void main (void)
{
unsigned char i,j,temp; //定义一个无符号字符型局部变量 i 取值范围 0~255
Delay(50000);
P1=0xfe; //赋初始值
while (1) //主循环
{
/**********下面是从1~8闪烁两次*****/
for(i=0;i<8;i++) //加入 for循环,表明for循环大括号中的程序循环执行8次
{
temp=P1;
for(j=0;j<2;j++)
{
Delay(50000);
P1=0xff;
Delay(50000);
P1=temp;
}
P1<<=1;
P1=P1|0x01; //左移后,最右端自动赋值0,所以需要该语句赋值1
}
P1=0xfe; //重新赋初始值
/*********下面是从1~8闪烁一次*********/
for(i=0;i<8;i++)
{
Delay(50000);
P1<<=1;
P1=P1|0x01;
}
/********下面是全部闪烁两次********/
for(i=0;i<2;i++)
{
P1=0x00;
Delay(50000);
P1=0xff;
}
P1=0xfe; //重新初始化P1
//主循环中添加其他需要一直工作的程序
}
}
/*------------------------------------------------
延时函数,含有输入参数 unsigned int t,无返回值
unsigned int 是定义无符号整形变量,其值的范围是
0~65535
------------------------------------------------*/
void Delay(unsigned int t)
{
while(--t);
}

我用的是P1端口,当端口为低电平时点亮LED

㈣ 我想知道这个单片机花样流水灯正确的的C语言程序,你能发给我吗

#include<reg51.h>
#define uchar unsigned char
sbit key=P3^3;
uchar led=0x01;
void delay(uchar a)
{
uchar i,j;
for(i=0;i<a;i++)
for(j=0;j<120;j++);
}
main()
{
while(1)
{
while(key==0)
{
P2=0x55;
delay(100);
P2=0xaa;
delay(100);
}

while(key==1)
{
P2=led;
led=led<<1;
if(led=0x00)led=0x01;
delay(100);
}

}

}

㈤ 设计一个左移到头接着右移,右移到头再左移的花样流水灯程序,C语言

main(){unsignedcharled[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedchara=0;while(1){for(a=0;a<8;a++){Pn(灯的IO)=led[a];}for(a=7;a<=0;a--){Pn(灯的IO)=led[a];}}}

㈥ 能否帮忙做个花样流水灯,液晶能显示歌曲名的C语言程序

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar clock_array1[]=;
uchar clock_array2[]=;
uchar shi,fen,miao,lian,yue,ri,xing;
void init();
sbit rs=P2^2;
sbit rw=P2^1;
sbit en=P2^0;
sbit dscs=P2^7;
sbit dsas=P2^6;
sbit dsrw=P2^5;
sbit dsds=P2^4;

void delay(uint k)
{
uint i,j;
for(i=0;i<k;i++)
for(j=0;j<120;j++);
}
void command (uchar com)
{
rs=0;
rw=0;
P0=com;
delay(5);
en=1;
delay(5);
en=0;
}

void data1(uchar data1)
{
rs=1;
rw=0;
P0=data1;
delay(5);
en=1;
delay(5);
en=0;
}
void write_sfm(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
command(0x80+add);
data1(0x30+shi);
data1(0x30+ge);
}
void write_lyr(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
command(0x80+0x40+add);
data1(0x30+shi);
data1(0x30+ge);
}

void write_xing(uchar add,uchar date)
{
uchar ge;
ge=date%10;
command(0x80+0x40+add);
data1(0x30+ge);
}

void ds_write(uchar add,uchar data2) //写数据
{
dscs=0;
dsas=1;
dsds=1;
dsrw=1;
P1=add;
dsas=0;
dsrw=0;
P1=data2;
dsrw=1;
dsas=1;
dscs=1;
}

uchar ds_read(uchar add) //读数据
{
uchar ds_date;
dsas=1;
dsds=1;
dsrw=1;
dscs=0;
P1=add;
dsas=0;
dsds=0;
P1=0xff;
ds_date=P1;
dsds=1;
dsas=1;
dscs=1;
return ds_date;
}

void init()
{
uchar i;
command(0x01);
command(0x38); //设显示模式
command(0x0c); //开显示
for(i=0;i<14;i++)
{
data1(clock_array1[i]);
delay(10);
}
command(0x80+0x40);
for(i=0;i<14;i++)
{
data1(clock_array2[i]);
delay(10);
}
}

void main()

㈦ C语言C51单片机花样流水灯程序分析注释

和你说一句关键的(别告我你整个程序一句都看不懂):
P1=0xfe;

0xfe是十六进制表示的数,二进制就是1111 1110,通过你的程序和相关注释可以看出,硬件上你有8个led灯连接P1口,且这些led是低电平亮。P1=0xfe(1111 1110)也就是表示七个灯灭,一个灯亮。接下来的代码就是让P1数据0xfe左移且低位补1,移一次就是1111 1101,、两次就是1111 1011,三次是1111 0111。。。以此类推,可以看出它是0由最低位到最高位依次移过去的,而刚说了0表示led亮,这也就是led从一边到另一边依次点亮的效果。
后面的代码按我上面说的自己理解,完全对你解释太麻烦,对你也没多大好处,只有你自己理解了才能学好单片机

㈧ 单片机C语言 两个按键控制8位花样流水灯,P1.0接按键k1,P1.1接按键k2,P0口的8位接8个发光二极管

汇编程序如下:
; 花样流水灯(8个发光二极管以各种形式循环点亮)
; 功能:流水灯(8个发光二极管循环以1S间隔以各种形式循环点亮)
ORG H ;伪指令,指定程序从H开始存放
LJMP MAIN ;跳转指令,程序跳转至MAIN处执行
ORG H ;伪指令,指定程序从H开始存放
MAIN: MO SP, #60H ;给堆栈指针赋初值
MO P1,#0FFH ;给P1口赋值
MO DPTR,#TABLE;查表
LIGHT: MO R4,#42 ;设置循环次数
LOOP: MO A,#42 ;给A赋初值
SUBB A,R4 ;将A的值与R4的值相减,结果存在A中
MOC A,@A+DPTR ;将A+DPTR的值所对应的TABLE中的值赋给A
MO P1,A ;将A的值赋给P1口
LCALL DEL1S ;调用1S延时子程序
DJNZ R4,LOOP ;判断R4是否为0,不为0跳转,为0顺序执行
LJMP LIGHT ;跳转指令,跳转至LIGHT处继续执行
;1S延时子程序(11.MHz晶振,误差0微秒)
DEL1S: MO R5, #H
DL1S0: MO R6, #0A4H
DL1S1: MO R7, #H
DJNZ R7, $
DJNZ R6, DL1S1
DJNZ R5, DL1S0
RET
TABLE: ;定义表格数据
DB 0FFH ;全灭
DB 0FEH 0FDH 0FBH 0F7H 0EFH 0DFH 0BFH 07FH ;依次逐个点亮
DB 0FEH 0FCH 0F8H 0F0H 0E0H 0C0H H H ;依次逐个叠加
DB H 0C0H 0E0H 0F0H 0F8H 0FCH 0FEH 0FFH ;依次逐个递减
DB 07EH 0BDH 0DBH 0E7H 0E7H 0DBH 0BDH 07EH ;两边靠拢后分开
DB 07EH 03CH H H H H 03CH 07EH ;两边叠加后递减
DB H ;全亮
END ;程序结束指令
C语言程序如下:
/* 该实验是花样流水灯(8个发光二极管以各种方式循环点亮),功能是花样流水灯(8个发光二极管以1S间隔以各种方式循环点亮) */
#include//包含reg.52文件
#define uint unsigned int//宏定义
#define uchar unsigned char//宏定义
void delay(uint z);//声明延时函数
uint a;//定义循环用变量
uchar code table[]={
0xff,//全灭
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,//依次逐个点亮
0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,//依次逐个叠加
0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,//依次逐个递减
0x7e,0xbd,0xdb,0xe7,0xe7,0xdb,0xbd,0x7e,//两边靠拢后分开
0x7e,0x3c,0x18,0x00,0x00,0x18,0x3c,0x7e,//两边叠加后递减
0x00,//全亮
;//¶¨ҥѭ»·Ӄʽ¾ݱ�
/*Aµď֏󣺏ȊLj«ð£¬Ȼº󒀴Ζ𸶵ぁ£¬Ȼº󒀴Ζ𸶵�
Ȼº󒀴Ζ𸶵ݼ�»º󁽱߿¿£º󷖿ª£¬Ȼº󁽱ߵ�ݼ𖎱
׮º󈫁a£ѭ»·£¡*/
void in()//inº¯ʽ
{
a=0;//¸񸳳𕛕
while(1)//whileѭ»·
{
P1=table[a];//½«a˹Ԛµ”able֐µĖµ¸³¸􁿚
delay();//1Sѓʱד³̐ɠ a ;//aµĖµ¼Ӓ»
if(a==42)//²⊔aʇ·񵈓Ƥ2
a=0;//¸񸳖µ
}
}
void delay(uint z)//1msѓʱד³̐򣬍¨¹�±䑓ʱʱ¼F{
uint x,y;
for(x=z;x

㈨ 用C语言编写一个花样流水灯的程序及此程序的流程图

设一个标志位flag, 以标志位的5种状态对应发光二极管的5种工作状态,如当flag=1;发光二极管工作在1,当flag=2;发光二极管工作在2,......!然后根据定时器定时功能,5秒到,刷新flag的值,程序如下;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;/*程序功能:定时5S到切换LED显示状态.
;作者:w418781840.2008.5.29 */
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FLAG BIT 30H ;定义标志位
ORG 0
LJMP MAIN
ORG 0BH
LJMP AGA
;;;;;;主程序;;;;;;;;;;;;
ORG 0030H
MAIN: MOV FLAG,#01H ;标志位清0
MOV TMOD,#01H ;赋值50MS
MOV TH0,#3CH
MOV TL0,#0B0H
MOV R0,#100 ;中断100*50=5S
SETB EA
SETB ET0
SETB TR0
SJMP $
;;;;;;;;;中断服务程序;;;;;;;;;;;;;;
AGA: MOV TH0,#3CH
MOV TL0,#0B0H
DJNZ R0,LOOP ;5S到否?否,返回
INC FLAG ;到,标志加1
MOV A,FLAG
CJNE A,#05,L1 ;扫描5种状态了否?
MOV FLAG,#01H ;是,归0,重新开始
;;;;;;;;;切换程序;;;;;;;;;;;;
L1: CJNE A,#01H,L2 ;判断是否是状态1?否,转判断2
LCALL LED1 ;是,调有状态1
SJMP LOOP ;返回
L2: CJNE A,#02H,L3 ; 以下跟上面判断相同
LCALL LED2
SJMP LOOP
L3: CJNE A,#03H,L4
LCALL LED3
SJMP LOOP
L4: CJNE A,#04H,L5
LCALL LED4
SJMP LOOP
L5: CJNE A,#05H,LOOP
LCALL LED5
LOOP: RETI
;;;;;;LED子程序区;;;;;;;;;;
LED1: RET
LED2: RET
LED3: RET
LED4: RET
LED5: RET
/////////////////
///////////////////////////////
/*程序功能:定时5S到切换LED显示状态.
作者:w418781840.2008.5.29 */
//========声明区===========
#include <reg51.h>
unsigned char count=0;
unsigned char flag=1;
void led1(void);
void led2(void);
void led3(void);
void led4(void);
void led5(void);
//=========函数=========
main()
{ TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{ switch(flag)
{ case 1:led1();break;
case 2:led1();break;
case 3:led1();break;
case 4:led1();break;
case 5:led1();break;
}
}

}
//==========中断服务============
void timer0(void) interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
if(++count==100)
{ count=0;
flag++;
if(flag==5)
flag=1;
}

}
//========5种状态函数区=========

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:585
制作脚本网站 发布:2025-10-20 08:17:34 浏览:880
python中的init方法 发布:2025-10-20 08:17:33 浏览:574
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:761
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:676
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1004
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:248
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:108
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:798
python股票数据获取 发布:2025-10-20 07:39:44 浏览:705