加纳足球吧 关注:178,880贴子:8,277
  • 5回复贴,共1

来吧宝贝哈哈

取消只看楼主收藏回复

#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define E P20#define RW P21#define DI P22#define CS2 P23#define CS1 P24#define LCD P0#define RS DIsbit P20=P2^0;sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P24=P2^4;unsigned char code tuxing2[lbk][rbk]={0x00,0x00,0x00,0x00,0xC0,0x60,0x30,0x18,0x0C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x0C,0x08,0x08,0x10,0x30,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x81,0x00,0x00,0x00,0x1C,0x34,0x22,0x22,0x36,0x1C,0x00,0xC0,0x40,0x00,0x00,0x1E,0x22,0x22,0x26,0x1C,0x00,0x00,0x01,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x70,0xC0,0x80,0x00,0x04,0x1C,0x30,0x40,0x80,0x86,0x07,0x04,0x04,0x04,0x00,0x80,0x80,0xC0,0x7C,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x06,0x0C,0x08,0x18,0x11,0x11,0x31,0x21,0x21,0x21,0x31,0x10,0x18,0x08,0x0C,0x04,0x06,0x03,0x00,0x00,0x00,0x00/*"未命名文件32*32",0*/};void delay(){uchar i,j,k;for(i=0;i<255;i++){for(j=0;j<255;j++){for(k=0;k<1;k++);}}}void LCD_Command1(uchar ch){CS1=0;CS2=0;RW=0;RS=0;LCD=ch;CS1=1;E=1;E=0;CS1=0;}void LCD_Command2(uchar ch){CS1=0;CS2=0;RW=0;RS=0;LCD=ch;CS2=0;E=1;E=0;CS2=0;}void LCD_Data1(uchar ch){


IP属地:江苏来自iPhone客户端1楼2024-04-29 15:07回复
    CS1=0;
    CS2=0;
    RW=0;
    RS=1;
    LCD=ch;
    CS2=1;
    E=1;
    E=0;
    CS2=0;
    }
    void main()
    {
    uchar i,j,k;
    LCD_Command1(0x3f);
    //while(1)
    //{
    for(i=0;i<4;i++)
    {
    LCD_Command1(0xB8+i);
    LCD_Command1(0x40);//设定列的指令可以工作
    for(j=0;j<32;j++)
    {
    LCD_Data1(tuxing2[j+i*32]);
    }
    }
    for(i=0;i<4;i++)
    {
    LCD_Command1(0xB8+i);
    LCD_Command1(0x40+0x10);//设定列的指令可以工作
    for(j=0;j<32;j++)
    {
    LCD_Data1(tuxing2[j+i*32]);
    }
    }
    //}
    while(1);
    }


    IP属地:江苏来自iPhone客户端3楼2024-04-29 15:20
    回复
      #include <reg51.h>
      #define uchar unsigned char
      #define uint unsigned int
      #define E P20
      #define RW P21
      #define DI P22
      #define CS2 P23
      #define CS1 P24
      #define LCD P0
      #define RS DI
      sbit P20=P2^0;
      sbit P21=P2^1;
      sbit P22=P2^2;
      sbit P23=P2^3;
      sbit P24=P2^4;
      unsigned char code tuxing2[]={
      0x00,0x00,0x00,0x00,0xC0,0x60,0x30,0x18,0x0C,0x04,0x04,0x04,0x04,0x04,0x04,0x04,
      0x04,0x04,0x04,0x04,0x0C,0x08,0x08,0x10,0x30,0x60,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0xFF,0x81,0x00,0x00,0x00,0x1C,0x34,0x22,0x22,0x36,0x1C,0x00,0xC0,
      0x40,0x00,0x00,0x1E,0x22,0x22,0x26,0x1C,0x00,0x00,0x01,0x1E,0xF0,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x1F,0x70,0xC0,0x80,0x00,0x04,0x1C,0x30,0x40,0x80,0x86,0x07,
      0x04,0x04,0x04,0x00,0x80,0x80,0xC0,0x7C,0x00,0x00,0x00,0x80,0xFF,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x03,0x06,0x0C,0x08,0x18,0x11,0x11,
      0x31,0x21,0x21,0x21,0x31,0x10,0x18,0x08,0x0C,0x04,0x06,0x03,0x00,0x00,0x00,0x00/*"未命名文件32*32",0*/
      };
      void delay()
      {
      uchar i,j,k;
      for(i=0;i<255;i++)
      {
      for(j=0;j<255;j++)
      {
      for(k=0;k<1;k++);
      }
      }
      }
      void LCD_Command1(uchar ch)
      {
      CS1=0;
      CS2=0;
      RW=0;
      RS=0;
      LCD=ch;
      CS1=1;
      E=1;
      E=0;
      CS1=0;
      }
      void LCD_Command2(uchar ch)
      {
      CS1=0;
      CS2=0;
      RW=0;
      RS=0;
      LCD=ch;
      CS2=0;
      E=1;
      E=0;
      CS2=0;
      }
      void LCD_Data1(uchar ch)
      {
      CS1=0;
      CS2=0;
      RW=0;
      RS=1;
      LCD=ch;
      CS1=1;
      E=1;
      E=0;
      CS1=0;
      }
      void LCD_Data2(uchar ch)
      {
      CS1=0;
      CS2=0;
      RW=0;
      RS=1;
      LCD=ch;
      CS2=1;
      E=1;
      E=0;
      CS2=0;
      }
      void main()
      {
      uchar i,j,k;
      LCD_Command1(0x3f);
      //while(1)
      //{
      for(i=0;i<4;i++)
      {
      LCD_Command1(0xB8+i);
      LCD_Command1(0x40);//设定列的指令可以工作
      for(j=0;j<32;j++)
      {
      LCD_Data1(tuxing2[j+i*32]);
      }
      }
      for(i=0;i<4;i++)
      {
      LCD_Command1(0xB8+i);
      LCD_Command1(0x40+0x10);//设定列的指令可以工作
      for(j=0;j<32;j++)
      {
      LCD_Data1(tuxing2[j+i*32]);
      }
      }
      //}
      while(1);
      }


      IP属地:江苏来自iPhone客户端4楼2024-04-29 15:27
      回复
        #include <reg52.h>
        //数码管选择位
        sbit EW_1=P1^0;
        sbit EW_2=P1^1;
        sbit NS_1=P1^2;
        sbit NS_2=P1^3;
        sbit add_red_time=P1^4; //加红灯时间按钮
        sbit add_green_time=P1^5; //加绿灯时间按钮
        sbit reduce_red_time=P1^6; //减红灯时间按钮
        sbit reduce_green_time=P1^7; //减绿灯时间按钮
        sbit NS_led=P2^6; //南北向灯紧急控制按钮
        sbit EW_led=P2^7; //东西向灯紧急控制按钮
        sbit EW_red=P2^0; //东西向红灯
        sbit EW_green=P2^1; //东西向绿灯
        sbit EW_yellow=P2^2; //东西向黄灯
        sbit NS_red=P2^3; //南北向红灯
        sbit NS_green=P2^4; //南北向绿灯
        sbit NS_yellow=P2^5; //南北向黄灯
        char count=0;//计数,count=20表示1s
        char red_time=30;//红灯停留时间
        char green_time=25;//绿灯停留时间
        char yellow_time=0;//黄灯停留时间
        char NS_second=0;//南北红绿灯秒计时
        char EW_second=0; //东西红绿灯秒计时
        char code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表,仿真中用的是共阴数码管,所以使用时需对段码取反
        char display_data[4]={0};//show_data[0]显示南北计时十位,show_data[1]显示南北计时个位,show_data[2]显示东西计时十位,show_data[3]显示东西计时个位
        char temp_data[4]={0};
        char NS_R_G_mode=0;//南北红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
        char EW_R_G_mode=1;//东西红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
        bit NS_R_G_flag=0;//南北红绿灯标识位 0 红灯 1 绿灯
        bit EW_R_G_flag=0;//东西红绿灯标识位 0 红灯 1 绿灯
        void delay(unsigned int i)//简单延时
        {
        while(i--);
        }
        void Timer_init()//定时器初始化
        {
        //定时50ms
        TMOD = 0x01;//定时器方式1
        TH0 = 0x3C;//定时器赋初值
        TL0 = 0xB0;
        EA = 1;//开启总中断
        ET0 = 1;//开启定时器中断
        TR0 = 1;//开启定时器
        }
        void Init()//系统初始化
        {
        P0=0x00;
        P2=0x00;
        EW_1=1;
        EW_2=1;
        NS_1=1;
        NS_2=1;
        NS_led=1;
        EW_led=1;
        NS_second=red_time;//默认初始时南北向灯亮红灯,并赋红灯时长
        EW_second=green_time;//默认初始时东西向灯亮绿灯,并赋绿灯时长
        yellow_time=red_time-green_time;//黄灯时间为红灯时间与绿灯时间差
        Timer_init();
        }
        void NS_SMG_drive(char *buff)//南北向数码管驱动
        {
        //显示十位
        NS_1=0;
        NS_2=1;
        P0=~smgduan[buff[0]]; //段码取反
        delay(5); //间隔一段时间扫描
        P0=0x00;//消隐
        //显示个位
        NS_1=1;
        NS_2=0;
        P0=~smgduan[buff[1]];
        delay(5);
        P0=0x00;
        //关闭南北向数码管
        NS_1=1;
        NS_2=1;
        }


        IP属地:江苏来自iPhone客户端5楼2024-04-29 16:14
        回复
          //数码管选择位
          sbit EW_1=P1^0;
          sbit EW_2=P1^1;
          sbit NS_1=P1^2;
          sbit NS_2=P1^3;
          sbit add_red_time=P1^4; //加红灯时间按钮
          sbit add_green_time=P1^5; //加绿灯时间按钮
          sbit reduce_red_time=P1^6; //减红灯时间按钮
          sbit reduce_green_time=P1^7; //减绿灯时间按钮
          sbit NS_led=P2^6; //南北向灯紧急控制按钮
          sbit EW_led=P2^7; //东西向灯紧急控制按钮
          sbit EW_red=P2^0; //东西向红灯
          sbit EW_green=P2^1; //东西向绿灯
          sbit EW_yellow=P2^2; //东西向黄灯
          sbit NS_red=P2^3; //南北向红灯
          sbit NS_green=P2^4; //南北向绿灯
          sbit NS_yellow=P2^5; //南北向黄灯
          char count=0;//计数,count=20表示1s
          char red_time=30;//红灯停留时间
          char green_time=25;//绿灯停留时间
          char yellow_time=0;//黄灯停留时间
          char NS_second=0;//南北红绿灯秒计时
          char EW_second=0; //东西红绿灯秒计时
          char code smgduan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表,仿真中用的是共阴数码管,所以使用时需对段码取反
          char display_data[4]={0};//show_data[0]显示南北计时十位,show_data[1]显示南北计时个位,show_data[2]显示东西计时十位,show_data[3]显示东西计时个位
          char temp_data[4]={0};
          char NS_R_G_mode=0;//南北红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
          char EW_R_G_mode=1;//东西红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
          bit NS_R_G_flag=0;//南北红绿灯标识位 0 红灯 1 绿灯
          bit EW_R_G_flag=0;//东西红绿灯标识位 0 红灯 1 绿灯
          void delay(unsigned int i)//简单延时
          {
          while(i--);
          }
          void Timer_init()//定时器初始化
          {
          //定时50ms
          TMOD = 0x01;//定时器方式1
          TH0 = 0x3C;//定时器赋初值
          TL0 = 0xB0;
          EA = 1;//开启总中断
          ET0 = 1;//开启定时器中断
          TR0 = 1;//开启定时器
          }
          void Init()//系统初始化
          {
          P0=0x00;
          P2=0x00;
          EW_1=1;
          EW_2=1;
          NS_1=1;
          NS_2=1;
          NS_led=1;
          EW_led=1;
          NS_second=red_time;//默认初始时南北向灯亮红灯,并赋红灯时长
          EW_second=green_time;//默认初始时东西向灯亮绿灯,并赋绿灯时长
          yellow_time=red_time-green_time;//黄灯时间为红灯时间与绿灯时间差
          Timer_init();
          }
          void NS_SMG_drive(char *buff)//南北向数码管驱动
          {
          //显示十位
          NS_1=0;
          NS_2=1;
          P0=~smgduan[buff[0]]; //段码取反
          delay(5); //间隔一段时间扫描
          P0=0x00;//消隐
          //显示个位
          NS_1=1;
          NS_2=0;
          P0=~smgduan[buff[1]];
          delay(5);
          P0=0x00;
          //关闭南北向数码管
          NS_1=1;
          NS_2=1;
          }


          IP属地:江苏来自iPhone客户端6楼2024-04-29 16:14
          回复
            //数码管选择位
            sbit EW_1=P1^0;
            sbit EW_2=P1^1;
            sbit NS_1=P1^2;
            sbit NS_2=P1^3;
            sbit add_red_time=P1^4; //加红灯时间按钮
            sbit add_green_time=P1^5; //加绿灯时间按钮
            sbit reduce_red_time=P1^6; //减红灯时间按钮
            sbit reduce_green_time=P1^7; //减绿灯时间按钮
            sbit NS_led=P2^6; //南北向灯紧急控制按钮
            sbit EW_led=P2^7; //东西向灯紧急控制按钮
            sbit EW_red=P2^0; //东西向红灯
            sbit EW_green=P2^1; //东西向绿灯
            sbit EW_yellow=P2^2; //东西向黄灯
            sbit NS_red=P2^3; //南北向红灯
            sbit NS_green=P2^4; //南北向绿灯
            sbit NS_yellow=P2^5; //南北向黄灯
            char count=0;//计数,count=20表示1s
            char red_time=30;//红灯停留时间
            char green_time=25;//绿灯停留时间
            char yellow_time=0;//黄灯停留时间
            char NS_second=0;//南北红绿灯秒计时
            char EW_second=0; //东西红绿灯秒计时
            char code []={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管段码表,仿真中用的是共阴数码管,所以使用时需对段码取反
            char display_data[4]={0};//show_data[0]显示南北计时十位,show_data[1]显示南北计时个位,show_data[2]显示东西计时十位,show_data[3]显示东西计时个位
            char temp_data[4]={0};
            char NS_R_G_mode=0;//南北红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
            char EW_R_G_mode=1;//东西红绿灯亮模式 0 红灯 1 绿灯 2 黄灯
            bit NS_R_G_flag=0;//南北红绿灯标识位 0 红灯 1 绿灯
            bit EW_R_G_flag=0;//东西红绿灯标识位 0 红灯 1 绿灯
            void delay(unsigned int i)//简单延时
            {
            while(i--);
            }
            void Timer_init()//定时器初始化
            {
            //定时50ms
            TMOD = 0x01;//定时器方式1
            TH0 = 0x3C;//定时器赋初值
            TL0 = 0xB0;
            EA = 1;//开启总中断
            ET0 = 1;//开启定时器中断
            TR0 = 1;//开启定时器
            }
            void Init()//系统初始化
            {
            P0=0x00;
            P2=0x00;
            EW_1=1;
            EW_2=1;
            NS_1=1;
            NS_2=1;
            NS_led=1;
            EW_led=1;
            NS_second=red_time;//默认初始时南北向灯亮红灯,并赋红灯时长
            EW_second=green_time;//默认初始时东西向灯亮绿灯,并赋绿灯时长
            yellow_time=red_time-green_time;//黄灯时间为红灯时间与绿灯时间差
            Timer_init();
            }
            void NS_SMG_drive(char *buff)//南北向数码管驱动
            {
            //显示十位
            NS_1=0;
            NS_2=1;
            P0=~smgduan[buff[0]]; //段码取反
            delay(5); //间隔一段时间扫描
            P0=0x00;//消隐
            //显示个位
            NS_1=1;
            NS_2=0;
            P0=buff[1]];
            delay(5);
            P0=0x00;
            //关闭南北向数码管
            NS_1=1;
            NS_2=1;
            }


            IP属地:江苏来自iPhone客户端7楼2024-04-29 16:16
            回复