找回密码
 注册
关于网站域名变更的通知
查看: 355|回复: 1
打印 上一主题 下一主题

51单片机流水灯及计数器程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2018-10-29 11:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
51单片机流水灯及计数器程序 ) Q/ V4 x8 G  i$ _1 f/ D

; x* n! ~( O  R$ j2 O
! m# _% E5 w6 b
# p  |' ^* z1 K+ }8 l! `. ~: X, E/ b

2 }& [  m5 E% ^
# \: M4 K, n7 E8 J! y, n
+ `: k( N/ Q5 G+ W8 y/ t
  • #include<reg51.h>
  • unsigned char led[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
  • unsigned charled_mod[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
  • unsigned char j=0;
  • unsigned char LCD_Status;
  • bit dir=0,run=0;
  • sbit RS=P1^6;
  • sbit RW=P1^7;
  • void delay(unsigned int count)   //延时函数
  • {  unsigned char i;
  •    while(count--)
  •    for(i=0;i<120;i++);
  • }
  • unsigned char Busy_Check()    //检查忙函数
  • {  RS=0;RW=1;
  •    P2=0x4f;
  •    delay(2);
  •    LCD_Status=P0;       //读出LCD的状态
  •    delay(2);
  •    P2=0x8f;
  •    return LCD_Status;
  • }
  • void  wcmd(unsigned char cmd)   //写命令函数
  • {  while((Busy_Check() &0x80)==0x80);
  •    RS=0;RW=0;
  •    P2=0x4f;
  •    P0=cmd;              //命令由P0口送入LCD
  •    delay(2);
  •    P2=0x8f;
  • }
  • void  wdat(unsigned char dat)   //写数据函数
  • {  while((Busy_Check() &0x80)==0x80);
  •    RS=1;RW=0;
  •    P2=0x4f;
  •    P0=dat;                 //数据由P0口送入LCD
  •    delay(2);
  •    P2=0x8f;
  • }
  • void LCD_init()       //初始化函数
  • {  wcmd(0x38);         //38H=0011 1000,使用8位,用5×7的字型,2行
  •    delay(20);
  •    wcmd(0x01);         //01H=0000 0001,清屏
  •    delay(20);
  •    wcmd(0x06);         //06H=0000 0110,字符不动,光标自动右移一格
  •    delay(20);
  •    wcmd(0x0e);          //0eH=0000 1110,开显示,有光标,字符不闪烁
  •    delay(20);
  • }
  • void main(){          //主函数,流水灯运行
  • signed char j;
  • IT1=1;
  • EX1=1;
  • EA=1;
  • PX1=0;
  • while(1){
  • switch(P3&0x3c){
  • case 0x38:run=1;dir=1;break;
  • case 0x34:run=0;dir=0;break;
  • case 0x2c:dir=0;break;
  • case 0x1c:dir=1;break;}
  •     if(run==1)
  •     if(dir==1)
  •       for(j=0;j<=7;j++){
  •             P2=led[j];
  •       delay(500);
  •       }
  •         else
  •           for(j=7;j>=0;j--){
  •             P2=led[j];
  •       delay(500);
  •             }
  •     else P2=0xff;
  • }}
  • K2() interrupt 2{          //中断函数,LCD显示,计数开始
  • LCD_init();
  • wcmd(0x80+00);
  • wdat('1');
  • wdat('1');
  • wdat('1');
  • wdat('2');
  • wdat('2');
  • wdat('2');
  • wdat('3');
  • wdat('3');
  • wdat('3');
  • wdat('4');
  • wdat('4');
  • wdat('4');
  • wcmd(0x80+0x40);
  • wdat('B');
  • wdat('1');
  • wdat('1');
  • wdat('2');
  • wdat('2');
  • wdat('3');
  • wdat('3');
  • wdat('4');
  • wdat('4');
  • for(j=0;j<=99;j++)
  • {P2=0x8f;
  • P0=led_mod[j/10];
  • P2=0x1f;
  • P0=led_mod[j%10];
  • delay(500);
  • P0=0;}
  • }
    - F" f0 l* }0 R% E& i% t/ U9 \2 h" R
/ W+ z- @2 Q5 ^) Q% ^% L9 Q

! E3 y& j4 i1 R/ [
! c3 D7 }( d+ o; v
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-10-9 10:01 , Processed in 0.140625 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表