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

QQ登錄

只需一步,快速開始

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

1602顯示小程序,熟悉用1602

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:79544 發(fā)表于 2016-6-6 10:23 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
按鍵控制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;//讀寫控制信號(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)//寫地址
  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)// 寫數(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ù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:68727 發(fā)表于 2016-6-7 00:26 來自觸屏版 | 只看該作者
謝謝51hei又學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

板凳
ID:3721 發(fā)表于 2016-6-7 00:58 | 只看該作者
很經(jīng)典的程序 1602顯示英文和數(shù)字,收藏了
回復(fù)

使用道具 舉報(bào)

地板
ID:211766 發(fā)表于 2017-6-17 22:53 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報(bào)

5#
ID:29438 發(fā)表于 2017-6-18 09:25 | 只看該作者
學(xué)習(xí)了,謝謝!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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