资源预览内容
第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
亲,该文档总共7页全部预览完了,如果喜欢就下载吧!
资源描述
#include #include #include #include #define uchar unsigned char #define uint unsigned int #define BUSY 0x80 /常量定义 #define DATAPORT P0 /ADC0832的引脚 sbit ADCS =P35; /ADC0832 chip seclect sbit ADDI =P37; /ADC0832 k in sbit ADDO =P37; /ADC0832 k out sbit ADCLK =P36; /ADC0832 clock signal sbit LCM_RS=P20; sbit LCM_RW=P21; sbit LCM_EN=P22; uchar ad_data; /采样值存储 sbit Alarm_led_red =P15; /超过压力表量程最大值红色led报警定义 sbit Alarm_led_green=P16; /低于压力表量程最小值绿色led报警定义 /adc采样值存储单元 char press_data; /标度变换存储单元 unsigned char ad_alarm; /报警值存储单元 unsigned char press_bai=0; /显示值百位 unsigned char press_shi=0; /显示值十位 unsigned char press_ge=0; /显示值个位 unsigned char press_dot=0; /显示值十分位 uchar code str0=Press: . kpa ; uchar code str1= Check BY Jack ; void delay(uint); void lcd_wait(void); void delay_LCM(uint); /LCD延时子程序 void initLCM( void); /LCD初始化子程序 void lcd_wait(void); /LCD检测忙子程序 void WriteCommandLCM(uchar WCLCM,uchar BusyC); /写指令到ICM子函数 void WriteDataLCM(uchar WDLCM); /写数据到LCM子函数 void DisplayOneChar(uchar X,uchar Y,uchar DData); /显示指定坐标的一个字符子函数 void DisplayListChar(uchar X,uchar Y,uchar code *DData); /显示指定坐标的一串字符子函数 void display(void); /系统显示子函数 uchar Adc0832(unsigned char channel); void alarm(void); void data_pro(void); void main(void) delay(500); /系统延时500ms启动 initLCM( ); WriteCommandLCM(0x01,1); /清显示屏 DisplayListChar(0,0,str0); DisplayListChar(0,1,str1); while(1) ad_data =Adc0832(0); /采样值存储单元初始化为0 alarm(); data_pro(); display(); void delay(uint k) uint i,j; for(i=0;i for(j=0;j60;j+) ; void WriteCommandLCM(uchar WCLCM,uchar BusyC) if(BusyC)lcd_wait(); DATAPORT=WCLCM; LCM_RS=0; / 选中指令寄存器 LCM_RW=0; / 写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; void WriteDataLCM(uchar WDLCM) lcd_wait( ); /检测忙信号 DATAPORT=WDLCM; LCM_RS=1; / 选中数据寄存器 LCM_RW=0; / 写模式 LCM_EN=1; _nop_(); _nop_(); _nop_(); LCM_EN=0; void lcd_wait(void) DATAPORT=0xff; /读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色 LCM_EN=1; LCM_RS=0; LCM_RW=1; _nop_(); _nop_(); _nop_(); while(DATAPORT&BUSY) LCM_EN=0; _nop_(); _nop_(); LCM_EN=1; _nop_(); _nop_(); LCM_EN=0; void initLCM( ) DATAPORT=0; delay(15); WriteCommandLCM(0x38,0); /三次显示模式设置,不检测忙信号 delay(5); WriteCommandLCM(0x38,0); delay(5); WriteCommandLCM(0x38,0); delay(5); WriteCommandLCM(0x38,1); /8bit数据传送,2行显示,5*7字型,检测忙信号 WriteCommandLCM(0x08,1); /关闭显示,检测忙信号 WriteCommandLCM(0x01,1); /清屏,检测忙信号 WriteCommandLCM(0x06,1); /显示光标右移设置,检测忙信号 WriteCommandLCM(0x0c,1); /显示屏打开,光标不显示,不闪烁,检测忙信号 void DisplayOneChar(uchar X,uchar Y,uchar DData) Y&=1; X&=15; if(Y)X|=0x40; /若y为1(显示第二行),地址码+0X40 X|=0x80; /指令码为地址码+0X80 WriteCommandLCM(X,0); WriteDataLCM(DData); void DisplayListChar(uchar X,uchar Y,uchar code *DData) uchar ListLength=0; Y&=0x01; X&=0x0f; while(X16) DisplayOneChar(X,Y,DDataListLength); ListLength+; X+; void display(void) WriteCommandLCM(0x0c,1); /显示
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号