『壹』 用52單片機C語言編寫程序,實現00~59計時。要求用T0,工作方式1。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=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;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //設置定時器0的工作方式
TH0=(65536-50000)/256; //裝初值
TL0=(65536-50000)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
TR0=1; //啟動定時器0
}
void display() //顯示子程序
{
la=1;
P0=table[ge]; //送段選數據
la=0;
P0=0xff; //送位選數據前關閉所有顯示
wela=1;
P0=0xfe; //送位選數據
wela=0;
delay(5); //延時
la=1;
P0=table[shi];
la=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; //十位和個位
}
}
試了的,可以放心,採納吧!
『貳』 52單片機復位後從哪裡運行
52單片機復位後從主界面運行,對於51單片機來說,程序復位後一定從0x0000開始,一般會在中斷入口前寫一個無條件跳轉,一直跳轉到程序開始的位置。
『叄』 求52單片機流水燈程序
//單片機流水燈程序,是學習單片機的最簡單的程序。
//流水燈
#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;i<8;i++){ //8個流水燈逐個閃動
DY_PORT=~temp;
delay(DY_SPEED); //調用延時函數
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++){ //8個流水燈反向逐個閃動
DY_PORT=~temp;
delay(DY_SPEED); //調用延時函數
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++){ //8個流水燈依次全部點亮
DY_PORT=temp;
delay(DY_SPEED); //調用延時函數
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++){ //8個流水燈依次反向全部點亮
DY_PORT=temp;
delay(DY_SPEED); //調用延時函數
temp>>=1;
}
}
}
『肆』 52單片機介面與舵機控製程序
可以用任意一個IO引腳和舵機連接,程序上,用兩個定時器,定時器1定時20ms,中斷時讓IO管腳輸出高電平,並啟動定時器2,定時器2定時1.5至2.5ms,對應舵機的角度,中斷時讓該管腳輸出低電平,並關閉自身。改變定時器2的定時時間,即改變了舵機的轉角。
『伍』 52單片機直流電機正反轉程序
52單片機如51單片機的指令集是一樣的,寫電機的正反轉程序,就是用一個電橋啊,就是4個三極體組成橋B,然後對應的牆壁打通就可以讓電系症狀,另外的對對比對面的橋臂導通可以用電機反轉,所以直接用單片機的io口引腳輸出高低電平就可以控制電機的症狀和反轉的。
『陸』 求52單片機程序代碼
程序代碼如下:
#include<reg51.h>
sbitK1=P1^0;
sbitK2=P1^1;
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<120;i++);
}
main()
{
unsignedcharkeyval=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);
}
}
}
『柒』 用C語言編寫C52單片機的流水燈程序
附上流水燈程序
#include<reg52.h>
#include<intrins.h>
unsigned char temp;
void delay(unsigned int x);
void main()
{
temp=0xfe; /*16進制的表示法,不能用:0eH這種形式了*/
while(1)
{
P1=temp;
delay(1000);
temp=_crol_(temp,1);
}
}
void delay(unsigned int x)
{
unsigned char j;
while(x--)
{
for(j=200;j>0;j--)
{
;
}
}
}