找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1460|回复: 1
收起左侧

基于51的_称重_lcd12864显示

[复制链接]
ID:742422 发表于 2020-5-1 17:42 | 显示全部楼层 |阅读模式
本程序是参加机器人大赛所写,发出来供大家参考
  1. //****************************************************
  2. #include "main.h"
  3. #include "LCD12864.h"
  4. #include "iic.h"
  5. //定义变量
  6. unsigned long hardval;

  7. sbit ADDO = P1^5;
  8. sbit ADSK = P1^0;
  9. //****************************************************
  10. //主函数
  11. //****************************************************
  12. void main()
  13. {
  14.         LCD12864_Reset();                                                                //初始化液晶
  15.         LCD12864_HAIZI_SET();                                                        //设置为普通模式
  16.        
  17.         delay_ms(100);

  18.         LCD12864_COM_Write(0x80);                        //设置指针
  19.         LCD12864_write_word("别人笑我太疯癫,");                                //显示内容
  20.         LCD12864_COM_Write(0x90);                        //设置指针
  21.         LCD12864_write_word("我笑他人看不穿。");                        //显示内容
  22.         LCD12864_COM_Write(0x88);                        //设置指针
  23.         LCD12864_write_word("不见五陵豪杰墓,");                //显示内容
  24.         LCD12864_COM_Write(0x98);                        //设置指针
  25.         LCD12864_write_word("无花无酒锄作田。");                                //显示内容
  26.         delay_ms(3000);
  27.         LCD12864_COM_Write(0x01); /*显示清屏*/
  28.         delay_ms(30);
  29.         while(1)
  30.         {
  31.                 hardval=ReadCount();hardval=hardval-8210000;
  32.     if(hardval<=4000)hardval=0;
  33.                 else hardval=hardval-4000;
  34.                 LCD12864_COM_Write(0x90);                        //设置指针
  35.           LCD12864_write_word("weight:");                        //显示内容

  36.                 LCD12864_COM_Write(0x88);                        //设置指针
  37.                 LCD12864_Data_Write(hardval/10000000%10+48);
  38.                 LCD12864_COM_Write(0x89);                        //设置指针
  39.                 LCD12864_Data_Write(hardval/1000000%10+48);
  40.                 LCD12864_COM_Write(0x8a);                        //设置指针
  41.                 LCD12864_Data_Write(hardval/100000%10+48);
  42.                 LCD12864_COM_Write(0x8b);                        //设置指针
  43.                 LCD12864_Data_Write(hardval/10000%10+48);
  44.                 LCD12864_COM_Write(0x8c);                        //设置指针
  45.                 LCD12864_Data_Write(hardval/1000%10+48);
  46.                 LCD12864_COM_Write(0x8d);                        //设置指针
  47.                 LCD12864_Data_Write(hardval/100%10+48);
  48.                 LCD12864_COM_Write(0x8e);                        //设置指针
  49.                 LCD12864_Data_Write(hardval/10%10+48);
  50.                 LCD12864_COM_Write(0x8f);                        //设置指针
  51.                 LCD12864_Data_Write(hardval%10+48);
  52.                
  53.                 delay_ms(500);
  54.                 LCD12864_COM_Write(0x01); /*显示清屏*/
  55.         delay_ms(30);
  56.         }
  57. }
  58. //****************************************************
  59. //MS延时函数(12M晶振下测试)
  60. //****************************************************
  61. void delay_ms(unsigned int n)
  62. {
  63.         unsigned int  i,j;
  64.                 for(i=0;i<n;i++)
  65.                         for(j=0;j<1230;j++);
  66. }

  67. //****************************************************
  68. //AD读取函数
  69. //****************************************************
  70. void ADC_Init(unsigned char chanel)
  71. {
  72.         IIC_Start();
  73.         IIC_SendByte(0x90);
  74.         IIC_WaitAck();
  75.         IIC_SendByte(chanel);
  76.         IIC_WaitAck();
  77.         IIC_Stop();
  78.         delay_ms(20);
  79. }
  80. unsigned char ADC_Read()
  81. {
  82.         unsigned char temp;
  83.         IIC_Start();
  84.         IIC_SendByte(0x91);
  85.         IIC_WaitAck();
  86.         temp=IIC_RecByte();
  87.         IIC_Ack(0);
  88.         IIC_Stop();
  89.         return temp;
  90. }
  91. //****************************************************
  92. //重量读取函数
  93. //****************************************************
  94. unsigned long ReadCount(void)
  95. {
  96. unsigned long Count;
  97. unsigned char i;
  98. ADSK=0; //使能AD(PD_SCK 置低)
  99. Count=0;
  100. while(ADDO); //AD转换未结束则等待,否则开始读取
  101. for (i=0;i<24;i++)
  102. {
  103. ADSK=1; //PD_SCK 置高(发送脉冲)
  104. Count=Count<<1; //下降沿来时变量Count左移一位,右侧补零
  105. ADSK=0; //PD_SCK 置低
  106. if(ADDO) Count++;
  107. }
  108. ADSK=1;
  109. Count=Count^0x800000;//第25个脉冲下降沿来时,转换数据
  110. ADSK=0;
  111. return(Count);
  112. }
复制代码

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:742422 发表于 2020-5-1 17:43 | 显示全部楼层
二楼程序

炜煌杯_称重_lcd12864.zip

63.35 KB, 下载次数: 22, 下载积分: 黑币 -5

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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