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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2417|回復: 7
收起左側

關于騎自行車LED胸牌的單片機程序

[復制鏈接]
ID:1087674 發表于 2023-7-7 17:46 | 顯示全部樓層 |閱讀模式
想自行車后面裝一個LED胸牌做的顯示屏,這樣夜晚騎車安全點。自己不會寫。因為胸牌內置程序不能改,只能用單片機控制自動切換字體了。
這程序要求如下:

  開關打開,LED屏和單片機同時上電,LED屏初始化后,自動顯示“小心尾隨”。

下面為單片機需要的程序:

單片機上電后,輸入高電平,輸出高電平。//LED屏顯示“小心尾隨”字不變。

(1)當剎車時:輸入低電平,單片機輸出低電平350毫秒。//(此時等于手動按了下胸牌的切換鍵,LED屏顯示“剎車.....)

(2)當一直剎車時:輸入一直是低電平,單片機在步驟(1)輸出低電平350毫秒后保持輸出高電平。//(此時LED屏會一直顯示“剎車....”)

(3)當松開剎車時:輸入高電平,單片機輸出低電平350毫秒后恢復輸出高電平,然后再次輸出低電平350毫秒。//(此時LED屏跳過內置的滾動播放內容后顯示“小心尾隨”)

(4)再次剎車時和松開剎車時,程序又從以上(1)至(3)循環。
————————————————————————————————————————————————————————————————


是的,硬件我自己會搞,但不會編程,想編來騎自行車。買了個STC15W204S單片機,特別是那個延時不會弄。幫我看下下面自己糊弄的這個程序。
#include <reg52.h>
#define uint  unsigned int
sbit key  = P3^4;
sbit led  = P3^5;

初始輸入端口和輸出端口電平
/******************主程序**********************/
void main()
{
        while(1)
         {
                 if(key=0)                      //剎車
                 {
                    led=0;                       //輸出低電平,PNP三極管開啟,LED顯示“剎車”
                    delay(350);
                  }
                    if(key=1);                     //松開手摯
                 {
                    led=0;                        //輸出低電平,PNP三極管開啟,LED顯示“勿靠近”
                    delay(350);
                  }
   
                 if(key=0)                       //再次剎車
                 {
                    led=0;                     
                    delay(350);
                    led=0;                      //連續兩次輸出低電平,連續兩次開關PNP三極管,LED跳過閃爍程序后再次顯示“剎車”
                    delay(350);
                  }
         }
}

void delay_1ms(uint 350)
{
        uint i,j;
        for(i=0;i<350;i++)
           for(j=0;j<120;j++);
}
回復

使用道具 舉報

ID:161164 發表于 2023-7-8 11:27 | 顯示全部樓層
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint  unsigned int
  4. sbit key  = P3^4;
  5. sbit led  = P3^5;
  6. void Delay10ms()                //@12.000MHz
  7. {
  8.     unsigned char data i, j;

  9.     i = 117;
  10.     j = 184;
  11.     do
  12.     {
  13.         while (--j);
  14.     }
  15.     while (--i);
  16. }

  17. //初始輸入端口和輸出端口電平
  18. /******************主程序**********************/
  19. void main()
  20. {
  21.     bit key_old = 1;
  22.         uchar Output_cnt = 0;
  23.         uchar cnt_35 = 0;
  24.     while(1)
  25.     {
  26.                 if(Output_cnt == 0)//沒有脈沖輸出
  27.                 {                       
  28.                         if(key != key_old)//手剎信號變化
  29.                         {
  30.                                 if(!key)//手剎按下
  31.                                 {
  32.                                         Output_cnt = 1;//輸出1次脈沖
  33.                                 }else{//手剎放開
  34.                                         Output_cnt = 2;//輸出2次脈沖
  35.                                 }
  36.                         }       
  37.                 }else{//有脈沖輸出       
  38.                         if(cnt_35==0)led = 0;//輸出低電平
  39.                         if(++cnt_35>=35)//計時350ms
  40.                         {
  41.                                 led = 1;//輸出高電平
  42.                                 Output_cnt--;//脈沖次數減一
  43.                                 cnt_35=0;//計時清零
  44.                         }       
  45.                 }
  46.                 key_old = key;//更新手剎信號
  47.                 Delay10ms();//控制10ms一次循環
  48.     }
  49. }
復制代碼
回復

使用道具 舉報

ID:1087674 發表于 2023-7-12 11:48 | 顯示全部樓層

非常感謝,我很多看不懂,怎么完全跟我學的不一樣,看來是高手。我們慢慢研究下再試下。再次感謝你,可以幫我實現這個功能,而且還可學到東西。
回復

使用道具 舉報

ID:1087674 發表于 2023-7-23 19:01 來自觸屏版 | 顯示全部樓層
lkc8210 發表于 2023-7-8 11:27

剛把電路搞好,燒錄了程序,按下能變化,但是還是沒跳過第三種輪流播放。你給的這個程序不對。你這個是輸入低電平(剎車),然后輸出低電平,然后放開剎車后沒變化,又剎車(再次輸入低電平)才再輸出低電平,LED屏才變。
我要的效果是:放開剎車(輸入低電平),輸出低電平,LED屏變化一次。
電路圖和實物如圖。另外,我開始給單片機供電5伏,差點燒了,幸虧這個單片機有自動保護。手不小心摸到芯片燙得起泡了。
http://www.zg4o1577.cn/bbs/dpj-230653-1.html




回復

使用道具 舉報

ID:161164 發表于 2023-7-24 10:13 | 顯示全部樓層
農民阿伯 發表于 2023-7-23 19:01
剛把電路搞好,燒錄了程序,按下能變化,但是還是沒跳過第三種輪流播放。你給的這個程序不對。你這個是輸 ...

由于你要求的脈沖信號低電平要350ms
但沒說兩個低電平之間的高電平是多少
所以我假設是10ms

可能是高電平時間不夠長
改為以下代碼:
if(cnt_35==10)led = 0;//輸出低電平
if(++cnt_35>=45)//計時350ms
回復

使用道具 舉報

ID:1087674 發表于 2023-7-24 11:39 | 顯示全部樓層
lkc8210 發表于 2023-7-24 10:13
由于你要求的脈沖信號低電平要350ms
但沒說兩個低電平之間的高電平是多少
所以我假設是10ms

總之十分感謝。請問,最后這句: Delay10ms();//控制10ms一次循環
時間要不要改呢?
回復

使用道具 舉報

ID:1087674 發表于 2023-7-28 00:33 | 顯示全部樓層
lkc8210 發表于 2023-7-24 10:13
由于你要求的脈沖信號低電平要350ms
但沒說兩個低電平之間的高電平是多少
所以我假設是10ms

剛有空再重新改了程序,還是跳不過第三種方式。這個LED胸牌是先顯示“小心尾隨”,然后顯示“剎車”,然后再放開手剎自動顯示第三種方式:顯示“MI-8”后顯示“小心尾隨”然后顯示“剎車”,然后一直重復“小心尾隨”和“剎車”。就是想跳過第三種默認的方式。如果手動快速按是可以跳過的,時間也很短。
回復

使用道具 舉報

ID:1087674 發表于 2023-7-28 10:25 | 顯示全部樓層
lkc8210 發表于 2023-7-24 10:13
由于你要求的脈沖信號低電平要350ms
但沒說兩個低電平之間的高電平是多少
所以我假設是10ms

程序是否有問題。我要的是剎車顯示“剎車”,松開剎車時顯示“小心尾隨”,即輸入端低電平時顯示,高電平又顯示。但是這個程序是每次都是要低電平才顯示。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜资源 | 精品国产乱码久久久久久图片 | 伊人最新网址 | 国产精品视频入口 | 亚洲激精日韩激精欧美精品 | 国产韩国精品一区二区三区 | 黄色一级大片在线免费看产 | 中文字幕在线视频免费视频 | 成人影院网站ww555久久精品 | 成人小视频在线观看 | 爱爱免费视频 | 国产成人99久久亚洲综合精品 | 国产高清久久 | 中文字幕一区二区三区四区五区 | 国产激情网站 | 欧美精品一区二区三区在线 | 精品日韩一区 | 99精品欧美一区二区三区综合在线 | 欧美精品一区二区三区四区 在线 | 午夜精品一区二区三区在线视频 | 欧美一区二区综合 | 二区在线观看 | 亚洲精品久久久一区二区三区 | 亚洲一区二区三区观看 | 午夜在线影院 | 欧美a在线 | 亚洲久久 | chengrenzaixian| 五月天天丁香婷婷在线中 | 两性午夜视频 | 免费国产视频在线观看 | 午夜精品久久久 | wwwww在线观看 | 在线看av网址| 97免费在线视频 | 日韩一区二区三区在线 | 亚洲精品一 | 日韩免费福利视频 | 亚洲国产成人精品女人 | 欧美 日韩 中文 | 久久新|