C51 COMPILER V9.60.0.0 SRTT_II_MAIN_JIAN 07/06/2022 10:08:46 PAGE 1 C51 COMPILER V9.60.0.0, COMPILATION OF MODULE SRTT_II_MAIN_JIAN OBJECT MODULE PLACED IN .\output\SRTT_II main_jian.obj COMPILER INVOKED BY: D:\software\Keil_v5\C51\BIN\C51.EXE SRTT_II main_jian.c OPTIMIZE(8,SPEED) BROWSE DEBUG OBJECTEXTEND - TABS(2) OBJECT(.\output\SRTT_II main_jian.obj) line level source 1 #include 2 #include 3 4 #define Uchar unsigned char 5 #define Uint unsigned int 6 #define uchar unsigned char 7 #define uint unsigned int 8 #define Ulong unsigned long 9 #define ulong unsigned long 10 11 //Declare SFR associated with the ADC 12 sfr ADC_CONTR = 0xC5; 13 sfr ADC_DATA = 0xC6; 14 sfr ADC_LOW2 = 0xBE; 15 sfr P1M0 = 0x91; 16 sfr P1M1 = 0x92; 17 18 //Define ADC operation const for ADC_CONTR 19 #define ADC_POWER 0x80 20 #define ADC_FLAG 0x10 21 #define ADC_START 0x08 22 #define ADC_SPEEDLL 0x00 //00 23 #define ADC_SPEEDL 0x20 //01 24 #define ADC_SPEEDH 0x40 //10 25 #define ADC_SPEEDHH 0x60 //11 26 27 //定义引脚 28 sbit LCD1602_RS = P3^2; //1602的数据/指令选择控制线 29 sbit LCD1602_RW = P3^3; 30 sbit LCD1602_E = P3^4; //1602的使能控制线 31 #define LCD1602_DB P2 //数据端口 D0~D7 32 33 void LCD1602_Init(); 34 void Delay_ms(unsigned int nms); 35 void delay(unsigned int t); 36 void LcdWaitReady(); 37 void LCD1602_write_cmd(unsigned char cmd); 38 void LCD1602_write_data(unsigned char date); 39 void LCD1602_Clear();//清屏 40 void LCD1602_SetCursor(unsigned char x,unsigned char y); //设置光标初始位置 41 void LCD1602_ShowChar(unsigned char xpos,unsigned char ypos,unsigned char xsz); 42 void LCD1602_ShowStr(unsigned char xpos,unsigned char ypos,unsigned char *p); 43 void LCD1602_ShowNum(char x, char y, unsigned int num); 44 uchar Adc(unsigned char n); 45 void send(uchar i); 46 47 void LCD1602_Init() //1602初始化函数 48 { 49 1 LCD1602_write_cmd(0x01); //显示清屏 50 1 LCD1602_write_cmd(0x38); //显示模式设置 51 1 LCD1602_write_cmd(0x0C); //显示开及光标设置 52 1 LCD1602_write_cmd(0x06); //显示光标移动位置 53 1 } 54 C51 COMPILER V9.60.0.0 SRTT_II_MAIN_JIAN 07/06/2022 10:08:46 PAGE 2 55 void LcdWaitReady() /* 等待液晶准备好 */ 56 { 57 1 unsigned char sta; 58 1 59 1 LCD1602_DB = 0xFF; 60 1 LCD1602_RS = 0; 61 1 LCD1602_RW = 1; //读状态 62 1 do { 63 2 LCD1602_E = 1; 64 2 sta = LCD1602_DB; //读取状态字 65 2 LCD1602_E = 0; 66 2 } while (sta & 0x80); //bit7等于1表示液晶正忙,重复检测直到其等于0为止 67 1 } 68 69 void Delay_ms(unsigned int nms) //@11.0592MHz nms为要延时的ms数 70 { 71 1 unsigned char i, j; 72 1 while(nms--) 73 1 { 74 2 i = 15; 75 2 j = 90; 76 2 do 77 2 { 78 3 while (--j); 79 3 } while (--i); 80 2 } 81 1 } 82 83 void delay(unsigned int t) //延时 84 { 85 1 unsigned int i, j; 86 1 for(i=0;i1)return; 163 1 while(*p!='\0') 164 1 { 165 2 LCD1602_ShowChar(xpos++,ypos,*p++); 166 2 if(*p=='\n') 167 2 { 168 3 xpos=0; 169 3 ypos++; 170 3 p++; 171 3 } 172 2 } 173 1 } 174 175 uchar Adc(unsigned char n)//采集第几通道的数据 176 { 177 1 unsigned char i; 178 1 uint result=0; C51 COMPILER V9.60.0.0 SRTT_II_MAIN_JIAN 07/06/2022 10:08:46 PAGE 4 179 1 180 1 ADC_CONTR = ADC_CONTR|0x80; //10000000 开启转换电源 181 1 delay(10); 182 1 i = 0x01<