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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stc15f2k60s2單片機 pwm程序 可調占空比

[復制鏈接]
跳轉到指定樓層
樓主
ID:583118 發表于 2019-7-24 15:51 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <STC15F2K60S2.h>
#define u8 unsigned char
#define u16 unsigned int
sbit PWM = P1^0;
extern void InitLcd1602();
extern void LcdShowStr(unsigned char x, unsigned char y,unsigned char *str, unsigned char len);


u8 Trg,Cont;                   //獨立按鍵
#define KEYPROUT P3
void key_read(void)
{
u8 ReadData = KEYPROUT^0xff;
Trg = ReadData&(ReadData^Cont);
Cont = ReadData;
}
void Timer0_Init(void) //1ms   定時器0初始化
{
  AUXR |= 0x80; //1T timer
  TMOD &= 0xF0; // 16bit
  TL0 = 0xCD;  
  TH0 = 0xD4;  
  TF0 = 0;  
  TR0 = 1;  
  ET0 = 1;
  EA=1;
}
void Timer1Init(void)  //100微秒@11.0592MHz
{
AUXR |= 0x40;  //定時器時鐘1T模式
TMOD &= 0x0F;  //設置定時器模式
TL1 = 0xAE;  //設置定時初值
TH1 = 0xFB;  //設置定時初值
TF1 = 0;  //清除TF1標志
TR1 = 1;  //定時器1開始計時
ET1 = 1;
}
bit key_flag,timer_500ms_flag;
u8 pwm_set=5;
u8 str[15];
void main(void)
{
  P2=0xa0;P0=0x00;P2=0x00;    // 關閉蜂鳴器
  Timer0_Init();              //1ms   定時器0初始化
  Timer1Init();
  InitLcd1602();
while(1)
{
  if(timer_500ms_flag)
  {
   timer_500ms_flag=0;
   LcdShowStr(0,0,str,1);
  }
  
  str[0] = pwm_set + '0';
  
  if(key_flag)     // 按鍵掃描
   {
    key_flag=0;
    key_read();
    if(Trg&0x08)//s4
    {
      pwm_set++;
    }
    if(Trg&0x04)//s5
    {
     pwm_set--;
    }
    if(Trg&0x02)//s6
    {
     
    }
    if(Trg&0x01)//s7
    {
     
    }
    if(Cont)     //按鍵按下
    {
     
    }
    if(Trg==0&Cont==0) //按鍵放開
    {
   
    }
   }
}
}
void timer0() interrupt 1  using 1                  
{
static int key_count=0,timer_500ms=0;
key_count++;timer_500ms++;
if(key_count==10)   //10ms 按鍵掃描
{
  key_count=0;
  key_flag=1;
}
if(timer_500ms==500)
{
  timer_500ms=0;
  timer_500ms_flag=1;
}
}
void timer1() interrupt 3
{
static u8 pwm_count=0;
pwm_count++;
if(pwm_count==pwm_set)
{
  PWM=0;
}
if(pwm_count==10)
{
  pwm_count=0;
  PWM=1;
}

}



#include <reg52.h>
#define LCD1602_DB  P0
sbit LCD1602_RS = P2^0;
sbit LCD1602_RW = P2^1;
sbit LCD1602_E  = P1^2;
/* 等待液晶準備好 */
void LcdWaitReady()
{
    unsigned char sta;
   
    LCD1602_DB = 0xFF;
    LCD1602_RS = 0;
    LCD1602_RW = 1;
    do {
        LCD1602_E = 1;
        sta = LCD1602_DB; //讀取狀態字
        LCD1602_E = 0;
    } while (sta & 0x80); //bit7等于1表示液晶正忙,重復檢測直到其等于0為止
}
/* 向LCD1602液晶寫入一字節命令,cmd-待寫入命令值 */
void LcdWriteCmd(unsigned char cmd)
{
    LcdWaitReady();
    LCD1602_RS = 0;
    LCD1602_RW = 0;
    LCD1602_DB = cmd;
    LCD1602_E  = 1;
    LCD1602_E  = 0;
}
/* 向LCD1602液晶寫入一字節數據,dat-待寫入數據值 */
void LcdWriteDat(unsigned char dat)
{
    LcdWaitReady();
    LCD1602_RS = 1;
    LCD1602_RW = 0;
    LCD1602_DB = dat;
    LCD1602_E  = 1;
    LCD1602_E  = 0;
}
/* 設置顯示RAM起始地址,亦即光標位置,(x,y)-對應屏幕上的字符坐標 */
void LcdSetCursor(unsigned char x, unsigned char y)
{
    unsigned char addr;
   
    if (y == 0)  //由輸入的屏幕坐標計算顯示RAM的地址
        addr = 0x00 + x;  //第一行字符地址從0x00起始
    else
        addr = 0x40 + x;  //第二行字符地址從0x40起始
    LcdWriteCmd(addr | 0x80);  //設置RAM地址
}
/* 在液晶上顯示字符串,(x,y)-對應屏幕上的起始坐標,
   str-字符串指針,len-需顯示的字符長度 */
void LcdShowStr(unsigned char x, unsigned char y,
                unsigned char *str, unsigned char len)
{
    LcdSetCursor(x, y);   //設置起始地址
    while (len--)         //連續寫入len個字符數據
    {
        LcdWriteDat(*str++);  //先取str指向的數據,然后str自加1
    }
}
/* 初始化1602液晶 */
void InitLcd1602()
{
    LcdWriteCmd(0x38);  //16*2顯示,5*7點陣,8位數據接口
    LcdWriteCmd(0x0C);  //顯示器開,光標關閉
    LcdWriteCmd(0x06);  //文字不動,地址自動+1
    LcdWriteCmd(0x01);  //清屏
}

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区三区在线观看 | 成年人在线观看 | 欧美三区在线观看 | 欧美一区二区三区在线 | 日韩福利 | 国产乱码精品一区二区三区中文 | 亚洲国产中文在线 | 狠狠干影院 | 国产精品高潮呻吟久久 | 欧美精品一区二区三区在线 | 精品在线一区二区三区 | 日韩在线免费播放 | 国产精品一区二区三区四区 | 久久精品国产一区二区三区不卡 | 99精品国产在热久久 | 亚洲一区二区三区在线观看免费 | 全免费a级毛片免费看视频免 | 91成人精品 | 在线播放精品视频 | 欧美在线视频免费 | 99精品视频在线 | 性色综合| jizz在线看片 | 国产伦精品一区二区三区在线 | 国产精品99久 | 欧美精品在线一区二区三区 | 国产精品久久久久久久毛片 | 欧美伊人久久久久久久久影院 | 九九国产在线观看 | 亚洲国产精品福利 | 精品国产精品 | 一区二区小视频 | 国产成人99久久亚洲综合精品 | 一级高清视频 | 一区二区三区四区毛片 | 亚洲欧美综合精品久久成人 | 国产精品视频网站 | 人人干人人艹 | 在线色网址 | 国产精品久久久久久婷婷天堂 | 国产在线1 |