Proteus仿真 您所在的位置:网站首页 1602指令函数 Proteus仿真

Proteus仿真

2023-12-13 01:21| 来源: 网络整理| 查看: 265

一、硬件链接

 二、驱动代码

#define uchar unsigned char #define uint unsigned int #define data_1602 P0 uchar code table_num[]="0123456789abcdefg"; sbit rs=P2^7; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit rw=P2^6; //寄存器选择信号 H:数据寄存器 L:指令寄存器 sbit e =P2^5; //片选信号 下降沿触发 /***********************延时函数************************/ void delay_uint(uint q) { while(q--); } /***********************lcd1602写命令函数************************/ void write_com(uchar com) { e=0; rs=0; rw=0; P0=com; delay_uint(3); e=1; delay_uint(25); e=0; } /***********************lcd1602写数据函数************************/ void write_data(uchar dat) { e=0; rs=1; rw=0; P0=dat; delay_uint(3); e=1; delay_uint(25); e=0; } /***********************lcd1602初始化设置************************/ void init_1602() //lcd1602初始化设置 { write_com(0x38); // write_com(0x0c); write_com(0x06); } /***********************lcd1602上显示两位十进制数************************/ void write_sfm1(uchar hang,uchar add,uchar date) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); write_data(0x30+date % 10); } /***********************lcd1602上显示两位十进制数************************/ void write_sfm2_ds1302(uchar hang,uchar add,uchar date) { uchar shi,ge; if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); shi=date/16; ge=date%16; // write_data(0x30+shi); // write_data(0x30+ge); write_data(table_num[shi]); write_data(table_num[ge]); } /***********************lcd1602上显示这字符函数************************/ void write_string(uchar hang,uchar add,uchar *p) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); while(1) { if(*p == '\0') break; write_data(*p); p++; } } /*****************控制光标函数********************/ void write_guanbiao(uchar hang,uchar add,uchar date) { if(hang==1) write_com(0x80+add); else write_com(0x80+0x40+add); if(date == 1) write_com(0x0f); //显示光标并且闪烁 else write_com(0x0c); //关闭光标 }

三、示例代码

示例程序是基于51单片机温度控制和液位监测程序。

若需要全部工程资料源文件可在评论区评论或者私信我。

/*****************主函数********************/ void main() { beep = 0; //开机蜂鸣器叫一声 delay_1ms(200); P0 = P1 = P2 = P3 = 0xff; //初始化IO口 init_time0(); //初始化定时器 init_1602(); //lcd1602初始化 init_1602_dis_csf(); //lcd1602初始化显示 do { temp=Temper(); } while(temp==850); //因为DS18B20上电之后会读出来850,但不是温度值,所以等待读出温度值 delay_1ms(100); while(1) { key(); //按键程序 if(key_can > 0) { beep = 0; delay_1ms(50); beep = 1; key_with(); } if(flag_200ms == 1) { flag_200ms = 0; if(menu_1 == 0) { read_time(); //读时间 init_1602_ds1302(); //显示时钟 vol_value=VOL_VAL*A_D()/256; //获取模拟电压值 percent = 100.0*vol_value/VOL_VAL; display_temp(55); } } delay_1ms(1); } }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有