標(biāo)題: 1602顯示小程序,熟悉用1602 [打印本頁(yè)]

作者: 騰飛的龍    時(shí)間: 2016-6-6 10:23
標(biāo)題: 1602顯示小程序,熟悉用1602
按鍵控制1602顯示。加、減、乘、除。并顯示得數(shù)。
  1. /********************************************************
  2.            功  能:按鍵控制1602顯示
  3.            單片機(jī):        STC12C5A60S2
  4.            晶  振:11.0592M
  5.            作  者:        蘇義江
  6.            時(shí)  間:2016-6-6
  7. ********************************************/

  8. #include<reg52.h>//51單片機(jī)頭文件

  9. #define uchar unsigned char//宏定義
  10. #define uint unsigned int
  11. uchar code digit[]={"0123456789"};//定義字符數(shù)組數(shù)字
  12. uchar code tab[]="An Jian Xian Shi";
  13. sbit rs=P2^7;//數(shù)據(jù)命令選擇
  14. sbit rw=P2^6;//讀寫(xiě)控制信號(hào)
  15. sbit e=P2^5;//使能信號(hào)
  16. sbit key=P3^7;        //按鍵
  17. uchar shi,ge;
  18. ///////////////
  19. void delay_50us(uint t)//50us延時(shí)函數(shù)
  20. {
  21.         uchar j;
  22.         for(;t>0;t--)
  23.     for(j=190;j>0;j--);
  24. }

  25. void write_com(uchar com)//寫(xiě)地址
  26. {
  27.         e=0;
  28.         rs=0;
  29.         rw=0;
  30.         P0=com;
  31.         delay_50us(10);
  32.         e=1;
  33.         delay_50us(30);
  34.         e=0;
  35. }
  36. ///////
  37. void write_data(uchar dat)// 寫(xiě)數(shù)據(jù)
  38. {
  39.         e=0;
  40.         rs=1;
  41.         rw=0;
  42.         P0=dat;
  43.         delay_50us(10);
  44.         e=1;
  45.         delay_50us(30);
  46.         e=0;
  47. }
  48. //////
  49. void init(void)//液晶初始化
  50. {
  51.         uchar i;
  52.           delay_50us(300);
  53.           write_com(0x38);
  54.           delay_50us(100);
  55.           write_com(0x38);
  56.           delay_50us(100);
  57.           write_com(0x38);
  58.           write_com(0x38);
  59.           write_com(0x08);
  60.           write_com(0x01);
  61.           write_com(0x06);
  62.           write_com(0x0c);
  63.           write_com(0x80);
  64.           for(i=0;i<16;i++)
  65.           {
  66.                     write_data(tab[i]);
  67.                   delay_50us(30);
  68.           }
  69. }

  70. void femwei(uchar x) //分位函數(shù)
  71. {
  72.         shi=x/10+0x30;
  73.         ge=x%10+0x30;
  74. }
  75. void keyscan()        //按鍵掃描
  76. {
  77.            uchar dd,w;
  78.          if(key==0)
  79.          {
  80.                   delay_50us(200);
  81.                 if(key==0)
  82.                 {
  83.                    dd++;
  84.                    if(dd==5)//按下次數(shù)
  85.                    dd=0;  //清零
  86.                 }
  87.                 if(dd==1)
  88.                 {
  89.                         w=10;
  90.                         femwei(w);
  91.                    write_com(0x80+0x44); //顯示地址
  92.                    write_data('5');
  93.                    write_data('+');
  94.                    write_data('5');
  95.                    write_data('=');
  96.                    write_data(shi);
  97.                    write_data(ge);
  98.                    delay_50us(300);
  99.                 }
  100.                 if(dd==2)
  101.                 {
  102.                         w=72;
  103.                         femwei(w);
  104.                    write_com(0x80+0x44);
  105.                    write_data('8');
  106.                    write_data('*');
  107.                    write_data('9');
  108.                    write_data('=');
  109.                    write_data(shi);
  110.                    write_data(ge);
  111.                    delay_50us(300);
  112.                 }
  113.                 if(dd==3)
  114.                 {
  115.                    w=04;
  116.                    femwei(w);
  117.                    write_com(0x80+0x44);
  118.                    write_data('9');
  119.                    write_data('-');
  120.                    write_data('5');
  121.                    write_data('=');
  122.                    write_data(shi);
  123.                    write_data(ge);
  124.                    delay_50us(300);
  125.                  
  126.                 }
  127.                 if(dd==4)
  128.                 {
  129.                         w=07;
  130.                    femwei(w);         
  131.                    write_com(0x80+0x44);
  132.                    write_data('8');
  133.                    write_data('-');
  134.                    write_data('1');
  135.                    write_data('=');
  136.                    write_data(shi);
  137.                    write_data(ge);
  138.                    delay_50us(300);
  139.                 }
  140.          }
  141. }
  142. void main()
  143. {
  144.        
  145.         init();
  146.         while(1)
  147.         {
  148.                  keyscan();
  149.         }
  150. }
復(fù)制代碼



作者: 愛(ài)玩單片機(jī)    時(shí)間: 2016-6-7 00:26
謝謝51hei又學(xué)習(xí)了
作者: heicc    時(shí)間: 2016-6-7 00:58
很經(jīng)典的程序 1602顯示英文和數(shù)字,收藏了
作者: kening@6    時(shí)間: 2017-6-17 22:53
謝謝樓主分享
作者: fontex    時(shí)間: 2017-6-18 09:25
學(xué)習(xí)了,謝謝!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1