找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2608|回复: 4
打印 上一主题 下一主题
收起左侧

1602显示小程序,熟悉用1602

[复制链接]
跳转到指定楼层
楼主
ID:79544 发表于 2016-6-6 10:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
按键控制1602显示。加、减、乘、除。并显示得数。
  1. /********************************************************
  2.            功  能:按键控制1602显示
  3.            单片机:        STC12C5A60S2
  4.            晶  振:11.0592M
  5.            作  者:        苏义江
  6.            时  间:2016-6-6
  7. ********************************************/

  8. #include<reg52.h>//51单片机头文件

  9. #define uchar unsigned char//宏定义
  10. #define uint unsigned int
  11. uchar code digit[]={"0123456789"};//定义字符数组数字
  12. uchar code tab[]="An Jian Xian Shi";
  13. sbit rs=P2^7;//数据命令选择
  14. sbit rw=P2^6;//读写控制信号
  15. sbit e=P2^5;//使能信号
  16. sbit key=P3^7;        //按键
  17. uchar shi,ge;
  18. ///////////////
  19. void delay_50us(uint t)//50us延时函数
  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)// 写数据
  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) //分位函数
  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)//按下次数
  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. }
复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:68727 发表于 2016-6-7 00:26 来自手机 | 只看该作者
谢谢51hei又学习了
回复

使用道具 举报

板凳
ID:3721 发表于 2016-6-7 00:58 | 只看该作者
很经典的程序 1602显示英文和数字,收藏了
回复

使用道具 举报

地板
ID:211766 发表于 2017-6-17 22:53 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

5#
ID:29438 发表于 2017-6-18 09:25 | 只看该作者
学习了,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表