欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3151|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)定時(shí)器占空比按鍵調(diào)整Proteus仿真程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機(jī)源程序如下:
  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. uchar COUNT100,PWMCOUNT;
  5. /*LCD 端口定義*/
  6. sbit RS=P3^7;
  7. sbit RW=P3^6;
  8. sbit E=P3^5;
  9. sbit PWM=P1^0;

  10. sbit K1=P3^0;//加1
  11. sbit K2=P3^1;//減1

  12. sfr LCDData=0x80;//0x80--P0,0X90--P1,0xa0--P2,0xb0--P3
  13. /************液晶驅(qū)動(dòng)程序********************/
  14. /*延時(shí)函數(shù) delay*/  
  15. void delay(uint i)
  16. {
  17.         while(i--);                        
  18. }

  19. /*******液晶驅(qū)動(dòng)函數(shù)*******/  
  20. void write_instruction(uchar x) //字節(jié)寫入
  21. {
  22.    delay(1000);
  23.    E=0;
  24.    RW=0;
  25.    RS=0;
  26.    LCDData=x;
  27.    E=1;
  28.    delay(20);
  29.    E=0;
  30. }
  31. void write_data(uchar x)         //數(shù)據(jù)寫入
  32. {
  33.    delay(1000);
  34.    E=0;
  35.    RW=0;
  36.    RS=1;
  37.    E=1;
  38.    LCDData=x;
  39.    E=0;
  40. }
  41. void cla(void)                           //清屏
  42. {
  43.         write_instruction(0x01);
  44. }
  45. void initlcd(void)                        //初始化
  46. {
  47.         write_instruction(0x38);  //顯示模式
  48.         delay(200);
  49.         write_instruction(0x0c);  //設(shè)置開顯示,不顯示光標(biāo)
  50.         delay(200);
  51.         write_instruction(0x06);  //寫一個(gè)字符后地址指針加一
  52.         delay(200);
  53.         cla();
  54. //        delay(200);
  55. }
  56. void write_string(uchar x,uchar *p)         //字符串寫入
  57. {
  58.         write_instruction(x);
  59.         while(*p!=0x00)
  60.         {
  61.                 write_data(*p);
  62.                 p++;
  63.                 if(x++==0x8f)
  64.                 {
  65.                         write_instruction(0xc0);
  66.                 }
  67.         }
  68. }
  69. /************液晶驅(qū)動(dòng)程序結(jié)束***********************/
  70. void DISPPWM(uchar add,uchar p)
  71. {
  72.         write_instruction(add);
  73.         write_data(p/100+0x30);
  74.         write_data(p%100/10+0x30);
  75.         write_data(p%100%10+0x30);
  76.         write_data('%');
  77. }
  78. /*******鍵盤驅(qū)動(dòng)程序******************/

  79. void pwmScanKey()
  80. {               
  81.                 if(K1==0)
  82.                 {
  83.                         while(K1==0);//等待按鍵釋放
  84.                         if(PWMCOUNT<100)
  85.                                 PWMCOUNT=PWMCOUNT+10;
  86.                 }
  87.                
  88.                 if(K2==0)
  89.                 {
  90.                         while(K2==0);//等待按鍵釋放
  91.                         if(PWMCOUNT>0)
  92.                                 PWMCOUNT=PWMCOUNT-10;
  93.                 }
  94.                                 
  95.                 DISPPWM(0x84, PWMCOUNT);
  96.                
  97. }

  98. void main(void)
  99. {
  100.         initlcd();//初始化液晶
  101.         delay(0xffff);
  102.         COUNT100=0;
  103.         PWMCOUNT=50;
  104.         
  105.         write_string(0x80,"PWM=");
  106.         DISPPWM(0x84, PWMCOUNT);
  107.         
  108.         TMOD=0x01;//設(shè)置定時(shí)器0 方式 1,16 位定時(shí)方式
  109.         EA=1;//打開中斷允許總控制位
  110.         ET0=1;//打開定時(shí)器0 溢出中斷允許位
  111.         TL0=0x66;//定時(shí)器0 的計(jì)數(shù)器賦初值, t=(2^16-a)*12/fosc,fosc=11.059sMHz
  112.         TH0=0xfc;
  113.         TR0=1;//啟動(dòng)定時(shí)器0
  114.         while(1)
  115.         {
  116.                 pwmScanKey();

  117.         }
  118.                 //等待中斷
  119.         
  120. }
  121. void TIME0ISR(void)         interrupt 1
  122. {
  123.          //PWM=0;
  124.         TL0=0x66;
  125.         TH0=0xfc;
  126.         COUNT100++;
  127.         if(COUNT100==100)
  128.         {
  129.                 COUNT100=0;
  130.         }
  131.         if(COUNT100<PWMCOUNT)
  132.         {
  133.                 PWM=1;
  134.         }
  135.         else
  136.         {
  137.                 PWM=0;
  138.         }
  139. }
復(fù)制代碼



全部資料51hei下載地址:
占占空比按鍵.zip (75.82 KB, 下載次數(shù): 31)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:470807 發(fā)表于 2019-12-18 23:59 | 只看該作者
非常好的程序
回復(fù)

使用道具 舉報(bào)

板凳
ID:667984 發(fā)表于 2019-12-19 09:04 | 只看該作者
學(xué)到了,真好
回復(fù)

使用道具 舉報(bào)

無效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表