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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

開關123控制數碼管計時且1602顯示開停清零 單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
ID:616860 發表于 2019-9-26 19:44 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. #include<stdio.h>                 //sb1:run sb2:stop  sb3:clear
  2. #include<stc15f2k60s2.h>
  3. #include<intrins.h>

  4. #define LEDshu P0
  5. #define LCD_1602 P2

  6. #define  uchar unsigned char
  7. sbit cs1=P1^0;
  8. sbit cs2=P1^1;
  9. sbit wr=P1^2;

  10. sbit RS=P1^3;
  11. sbit RW=P1^4;
  12. sbit E=P1^5;
  13. sbit BF=P2^7;

  14. sbit row0=P3^0; sbit row1=P3^1; sbit row2=P3^2; sbit row3=P3^3;
  15. sbit col0=P3^4; sbit col1=P3^5; sbit col2=P3^6; sbit col3=P3^7;

  16. unsigned char k=10;
  17. unsigned char v;
  18. int q;
  19. void Delay1us();
  20. void Delay1000ms();

  21. void Write_Data(uchar dat);
  22. void Write_Command(uchar com);
  23. void Init1602();
  24. void String1602(uchar *str);
  25. void Adderss1602(uchar addr);

  26. unsigned char keyscan();

  27. unsigned char shu2();
  28. /////////////////數碼管///////////////////////
  29. unsigned char shu1();
  30. unsigned char L1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
  31. unsigned char L2[12]={0,1,2,3,4,5,6,7,8,9,10,11};
  32. unsigned char a;//1110 1111  0xef
  33. unsigned char b;//1111 0111  0xf7
  34.                 //1111 1011  0xfb
  35. unsigned char c;//1111 1101  0xfd
  36. unsigned char d;//1111 1110  0xfe

  37. ////////////////////////////////////////


  38. unsigned char keyscan()
  39. {

  40. col0=col1=col2=col3=row0=row2=row3=1;

  41. row0=0;
  42. if(col0==0)k=0;
  43. else if(col1==0)k=1;
  44. else if(col2==0)k=2;
  45. row0=1;

  46. return k;        
  47. }


  48. bit busy1602()
  49. {
  50. bit busy;
  51. LCD_1602=0xff;
  52. RS=0;
  53. RW=1;
  54. Delay1us();
  55. E=1;
  56. busy=BF;
  57. E=0;
  58. Delay1us();

  59. return busy;

  60. }

  61. main()
  62. {
  63. P0M0=0xff;
  64. P0M1=0X00;
  65. TL0=(65536-50000)%0x100;
  66. TH0=(65536-50000)/0x100;
  67. TMOD=0x01;     //T0方式1即16位定時
  68. EA=1;          //開總中斷   
  69. ET0=1;         //開T0中斷

  70. Init1602();
  71. while(1)
  72. {
  73.   RS=RW=E=1;
  74.   keyscan();
  75.    if(k==0){v=0;shu2();TR0=1;shu1();}
  76.    if(k==1){v=1;shu2();TR0=0;shu1();}
  77.    if(k==2){v=2;shu2();a=b=c=d=0;shu1();}


  78.   }

  79. }

  80. unsigned char shu2()
  81. {
  82. if(v==0){Adderss1602(0x00);String1602("------run------");}
  83. if(v==1){ Adderss1602(0x00);String1602("------stop-----");}
  84. if(v==2){ Adderss1602(0x00);String1602("-----clear-----");}

  85. }
  86. unsigned char shu1()
  87. {
  88.             cs1=0;cs2=1;
  89.       LEDshu=L1[L2[a]];
  90.       wr=1;
  91.       wr=0;

  92.       cs1=1;
  93.       cs2=0;
  94.       LEDshu=0xef;
  95.       wr=1;
  96.       wr=0;
  97.       Delay1us();

  98.       cs1=cs2=0;
  99.       LEDshu=0xff;
  100.       wr=1;
  101.       wr=0;
  102.         ///////////////////////////////////
  103.           cs1=0;cs2=1;
  104.       LEDshu=L1[L2[b]];
  105.       wr=1;
  106.       wr=0;

  107.       cs1=1;
  108.       cs2=0;
  109.       LEDshu=0xf7;
  110.       wr=1;
  111.       wr=0;
  112.       Delay1us();

  113.       cs1=cs2=0;
  114.       LEDshu=0xff;
  115.       wr=1;
  116.       wr=0;


  117.         //////////////////////////////////////////
  118.           cs1=0;cs2=1;
  119.       LEDshu=L1[L2[11]];
  120.       wr=1;
  121.       wr=0;

  122.       cs1=1;
  123.       cs2=0;
  124.       LEDshu=0xfb;
  125.       wr=1;
  126.       wr=0;
  127.       Delay1us();

  128.       cs1=cs2=0;
  129.       LEDshu=0xff;
  130.       wr=1;
  131.       wr=0;
  132.          
  133.     ///////////////////////////////////////////////
  134.           cs1=0;cs2=1;
  135.       LEDshu=L1[L2[c]];
  136.       wr=1;
  137.       wr=0;

  138.       cs1=1;
  139.       cs2=0;
  140.       LEDshu=0xfd;
  141.       wr=1;
  142.       wr=0;
  143.       Delay1us();

  144.       cs1=cs2=0;
  145.       LEDshu=0xff;
  146.       wr=1;
  147.       wr=0;
  148.                  
  149.            //////////////////////////////////////////
  150.           cs1=0;cs2=1;
  151.       LEDshu=L1[L2[d]];
  152.       wr=1;
  153.       wr=0;

  154.       cs1=1;
  155.       cs2=0;
  156.       LEDshu=0xfe;
  157.       wr=1;
  158.       wr=0;
  159.       Delay1us();

  160.       cs1=cs2=0;
  161.       LEDshu=0xff;
  162.       wr=1;
  163.       wr=0;
  164.                   
  165.            }

  166. //////////////////////////////////
  167. void Write_Data(uchar dat)
  168. {
  169. while(busy1602()==1);
  170. RS=1;RW=0;
  171. Delay1us();
  172. E=1;
  173. LCD_1602=dat;
  174. Delay1us();
  175. E=0;

  176. }


  177. void Write_Command(uchar com)
  178. {
  179. while(busy1602()==1);
  180. RS=0;RW=0;
  181. Delay1us();
  182. E=1;
  183. LCD_1602=com;
  184. Delay1us();
  185. E=0;
  186. }
  187. void Init1602()
  188. {

  189. Write_Command(0x38);
  190. Write_Command(0x0f);
  191. Write_Command(0x06);
  192. Write_Command(0x01);

  193. }

  194. void String1602(uchar *str)
  195. {

  196. while(*str != '\0')
  197. {
  198.   Write_Data(*str++);
  199. }
  200. }

  201. void Adderss1602(uchar addr)
  202. {

  203. Write_Command(addr | 0x80);

  204. }

  205. /////////////////////////////////////////
  206. void Delay1us()                //@11.0592MHz
  207. {
  208.         _nop_();
  209.         _nop_();
  210.         _nop_();
  211. }

  212. void Delay1000ms()                //@11.0592MHz
  213. {
  214.         unsigned char i, j, h;

  215.         _nop_();
  216.         _nop_();
  217.         i = 43;
  218.         j = 6;
  219.         h = 203;
  220.         do
  221.         {
  222.                 do
  223.                 {
  224.                         while (--h);
  225.                 } while (--j);
  226.         } while (--i);
  227. }

  228. time0() interrupt 1
  229. {
  230. {
  231. TL0=(65536-50000)%0x100;
  232. TH0=(65536-50000)/0x100;//50ms
  233. q++;
  234. if(q>=20)
  235. {
  236.   q=0;//1s
  237.   ////////////////////////////////

  238.             if(d<10)
  239.     {
  240.      d++;

  241.      if(d>=10&&c<6)
  242.       {
  243.        d=0;c++;
  244.            if(c>=6&&b<10)
  245.            {
  246.                 c=0;b++;
  247.                 if(b>=10&&a<6)
  248.                 {
  249.                   b=0;a++;
  250.                   if(a>=6)
  251.                   {
  252.                    a=0;
  253.                   }
  254.                    }
  255.            }
  256.           }
  257.    }

  258. ///////////////////////////////////////
  259. }

  260. }

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中国人pornoxxx麻豆 | 69电影网 | av电影手机在线看 | 91观看| 精品影院| 亚洲欧美中文日韩在线v日本 | 精品二区 | 日韩视频一区二区 | 国产精品久久久久久久久久不蜜臀 | 在线精品一区二区三区 | 成人av网站在线观看 | 精品综合久久 | 日韩欧美成人一区二区三区 | 黄色免费网站在线看 | 久久精品国产99国产精品亚洲 | 国产乱码精品1区2区3区 | 伊人99| 国产成人免费视频 | 男女羞羞的网站 | 久操福利 | 日本一区二区三区免费观看 | 亚洲精品黄 | 精品久久亚洲 | 久久久精品高清 | 韩国毛片一区二区三区 | 91精品中文字幕一区二区三区 | 在线免费看91 | 亚洲日韩中文字幕一区 | 日本一区二区高清不卡 | 黄色毛片免费看 | 一级毛片免费完整视频 | 在线免费观看黄视频 | 激情福利视频 | 美女毛片免费看 | 欧美日韩高清一区 | 久久精品网| 国产成人综合一区二区三区 | 亚洲欧美日韩高清 | 久久九七| 亚洲天堂一区二区 | 91在线一区二区三区 |