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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

pwm(15單片機)+1602液晶顯示

[復制鏈接]
跳轉到指定樓層
樓主
ID:583118 發表于 2019-7-24 15:53 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
pwm(15單片機)+液晶顯示  驅動程序 加注釋

單片機源程序如下:
  1. #include <STC15F2K60S2.h>

  2. #define u8 unsigned char
  3. #define u16 unsigned int
  4. sbit PWM = P1^0;

  5. extern void InitLcd1602();
  6. extern void LcdShowStr(unsigned char x, unsigned char y,unsigned char *str, unsigned char len);




  7. u8 Trg,Cont;                   //獨立按鍵
  8. #define KEYPROUT P3
  9. void key_read(void)
  10. {
  11.         u8 ReadData = KEYPROUT^0xff;
  12.         Trg = ReadData&(ReadData^Cont);
  13.         Cont = ReadData;
  14. }
  15. void Timer0_Init(void) //1ms   定時器0初始化
  16. {
  17.                 AUXR |= 0x80;        //1T timer       
  18.                 TMOD &= 0xF0;        // 16bit
  19.                 TL0 = 0xCD;               
  20.                 TH0 = 0xD4;               
  21.                 TF0 = 0;               
  22.                 TR0 = 1;               
  23.                 ET0 = 1;
  24.                 EA=1;
  25. }

  26. void Timer1Init(void)                //100微秒@11.0592MHz
  27. {
  28.         AUXR |= 0x40;                //定時器時鐘1T模式
  29.         TMOD &= 0x0F;                //設置定時器模式
  30.         TL1 = 0xAE;                //設置定時初值
  31.         TH1 = 0xFB;                //設置定時初值
  32.         TF1 = 0;                //清除TF1標志
  33.         TR1 = 1;                //定時器1開始計時
  34.         ET1 = 1;
  35. }

  36. bit key_flag,timer_500ms_flag;
  37. u8 pwm_set=5;
  38. u8 str[15];
  39. void main(void)
  40. {
  41.                 P2=0xa0;P0=0x00;P2=0x00;    // 關閉蜂鳴器
  42.                 Timer0_Init();              //1ms   定時器0初始化
  43.                 Timer1Init();
  44.                 InitLcd1602();
  45.         while(1)
  46.         {
  47.                 if(timer_500ms_flag)
  48.                 {
  49.                         timer_500ms_flag=0;
  50.                         LcdShowStr(0,0,str,1);
  51.                 }
  52.                
  53.                 str[0] = pwm_set + '0';
  54.                
  55.                 if(key_flag)     // 按鍵掃描
  56.                         {
  57.                                 key_flag=0;
  58.                                 key_read();
  59.                                 if(Trg&0x08)//s4
  60.                                 {
  61.                                                 pwm_set++;
  62.                                 }
  63.                                 if(Trg&0x04)//s5
  64.                                 {
  65.                                         pwm_set--;
  66.                                 }
  67.                                 if(Trg&0x02)//s6
  68.                                 {
  69.                                        
  70.                                 }
  71.                                 if(Trg&0x01)//s7
  72.                                 {
  73.                                        
  74.                                 }
  75.                                 if(Cont)     //按鍵按下
  76.                                 {
  77.                                        
  78.                                 }
  79.                                 if(Trg==0&Cont==0) //按鍵放開
  80.                                 {
  81.                                
  82.                                 }       
  83.                         }
  84.         }
  85. }

  86. void timer0() interrupt 1  using 1                  
  87. {
  88.         static int key_count=0,timer_500ms=0;
  89.         key_count++;timer_500ms++;
  90.         if(key_count==10)                        //10ms 按鍵掃描
  91.         {
  92.          key_count=0;
  93.          key_flag=1;
  94.         }
  95.         if(timer_500ms==500)
  96.         {
  97.                 timer_500ms=0;
  98.                 timer_500ms_flag=1;
  99.         }

  100. }

  101. void timer1() interrupt 3
  102. {
  103.         static u8 pwm_count=0;
  104.         pwm_count++;
  105.         if(pwm_count==pwm_set)
  106.         {
  107.                 PWM=0;
  108.         }
  109.         if(pwm_count==10)
  110.         {
  111.                 pwm_count=0;
  112.                 PWM=1;
  113.         }
  114.        
  115. }
復制代碼

所有資料51hei提供下載:
PWM(15).zip (32.09 KB, 下載次數: 13)



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

使用道具 舉報

沙發
ID:1 發表于 2019-7-24 16:49 | 只看該作者
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品一区二区 | 亚洲国产成人精品女人 | 成人精品一区二区 | 五月激情综合 | 亚洲成人一区二区三区 | 亚洲综合一区二区三区 | 在线播放国产一区二区三区 | 日韩免费视频 | 欧美成人h版在线观看 | 国产精品一区二区视频 | 精品日韩一区 | 91.色 | 亚洲丝袜天堂 | 久久av资源网 | 91婷婷韩国欧美一区二区 | 黄色av观看 | 91欧美精品成人综合在线观看 | 国产日韩欧美精品一区二区三区 | 久久久日韩精品一区二区三区 | 美女视频黄色片 | 成人在线一级片 | 伊人看片 | 韩国久久 | 日韩福利电影 | 在线国产视频观看 | av在线一区二区三区 | 日韩一区二区免费视频 | av中文在线播放 | 狠狠骚| 欧美日韩久久 | 日韩中文字幕高清 | 韩日在线观看视频 | 中文字幕在线视频精品 | 欧美日韩在线免费观看 | 国产专区在线 | 欧美视频免费在线 | 中文字幕一区二区三区精彩视频 | 色资源在线观看 | 国产精品九九视频 | 欧美电影在线 | 亚洲视频在线观看一区二区三区 |