51单片机常见程序,附带注释_第1页
51单片机常见程序,附带注释_第2页
51单片机常见程序,附带注释_第3页
51单片机常见程序,附带注释_第4页
51单片机常见程序,附带注释_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

..51单片机常见程序附带注释三位数分离成3个一位数,截取bai=num/100;//输出百位数shi=num%100/10;//输出十位数ge=num/10;//输出个位数#include<reg52.h> //跑马灯程序。当时间约为20ms,形成动态扫描,看上去全亮。#include<intrins.h>#defineuintunsignedint //无符号整型,占16位数,表示范围0~65536#defineucharunsignedchar //无符号字符型占八位数,表示范围0~255voiddelayms<uint>;ucharaa; //定义变量voidmain<>{ aa=0xfe; while<1> { P2=aa; //控制单片机接口p2,循环亮 delayms<500>; //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_<aa,1>; }}voiddelayms<uintxms> //子程序,延时,通过数数{ uinti,j; for<i=xms;i>0;i--> for<j=110;j>0;j-->;}#include<reg52.h> //跑马灯程序。现在时间较长,多以是亮灭的流动,当时间约为20ms,形成动态扫描,看上去全亮。#include<intrins.h>#defineuintunsignedint //无符号整型,占16位数,表示范围0~65536#defineucharunsignedchar //无符号字符型占八位数,表示范围0~255voiddelayms<uint>;ucharaa; //定义变量voidmain<>{ aa=0xfe; while<1> { P2=aa; //控制单片机接口p2,循环亮 delayms<500>; //当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_<aa,1>; }}voiddelayms<uintxms> //子程序,延时,通过数数{ uinti,j; for<i=xms;i>0;i--> for<j=110;j>0;j-->;}#include<reg52.h> //52系列单片机头文件〔目标:用单片机和两个共阴极数码管:使用单片机的引脚1和2,控制两个数码管静态显示00到59#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P0^7; //申明U1锁存器锁存端 段选ucharnum,num1;ucharcodetable[]={ //共阴极数码管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; //关闭U1锁存器 delayms<100>; //延时500毫秒约0.3s dula1=1; //打开U1锁存端 P2=table[num1]; //送入位选信号 dula1=0; //关闭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系列单片机头文件〔目标:用单片机和两个共阴极数码管#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U1锁存器锁存端 段选ucharnum,num1;ucharcodetable[]={ //共阴极数码管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; //关闭U1锁存器 delayms<1000>; //延时500毫秒约0.3s for<num=0;num<=9;num++> { dula2=1; //打开U1锁存端 P1=table[num]; //送入位选信号 dula2=0; //关闭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 //无符号字符型占八位数,表示范围0~255#defineuintunsignedint //无符号整型,占16位数,表示范围sbitdula1=P1^6; //申明U1锁存器锁存端 段选sbitdula2=P0^7; //申明U1锁存器锁存端 段选ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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数为50000TL0=<65535-50000>%256;TH1=<65535-50000>/256;//装初值12.00M晶振定时50s数为50000TL1=<65535-50000>%256;EA=1;// 开总中断ET0=1;//开定时器0中断ET1=1;//开定时器1中断TR0=1;//启动定时器0TR1=1;//启动定时器1while<1>// 程序停止在这里不停的对数码管动态扫描同时等待中断的发生{ display<shi,ge>; dula2=1; //打开U1锁存端 P1=table[shi]; //送入位选信号 dula2=0; //关闭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重新再计数20次 num++; if<num==60> //这个数用来送数码管显示,到60后归0 num=0; shi=num/10; //把一个2位数分离后分别送数码管显示,十位数 ge=num%10; //个位数 }#include<reg52.h> //52系列单片机头文件〔目标:控制时间24小时一循环#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P0^7; //申明U1锁存器锁存端 段选ucharnum,num1,num2,num3,num4;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭U1锁存器 delayms<1175>; //延时0.1毫秒 for<num=0;num<=9;num++> //每1s进位一 { dula2=1; //打开U1锁存端 P1=table[num]; //送入位选信号 dula2=0; //关闭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小时一循环,蜂鸣器每过一段时间响一次#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U1锁存器锁存端 段选sbitf=P0; //声明单片机P0口的第一位,也就是三极管基级的位置单片机第39接口ucharnum,num1,num2,num3,num4;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和两个共阳极数码管,控制依次显示0到59,然后循环,有合适的时间间隔,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U1锁存器锁存端 段选ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭U1锁存器 delayms<100>; //延时500毫秒约0.3s for<num=0;num<=9;num++> { dula2=1; //打开U1锁存端 P2=table[num]; //送入位选信号 dula2=0; //关闭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系列单片机头文件〔目标:用单片机和两个共阳极数码管,控制依次显示0到59,时间间隔约0.5,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U1锁存器锁存端 段选ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭U1锁存器 delayms<100>; //延时500毫秒约0.3s for<num=0;num<=9;num++> { dula2=1; //打开U1锁存端 P2=table[num]; //送入位选信号 dula2=0; //关闭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系列单片机头文件〔目标:用单片机和两个共阳极数码管,控制依次显示0到59,时间间隔约0.5,程序停止#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U2锁存器锁存端 段选ucharnum,num1;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭U1锁存器 delayms<100>; //延时500毫秒约0.3s for<num=0;num<=9;num++> { dula2=1; //打开U2锁存端 P2=table[num]; //送入位选信号 dula2=0; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到9,时间间隔约0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula1=P1^7; //申明U1锁存器锁存端 段选sbitdula2=P2^7; //申明U2锁存器锁存端 段选ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭U1锁存器 delayms<100>; //延时500毫秒约0.3秒 dula2=1; //打开U2锁存端 P2=table[num]; //送入位选信号 dula2=0; //关闭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实现第一个灯管以200ms闪烁;用定时器1的方式1实现数码管前两位59s循环计时#defineucharunsignedchar //无符号字符型占八位数,表示范围0~255#defineuintunsignedint //无符号整型,占16位数,表示范围sbitdula=P2^6; //申明U1锁存器锁存端 段选sbitwela=P2^7; //申明U2锁存器锁存 位选sbitled1=P1^0; //申明灯1点0ucharcodetable[]={ //共阴极数码管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数为50000TL0=<65535-50000>%256;TH1=<65535-50000>/256;//装初值12.00M晶振定时50s数为50000TL1=<65535-50000>%256;EA=1;// 开总中断ET0=1;//开定时器0中断ET1=1;//开定时器1中断TR0=1;//启动定时器0TR1=1;//启动定时器1while<1>// 程序停止在这里不停的对数码管动态扫描同时等待中断的发生{display<shi,ge>;}}voiddisplay<ucharshi,ucharge> //控制数码管{dula=1; //打开U1锁存端段选P0=table[shi];//送入段选信号dula=0; //关闭U1锁存器P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存器时wela=1; //原来的段选数据通过位选锁存器造成混乱P0=0xfe; //送位选数据wela=0;delayms<5>; //延时dula=1; //打开U1锁存端段选P0=table[ge];//送入段选信号dula=0; //关闭U1锁存器P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存器时wela=1; //原来的段选数据通过位选锁存器造成混乱P0=0xfe; //送位选数据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重新再计数4次led1=~led1; //让发光管状态取反}}voidT1_time<>interrupt3{TH1=<65536-50000>/256; //重装初值TL1=<65536-50000>%256;num2++; //num每加1次判断一次是否到20次if<num2==20>{num2=0;//然后把num2清0重新再计数20次num++;if<num==60> //这个数用来送数码管显示,到60后归0num=0;shi=num/10; //把一个2位数分离后分别送数码管显示,十位数ge=num%10; //个位数}}#include<reg52.h> //52系列单片机头文件〔目标:用定时器0的方式1实现第一个灯管以200ms闪烁;用定时器1的方式1实现数码管前两位59s循环计时#defineucharunsignedchar //无符号字符型占八位数,表示范围0~255#defineuintunsignedint //无符号整型,占16位数,表示范围sbitdula=P2^6; //申明U1锁存器锁存端 段选sbitwela=P2^7; //申明U2锁存器锁存 位选sbitled1=P1^0; //申明灯1点0ucharcodetable[]={ //共阴极数码管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数为50000 TL0=<65535-50000>%256; TH1=<65535-50000>/256;//装初值12.00M晶振定时50s数为50000 TL1=<65535-50000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 ET1=1;//开定时器1中断 TR0=1;//启动定时器0 TR1=1;//启动定时器1 while<1>// 程序停止在这里不停的对数码管动态扫描同时等待中断的发生{ display<shi,ge>; }}voiddisplay<ucharshi,ucharge> //控制数码管{ dula=1; //打开U1锁存端段选 P0=table[shi];//送入段选信号 dula=0; //关闭U1锁存器 P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1; //原来的段选数据通过位选锁存器造成混乱 P0=0xfe; //送位选数据 wela=0; delayms<5>; //延时 dula=1; //打开U1锁存端段选 P0=table[ge];//送入段选信号 dula=0; //关闭U1锁存器 P0=0xff; //送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1; //原来的段选数据通过位选锁存器造成混乱 P0=0xfe; //送位选数据 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数为50000 TL0=<65535-50000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while<1>// 程序停止在这里等待中断的发生{ if<num==200>//判断一次是否到20 { num=0;//然后把num清0重新再计数20次 led1=~led1; //让发光管状态取反 } }} 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数为50000 TL0=<65535-5000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while<1>// 程序停止在这里等待中断的发生{ if<num==20>//判断一次是否到20 { num=0;//然后把num清0重新再计数20次 led1=~led1; //让发光管状态取反 } }} 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数为50000 TL0=<65535-50000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while<1>// 程序停止在这里等待中断的发生{ if<num==20>//判断一次是否到20 { num=0;//然后把num清0重新再计数20次 led1=~led1; //让发光管状态取反 } }} 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数为50000 TL0=<65536-50000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while<1>;// 程序停止在这里等待中断的发生if<num==20>//判断一次是否到20 { num=0;//然后把num清0重新再计数20次 led1=~led1; //让发光管状态取反 }} 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数为50000 TL0=<65536-50000>%256; EA=1;// 开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while<1>;// 程序停止在这里等待中断的发生} voidT0_time<>interrupt1{ TH0=<65536-50000>/256; //重装初值 TL0=<65536-50000>%256; num++; //num每加1次判断一次是否到20次 if<num==20> { num=0;//然后把num清0重新再计数20次 led1=~led1; //让发光管状态取反 }}#include<reg52.h> //52系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到9,数字间的时间间隔0.2418s;然后蜂鸣器响,时间间隔0.24182112;总循环时间2.63s一循环循环。后加停止程序#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选sbitf=P0^0; //声明单片机P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到9,数字间的时间间隔0.2418s;然后蜂鸣器响,时间间隔0.24182112;总循环时间2.63s一循环循环#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选sbitf=P0; //声明单片机P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到9,r然后蜂鸣器响,时间间隔0.3s;2.40秒一循环循环#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选sbitf=P0; //声明单片机P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到f,蜂鸣器响和停,时间间隔约0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选sbitf=P0; //声明单片机P0口的第一位ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到f,蜂鸣器响和停,时间间隔约0.5s;#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选sbitf=P0; //声明单片机P0口的第一位,也就是三极管基级的位置单片机第39接口ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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; //关闭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系列单片机头文件〔目标:用单片机和共阳极数码管,控制依次显示0到f,时间间隔约0.4s#defineucharunsignedchar#defineuintunsignedintsbitdula=P1^7; //申明U1锁存器锁存端 段选ucharnum;ucharcodetable[]={0xc0,0xf9,0xa4,0xb0, //共阳极数字: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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论