欢迎来到装配图网! | 帮助中心 装配图网zhuangpeitu.com!
装配图网
ImageVerifierCode 换一换
首页 装配图网 > 资源分类 > DOC文档下载
 

最新51单片机常见程序,附带注释

  • 资源ID:128197149       资源大小:1,019.50KB        全文页数:47页
  • 资源格式: DOC        下载积分:10积分
快捷下载 游客一键下载
会员登录下载
微信登录下载
三方登录下载: 微信开放平台登录 支付宝登录   QQ登录   微博登录  
二维码
微信扫一扫登录
下载资源需要10积分
邮箱/手机:
温馨提示:
用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

最新51单片机常见程序,附带注释

精品资料51单片机常见程序,附带注释.51 单片机常见程序附带注释三位数分离成3个一位数,截取bai=num/100;/输出百位数shi=num%100/10;/输出十位数ge=num/10;/输出个位数 #include<reg52.h> /跑马灯程序。当时间约为20ms,形成动态扫描,看上去全亮。 #include<intrins.h> #define uint unsigned int /无符号整型,占16位数,表示范围065536 #define uchar unsigned char /无符号字符型占八位数,表示范围0255 void delayms(uint); uchar aa; /定义变量 void main() aa=0xfe; while(1) P2=aa; /控制单片机接口p2,循环亮 delayms(500); /当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_(aa, 1); void delayms(uint xms) /子程序,延时,通过数数 uint i, j; for(i=xms;i>0;i-) for(j=110;j>0;j-); #include<reg52.h> /跑马灯程序。现在时间较长,多以是亮灭的流动,当时间约为20ms,形成动态扫描,看上去全亮。 #include<intrins.h> #define uint unsigned int /无符号整型,占16位数,表示范围065536 #define uchar unsigned char /无符号字符型占八位数,表示范围0255 void delayms(uint); uchar aa; /定义变量 void main() aa=0xfe; while(1) P2=aa; /控制单片机接口p2,循环亮 delayms(500); /当500换成5,看起来全亮,实际上灯一直亮灭,原因是视觉延迟 aa=_crol_(aa, 1); void delayms(uint xms) /子程序,延时,通过数数 uint i, j; for(i=xms;i>0;i-) for(j=110;j>0;j-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和两个共阴极数码管:使用单片机的引脚1和2,控制两个数码管静态显示00到59)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P07;/申明U1锁存器锁存端 段选uchar num,num1;uchar code table= /共阴极数码管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint) ;void main () while(1) for(num1=0;num1<=5;num1+) for(num=0;num<=9;num+) dula2=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s dula1=1; /打开U1锁存端 P2=tablenum1; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=200;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和两个共阴极数码管)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U1锁存器锁存端 段选uchar num,num1;uchar code table= /共阴极数码管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint) ;void main () while(1) for(num1=0;num1<=9;num1+) dula1=1; /打开U1锁存端 P1=tablenum1; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(1000); /延时500毫秒约0.3s for(num=0;num<=9;num+) dula2=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(1000); /延时500毫秒约0.3s void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=200;y>0;y-);有语法错误#include <reg52.h> /52系列单片机头文件 #define uchar unsigned char /无符号字符型占八位数,表示范围0255#define uint unsigned int /无符号整型,占16位数,表示范围sbit dula1=P16; /申明U锁存器锁存端 段选sbit dula2=P07; /申明U锁存器锁存端 段选uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void display(uchar,uchar) ;uchar num,num2,shi,ge;void main ()TMOD=0x11;/设置定时器0和1为工作方式1(M1M0为01,0001 00TH0= (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=tableshi; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(1175); /延时0.1毫秒 void delayms(uint xms)/延时子程序uint i,j;for (i=xms;i>0;i-) /i=xms即延时约为xms毫秒 for (j=110;j>0;j-);void T1_time()interrupt 1TH1= (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小时一循环)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P07;/申明U1锁存器锁存端 段选uchar num,num1,num2,num3,num4;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () 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=tablenum1; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(1175); /延时0.1毫秒 for(num=0;num<=9;num+) /每1s进位一 dula2=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(1000); /延时0.1毫秒 void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=110;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:控制时间24小时一循环,蜂鸣器每过一段时间响一次)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U1锁存器锁存端 段选sbit f=P0;/声明单片机 P0口的第一位,也就是三极管基级的位置单片机第39接口uchar num,num1,num2,num3,num4;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () 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=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(1074); /延时0.1毫秒 f=1; /控制蜂鸣器的响delayms(1000); void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=10;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和两个共阳极数码管,控制依次显示0到59,然后循环,有合适的时间间隔,程序停止)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U1锁存器锁存端 段选uchar num,num1;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () while(1) for(num1=0;num1<6;num1+) dula1=1; /打开U1锁存端 P1=tablenum1; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s for(num=0;num<=9;num+) dula2=1; /打开U1锁存端 P2=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=200;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和两个共阳极数码管,控制依次显示0到59,时间间隔约0.5,程序停止)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U1锁存器锁存端 段选uchar num,num1;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () while(1) for(num=0;num1<6;num1+) dula1=1; /打开U1锁存端 P1=tablenum1; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s for(num=0;num<=9;num+) dula2=1; /打开U1锁存端 P2=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s void delayms (uint xms)/延时子程序uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=300;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和两个共阳极数码管,控制依次显示0到59,时间间隔约0.5,程序停止)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U2锁存器锁存端 段选uchar num,num1;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () while(1) for(num=0;num1<6;num1+) dula1=1; /打开U1锁存端 P1=tablenum1; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s for(num=0;num<=9;num+) dula2=1; /打开U2锁存端 P2=tablenum; /送入位选信号 dula2=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3s void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=300;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和共阳极数码管,控制依次显示0到9,时间间隔约0.5s;)#define uchar unsigned char#define uint unsigned intsbit dula1=P17;/申明U1锁存器锁存端 段选sbit dula2=P27;/申明U2锁存器锁存端 段选uchar num;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main () while(1) for(num=0;num<10;num+) dula1=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula1=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3秒 dula2=1; /打开U2锁存端 P2=tablenum; /送入位选信号 dula2=0; /关闭U2锁存器 delayms(100); /延时500毫秒约0.3秒 void delayms (uint xms)uint x, 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循环计时)#define uchar unsigned char /无符号字符型占八位数,表示范围0255#define uint unsigned int /无符号整型,占16位数,表示范围sbit dula=P26; /申明U锁存器锁存端 段选sbit wela=P27; / 申明U2锁存器锁存 位选sbit led1=P10; /申明灯1点0uchar code table= /共阴极数码管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint) ;void display(uchar,uchar) ;uchar num,num1,num2,shi,ge;void main ()TMOD=0x01;/设置定时器0和1为工作方式1(M1M0为01,0001 00TH0= (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); void display (uchar shi,uchar ge) /控制数码管 dula=1; /打开U1锁存端 段选 P0=tableshi; /送入段选信号 dula=0; /关闭U1锁存器 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1; /原来的段选数据通过位选锁存器造成混乱 P0=0xfe; /送位选数据 wela=0; delayms(5); /延时 dula=1; /打开U1锁存端 段选 P0=tablege; /送入段选信号 dula=0; /关闭U1锁存器 P0=0xff; /送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1; /原来的段选数据通过位选锁存器造成混乱 P0=0xfe; /送位选数据 wela=0; delayms(5); /延时void delayms(uint xms)/延时子程序uint i,j;for (i=xms;i>0;i-) /i=xms即延时约为xms毫秒 for (j=110;j>0;j-);void T0_time()interrupt 1TH0= (65536-50000)/256; /重装初值TL0= (65536-50000)%256; num+; if(num1=4) /num1每加1次判断一次是否到4次 ,时间间隔200ms num1=0; /然后把num1清0重新再计数4次 led1=led1;/让发光管状态取反 void T1_time()interrupt 3TH1= (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系列单片机头文件 (目标:用定时器0的方式1实现第一个灯管以200ms闪烁;用定时器1的方式1实现数码管前两位59s循环计时)#define uchar unsigned char /无符号字符型占八位数,表示范围0255#define uint unsigned int /无符号整型,占16位数,表示范围sbit dula=P26;/申明U锁存器锁存端 段选sbit wela=P27; / 申明U2锁存器锁存 位选sbit led1=P10; /申明灯1点0uchar code table=/共阴极数码管0123456789abcdef0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delayms(uint) ;void display(uchar,uchar) ;uchar num,num1,num2,shi,ge;void main () TMOD=0x01;/设置定时器0和1为工作方式1(M1M0为01,0001 0001)TH0= (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); void display (uchar shi,uchar ge) /控制数码管 dula=1; /打开U1锁存端 段选 P0=tableshi; /送入段选信号 dula=0; /关闭U1锁存器 P0=0xff;/送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1;/原来的段选数据通过位选锁存器造成混乱 P0=0xfe; /送位选数据 wela=0; delayms(5); /延时 dula=1; /打开U1锁存端 段选 P0=tablege; /送入段选信号 dula=0; /关闭U1锁存器 P0=0xff;/送位选数据前关闭所有显示,防止打开位选锁存器时 wela=1;/原来的段选数据通过位选锁存器造成混乱 P0=0xfe; /送位选数据 wela=0; delayms(5); /延时void delayms(uint xms)/延时子程序uint i,j;for (i=xms;i>0;i-) /i=xms即延时约为xms毫秒 for (j=110;j>0;j-);#include <reg52.h> /52系列单片机头文件 (目标:中断程序,控制1点0二极管10ms闪烁)#define uchar unsigned char#define uint unsigned intsbit led1=P10;/声明单片机 P1口的第一位uchar num;void main ()TMOD=0x01;/设置定时器0为工作方式1(M1M0为01)TH0= (65535-50000)/256;/装初值12.00M晶振定时50ms数为50000TL0= (65535-50000)%256;EA=1;/开总中断ET0=1; / 开定时器0中断TR0=1;/ 启动定时器0while(1)/程序停止在这里等待中断的发生 if(num=200)/判断一次是否到20 num=0; /然后把num清0重新再计数20次 led1=led1;/让发光管状态取反 void T0_time()interrupt 1TH0= (65535-50000)/256; /重装初值TL0= (65535-50000)%256; num+; /num加上1#include <reg52.h> /52系列单片机头文件 (目标:中断程序,控制1点0二极管100ms闪烁,若num=10,则0.05s闪烁,换句话控制5000或者num都可以控制时间。)#define uchar unsigned char#define uint unsigned intsbit led1=P10;/声明单片机 P1口的第一位uchar num;void main ()TMOD=0x01;/设置定时器0为工作方式1(M1M0为01)TH0= (65535-5000)/256;/装初值12.00M晶振定时50ms数为50000TL0= (65535-5000)%256;EA=1;/开总中断ET0=1; / 开定时器0中断TR0=1;/ 启动定时器0while(1)/程序停止在这里等待中断的发生 if(num=20)/判断一次是否到20 num=0; /然后把num清0重新再计数20次 led1=led1;/让发光管状态取反 void T0_time()interrupt 1TH0= (65535-5000)/256; /重装初值TL0= (65535-5000)%256; num+; /num加上1#include <reg52.h> /52系列单片机头文件 (目标:中断程序,控制1点0口灯的亮灭,时间间隔1s)#define uchar unsigned char#define uint unsigned intsbit led1=P10;/声明单片机 P1口的第一位uchar num;void main ()TMOD=0x01;/设置定时器0为工作方式1(M1M0为01)TH0= (65535-50000)/256;/装初值12.00M晶振定时50s数为50000TL0= (65535-50000)%256;EA=1;/开总中断ET0=1; / 开定时器0中断TR0=1;/ 启动定时器0while(1)/程序停止在这里等待中断的发生 if(num=20)/判断一次是否到20 num=0; /然后把num清0重新再计数20次 led1=led1;/让发光管状态取反 void T0_time()interrupt 1TH0= (65535-50000)/256; /重装初值TL0= (65535-50000)%256; num+; /num加上1#include <reg52.h> /52系列单片机头文件 (目标:中断程序,控制蜂鸣器,加入蜂鸣器响,然后跳过)#define uchar unsigned char#define uint unsigned intsbit led1=P10;/声明单片机 P1口的第一位uchar num;void main ()TMOD=0x01;/设置定时器0为工作方式1(M1M0为01)TH0= (65536-50000)/256;/装初值12.00M晶振定时50s数为50000TL0= (65536-50000)%256;EA=1;/开总中断ET0=1; / 开定时器0中断TR0=1;/ 启动定时器0while(1);/程序停止在这里等待中断的发生 if(num=20)/判断一次是否到20 num=0; /然后把num清0重新再计数20次 led1=led1;/让发光管状态取反 void T0_time()interrupt 1TH0= (65536-50000)/256; /重装初值TL0= (65536-50000)%256; num+; /num加上1#include <reg52.h> /52系列单片机头文件 (目标:中断程序,控制蜂鸣器,加入蜂鸣器响,然后跳过)#define uchar unsigned char#define uint unsigned intsbit led1=P10;/声明单片机 P1口的第一位uchar num;void main ()TMOD=0x01;/设置定时器0为工作方式1(M1M0为01)TH0= (65536-50000)/256;/装初值12.00M晶振定时50s数为50000TL0= (65536-50000)%256;EA=1;/开总中断ET0=1; / 开定时器0中断TR0=1;/ 启动定时器0while(1);/程序停止在这里等待中断的发生void T0_time()interrupt 1TH0= (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一循环循环。后加停止程序)#define uchar unsigned char#define uint unsigned intsbit dula=P17;/申明U锁存器锁存端 段选sbit f=P00;/声明单片机 P0口的第一位uchar num;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint) ;void main () while(1) for(num=0;num<=9;num+) f=0;/控制蜂鸣器的不响 dula=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3秒 f=1;/控制蜂鸣器响 delayms(100); /延时500毫秒约0.3秒 while(1) ; /程序停止到这里 void delayms (uint xms)uint x, 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一循环循环)#define uchar unsigned char#define uint unsigned intsbit dula=P17;/申明U锁存器锁存端 段选sbit f=P0;/声明单片机 P0口的第一位uchar num;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint) ;void main () while(1) for(num=0;num<=9;num+) f=0;/控制蜂鸣器的不响 dula=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3秒 f=1;/控制蜂鸣器响 delayms(100); /延时500毫秒约0.3秒 void delayms (uint xms)uint x, 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秒一循环循环)#define uchar unsigned char#define uint unsigned intsbit dula=P17;/申明U锁存器锁存端 段选sbit f=P0;/声明单片机 P0口的第一位uchar num;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字:0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint) ;void main () while(1) for(num=0;num<=9;num+) f=0;/控制蜂鸣器的不响 dula=1; /打开U1锁存端 P1=tablenum; /送入位选信号 dula=0; /关闭U1锁存器 delayms(100); /延时500毫秒约0.3秒 f=1;/控制蜂鸣器响 delayms(100); /延时500毫秒约0.3秒 void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)/x=xms即延时约为xms毫秒 for (y=300;y>0;y-);#include <reg52.h> /52系列单片机头文件 (目标:用单片机和共阳极数码管,控制依次显示0到f,蜂鸣器响和停,时间间隔约0.5s;)#define uchar unsigned char#define uint unsigned intsbit dula=P17;/申明U锁存器锁存端 段选sbit f=P0;/声明单片机 P0口的第一位uchar num;

注意事项

本文(最新51单片机常见程序,附带注释)为本站会员(仙***)主动上传,装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知装配图网(点击联系客服),我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!