51单片机中文编程,51单片机编程

1,51单片机编程先编写个定时程序,再用时间去控制灯在什么时间亮(白天或晚上)或是用光敏电阻作控制(白天不亮晚上亮 。但是晚上灯光直射至光敏电阻处也会不亮) 。你编一条时钟程序,再判断如果是18点到第二天早上06点LED就亮 , 06点到15点不亮就OK了嘛 。即06到晚上18点不就是白天嘛 。
2,51单片机编程给你个大概的思路吧1.用两个数想减判断CF的值就ok啦2.采用单片机的内部定时器的中断用法来解决问题 。根据问题要求,单片机F=6MHz,因此一个机器周期为2us,因此1000ms=1000*500*一个机器周期=500000机器周期 。定时器的工作模式1中总共一次中断最大记时为65536机器周期,确定计时初值为65536-50000=15536.然后在中断服务程序中设置另外的总的计数为10 , 若达到10则完成延时,达不到十则再进行一次中断 。
3,51单片机这个程序怎么编那不简单,红外接收管的输出脚接到51的外部中断脚,收到红外信号就是输出电平变化,使51产生外部中断,然后在中断服务程序中点亮LED 。再用个定时器定时,若有信号就清定时计数,计数时间到了没有信号就关LED 。在单片机编程中,如果无操作系统,单片机的主程序必须是个死循环 。因为单片机每过一个机器周期,程序计数器(pc)就会自加1,而pc里面的值就是对应程序存储器中的地址,也就是当前cpu执行的指令的地址 。如果不加死循环即while(1)的话,当单片机执行完你有用 的程序以后就会一直往后执行,而后面的指令你没有写 , 一致于rom中的值也不确定,所以单片机的行为也就不确定了 。【51单片机中文编程,51单片机编程】
4,C51单片机编程急呀#include<reg51.h> // 头文件#define uchar unsigned char #define uint unsigned int uchar key_zhi;uchar dat0;dat1;void delay_ms(uint ms)//延时 uint jj,kk; for(jj=0;jj<ms;jj++)for(kk=0;kk<120;kk++);}void display_led()switch(key_zhi)case 1 :dat1=0;P2=0x01<<dat0;if(dat0>8)dat0=0;}delay_ms(500);dat0++;break;case 2 :dat0=0;P2=0x80>>dat1;delay_ms(1000);dat1++;if(dat1>8)dat1=0;}break;default :P2=0xff;break; }}void Init()//中断初始化 EA=1; IT0=1; EX0=1; IT1=1; EX1=1;}void main()//主函数 Init();while(1)display_led(); }}void Init0() interrupt 0 key_zhi=1;}void Init1() interrupt 2 key_zhi=2;}5,80C51单片机简单C语言编程只要将一个端口信号取反就行了,大概这样P0.0=~P0.0;Delay(10);一直循环 。延时时间自己控制好 。关键是单片机是TTL电平输出0或5v 。/************************************Function: 10Hz方波,至于电压单靠软件是不能够实现的************************************/#include “reg51.h”sbit pwm=P3^7;void main()TMOD=0x02;TH0=6;TL0=6;EA=1;ET0=1;TR0=1;while(1); }void Timer0 () interrupt 1unsigned int count;count++;if(count==200)//200*250us=50mspwm=0;if(count==400)count=0;pwm=1;} }sbit beep= p1^5;sbit led= p1^1;sbit in= p1^4;/***********************************************说明:主程序一直进行输入口电平扫描检测到低电平 , 开启蜂鸣器,并置led闪烁标志为1;中断定时程序负责led灯得闪烁控制,当led闪烁标志为1时,进行led输出口电平转换;定时长短,通过主程序及中断程序中的th1=0x00;tl1=0x00;进行时间定时***********************************************/void main()uint flag=0;//初始化led闪烁标志为0,不闪烁beep = 1;led = 1; tmod=0x15; //定时器1方式1定时器0 计数方式 工作方式1 th1=0x00; //定时器1赋初值 50ms tl1=0x00; ea=1; //开中断 et1=1; //定时器1允许中断 tr1=1; //定时开始while(1)if(in == 0)//扫描电平 beep = 0;//蜂鸣器响 flag =1; }else beep =1; flag =0; }}}void time1_() interrupt 3// 定时器1中断服务程序 th1=0x00; //定时器1赋初值 tl1=0x00;if(flag ==1) led = ~led ;}

    推荐阅读