久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1434|回復: 0
打印 上一主題 下一主題
收起左側

交通信號燈程序添加直流電機程序跪求

[復制鏈接]
跳轉到指定樓層
樓主
ID:768393 發表于 2020-6-3 14:47 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
求各位大佬我這個程序是交通信號燈,需要在報警的時候加一個直流電機轉動,應該怎樣添加程序
#include<reg52.h>    //頭文件
#include"lcd.h"
typedef unsigned int u16;   //對數據類型進行聲明定義
typedef unsigned char u8;
uchar show_l[] = {0x3c,0x42,0x42,0x3c,0x42,0xc3,0x7e,0x24};   //無符號字符型
unsigned char Second[]="Second:         ";  //8
unsigned char Help_msg[]="your call 110  ";
unsigned char Clean_msg[]="                ";
sbit  YELLOW =P1^0;    // 黃燈
sbit  GREEN =P1^1;    // 綠燈
sbit  RED =P1^2;    // 紅燈
sbit  BEEP=P1^4;     //  報警
sbit  KEY_1=P3^4;    //  按鍵1按下紅燈時間增加
sbit  KEY_2=P3^5;    //  按鍵2按下紅燈時間減少
sbit  KEY_3=P1^3;    //  按鍵3按下報警
sbit  E1_138=P3^3;    // 74LS138E1    譯碼器
sbit  A_138=P3^0;    //  74LS138A
sbit  B_138=P3^1;    //  74LS138B
sbit  C_138=P3^2;    //  74LS138C
#define DZ P0 //定義點陣驅動IO
u8 count;
u8 green_count =10;   計時
void leddz_show(uchar *show);
void Timer0Init()   定時器0
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XFC; //給定時器賦初值,定時1ms  高電平
TL0=0X18;     低電平
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器   
}
void Delay10us(u8 z)//延時函數
{
  u8 x,y;
  for(x=z;x>0;x--)
  for(y=210;y>0;y--);
}
void Delay10Ms(u8 z)//延時函數
{
        unsigned char i, j;
while(z--)
{
        i = 150;
        j = 200;
        do
        {
                while (--j);
        } while (--i);
}
}
void main()
{
   count=0;// 循環的周期
         E1_138 = 0;  //關閉點陣顯示
                DZ = 0;
   Timer0Init();//初始化計數器
         LcdInit();   //LCD1602初始化
   YELLOW = 1; //黃燈關閉
   GREEN  = 1;  //綠燈關閉
         RED    =1;   //紅燈關閉
         LcdWriteStr(1,16,Second); //LCD1602顯示 第一行
   while(1)   無限循環
   {
                if(KEY_1 & KEY_2 & KEY_3) //如果沒有按鍵按下
                {
                        if( count >= (13+green_count))  //如果計數超過1個周期重新計數
                        {
                                count=0;
                        }
                        if(count<10)//如果在15秒以內亮綠燈
                        {
                                LcdWriteCom(0x88);
                                LcdWriteData((10-count)/10+0x30);
                                LcdWriteData((10-count)%10+0x30);
                                GREEN = 1;
                                YELLOW = 1;
                                RED = 0;
                        }
                        else if(count<13)//如果超過15秒低于18秒亮黃燈
                        {
                                LcdWriteCom(0x88);
                                LcdWriteData((13-count)/10+0x30);
                                LcdWriteData((13-count)%10+0x30);
                                GREEN = 1;
                                YELLOW = 0;
                                RED = 1;
                        }
                        else if( count< (green_count+13) )//如果超過紅燈18秒亮紅燈
                        {
                                LcdWriteCom(0x88);
                                LcdWriteData(((13+green_count)-count)/10+0x30);
                                LcdWriteData(((13+green_count)-count)%10+0x30);
                                GREEN = 0;
                                YELLOW =1;
                                RED = 1;
                        }
                }
                else//如果有按鍵按下
                {
                 if(KEY_1 == 0) //如果按下按鍵1
                 {
                         if(green_count<=30) //如果紅燈時間沒有超過30
                         {
                                 green_count ++;  //紅燈時間增加
                         }
                         while(!KEY_1);//等待按鍵1釋放
                 }
                 if(KEY_2  == 0)//如果按下按鍵2
                 {
                         if(green_count>=5)//如果紅燈時間大于5
                         {
                                 green_count --;//紅燈時間減少
                         }
                         while(!KEY_2 == 0); //等待按鍵2釋放
                 }
                 if(KEY_3 == 0)//如果按下按鍵3
                 {
                         BEEP = 0;  //蜂鳴器報警
                         LcdWriteStr(2,16,Help_msg);//顯示報警信息
                         E1_138 = 1;//使能點陣
                         while(!KEY_3)//等待釋放按鍵3
                         {
                                        leddz_show(show_l);
                         }
                         E1_138 = 0;//釋放按鍵后關閉點陣 關閉蜂鳴器 清除LCD1602警報信息
                         BEEP = 1;  蜂鳴器
                         LcdWriteStr(2,16,Clean_msg);   清除
                 }
                }
  }
}   
void Timer0() interrupt 1   中斷函數0定時器0
{
static u16 i;   兩字節的無符號整型  靜態分配
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
i++;
if(i==1000)
{
  i=0;
  count ++;
}
}
void leddz_show(uchar *show)
{
  uchar i;
  for(i =0;i<8;i++)
        {
                P0 = *show++;
                P3 = i | 0XF8;
                Delay10us(10);
                P0 = 0;//消影
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久国产精品免费免费男同 | 三级av在线| 国产精品毛片av一区 | 6080yy精品一区二区三区 | 91精品国产乱码久久久久久久 | 日本公妇乱淫xxxⅹ 国产在线不卡 | 成人精品在线观看 | 日本不卡一区二区三区 | 久久精品在线 | 国产精品久久久 | 国产成在线观看免费视频 | 中文字幕免费在线 | 欧美在线视频免费 | 国产激情视频 | 成人小视频在线观看 | 狠狠的干狠狠的操 | 午夜精品久久久久久久久久久久久 | 中国av在线免费观看 | 久久国产综合 | 99精品国产一区二区青青牛奶 | 综合色播 | www.9191| 国产农村一级国产农村 | 欧美视频成人 | 九九热精品视频 | 午夜理伦三级理论三级在线观看 | 国产免费一区二区三区最新6 | av一区二区三区 | 成人av电影在线观看 | 在线视频一区二区三区 | 国产视频精品免费 | 成人在线一区二区 | 在线一区二区三区 | 欧美大片黄 | 99精品视频在线 | 中文字幕黄色大片 | 国产精品黄色 | 高清视频一区二区三区 | 久久久女女女女999久久 | 天天操一操 | h片免费看|