#include reg52.h
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6; //段选
sbit wela=P2^7; //位选
uchar shi,ge,num1,num2; //变量
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共阴极字型码
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延时子程序
{
uint i,j;
for(i=0;ix;i++)
for(j=0;j120;j++);
}
void init()
{
TMOD=0x01; //设置定时器0的工作方式
TH0=(65536-50000)/256; //装初值
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
void display() //显示子程序
{
dula=1;
P0=table[ge]; //送段选数据
dula=0;
P0=0xff; //送位选数据前关闭所有显示
wela=1;
P0=0xfe; //送位选数据
wela=0;
delay(5); //延时
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒时间到
{
num1=0; //清0重新计数
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一个2位数分离后分别送数码管显示
ge=num2%10; //十位和个位
}
}
试了的,可以放心,采纳吧!
//单片机流水灯程序,是学习单片机的最简单的程序。
//流水灯
#include REG51.h //51头文件
#define DY_PORT P1 //设置LED连接的I/O组
#define DY_SPEED 100 //设置每一个明亮级的停留时间(值域:0~65535)
void delay (unsigned int a){ // 1ms延时程序
unsigned int i;
while( --a != 0){
for(i = 0; i 600; i++);
}
}
void main(void){
unsigned int i;
unsigned int temp;
while(1){
temp=0x01;
for(i=0;i8;i++){ //8个流水灯逐个闪动
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp=1;
}
temp=0x80;
for(i=0;i8;i++){ //8个流水灯反向逐个闪动
DY_PORT=~temp;
delay(DY_SPEED); //调用延时函数
temp=1;
}
temp=0xFE;
for(i=0;i8;i++){ //8个流水灯依次全部点亮
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp=1;
}
temp=0x7F;
for(i=0;i8;i++){ //8个流水灯依次反向全部点亮
DY_PORT=temp;
delay(DY_SPEED); //调用延时函数
temp=1;
}
}
}
程序代码如下:
#includereg51.h
sbit K1=P1^0;
sbit K2=P1^1;
void delay(int a)
{
int i;
while(a--)for(i=0;i120;i++);
}
main()
{
unsigned char keyval=0,led=0xfe;
while(1)
{
if(K1==0)
{
delay(10);
if(K1==0)
{
keyval==1;
while(K1==0);
}
}
if(K2==0)
{
delay(10);
if(K2==0)
{
keyval==2;
while(K2==0);
}
}
if(keyval==1)P0=0xfe;
if(keyval==2)
{
P0=led;
led=_crol_(led,1);
delay(200);
}
}
}
52单片机如51单片机的指令集是一样的,写电机的正反转程序,就是用一个电桥啊,就是4个三极管组成桥B,然后对应的墙壁打通就可以让电系症状,另外的对对比对面的桥臂导通可以用电机反转,所以直接用单片机的io口引脚输出高低电平就可以控制电机的症状和反转的。
52单片机考程序的介绍到此就结束了,感谢您耐心阅读,谢谢。
本文标签:52单片机考程序