今天给各位分享89c51单片机c语言编程的知识,其中也会对单片机c语言编程300例c51进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、如何用c语言编程实现用89c51单片机控制8个led灯像电子时钟那样显示?2、求89C51单片机播放音乐的C语言代码!3、C语言编写单片机89C51初始化程序4、用C语言实现89C51串口通信程序5、怎么用c语言写单片机89C51的程序,要写的程序是,0~99秒的秒表,到99s停止,并且有滴的一声6、急!89c51的C语言编程
如何用c语言编程实现用89c51单片机控制8个led灯像电子时钟那样显示?
假设你单片机的p1口连了led灯:
#include
sbit
led
=
p1^0;//这是点第一位灯
int
main(void)
{
while(1)
{
led
=
0;//假设led灯为共阳极的
}
return
0;
}
点亮led灯的形式有很多,这里给出一种仅供参考
求89C51单片机播放音乐的C语言代码!
#include reg51.h
#include intrins.h
sbitSPK = P2^7;
unsigned char frq;
unsigned int flag;
void delayms(unsigned char ms);
void main()
{
TMOD = 0x01;
frq = 0x00;
TH0 = 0x00;
TL0 = 0xff;
TR0 = 1;
IE = 0x82;
flag=0;
while(1)
{
switch(flag)
{case 0:frq++;break; //flag标志置0时,frq递增
case 1:frq–;break; //flag标志置1时,frq递减
}
if (!(frq^0xff)) flag=1; //当frq增加到FFH时,flag置1,准备frq递减
if (!(frq^0x00)) flag=0; //当frq递减到00H时,flag置0,准备frq递增
delayms(15);
}
}
void timer0() interrupt 1 using 1
{
TH0 = 0xfe;
TL0 = frq;
SPK = ~SPK;
}
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms–)
{
for(i = 0; i 120; i++);
}
}
这是蜂鸣器报警的代码
C语言编写单片机89C51初始化程序
方法类似,补写程序如下:
#include
#define
uint
unsigned
int
#define
uchar
unsigned
char
sbit
led=p0^0;
sbit
led1=p0^1;
void
delay1ms
(uint
z)
{
uint
x,y;
for
(x=z;x0;x–)
for
(y=110;y0;y–);
}
void
exter()
interrupt
2
{
delay1ms(600);
led=0;
delay1ms(200);
led=1;
}
void
exter0()
interrupt
{
delay1ms(600);
led1=1;
delay1ms(200);
led1=0;
}
main()
{
ea=1;
//开总中断
ex1=1;
//开外部中断1
ex0=1;
//开外部中断0
it1=0;
//外部中断边沿触发,下降沿触发
it0=0;
//外部中断0边沿触发,下降沿触发
}
用C语言实现89C51串口通信程序
void Send_Byte(uchar i)
{
WDI = ~WDI;
TI = 0;
SBUF = i;
while(TI==0)
WDI = ~WDI;
TI = 0;
}
void Send_String(uchar *string)
{
while(*string!=0)
{
Send_Byte(*string);
string ++;
}
}
void Com_A_Int() interrupt 4
{
uchar idata status;
status = SBUF;
RI = 0;
if (status == 0x02)
Send_String(“HELLO”)
if (status == 0x55)
Send_String(“THIS IS A WELL BEGIN!”)
}
这是串口中断程序,其他的你可以自己根据实际情况编写
怎么用c语言写单片机89C51的程序,要写的程序是,0~99秒的秒表,到99s停止,并且有滴的一声
可根据以下程序修改:
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
uchar a , b=0;
sbit wei1=P1.0;
sbit wei2=P1.1;
//共阴数码管七段码
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f,0x77};
void Delay1ms(uint i) //1ms延时程序
{
uint j;
for(;i0;i–)
{
for(j=0;j164;j++)
{;}
}
}
void display( uchar a)) //显示程序
{
P0= table[a/10];//十位
wei1=1;
Delay1ms(2) ;
wei1=0;
P0= table[a%10];//个位
wei2=1;
Delay1ms(2) ;
wei2=0;
}
void main(void )//主程序
{
TMOD=0x01;// 定时器1工作方式一
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定时50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{
display(b);
}
}
//中断子程序
//因为 中断程序很短,只花不到1ms,而中断间隔50ms,完全没必要关中断
void Timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==100)//100次是5 秒
{ a=0;b++;}
if(b==100)
{ b=0;}
}
急!89c51的C语言编程
上位机不需要什么程序, 只是在下位机(即单片机)里写好接收程序即可.
操作过程如下:
PC机通过MAX232与51单片机相连,然后在PC机用串口调试助手工具,向单片机发送数据,单片机接收后进行判断是否正确,然后点亮相关LED灯进行提示.
给你一完整程序: 可以直接用
/**********************************************
用串口调试助手工具,发送aa(选十六进制发送),led2亮;
发送其他数据,led2灭
led1亮表示单片机已正常工作
***********************************************/
#include “reg51.h”
sbit led1=P1^0; //改成你电路板上对应的IO引脚
sbit led2=P1^1; //改成你电路板上对应的IO引脚
void UartInit()
{
TMOD|=0x20;
TH1 =0xfd;
TL1 =0xfd;
TR1 =1;
SCON =0x50;
REN=1;
EA=1;
ES=1;
}
unsigned char UartGetByte()
{
unsigned char temp;
ES=0;
while(!RI);
temp=SBUF;
RI=0;
ES=1;
return (temp);
}
void main()
{
unsigned char temp_Rev;
UartInit();
led1=0;
while(1)
{
temp_Rev=UartGetByte();
if(temp_Rev==0xaa)
led2=0;
else
led2=1;
}
}
89c51单片机c语言编程的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于单片机c语言编程300例c51、89c51单片机c语言编程的信息别忘了在本站进行查找喔。