加纳足球吧 关注:178,880贴子:8,266
  • 6回复贴,共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回复


    IP属地:江苏来自iPhone客户端2楼2024-04-29 15:18
    回复
      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
              回复