下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、51 单片机常见程序附带注释三位数分离成 3 个一位数,截取 bai=num/100;/ 输出百位数 shi=num%100/10;/ 输出十位数 ge=num/10;/ 输出个位数#include<reg52.h>看上去全亮。/跑马灯程序。当时间约为 20ms形成动态扫描,#include<intrins.h>#define uint unsigned int065536/ 无符号整型,占 16 位数,表示范围#define uchar unsigned char/ 无符号字符型占八位数,表示范围 0255void delayms(uint);uchar aa;/ 定
2、义变量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>#d
3、efine uint unsigned int065536/ 无符号整型,占 16 位数,表示范围#define uchar unsigned char/ 无符号字符型占八位数,表示范围 0255void 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(
4、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=P1A7;/ 申明 U1 锁存器锁存端 段选sbit dula2=P0A7;/ 申明 U1 锁存器锁存端 段选uchar num,num1;uchar code table=/ 共阴极数码管 0123456789abcde
5、f0x3f,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 锁存500 毫秒约 0.3sdelayms(100);/ 延时dula1=1;/ 打开 U1 锁存端P2=tablenum1;/ 送入位选信
6、号器dula1=0;/ 关闭 U1 锁存500 毫秒约 0.3sdelayms(100);/ 延时void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)for (y=200;y>0;y-);/x=xms 即延时约为 xms 毫秒#include <reg52.h> /52 系列单片机头文件 (目标:用单片机和两个共阴极数码 管)#define uchar unsigned char#define uint unsigned intsbit dula1=P1A7;sbit dula2=P2A7;uchar num,num1
7、;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71;void delayms(uint) ;void main ()/ 申明 U1 锁存器锁存端段选/ 申明 U1 锁存器锁存端段选/ 共阴极数码管 0123456789abcdefwhile(1)for(num1=0;num1<=9;num1+)dula1=1;/ 打开 U1 锁存端0.3s器500 毫秒约 0.3svoid delayms (uint xms)uint x, y ;for (x
8、=xms;x>0;x-)P1=tablenum1;dula1=0;delayms(1000);/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫秒约for(num=0;num<=9;num+)dula2=1;P1=tablenum;dula2=0;delayms(1000);/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存/ 延时/x=xms 即延时约为 xms 毫秒for (y=200;y>0;y-);有语法错误#include <reg52.h> /52 系列单片机头文件#define uchar unsigned char / 无符号字符型
9、占八位数,表示范围 0255#define uint unsigned int / 无符号整型,占 16 位数,表示范围sbit dula1=P1A6;/申明U1锁存器锁存端段选sbit dula2=P0A7;/申明U1锁存器锁存端段选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,
10、num2,shi,ge;void main ()TMOD=Ox11;设置定时器0和1为工作方式1 (M1M0为01, 0001 00THO= (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;/ 启动定时器 0TR1=1;/ 启动定时器 1whil
11、e(1)/程序停止在这里不停的对数码管动态扫描同时等待中断的发生display(shi,ge);P1=tableshi;/送入位选信号dula2=0;/关闭 U1 锁存器delayms(1175);/ 延时 0.1 毫秒void delayms(uint xms) / 延时子程序/i=xms 即延时约为 xms 毫秒uint i,j;for (i=xms;i>0;i-) for (j=110;j>0;j-); void T1_time()interrupt 1TH1= (65536-50000)/256;/ 重装初值TL1= (65536-50000)%256;num2+; /nu
12、m 每加 1 次判断一次是否到 20 次if(num2=20)num2=0; / 然后把 num2 清 0 重新再计数 20 次 num+;if (num=60)/ 这个数用来送数码管显示,到 60 后归0num=0;shi=num/10; / 把一个 2 位数分离后分别送数 码管显示,十位数#include <reg52.h> /52 系列单片机头文件 (目标:控制时间 24 小时一循环)#define uchar unsigned char#define uint unsigned intsbit dula1=P1A7;/申明U1锁存器锁存端段选sbit dula2=P0A7;
13、/申明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 分进位一器0.1 毫秒/ 每
14、1s 进位一打开U1锁存端/ 送入位选信号/ 关闭 U1 锁存器/ 延时 0.1 毫秒P1=tablenum1; dula2=0;delayms(1175);/ 送入位选信号/ 关闭 U1 锁存/ 延时for(num=0;num<=9;num+)dula2=1; /P1=tablenum;dula2=0;delayms(1000);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 系列单片机头
15、文件 (目标:控制时间 24 小时一循环,蜂鸣器每过一段时间响一次)#define uchar unsigned char/ 申明 U1 锁存器锁存端/ 申明 U1 锁存器锁存端段选段选#define uint unsigned intsbit dula1=P1A7;sbit dula2=P2A7;sbit f=P0;/ 声明单片机 P0 口的第一位 ,也就是三极管基级的位置单片机第 39 接口uchar num,num1,num2,num3,num4;uchar code table=0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xcd,0xa1,0x
16、86,0x8e; void delayms(uint) ;void main ()while(1)for(num3=0;num3<=23;num3+)for(num2=0;num2<=59;num2+) 进位一for(num4=0;num2<=59;num4+)/ 每天进位一/ 每 60 分/ 每 60s 进位一每 1ms 进位一锁存端选信号U1锁存器f=0;/ 控制蜂鸣器的不响for(num=0;num<=9;num+) /dula2=1;/ 打开 U1P2=tablenum;/ 送入位dula2=0;/ 关闭delayms(1074);/ 延时 0.1 毫秒dela
17、yms(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=P1A7;/ 申明 U1 锁存器锁存端段选sbit dula2=P2A7;/ 申明
18、U1 锁存器锁存端段选uchar num,num1;uchar code table=0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xcd,0xa1,0x86,0x8e;void delayms(uint) ;void main ()while(1)0.3sfor(num1=0;num1<6;num1+)dula1=1;P1=tablenum1;dula1=0;delayms(100);/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫秒约for(num=0;num<=9;num+)dula2=1;P2=tablen
19、um;dula2=0;/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器500 毫秒约 0.3sdelayms(100); / 延时void delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)for (y=200;y>0;y-);/x=xms 即延时约为 xms 毫秒#include <reg52.h> /52 系列单片机头文件 (目标:用单片机和两个共阳极数码 管,控制依次显示 0到 59,时间间隔约 0.5, 程序停止)#define uchar unsigned char#define uint unsigne
20、d intsbit dula1=P1A7;/申明 U1 锁存器锁存端段选sbit dula2=P2A7;/申明 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+)0.3s器500 毫秒约 0.3svoid delay
21、ms (uint xms)/uint x, y ;for (x=xms;x>0;x-)P1=tablenum1;dula1=0;delayms(100);/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫秒约for(num=0;num<=9;num+)dula2=1;P2=tablenum;dula2=0;delayms(100);/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存/ 延时延时子程序/x=xms 即延时约为 xms 毫秒for (y=300;y>0;y-);#include <reg52.h> /52 系列单片机头文件 (目标:用单
22、片机和两个共阳极数码 管,控制依次显示 0到59,时间间隔约 0.5, 程序停止)#define uchar unsigned char#define uint unsigned intsbit dula1=P1A7;/申明 U1 锁存器锁存端段选sbit dula2=P2A7;/申明 U2 锁存器锁存端段选uchar num,num1;uchar code table=0xc0,0xf9,0xa4, 0xb0,/共阳极数字: 0123456789abcdefg0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83, 0xcd,0xa1,0x86,0x8e;void
23、delayms(uint) ;void main ()while(1)for(num=0;num1<6;num1+)/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器dula1=1;P1=tablenum1;dula1=0;delayms(100);/ 延时 500 毫秒约0.3sfor(num=0;num<=9;num+)器500 毫秒约 0.3svoid delayms (uint xms)uint x, y ;for (x=xms;x>0;x-)for (y=300;y>0;y-);P2=tablenum; dula2=0;delayms(100);/
24、送入位选信号/ 关闭 U1 锁存/ 延时/x=xms 即延时约为 xms 毫秒#include <reg52.h> /52 系列单片机头文件 (目标:用单片机和共阳极数码管, 控制依次显示 0到 9,时间间隔约 0.5s ;)#define uchar unsigned char#define uint unsigned intsbit dula1=P1A7;/ 申明 U1 锁存器锁存端段选/ 申明 U2 锁存器锁存端段选/ 共阳极数字: 0123456789abcdefgsbit dula2=P2A7;uchar num;uchar code table= 0xc0,0xf9,0
25、xa4, 0xb0, 0x99,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;P1=tablenum; dula1=0;delayms(100);dula2=1;P2=tablenum; dula2=0;delayms(100);/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫秒约 0.3/ 打开 U2 锁存端/ 送入位选信号/ 关闭 U2 锁存器/
26、延时 500 毫秒约 0.3void delayms (uint xms)/x=xms 即延时约为 xms 毫秒uint x, y ;for (x=xms;x>0;x-)for (y=300;y>0;y-);#include <reg52.h>一个灯管以200ms闪烁;用定时器/52 系列单片机头文件 (目标:用定时器 0 的方式 1 实现第1 的方式 1 实现数码管前两位 59s 循环计时)#define uchar unsigned char/ 无符号字符型占八位数,表示范围0255#define uint unsigned int /无符号整型,占 16 位数,表
27、示范围sbit dula=P2A6;/申明U1锁存器锁存端段选sbit wela=P2A7;/申明U2锁存器锁存位选sbit led1=P1A0;/ 申明灯 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=0x
28、01;设置定时器0和1为工作方式1 (M1M0为01, 0001 00 THO= (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;/ 启动定时器 0TR1=1;/ 启动定时器 1while(1)/程序停止在这里不停的对数码管动态扫描同时等待中断的
29、发生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); /延时P0=tablege; / 送入段选信号dula=0;/ 关闭 U1 锁存器P0=0xff;/ 送位选数据前关闭所有显示,防止打开位选锁存器时wela=1;/ 原来的段选数据通过位
30、选锁存器造成混乱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 次 , 时间间隔 200msnum1=0; / 然后把 num1 清
31、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 后归 0num=0;shi=num/10; / 把一个 2 位数分离后分别送数码管显示,十位数 ge=num%10; / 个位数#include <re
32、g52.h> /52 系列单片机头文件 (目标:用定时器 0 的方式 1 实现第 一个灯管以200ms闪烁;用定时器1的方式1实现数码管前两位59s循环计时)/ 无符号字符型#define uchar unsigned char 占八位数,表示范围 0255#define uint unsigned int/ 无符号整型,占 16位数,表示范围sbit dula=P2A6;/申明U1锁存器锁存端段选sbit wela=P2A7;/申明U2锁存器锁存位选sbit led1=P1A0;/申明灯 1 点 0uchar code table=/ 共阴极数码管 0123456789abcdef0x
33、3f,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 ( M1M(为01, 0001 0001 )TH0= (65535-50000)/256;/ 装初值 12.00M 晶振定时 50s 数为 50000TL0= (65535-50000)%256;TH1= (65535-
34、50000)/256;/ 装初值 12.00M 晶振定时 50s 数为 50000TL1= (65535-50000)%256;EA=1;/ 开总中断ET0=1; /开定时器 0 中断ET1=1; /开定时器 1 中断TR0=1;/ 启动定时器 0TR1=1;/ 启动定时器 1 while(1)/ 程序停止在这里不停的对数码管动态扫描同时等待中断的发生display(shi,ge);void display (uchar shi,uchar ge)/ 控制数码管dula=1;/ 打开 U1 锁存端 段选P0=tableshi; /送入段选信号dula=0;/ 关闭 U1 锁存器P0=0xff;
35、/ 送位选数据前关闭所有显示,防止打开位选锁存器时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>O
36、;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=P1A0;II声明单片机 P1 口的第一位uchar num;void main ()TMOD=0x01;设置定时器0为工作方式1 (M1M(为01)THO= (65535-50000)/256;/ 装初值 12.00M 晶振定时 50ms数为 50000 TL
37、0= (65535-50000)%256;EA=1;/ 开总中断ET0=1; / 开定时器 0 中断TR0=1;/ 启动定时器 0while(1)/ 程序停止在这里等待中断的发生if(num=200)/ 判断一次是否到 20num=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
38、 点 0 二极 管100ms闪烁,若num=10则0.05s闪烁,换句话控制 5000或者num都可以控制时 间。)#define uchar unsigned char#define uint unsigned intsbit led1=P1A0;II声明单片机 P1 口的第一位uchar num;void main ()TM0D=0x01;设置定时器0为工作方式1( M1M(为01)TH0= (65535-5000)/256;/ 装初值 12.00M 晶振定时 50ms数为 50000TL0= (65535-5000)%256;EA=1;/ 开总中断ET0=1; / 开定时器 0 中断TR
39、0=1;/ 启动定时器 0while(1)/ 程序停止在这里等待中断的发生if(num=20)/ 判断一次是否到 20num=0; /然后把num清0重新再计数20次 led1=led1; / 让发光管状态取反void T0_time()interrupt 1TL0= (65535-5000)%256;num+; /num 加上 1 #include <reg52.h> /52 系列单片机头文件 (目标:中断程序,控制 1 点 0 口灯 的亮灭,时间间隔 1s)#define uchar unsigned char#define uint unsigned intsbit led1
40、=P1A0;II声明单片机 P1 口的第一位uchar num;void main ()TMOD=0x01;设置定时器0为工作方式1 (M1M(为01)THO= (65535-50000)/256;/ 装初值 12.00M 晶振定时 50s 数为 50000TL0= (65535-50000)%256;EA=1;/ 开总中断ET0=1; / 开定时器 0 中断TR0=1;/ 启动定时器 0while(1)/ 程序停止在这里等待中断的发生if(num=20)/ 判断一次是否到 20num=0; / 然后把 num 清 0 重新再计数 20 次 led1=led1; / 让发光管状态取反void
41、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=P1A0;II声明单片机 P1 口的第一位uchar num;void main ()TMOD=0x01;设置定时器0为工作方式1 (M1M(为01)THO= (655
42、36-50000)/256;/ 装初值 12.00M 晶振定时 50s 数为 50000TL0= (65536-50000)%256;EA=1;/ 开总中断ET0=1; / 开定时器 0 中断TR0=1;/ 启动定时器 0while(1);/程序停止在这里等待中断的发生if(num=20)/ 判断一次是否到 20num=0; / 然后把num清0重新再计数20次led1=led1; / 让发光管状态取反void T0_time()interrupt 1TH0= (65536-50000)/256;/ 重装初值TL0= (65536-50000)%256;num+;/num 加上 1#inclu
43、de <reg52.h>/52 系列单片机头文件 (目标:中断程序,控制蜂鸣器,加入蜂鸣器响,然后跳过)#define uchar unsigned char #define uint unsigned intsbit led1=P1A0;II声明单片机 P1 口的第一位uchar num;void main ()TMOD=0x01;设置定时器0为工作方式1 (M1M(为01)THO= (65536-50000)/256;/ 装初值 12.00M 晶振定时 50s 数为 50000 TL0= (65536-50000)%256;EA=1;/ 开总中断ET0=1; / 开定时器 0
44、中断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; 然后蜂鸣器响,时间间隔
45、0.24182112 ;总循环时间 2.63s 一循环循环。后加停止程序)#define uchar unsigned char#define uint unsigned intsbit dula=P1A7;/申明U1锁存器锁存端段选sbit f=P0A0;/声明单片机 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;nu
46、m<=9;num+)P1=tablenum; dula=0; delayms(100);/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫秒约 0.3 秒/ 控制蜂鸣器响f=1;delayms(100);/ 延时 500 毫秒约 0.3 秒/ 程序停止到这里while(1) ;void delayms (uint xms)/x=xms 即延时约为 xms 毫秒uint x, y ;for (x=xms;x>0;x-)for (y=300;y>0;y-);#include <reg52.h> /52 系列单片机头文件 (目标:用单片机和共阳极数码管, 控制依
47、次显示 0到 9,数字间的时间间隔 0.2418s; 然后蜂鸣器响,时间间隔 0.24182112 ;总循环时间 2.63s 一循环循环)#define uchar unsigned char#define uint unsigned intsbit dula=P1A7;/申明U1锁存器锁存端段选uchar num;/ 共阳极数字: 0123456789abcdefguchar code table= 0xc0,0xf9,0xa4, 0xb0, 0x99,0x92,0x82,0xf8, 0x80,0x90;void delayms(uint) ;void main ()while(1)秒约 0
48、.3 秒f=1;delayms(100);for(num=0;num<=9;num+)f=0;dula=1;P1=tablenum;dula=0;delayms(100);/ 控制蜂鸣器响/ 控制蜂鸣器的不响/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫延时 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 系列单片机头文件 (目标
49、:用单片机和共阳极数码管, 控制依次显示 0到 9,r 然后蜂鸣器响,时间间隔 0.3s ;2.40 秒一循环循环)#define uchar unsigned char#define uint unsigned intsbit dula=P1A7;/申明U1锁存器锁存端段选sbit f=P0;/声明单片机 P0 口的第一位uchar num;uchar code table=0xc0,0xf9,0xa4, 0xb0,/ 共阳极数字: 0123456789abcdefg0x99,0x92,0x82,0xf8,0x80,0x90;void delayms(uint) ;void main ()w
50、hile(1)for(num=0;num<=9;num+)f=0;/ 控制蜂鸣器的不响秒约 0.3 秒void delayms (uint xms)dula=1;P1=tablenum;dula=0;delayms(100);f=1; / 控制蜂鸣器响/ 打开 U1 锁存端/ 送入位选信号/ 关闭 U1 锁存器/ 延时 500 毫delayms(100);延时 500 毫秒约 0.3 秒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=P1A7;/申明U1锁存器锁存端段选sbit f=P0;/声明单片机 P0 口的第一位uchar
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030佛得角电子商务行业市场分析投资评估规划研究报告
- 2025-2030乍得生物制药行业技术研究市场现状分析投资评估规划报告
- 2025-2030中国预制菜行业消费习惯渠道变革及品牌竞争格局研究报告
- 2026内蒙古乌海市乌达区人民医院招聘6人备考题库附答案详解(模拟题)
- 2026广西钦州市浦北县专场集中招聘急需紧缺人才和学科专任教师127人备考题库附答案详解(能力提升)
- 2026广西玉林市第一人民医院年招聘编外聘用人员14人备考题库(第二批)及一套完整答案详解
- 2026北京师范大学保定实验学校教师招聘50人备考题库含答案详解(突破训练)
- 2026湖南怀化市溆浦县卫健局招聘乡镇卫生院临聘专技人员27人备考题库及答案详解(真题汇编)
- 2026黑龙江大兴安岭塔河县乡镇卫生院招聘医学毕业生3人备考题库含答案详解(轻巧夺冠)
- 2026中国华电集团有限公司青海分公司所属基层企业面向华电系统内外招30人聘备考题库及答案详解(名师系列)
- 中国地域性文化课件
- 2025至2030中国超导市场发展现状与前景展望预测研究报告版
- 植物化学保护试题及答案
- GB/T 3917.3-2025纺织品织物撕破性能第3部分:梯形试样撕破强力的测定
- (高清版)DB36∕T 1324-2020 公路建设项目档案管理规范
- 药物安全性监测-洞察分析
- 2025年厦门地铁运营公司招聘笔试参考题库含答案解析
- 2025年广西桂林市考试招聘部队随军家属33人高频重点提升(共500题)附带答案详解
- 班组长晋升述职报告
- 旅游行业兼职业务员聘用合同
- 3.1《中国科学技术史序言(节选)》课件
评论
0/150
提交评论