51單片機常見程序,附帶注釋_第1頁
51單片機常見程序,附帶注釋_第2頁
51單片機常見程序,附帶注釋_第3頁
51單片機常見程序,附帶注釋_第4頁
51單片機常見程序,附帶注釋_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

..51單片機常見程序附帶注釋三位數(shù)分離成3個一位數(shù),截取bai=num/100;//輸出百位數(shù)shi=num%100/10;//輸出十位數(shù)ge=num/10;//輸出個位數(shù)#include<reg52.h> //跑馬燈程序。當時間約為20ms,形成動態(tài)掃描,看上去全亮。#include<intrins.h>#defineuintunsignedint //無符號整型,占16位數(shù),表示范圍0~65536#defineucharunsignedchar //無符號字符型占八位數(shù),表示范圍0~255voiddelayms<uint>;ucharaa; //定義變量voidmain<>{ aa=0xfe; while<1> { P2=aa; //控制單片機接口p2,循環(huán)亮 delayms<500>; //當500換成5,看起來全亮,實際上燈一直亮滅,原因是視覺延遲 aa=_crol_<aa,1>; }}voiddelayms<uintxms> //子程序,延時,通過數(shù)數(shù){ uinti,j; for<i=xms;i>0;i--> for<j=110;j>0;j-->;}#include<reg52.h> //跑馬燈程序?,F(xiàn)在時間較長,多以是亮滅的流動,當時間約為20ms,形成動態(tài)掃描,看上去全亮。#include<intrins.h>#defineuintunsignedint //無符號整型,占16位數(shù),表示范圍0~65536#defineucharunsignedchar //無符號字符型占八位數(shù),表示范圍0~255voiddelayms<uint>;ucharaa; //定義變量voidmain<>{ aa=0xfe; while<1> { P2=aa; //控制單片機接口p2,循環(huán)亮 delayms<500>; //當500換成5,看起來全亮,實際上燈一直亮滅,原因是視覺延遲 aa=_crol_<aa,1>; }}voiddelayms<uintxms> //子程序,延時,通過數(shù)數(shù){ uinti,j; for<i=xms;i>0;i--> for<j=110;j>0;j-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和兩個共陰極數(shù)碼管:使用單片機的引腳1和2,控制兩個數(shù)碼管靜態(tài)顯示00到59#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P0^7; //申明U1鎖存器鎖存端 段選ucharnum,num1;ucharcodetable[]={ //共陰極數(shù)碼管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms<uint>;voidmain<> { while<1> { for<num1=0;num1<=5;num1++> { for<num=0;num<=9;num++> { dula2=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s dula1=1; //打開U1鎖存端 P2=table[num1]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=200;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和兩個共陰極數(shù)碼管#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U1鎖存器鎖存端 段選ucharnum,num1;ucharcodetable[]={ //共陰極數(shù)碼管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms<uint>;voidmain<> { while<1> { for<num1=0;num1<=9;num1++> { dula1=1; //打開U1鎖存端 P1=table[num1]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<1000>; //延時500毫秒約0.3s for<num=0;num<=9;num++> { dula2=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<1000>; //延時500毫秒約0.3s } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=200;y>0;y-->;}有語法錯誤#include<reg52.h> //52系列單片機頭文件#defineucharunsignedchar //無符號字符型占八位數(shù),表示范圍0~255#defineuintunsignedint //無符號整型,占16位數(shù),表示范圍sbitdula1=P1^6; //申明U1鎖存器鎖存端 段選sbitdula2=P0^7; //申明U1鎖存器鎖存端 段選ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voiddisplay<uchar,uchar>;ucharnum,num2,shi,ge;voidmain<>{TMOD=0x11;//設置定時器0和1為工作方式1〔M1M0為01,000100TH0=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000TL0=<65535-50000>%256;TH1=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000TL1=<65535-50000>%256;EA=1;// 開總中斷ET0=1;//開定時器0中斷ET1=1;//開定時器1中斷TR0=1;//啟動定時器0TR1=1;//啟動定時器1while<1>// 程序停止在這里不停的對數(shù)碼管動態(tài)掃描同時等待中斷的發(fā)生{ display<shi,ge>; dula2=1; //打開U1鎖存端 P1=table[shi]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<1175>; //延時0.1毫秒}}voiddelayms<uintxms> //延時子程序{ uinti,j; for<i=xms;i>0;i--> //i=xms即延時約為xms毫秒 for<j=110;j>0;j-->;}voidT1_time<>interrupt1{TH1=<65536-50000>/256; //重裝初值TL1=<65536-50000>%256;num2++; //num每加1次判斷一次是否到20次 if<num2==20> { num2=0;//然后把num2清0重新再計數(shù)20次 num++; if<num==60> //這個數(shù)用來送數(shù)碼管顯示,到60后歸0 num=0; shi=num/10; //把一個2位數(shù)分離后分別送數(shù)碼管顯示,十位數(shù) ge=num%10; //個位數(shù) }#include<reg52.h> //52系列單片機頭文件〔目標:控制時間24小時一循環(huán)#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P0^7; //申明U1鎖存器鎖存端 段選ucharnum,num1,num2,num3,num4;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num3=0;num3<=23;num3++> //每天24小時進位一 { for<num2=0;num2<=59;num2++> //每60分進位一 { for<num1=0;num1<=5;num1++>//每6*10s進位一 { dula2=1; //打開U1鎖存端 P1=table[num1]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<1175>; //延時0.1毫秒 for<num=0;num<=9;num++> //每1s進位一 { dula2=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<1000>; //延時0.1毫秒 } } } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=110;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:控制時間24小時一循環(huán),蜂鳴器每過一段時間響一次#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U1鎖存器鎖存端 段選sbitf=P0; //聲明單片機P0口的第一位,也就是三極管基級的位置單片機第39接口ucharnum,num1,num2,num3,num4;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num3=0;num3<=23;num3++> //每天進位一 { for<num2=0;num2<=59;num2++> //每60分進位一 { for<num4=0;num2<=59;num4++> //每60s進位一 { f=0; //控制蜂鳴器的不響 for<num=0;num<=9;num++> //每1ms進位一 { dula2=1; //打開U1鎖存端 P2=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<1074>; //延時0.1毫秒 } f=1; //控制蜂鳴器的響 delayms<1000>; } } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=10;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和兩個共陽極數(shù)碼管,控制依次顯示0到59,然后循環(huán),有合適的時間間隔,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U1鎖存器鎖存端 段選ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num1=0;num1<6;num1++> { dula1=1; //打開U1鎖存端 P1=table[num1]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s for<num=0;num<=9;num++> { dula2=1; //打開U1鎖存端 P2=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=200;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和兩個共陽極數(shù)碼管,控制依次顯示0到59,時間間隔約0.5,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U1鎖存器鎖存端 段選ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num1<6;num1++> { dula1=1; //打開U1鎖存端 P1=table[num1]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s for<num=0;num<=9;num++> { dula2=1; //打開U1鎖存端 P2=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s } } }}voiddelayms<uintxms>//延時子程序{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和兩個共陽極數(shù)碼管,控制依次顯示0到59,時間間隔約0.5,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U2鎖存器鎖存端 段選ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num1<6;num1++> { dula1=1; //打開U1鎖存端 P1=table[num1]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s for<num=0;num<=9;num++> { dula2=1; //打開U2鎖存端 P2=table[num]; //送入位選信號 dula2=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3s } } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到9,時間間隔約0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1鎖存器鎖存端 段選sbitdula2=P2^7; //申明U2鎖存器鎖存端 段選ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<10;num++> { dula1=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula1=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3秒 dula2=1; //打開U2鎖存端 P2=table[num]; //送入位選信號 dula2=0; //關(guān)閉U2鎖存器 delayms<100>; //延時500毫秒約0.3秒 } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用定時器0的方式1實現(xiàn)第一個燈管以200ms閃爍;用定時器1的方式1實現(xiàn)數(shù)碼管前兩位59s循環(huán)計時#defineucharunsignedchar //無符號字符型占八位數(shù),表示范圍0~255#defineuintunsignedint //無符號整型,占16位數(shù),表示范圍sbitdula=P2^6; //申明U1鎖存器鎖存端 段選sbitwela=P2^7; //申明U2鎖存器鎖存 位選sbitled1=P1^0; //申明燈1點0ucharcodetable[]={ //共陰極數(shù)碼管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms<uint>;voiddisplay<uchar,uchar>;ucharnum,num1,num2,shi,ge;voidmain<>{TMOD=0x01;//設置定時器0和1為工作方式1〔M1M0為01,000100TH0=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000TL0=<65535-50000>%256;TH1=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000TL1=<65535-50000>%256;EA=1;// 開總中斷ET0=1;//開定時器0中斷ET1=1;//開定時器1中斷TR0=1;//啟動定時器0TR1=1;//啟動定時器1while<1>// 程序停止在這里不停的對數(shù)碼管動態(tài)掃描同時等待中斷的發(fā)生{display<shi,ge>;}}voiddisplay<ucharshi,ucharge> //控制數(shù)碼管{dula=1; //打開U1鎖存端段選P0=table[shi];//送入段選信號dula=0; //關(guān)閉U1鎖存器P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存器時wela=1; //原來的段選數(shù)據(jù)通過位選鎖存器造成混亂P0=0xfe; //送位選數(shù)據(jù)wela=0;delayms<5>; //延時dula=1; //打開U1鎖存端段選P0=table[ge];//送入段選信號dula=0; //關(guān)閉U1鎖存器P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存器時wela=1; //原來的段選數(shù)據(jù)通過位選鎖存器造成混亂P0=0xfe; //送位選數(shù)據(jù)wela=0;delayms<5>; //延時}voiddelayms<uintxms> //延時子程序{uinti,j;for<i=xms;i>0;i--> //i=xms即延時約為xms毫秒for<j=110;j>0;j-->;}voidT0_time<>interrupt1{TH0=<65536-50000>/256; //重裝初值TL0=<65536-50000>%256;num++; if<num1==4> //num1每加1次判斷一次是否到4次,時間間隔200ms{num1=0;//然后把num1清0重新再計數(shù)4次led1=~led1; //讓發(fā)光管狀態(tài)取反}}voidT1_time<>interrupt3{TH1=<65536-50000>/256; //重裝初值TL1=<65536-50000>%256;num2++; //num每加1次判斷一次是否到20次if<num2==20>{num2=0;//然后把num2清0重新再計數(shù)20次num++;if<num==60> //這個數(shù)用來送數(shù)碼管顯示,到60后歸0num=0;shi=num/10; //把一個2位數(shù)分離后分別送數(shù)碼管顯示,十位數(shù)ge=num%10; //個位數(shù)}}#include<reg52.h> //52系列單片機頭文件〔目標:用定時器0的方式1實現(xiàn)第一個燈管以200ms閃爍;用定時器1的方式1實現(xiàn)數(shù)碼管前兩位59s循環(huán)計時#defineucharunsignedchar //無符號字符型占八位數(shù),表示范圍0~255#defineuintunsignedint //無符號整型,占16位數(shù),表示范圍sbitdula=P2^6; //申明U1鎖存器鎖存端 段選sbitwela=P2^7; //申明U2鎖存器鎖存 位選sbitled1=P1^0; //申明燈1點0ucharcodetable[]={ //共陰極數(shù)碼管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};voiddelayms<uint>;voiddisplay<uchar,uchar>;ucharnum,num1,num2,shi,ge;voidmain<>{ TMOD=0x01;//設置定時器0和1為工作方式1〔M1M0為01,00010001 TH0=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000 TL0=<65535-50000>%256; TH1=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000 TL1=<65535-50000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 ET1=1;//開定時器1中斷 TR0=1;//啟動定時器0 TR1=1;//啟動定時器1 while<1>// 程序停止在這里不停的對數(shù)碼管動態(tài)掃描同時等待中斷的發(fā)生{ display<shi,ge>; }}voiddisplay<ucharshi,ucharge> //控制數(shù)碼管{ dula=1; //打開U1鎖存端段選 P0=table[shi];//送入段選信號 dula=0; //關(guān)閉U1鎖存器 P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存器時 wela=1; //原來的段選數(shù)據(jù)通過位選鎖存器造成混亂 P0=0xfe; //送位選數(shù)據(jù) wela=0; delayms<5>; //延時 dula=1; //打開U1鎖存端段選 P0=table[ge];//送入段選信號 dula=0; //關(guān)閉U1鎖存器 P0=0xff; //送位選數(shù)據(jù)前關(guān)閉所有顯示,防止打開位選鎖存器時 wela=1; //原來的段選數(shù)據(jù)通過位選鎖存器造成混亂 P0=0xfe; //送位選數(shù)據(jù) wela=0; delayms<5>; //延時}voiddelayms<uintxms> //延時子程序{ uinti,j; for<i=xms;i>0;i--> //i=xms即延時約為xms毫秒 for<j=110;j>0;j-->;}#include<reg52.h> //52系列單片機頭文件〔目標:中斷程序,控制1點0二極管10ms閃爍#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0; //聲明單片機P1口的第一位ucharnum;voidmain<>{ TMOD=0x01;//設置定時器0為工作方式1〔M1M0為01 TH0=<65535-50000>/256;//裝初值12.00M晶振定時50ms數(shù)為50000 TL0=<65535-50000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 while<1>// 程序停止在這里等待中斷的發(fā)生{ if<num==200>//判斷一次是否到20 { num=0;//然后把num清0重新再計數(shù)20次 led1=~led1; //讓發(fā)光管狀態(tài)取反 } }} voidT0_time<>interrupt1{ TH0=<65535-50000>/256; //重裝初值 TL0=<65535-50000>%256;num++; //num加上1}#include<reg52.h> //52系列單片機頭文件〔目標:中斷程序,控制1點0二極管100ms閃爍,若num=10,則0.05s閃爍,換句話控制5000或者num都可以控制時間。#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0; //聲明單片機P1口的第一位ucharnum;voidmain<>{ TMOD=0x01;//設置定時器0為工作方式1〔M1M0為01 TH0=<65535-5000>/256;//裝初值12.00M晶振定時50ms數(shù)為50000 TL0=<65535-5000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 while<1>// 程序停止在這里等待中斷的發(fā)生{ if<num==20>//判斷一次是否到20 { num=0;//然后把num清0重新再計數(shù)20次 led1=~led1; //讓發(fā)光管狀態(tài)取反 } }} voidT0_time<>interrupt1{ TH0=<65535-5000>/256; //重裝初值 TL0=<65535-5000>%256;num++; //num加上1}#include<reg52.h> //52系列單片機頭文件〔目標:中斷程序,控制1點0口燈的亮滅,時間間隔1s#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0; //聲明單片機P1口的第一位ucharnum;voidmain<>{ TMOD=0x01;//設置定時器0為工作方式1〔M1M0為01 TH0=<65535-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000 TL0=<65535-50000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 while<1>// 程序停止在這里等待中斷的發(fā)生{ if<num==20>//判斷一次是否到20 { num=0;//然后把num清0重新再計數(shù)20次 led1=~led1; //讓發(fā)光管狀態(tài)取反 } }} voidT0_time<>interrupt1{ TH0=<65535-50000>/256; //重裝初值 TL0=<65535-50000>%256;num++; //num加上1}#include<reg52.h> //52系列單片機頭文件〔目標:中斷程序,控制蜂鳴器,加入蜂鳴器響,然后跳過#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0; //聲明單片機P1口的第一位ucharnum;voidmain<>{ TMOD=0x01;//設置定時器0為工作方式1〔M1M0為01 TH0=<65536-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000 TL0=<65536-50000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 while<1>;// 程序停止在這里等待中斷的發(fā)生if<num==20>//判斷一次是否到20 { num=0;//然后把num清0重新再計數(shù)20次 led1=~led1; //讓發(fā)光管狀態(tài)取反 }} voidT0_time<>interrupt1{ TH0=<65536-50000>/256; //重裝初值 TL0=<65536-50000>%256;num++; //num加上1}#include<reg52.h> //52系列單片機頭文件〔目標:中斷程序,控制蜂鳴器,加入蜂鳴器響,然后跳過#defineucharunsignedchar#defineuintunsignedintsbitled1=P1^0; //聲明單片機P1口的第一位ucharnum;voidmain<>{ TMOD=0x01;//設置定時器0為工作方式1〔M1M0為01 TH0=<65536-50000>/256;//裝初值12.00M晶振定時50s數(shù)為50000 TL0=<65536-50000>%256; EA=1;// 開總中斷 ET0=1;//開定時器0中斷 TR0=1;//啟動定時器0 while<1>;// 程序停止在這里等待中斷的發(fā)生} voidT0_time<>interrupt1{ TH0=<65536-50000>/256; //重裝初值 TL0=<65536-50000>%256; num++; //num每加1次判斷一次是否到20次 if<num==20> { num=0;//然后把num清0重新再計數(shù)20次 led1=~led1; //讓發(fā)光管狀態(tài)取反 }}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到9,數(shù)字間的時間間隔0.2418s;然后蜂鳴器響,時間間隔0.24182112;總循環(huán)時間2.63s一循環(huán)循環(huán)。后加停止程序#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選sbitf=P0^0; //聲明單片機P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<=9;num++> { f=0; //控制蜂鳴器的不響 dula=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3秒 } f=1; //控制蜂鳴器響 delayms<100>; //延時500毫秒約0.3秒 while<1>; //程序停止到這里 }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到9,數(shù)字間的時間間隔0.2418s;然后蜂鳴器響,時間間隔0.24182112;總循環(huán)時間2.63s一循環(huán)循環(huán)#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選sbitf=P0; //聲明單片機P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<=9;num++> { f=0; //控制蜂鳴器的不響 dula=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3秒 } f=1; //控制蜂鳴器響 delayms<100>; //延時500毫秒約0.3秒 }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到9,r然后蜂鳴器響,時間間隔0.3s;2.40秒一循環(huán)循環(huán)#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選sbitf=P0; //聲明單片機P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<=9;num++> { f=0; //控制蜂鳴器的不響 dula=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula=0; //關(guān)閉U1鎖存器 delayms<100>; //延時500毫秒約0.3秒 } f=1; //控制蜂鳴器響 delayms<100>; //延時500毫秒約0.3秒 }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到f,蜂鳴器響和停,時間間隔約0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選sbitf=P0; //聲明單片機P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<16;num++> { f=1; //控制蜂鳴器的響 dula=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula=0; //關(guān)閉U1鎖存器 f=0; //控制蜂鳴器的不響 delayms<100>; //延時500毫秒約0.3秒 } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到f,蜂鳴器響和停,時間間隔約0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選sbitf=P0; //聲明單片機P0口的第一位,也就是三極管基級的位置單片機第39接口ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<16;num++> { dula=1; //打開U1鎖存端 P1=table[num]; //送入位選信號 dula=0; //關(guān)閉U1鎖存器 f=1; //控制蜂鳴器的響 delayms<100>; //延時500毫秒約0.3秒 f=0; //控制蜂鳴器的不響 delayms<100>; //延時500毫秒約0.3秒 } }}voiddelayms<uintxms>{ uintx,y; for<x=xms;x>0;x--> //x=xms即延時約為xms毫秒 for<y=300;y>0;y-->;}#include<reg52.h> //52系列單片機頭文件〔目標:用單片機和共陽極數(shù)碼管,控制依次顯示0到f,時間間隔約0.4s#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1鎖存器鎖存端 段選ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共陽極數(shù)字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e};voiddelayms<uint>;voidmain<> { while<1> { for<num=0;num<16;num++> { dula=1; //打開U1鎖存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論