找回密码
 立即注册

QQ登录

只需一步,快速开始

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

控制数控电位器x9313改变电位,调整液晶对比度 源程序

[复制链接]
跳转到指定楼层
楼主

一个用51单片机控制数控电位器x9313改变电位,来调整12864液晶对比度的例子:
控制数控电位器x9313改变电位.rar (26.14 KB, 下载次数: 17)


下面是部分源码预览:
  1. /*******************************************************************
  2. *【文 件 名】:x9313.h                                             *
  3. *【建立日期】:7月2日                                        *
  4. *【修改日期】:7月4日                                        *
  5. *【文件作用】:液晶对比度设置,共分32级                             *
  6. *【说    明】:控制数控电位器x9313改变电位,调整对比度              *
  7. *------------------------------------------------------------------*
  8. *【作    者】:郭鑫(ben)                                           *
  9. *【版    权】:国家创新性实验项目,编号GCS07001                    *
  10. *******************************************************************/

  11. #ifndef _X9313_08_07_04_
  12. #define _X9313_08_07_04_

  13. /***************************头文件部分*****************************/




  14. #include <reg52.h>
  15. #include "intrins.h"

  16. //-------------------------管脚定义--------------------------------
  17. sbit inc = P1^5;
  18. sbit ud = P1^6;
  19. sbit cs = P1^7;


  20. /***************************函数声明*******************************/
  21. void short_delay();
  22. void down_edge(void);
  23. void un_latch(void);
  24. void x9313(void);




  25. void short_delay()
  26. {
  27.     _nop_();
  28.         _nop_();

  29. }



  30. void down_edge(void)
  31. {
  32.     inc = 1;
  33.     short_delay();
  34.     inc = 0;
  35.     short_delay();
  36. }

  37. /*******************************************************************
  38. *【函 数 名】:un_latch                                            *
  39. *【修改日期】:2008年7月3日                                        *
  40. *【文件作用】:不保存设置                                          *
  41. *------------------------------------------------------------------*
  42. *【备    注】:本意是想保存的 ,有问题                              *
  43. *******************************************************************/
  44. void un_latch(void)
  45. {
  46.         cs = 0;
  47.         short_delay();
  48.         short_delay();

  49.         cs = 1;
  50.         short_delay();
  51.         short_delay();

  52. }

  53. /*******************************************************************
  54. *【函 数 名】:x9313                                               *
  55. *【修改日期】:2008年7月3日                                        *
  56. *【文件作用】:控制x9313设置液晶对比度                             *
  57. *------------------------------------------------------------------*
  58. *【备    注】:                                                    *
  59. *******************************************************************/
  60. void x9313(void)
  61. {
  62.         cs = 0;
  63.         inc = 1;
  64.         lcd_cmd_w(0x01);
  65.     lcd_setposition(1,0);
  66.     lcd_str_w("显示器对比度设置");
  67.     while(1)
  68.     {
  69.                 if(key_check(3) == 1)
  70.                 {
  71.                         lcd_setposition(3,0);
  72.                         lcd_str_w("KEY3: 对比度增强");
  73.                         ud =  1;
  74.                         short_delay();
  75.                 down_edge();
  76.                         delay(50);
  77.                         lcd_setposition(3,0);
  78.                         lcd_str_w("                ");               
  79.              }

  80.         if(key_check(2) == 1)
  81.         {
  82.                         lcd_setposition(3,0);
  83.                         lcd_str_w("KEY2: 对比度减弱");
  84.                         ud =  0;
  85.                         short_delay();
  86.             down_edge();
  87.                         delay(50);
  88.                         lcd_setposition(3,0);
  89.             lcd_str_w("                ");                                                   
  90.         }

  91.         if(key_check(0) == 1)
  92.         {
  93.                         un_latch();
  94.                         lcd_setposition(3,0);
  95.                         lcd_str_w("KEY0: 未保存");        
  96.                         delay(50);
  97.             return;
  98.         }

  99.         if(key_check(1) == 1)
  100.         {
  101.                         cs = 0;
  102.                         lcd_setposition(3,0);
  103.                         lcd_str_w("KEY1: 已保存");        
  104.                         delay(50);
  105.                         return;
  106.         }
  107.     }
  108. }

  109. #endif
复制代码

  1. /*******************************************************************
  2. *【文 件 名】:keys.h                                              *
  3. *【建立日期】7月3日                                        *
  4. *【修改日期】7月4日                                        *
  5. *【文件作用】:液晶12864驱动程序,包括所有关于液晶得函数           *
  6. *【说    明】:操作按键提供直接调用函数,内部包括按键去抖          *
  7. *------------------------------------------------------------------*
  8. *【作    者】:郭鑫(ben)                                           *
  9. *【版    权】:国家创新性实验项目,编号GCS07001                    *
  10. *******************************************************************/

  11. #ifndef _KEYS_08_07_04_
  12. #define _KEYS_08_07_04_

  13. /***************************头文件部分*****************************/




  14. #include <reg52.h>

  15. sbit key5 = P0^5;
  16. sbit key4 = P0^4;
  17. sbit key3 = P0^3;
  18. sbit key2 = P0^2;
  19. sbit key1 = P0^1;
  20. sbit key0 = P0^0;

  21. /***************************函数声明*******************************/
  22. uchar key_check(uchar num);



  23. /*******************************************************************
  24. *【函 数 名】:key_check                                           *
  25. *【修改日期】:2008年7月3日                                        *
  26. *【函数作用】:检测按键情况, 1:有相应按键按下 0:反之               *
  27. *------------------------------------------------------------------*
  28. *【备    注】:                                                    *
  29. *******************************************************************/
  30. uchar key_check(uchar num)
  31. {
  32.     uchar sta;
  33.         switch(num)
  34.         {
  35.                 case 0:
  36.                         if(~key0)
  37.                         {
  38.                                 delay(10);
  39.                                 if(~key0)
  40.                                 {
  41.                                         while(~key0);
  42.                                         sta = 1;
  43.                                 }                  
  44.                         }
  45.                         else
  46.                                 sta = 0;
  47.                         break;

  48.                 case 1:
  49.                         if(~key1)
  50.                         {
  51.                                 delay(10);
  52.                                 if(~key1)
  53.                                 {
  54.                                         while(~key1);
  55.                                         sta = 1;
  56.                                 }                  
  57.                         }
  58.                         else
  59.                                 sta = 0;
  60.                         break;
  61.                         
  62.                 case 2:
  63.                         if(~key2)
  64.                         {
  65.                                 delay(10);
  66.                                 if(~key2)
  67.                                 {
  68.                                         while(~key2);
  69.                                         sta = 1;
  70.                                 }                  
  71.                         }
  72.                         else
  73.                                 sta = 0;
  74.                         break;
  75.                         
  76.                 case 3:
  77.                         if(~key3)
  78.                         {
  79.                                 delay(10);
  80.                                 if(~key3)
  81.                                 {
  82.                                         while(~key3);
  83.                                         sta = 1;
  84.                                 }                  
  85.                         }
  86.                         else
  87.                                 sta = 0;
  88.                         break;
  89.                         
  90.                 case 4:
  91.                         if(~key4)
  92.                         {
  93.                                 delay(10);
  94.                                 if(~key4)
  95.                                 {
  96.                                         while(~key4);
  97.                                         sta = 1;
  98.                                 }                  
  99.                         }
  100.                         else
  101.                                 sta = 0;
  102.                         break;
  103.                         
  104.                 case 5:
  105.                         if(~key5)
  106.                         {
  107.                                 delay(10);
  108.                                 if(~key5)
  109.                                 {
  110.                                         while(~key5);
  111.                                         sta = 1;
  112.                                 }                  
  113.                         }
  114.                         else
  115.                                 sta = 0;
  116.                         break;
  117.         }
  118.         return sta;
  119. }

  120. #endif
复制代码




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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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