单片机c语言简单程序(编写简单的单片机c语言程序 1、指定数组找最大值 2、排序)
本文目录
编写简单的单片机c语言程序 1、指定数组找最大值 2、排序
#include《stdio.h》
#defineNR10//数组元素个数
/*从主函数开始*/
intmain(intargc,char**argv)
{
intar;
inti;
fprintf(stdout,"请输入%d个整数:\n",NR);
/*获取并检查用户输入*/
while(1)
{
/*循环获取NR个数据*/
for(i=0;i《NR;i++)
{
if(fscanf(stdin,"%d",&ar)!=1)
{
fprintf(stdout,"输入错误!请重新输入:\n");
while(getchar()!=’\n’);//丢弃多余非法字符
break;//打破内层for循环
}
}
/*检查是否获取到NR个数据*/
if(i!=NR)
{
continue;
}
else
{
break;
}
}
/*查找最大值和最小值*/
intmax,min;
max=ar;//假定第一个数为最大值
min=ar;//同时假定也第一个数为最大值
/*从第二个数开始比较查找最值*/
for(i=1;i《NR;i++)
{
if(ar》max)//最大值
{
max=ar;
}
if(ar《min)//最小值,不能使用elseif,否则会跳过比较
{
min=ar;
}
}
fprintf(stdout,"最大值为:%d最小值为:%d\n",max,min);
/*接下来:查找第二大值*/
intsecond;
/*先获取前两个数的第一大和第二大值*/
ar):\
(max=ar);
/*从第2个数开始比较查找*/
for(i=2;i《NR;i++)
{
if(ar》max)//查找最大值:目的是为了比较第二大值
{
second=max;//先把最大值保存给第二大值
max=ar;
}
elseif(second《ar)//比最大值小的数再看看是否大于第二大值
{
second=ar;
}
}
fprintf(stdout,"第二大值为:%d\n",second);
return0;
}
扩展资料
一、c语言程序求数组内所有数的和:
1、通过索引的方式就可以访问到数组内部的元素,索引是从0到数组长度-1。
2、数组点Lenth就是数组的长度。
二、c语言程序冒泡排序:
1、比较相邻的两个元素的大小,如果第一个比第二个大就互换一下。
2、然后每一对都做如上操作,如此一来最后一个元素肯定是最大的数了。
3、除了最后一个元素,重复以上步骤。然后倒数第二个就是次大的值了
4、一次按照这个逻辑直到没有任何数字可以比较了。
求问用c语言编写单片机程序
unsigned data char i,x;unsigned xdata char *p;p=0x1000;x=0;for(i=0;i《11;i++)x+=*p;DBYTE=x;unsigned data char x1 _at_ 0x30;unsigned data char x2 _at_ 0x40;unsigned int x;unsigned xdata char *p;x=x1+x2;p=0x2000;*p=x;p++;*p=x》》8;
大神,求51单片机做简易计算器的那个c语言程序
以下是我编的简易计算器程序,基本成功//4*4键盘检测程序,按下键后相应的代码显示在液晶屏上//显示5位后,第6次显示操作符号//再显示下一个数// 键值与功能对应表 //键值 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 //功能 0 1 2 3 4 5 6 7 8 9 + - × ÷ = 清零#include《reg52.h》sbit beep=P2^3;sbit lcden=P3^4;sbit rs=P3^5;sbit rw=P3^6;#define uint unsigned int#define ulint unsigned long int#define uchar unsigned char#define lcddata P0ulint bb,dd,ee,ff;uchar d,flag1;uchar fd1,fd2;uchar b1=16,b2=16,b3=16,b4=16,b5=16;uchar d1=16,d2=16,d3=16,d4=16,d5=16;uchar f1=16,f2=16,f3=16,f4=16,f5=16,f6=16,f7=16,f8=16,f9=16,f10=16;uchar key,keyval,c,temp;void Delay1ms(uint i) //1ms延时程序{uint j;for(;i》0;i--){for(j=0;j《125;j++){;}}}void write_com(uchar com){ lcddata=com;rs=0; rw = 0;lcden=0;Delay1ms(10);lcden=1;Delay1ms(10);lcden=0;}void write_date(uchar date){lcddata=date;rs=1; rw=0;lcden=0;Delay1ms(10);lcden=1;Delay1ms(10);lcden=0;}void init2(){ rw=0;write_com(0x38);Delay1ms(10);write_com(0x0f);Delay1ms(10);write_com(0x06);Delay1ms(10);write_com(0x01);Delay1ms(10);}void display1(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第1个数显示程序 { init2(); write_com(0x80);//第1行,第1字 Delay1ms(10); write_date(0x30+A1);Delay1ms(10);write_date(0x30+A2);Delay1ms(10);write_date(0x30+A3);Delay1ms(10); write_date(0x30+A4);Delay1ms(10); write_date(0x30+A5); Delay1ms(10); }void display2(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5) //第2个数显示程序 { write_com(0x88);//第1行,第1字 Delay1ms(10); write_date(0x30+A1);Delay1ms(10);write_date(0x30+A2);Delay1ms(10);write_date(0x30+A3);Delay1ms(10); write_date(0x30+A4);Delay1ms(10); write_date(0x30+A5); Delay1ms(10); } void display3(uchar a) //操作符号显示程序 { write_com(0x86);//第1行,第1字 Delay1ms(10); switch(a) { case 10: write_date(’+’);Delay1ms(10);case 11:write_date(’-’);Delay1ms(10); case 12:write_date(’x’);Delay1ms(10); case 13: write_date(’/’); Delay1ms(10); } } void display4(uchar A1,uchar A2,uchar A3,uchar A4,uchar A5,uchar A6,uchar A7,uchar A8,uchar A9,uchar A10,uchar A11,uchar A12) //结果显示程序 { write_com(0x80+0x40);//第2行,第1字 Delay1ms(10); if (flag1==0) {write_date(’-’); } else write_date(’+’);Delay1ms(10); write_date(0x30+A1);Delay1ms(10);write_date(0x30+A2);Delay1ms(10);write_date(0x30+A3);Delay1ms(10); write_date(0x30+A4);Delay1ms(10); write_date(0x30+A5); Delay1ms(10); write_date(0x30+A6);Delay1ms(10);write_date(0x30+A7);Delay1ms(10);write_date(0x30+A8);Delay1ms(10); write_date(0x30+A9);Delay1ms(10); write_date(0x30+A10); Delay1ms(10); write_date(’.’);Delay1ms(10); write_date(0x30+A11);Delay1ms(10); write_date(0x30+A12); Delay1ms(10); }uchar keyscan(){ key=16; P3=0xef;//P3.7输出1个低电平 temp=P3; //读取 temp=temp&0x0f;//屏蔽高4位 if(temp!=0x0f) { Delay1ms(10); if(temp!=0x0f) { temp=P3; switch(temp) { case 0xee: key=0; break; case 0xed: key=4; break; case 0xeb: key=8; break; case 0xe7: key=12; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; beep=0; } beep=1; } } P3=0xdf; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { Delay1ms(10); if(temp!=0x0f) { temp=P3; switch(temp) { case 0xde: key=1; break; case 0xdd: key=5; break; case 0xdb: key=9; break; case 0xd7: key=13; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; beep=0; } beep=1; } } P3=0xbf; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { Delay1ms(10); if(temp!=0x0f) { temp=P3; switch(temp) { case 0xbe: key=2; break; case 0xbd: key=6; break; case 0xbb: key=10; break; case 0xb7: key=14; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; beep=0; } beep=1; } } P3=0x7f; temp=P3; temp=temp&0x0f; if(temp!=0x0f) { Delay1ms(10); if(temp!=0x0f) { temp=P3; switch(temp) { case 0x7e: key=3; break; case 0x7d: key=7; break; case 0x7b: key=11; break; case 0x77: key=15; break; } while(temp!=0x0f) { temp=P3; temp=temp&0x0f; beep=0; } beep=1; } }return(key); }void main(){ while(1){ c=1; while(c《6)//输入第1个5 位数{ keyval=keyscan(); if(keyval《10) { switch(c){case 1:b1=keyval; break; case 2:b2=keyval; break;case 3:b3=keyval; break;case 4:b4=keyval; break;case 5:b5=keyval; break; } c++; } display1(b1,b2,b3,b4,b5);} while(c==6) //输入计算符号 { keyval=keyscan(); if((keyval》=10)&&(keyval《14)) //可去一层括号,因逻辑运算优先级较低 { d=keyval; } c=1; display3(d); } while(c《6) //输入第2个5 位数{ keyval=keyscan(); if(keyval《10) { switch(c){case 1:d1=keyval; break; case 2:d2=keyval; break;case 3:d3=keyval; break;case 4:d4=keyval; break;// 除case 5:d5=keyval; break; } c++; } display2(d1,d2,d3,d4,d5);} bb=b1*10000+b2*1000+b3*100+b4*10+b5;dd=d1*10000+d1*1000+d3*100+d4*10+d5; while(keyval!=14) //等待按下"=" { keyval=keyscan(); } Delay1ms(10);switch(d){case 10:ee=bb+dd; break;//+ case 11:flag1=1;if(bb》=dd){ ee=bb-dd; //- flag1=0;} else ee=dd-bb; break; case 12:ee=bb*dd; break;//*可能会溢出case 13:ee=bb/dd; //除法小数部分会丢失,保留2位 ff=bb%dd;fd1=ff*10/dd;fd2=ff*100/dd%10; break; }f10=ee/1000000000%10; f9=ee/100000000%10;f8=ee/10000000%10;f7=ee/1000000%10;f6=ee/100000%10;f5=ee/10000%10;f4=ee/1000%10;f3=ee/100%10; f2=ee/10%10;f1=ee%10;display4(f10,f9,f8,f7,f6,f4,f4,f3,f2,f1,fd1,fd2); while(keyval!=15) { keyval=keyscan(); } b1=0;b2=0;b3=0;b4=0;b5=0; d1=0;d2=0;d3=0;d4=0;d5=0; bb=0;dd=0;ee=0; init2();} }
很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。例程:
#include《reg51.h》 //51单片机头文件#include 《intrins.h》 //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义sbit beep=P2^3;void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms. uint x,y; for(x=z;x》0;x--) for(y=110;y》0;y--); }void main() //主函数{ uchar a,i,j; while(1) //大循环 { a=0xfe; //赋初值 for(j=0;j《3;j++) for(i=0;i《8;i++) //左移三次 { P1=a; //点亮小灯 beep=0; //开启蜂鸣器 delay(50); //延时50毫秒 beep=1; //关闭蜂鸣器 delay(50); //再延时50毫秒 a=_crol_(a,1); //将a变量循环左移一位 } a=0x7f; for(j=0;j《3;j++) for(i=0;i《8;i++) //右移三次 { P1=a; //点亮小灯 beep=0; //开启蜂鸣器 delay(50); //延时50毫秒 beep=1; //关闭蜂鸣器 delay(50); //再延时50毫秒 a=_cror_(a,1); //将a变量循环右移一位 } }}
2、51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
更多文章:
autocad2013安装教程(win10系统autocad2013怎么安装)
2024年6月28日 05:53
安卓版iphoneqq(如何让安卓手机登QQ,让对方看到你是iPhone在线)
2024年5月28日 15:33
adobe cs6安装教程(adobe photoshop cs6怎么安装)
2024年5月28日 18:13
120帧画质助手下载安卓(画质助手120帧安卓和平精英怎么登录)
2024年3月29日 17:35
路由器怎样重新设置wifi密码(路由器怎样重新设置wifi密码)
2024年7月15日 09:18