《基于单片机的LED数码管实验设计程序(附电路原理图).doc》由会员分享,可在线阅读,更多相关《基于单片机的LED数码管实验设计程序(附电路原理图).doc(9页珍藏版)》请在三一办公上搜索。
1、基于单片机的LED数码管实验设计程序1/用LED数码静态显示数字.#include / 包含51单片机寄存器定义的头文件void main()P3=0x7f; /P3.8引脚输出低电平,数码显示器接通电源准备点亮P0=0x92; /让P0口输出数字5的段码92H附上: 1.数码管共阴极: 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,/*9*/ 2.数码管共阳极: 0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0x
2、B0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/2./用LED数码显示器循环显示数字09.#includevoid delay( int x ) /延时 int i,j; for(i=0;ix;i+) for(j=0;j120;j+); int code c = /数码管显示09的段码表. 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,
3、/*9*/ ;int a=0;void main() while(1) P3=0x7F; /P3.8引脚输出低电平,数码显示器DS0接通电源工作 P0=ca; /让P0口输出数字的段码 delay(1000); a=(a+1)%10;3./用数码管慢速动态扫描显示数字1234#include void delay(void) /延时函数,延时一段时间unsigned char i,j;for(i=0;i250;i+) for(j=0;j250;j+);void main( )/主函数 while(1) /无限循环P3=0x7f; /P3.8引脚输出低电平,L8点亮P0=0x06; /数字1的段
4、码delay();P3=0xbf ; /P3.7引脚输出低电平,L7点亮P0=0x5B; /数字2的段码delay(); P3=0xdf; /P3.6引脚输出低电平,L6点亮P0=0x4F; /数字3的段码delay();P3=0xef; /P3.5引脚输出低电平,L5点亮P0=0x66; /数字4的段码delay();P3=0xff; 4./用LED数码显示器伪静态显示数字1234#include void delay(void) /延时函数,延时约0.6毫秒unsigned char i;for(i=0;i200;i+) ;void main(void)while(1) /无限循环P3=0
5、x7f; /P3.8引脚输出低电平,L8点亮P0=0x06; /数字1的段码delay();P3=0xbf ; /P3.7引脚输出低电平,L7点亮P0=0x5b; /数字2的段码delay(); P3=0xdf; /P3.6引脚输出低电平,L6点亮P0=0x4f; /数字3的段码delay();P3=0xef; /P3.5引脚输出低电平,L5点亮P0=0x66; /数字4的段码delay();P3=0xff; 5./数码秒表设计#include unsigned char code Tab10= 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,
6、/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,/*9*/; /共阴数码管显示09的段码表unsigned char int_time; /记录中断次数unsigned char second; /储存秒/*函数功能:快速动态扫描延时,延时约0.6毫秒*/void delay(void)unsigned char i;for(i=0;i200;i+);/*函数功能:显示秒入口参数:k出口参数:无*/void DisplaySecond(unsigned char k)P3=0xbf ; /P3.7引脚输出低电平 P0=Tabk/10
7、; /显示十位delay();P3=0x7f; /P3.8引脚输出低电平P0=Tabk%10; /显示个位delay();P3=0xff; /关闭所有数码管void main(void) /主函数TMOD=0x01; /使用定时器T0TH0=(65536-46083)/256; /将定时器计时时间设定为460831.085微秒/=50000微秒=50毫秒TL0=(65536-46083)%256;EA=1; /开启总中断ET0=1; /定时器T0中断允许TR0=1; /启动定时器T0开始运行int_time=0; /中断次数初始化second=0; /秒初始化 while(1)DisplayS
8、econd(second); /调用秒的显示子程序 /*/函数功能:定时器T0的中断服务程序/*void interserve(void ) interrupt 1 using 1 TR0=0; /关闭定时器T0int_time +; /每来一次中断,中断次数int_time自加1 if(int_time=20) /够20次中断,即1秒钟进行一次检测结果采样int_time=0; /中断次数清0second+; /秒加1if(second=60)second =0; /秒等于60就返回0 TH0=(65536-46083)/256; /重新给计数器T0赋初值TL0=(65536-46083)%
9、256;TR0=1; /启动定时器T0 6./LED时分秒数码时钟设计#include / 包含51单片机寄存器定义的头文件unsigned char Tab = 0x3F,/*0*/ 0x06,/*1*/ 0x5B,/*2*/ 0x4F,/*3*/ 0x66,/*4*/ 0x6D,/*5*/ 0x7D,/*6*/ 0x07,/*7*/ 0x7F,/*8*/ 0x6F,/*9*/;unsigned char int_time ; /中断次数计数变量unsigned char second; /秒计数变量unsigned char minute; /分钟计数变量unsigned char hou
10、r; /小时计数变量void delay(void) /延时函数,延时约0.6msunsigned char j;for(j=0;j200;j+);/*函数功能:显示秒的子程序入口参数:s*/void DisplaySecond(unsigned char s)P3=0xbf ; /P3.7引脚输出低电平 P0=Tabs/10;/显示十位delay();P3=0x7f; /P3.8引脚输出低电平P0=Tabs%10;/显示个位delay();P3=0xff; /关闭所有数码管/*函数功能:显示分钟的子程序入口参数:m*/void DisplayMinute(unsigned char m)P3
11、=0xf7; P0=Tabm/10;/显示个位delay();P3=0xef;P0=Tabm%10;delay();P3=0xdf; P0=0x40; /分隔符“-”的段码delay();P3=0xff; /关闭所有数码管/*函数功能:显示小时的子程序入口参数:h*/void DisplayHour(unsigned char h)P3=0xfd;P0=Tabh/10; /显示十位 delay();P3=0xfc;P0=Tabh%10; /显示个位delay(); P3=0xfb;P0=0x40;delay();P3=0xff;/关闭所有数码管/*函数功能:主函数*/void main(voi
12、d)TMOD=0x01; /使用定时器T0 EA=1; /开中断总允许ET0=1; /允许T0中断TH0=(65536-46083)/256; /定时器高八位赋初值TL0=(65536-46083)%256; /定时器低八位赋初值TR0=1;int_time=0; /中断计数变量初始化second=0; /秒计数变量初始化minute=0; /分钟计数变量初始化hour=0; /小时计数变量初始化while(1) DisplaySecond(second); /调用秒显示子程序delay();DisplayMinute(minute); /调用分钟显示子程序delay();DisplayHou
13、r(hour); delay(); /*函数功能:定时器T0的中断服务子程序*/void interserve(void ) interrupt 1 using 1 /using Time0int_time+;if(int_time=20)int_time=0; /中断计数变量清0second+; /秒计数变量加1if(second=60)second=0; /如果秒计满60,将秒计数变量清0minute+; /分钟计数变量加1if(minute=60)minute=0; /如果分钟计满60,将分钟计数变量清0hour+; /小时计数变量加1if(hour=24)hour=0; /如果小时计满24,将小时计数变量清0TH0=(65536-46083)/256; /定时器重新赋初值TL0=(65536-46083)%256;