单片机程序集锦
- 格式:ppt
- 大小:518.50 KB
- 文档页数:28


学习单片机
//实例1:用单片机控制第一个灯亮
#include //包含51单片机寄存器定义的头文件
void main(void)
{
P1=0xfe; //P1=1111 1110B,即P1.0输出低电平
}
//实例2:用单片机控制一个灯闪烁:认识单片机的工作频率
#include //包含单片机寄存器的头文件
/
函数功能:延时一段时间
/
void delay(void) //两个void意思分别为无需返回值,没有参数传递
{
unsigned int i; //定义无符号整数,最大取值范围65535
for(i=0;i<20000;i++) //做20000次空循环
; //什么也不做,等待一个机器周期
}
/
函数功能:主函数 (C语言规定必须有也只能有1个主函数)
/
void main(void)
{
while(1) //无限循环
{
P1=0xfe; //P1=1111 1110B, P1.0输出低电平
delay(); //延时一段时间
P1=0xff; //P1=1111 1111B, P1.0输出高电平
delay(); //延时一段时间
}
}
//实例3:将 P1口状态分别送入P0、P2、P3口:认识I/O口的引脚功能
单片机c语言实例程序300篇
单片机C语言
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:main(){inti,j,k;printf("\n");
for(i=1;i<5;i++)/某以下为三重循环某/for(j=1;j<5;j++)for(k=1;k<5;k++){
if(i!=k&&i!=j&&j!=k)/某确保i、j、k三位互不相同某/printf("%d,%d,%d\n",i,j,k);}}
==============================================================【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数? 1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。2.程序源代码:main()
单片机C语言
{
longinti;
intbonu1,bonu2,bonu4,bonu6,bonu10,bonu;canf("%ld",&i);
bonu1=100000某0.1;bonu2=bonu1+100000某0.75;bonu4=bonu2+200000某0.5;bonu6=bonu4+200000某0.3;bonu10=bonu6+400000某0.15;if(i<=100000)bonu=i某0.1;eleif(i<=200000)
51 单片机常见程序
附带注释
三位数分离成 3 个一位数,截取 bai=num/100;// 输出百位数 shi=num%100/10;// 输出十位数
ge=num/10;// 输出个位数
//跑马灯程序。当时间约为 20ms形成动态扫描,
#include
#define uint unsigned int // 无符号整型,占 16 位数,表示围
0~65536
#define uchar unsigned char // 无符号字符型占八位数,表示围 0~255
void delayms(uint);
uchar aa; //
定义变量
void main()
{
aa=0xfe;
while(1)
{
aa=_crol_(aa, 1);P2=aa; // 控制单片机接口 p2, 循环亮
delayms(500);
灯一直亮灭,原因是视觉延迟 // 当 500 换成 5,看起来全亮,实际上 #include
看上去全亮。 void delayms(uint xms) // 子程序,延时,通过数数
uint i, j; for(i=xms;i>0;i--) for(j=110;j>0;j--);
#include // 跑马灯程序。现在时间较长,多以是亮灭的流动, 当时间约为20ms形成动态扫描,看上去全亮。
#include
#define uint unsigned int #define uchar unsigned char void delayms(uint);
uchar aa;
void main()
{
aa=0xfe;
while(1)
{
P2=aa; delayms(500);
灯一直亮灭,原因是视觉延迟// 无符号整型,占 16 位数,表示围 0~65536
// 无符号字符型占八位数,表示围 0~255
// 定义变量
// 控制单片机接口 p2, 循环亮
//==============================================
日历时钟//==============================================
//日历时钟
//按K1,进入设置状态
//按k2,停止闹钟声音
//按k3,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设
置状态//按k4,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字
//LCD第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行
设置)//正常状态,LCD上排最前面显示自定义字符,LCD下排最前面闪动"willar"
//设置状态,LCD上排最前面显示"P",下排最前面在设置闹钟时间时显示"alarm:",其它状态显
示"time"//年代变化2000--2099,星期自动转换
//程序中有自定义字符写入
#include
#include
unsignedcharcodedis_week[]={"SUN,MON,TUE,WED,THU,FRI,SAT"};
unsignedcharcodepara_month[13]={0,0,3,3,6,1,4,6,2,5,0,3,5};//星期月参变数
unsignedchardatadis_buf1[16];//lcd上排显示缓冲区
unsignedchardatadis_buf2[16];//lcd下排显示缓冲区
unsignedchardatayear,month,date,week;//年、月、日、星期
unsignedchardataarmhour,armmin,armsec;//闹钟时、分、秒
unsignedchardatahour,min,sec,sec100;//时、分、秒、百分之一秒
unsignedchardataflag,vkey,skey;//设置状态计数标志、按键先前值、按键当前值