❶ 51单片机测量PWM波的占空比的c语言程序
用定时器产生程序如下:
unsigned
int
a=0
,b=10;
void
main()
{
tmod=0x01;
th0=(65536-50000)/256;
tl0=(65536-50000)%256;
ea=1;
et0=1;
tr0=1;
}
void
pwm()
interrupt
1
{
th0=(65536-50000)/256;
tl0=(65536-50000)%256
;
a++;
p1^1=0;
if(a=20)
{
a=0;
}
if(a=b)
{
p1^1=1;
}
}
调节a
,b的值即可调节占空比,程序框架就是这样,具体自己改吧
❷ 51单片机的c语言程序
请你参考:
#include<reg51.h>
unsignedchari;
voidDelayms(unsignedintx)
{
unsignedchart;
while(x--)
for(t=0;t<120;t++);
}
voidmain()
{
IT1=1;
IE|=0x84;
P2=0xFE;
i=1;
while(1);
}
voidEX1_INT()interrupt2
{
ET0=0;
Delayms(10);
P2=~(1<<i);
i=++i%8;
ET0=1;
}
❸ 51单片机C语言程序
//你原来的b2,b2都是死循环,这是不行的,只有主函数才可以死循环。
//你的主函数结构也有问题。
//为你增加了一个按键检测的函数。
//下列程序通过了实验测试。
//b1输出的周期大约0.9s。
//b2输出的周期大约0.6s。
//K为触动开关,reg为红灯,bice为绿灯,b1、b2 各为一个方波,
//按第一次触动开关时红灯亮、b1输出,
//按第二次绿灯亮、为b2输出,
//按第三次都关闭.
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a;
void b1();
void b2();
sbit t = P1^0;
sbit k = P3^5;
sbit reg = P3^3;
sbit bice = P3^2;
void delay(uchar z)
{
uint x,y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}
bit key()
{
bit kkk;
kkk = k; //读入按键.
if(kkk == 1) return 0;//没有按下.
delay(5); //延时.
if(k == kkk) return 1;//两次相等.
return 0;
}
void main()
{
while(1) {
P3 = 0xff;
while(!key()); //静等按下第一次.
reg = 0;
bice = 1;
while(!key()) b1(); //没有按下第二次就循环等待.
reg = 1;
bice = 0;
while(!key()) b2(); //没有按下第三次就循环等待.
}
}
void b1()
{
P1 = 0xfe; a = 50000; while(a--);
P1 = 0xff; a = 50000; while(a--);
}
void b2()
{
P1 = 0xfe; a = 30000; while(a--);
P1 = 0xff; a = 30000; while(a--);
}
❹ 求MCS-51单片机四路抢答器的c语言程序设计
#include<reg51.h>
#defineuint unsigned int
#defineuchar unsigned char
sbitspeaker = P2^7;
sbit key0 =P1^0;
sbit key1 =P1^1;
sbit key2 =P1^2;
sbit key3 =P1^3;
sbit key4 =P1^4;
sbit key5 =P1^5;
sbit key6 =P1^6;
sbit key7 =P1^7;
ucharled[8]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80};
voiddelay_1ms(uint t)
{
uchar m,n;
for(m=t;m>0;m--)
for(n=330;n>0;n--);
}
bitiskeyinput() //判断是否有按键闭合
{
if((P1 & 0xff) ==0xff ) //屏蔽高4位(列线),只检测低4位(行线)
return 0; //没有键闭合野早谈,返回0
else
return 1; //有键闭合颂碰,返回1
}
ucharkey_identify() //识别键号
{
uchar key;
if( key0==0 )key=0;
if(key1==0 )key=1;
if( key2==0 )key=2;
if( key3==0 )key=3;
if( key4==0 )key=4;
if( key5==0 )key=5;
if( key6==0 )key=6;
if( key7==0 )key=7;
return key; //输出键号
}
voidkeyprocess(uchar keynum)
{
uint i;
P0 = led[keynum];
i=500;
while(i--)
{
speaker = 0;
delay_1ms(10);
speaker = 1;
}
}
void main()
{
uchar keynum;
P0 = 0xFF;
while(1)
{
while (!iskeyinput() ); //如果睁悔没有键,则等待
delay_1ms(10); //去除键抖动
if(iskeyinput() ) //当前有按键,需要识别按键并且等待键盘松开
{
keynum= key_identify(); //识别键号
keyprocess(keynum);
while(1); //等待复位
}
}
}
❺ 求一段51单片机按键C语言程序详解
P1.0、P1.1都控制 LED
试试下面程序:
#include <reg51.h>
sbit led = P1^0;
sbit key = P1^7;
void main()
{
while(1) led = key;
}
P1.1知道用
❻ 用c语言写51单片机
#include<reg51.h>
#defineucharunsignedchar
sbitkey1=P1^0;
sbitkey2=P1^1;
sbitkey3=P1^2;
sbitkey4=P1^3;
sbitled1=P1^4;
sbitled2=P1^5;
main()
{
if(key1==0)
{
while(key1==0);
led1=0;
led2=1;
}
if(key2==0)
{
while(key2==0);
led1=1;
led2=0;
}
if(key3==0)
{
while(key3==0);
led1=0;
led2=0;
}
if(key4==0)
{
while(key4==0);
led1=1;
led2=1;
}
}
❼ 51单片机及其C语言程序开发实例的介绍
作者:戴仙金出版社:清华大学出版社本书首先简单介绍了51系列单片机的基础知识,然后从工程应用的角度出发,详细地介绍了51系列单片机常用的电路模块,主要包括键盘、LcD显示、A,D转换、D/A转换、I。c总线应用、语音、实时时钟、红外、usB、步进电机、数字锁相环、串口通信、DDs等,同时列举了4个典型的实际工程,包括语音存储与回放系统、数控直流恒流源、简易数字逻辑分析仪、智能电动小车等,目的在于使读者能够迅速地掌握51系列单片机的开发与实现。本书深入浅出,力求既能使单片机的初学者迅速入门,又能使中高级开发人员在原来的基础上进一步提高实际项目开发能力。