完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
这是程序 在别的基础上改的 ,初学单片机所以不懂请帮助 1。本机实现自动定时开灯喂食功能 现在我想通过串口来控制 例如 串口发送 0x20 BEEP=0 喂食 发送 0x21 停止喂食 发送0x30开灯 发送0x31关灯 我自己加入代码 发送没有反应 2.可以将温度数值 通过串口发送回PC 一下程序: #include #include //#include "LCD1602.h" //#include "DS1302.h" #define uint unsigned int #define uchar unsigned char ***it DS1302_CLK = P1^5; //实时时钟时钟线引脚 ***it DS1302_IO = P1^6; //实时时钟数据线引脚 ***it DS1302_RST = P1^7; //实时时钟复位线引脚 ***it wireless_1 = P3^0; ***it wireless_2 = P3^1; ***it wireless_3 = P3^2; ***it wireless_4 = P3^3; ***it ACC0 = ACC^0; ***it ACC7 = ACC^7; char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; //秒,分,时到日,月,年位闪的计数 ***it Set = P2^0; //模式切换键 ***it Up = P2^1; //加法按钮 ***it Down = P2^2; //减法按钮 ***it out = P2^4; //立刻跳出调整模式按钮 ///////////////////////////// ***it B1 = P2^3; ***it B2 = P2^1; ***it B3 = P2^2; ***it B4 = P2^4; ***it BEEP = P1^3; ***it DENG = P1^4; ***it BEIDENG=P3^6; //2^3 ***it DENGSHI=P3^7; // void weishi(); //定时喂食 // void kaideng(); //定时开灯 // ///////////////////////////// ***it DQ = P3^7; //温度传送数据IO口 char done,count,temp,flag,up_flag,down_flag,TMP,TMP1,TMP2; uchar temp_value; //温度值 uchar TempBuffer[5],week_value[2]; void show_time(); //液晶显示程序 /***********1602液晶显示部分子程序****************/ //Port Definitions********************************************************** ***it LcdRs = P1^0; ***it LcdRw = P1^1; ***it LcdEn = P1^2; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口 //内部等待函数************************************************************************** unsigned char LCD_Wait(void) { LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); LcdEn=0; return DBPort; } //向LCD写入命令或数据************************************************************ #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) { LcdEn=0; LcdRs=style; LcdRw=0; _nop_(); DBPort=input; _nop_();//注意顺序 LcdEn=1; _nop_();//注意顺序 LcdEn=0; _nop_(); LCD_Wait(); } //设置显示模式************************************************************ #define LCD_SHOW 0x04 //显示开 #define LCD_HIDE 0x00 //显示关 #define LCD_CURSOR 0x02 //显示光标 #define LCD_NO_CURSOR 0x00 //无光标 #define LCD_FLASH 0x01 //光标闪动 #define LCD_NO_FLASH 0x00 //光标不闪动 void LCD_SetDisplay(unsigned char DisplayMode) { LCD_Write(LCD_COMMAND, 0x08|DisplayMode); } //设置输入模式************************************************************ #define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 // default #define LCD_MOVE 0x01 // 画面可平移 #define LCD_NO_MOVE 0x00 //default void LCD_SetInput(unsigned char InputMode) { LCD_Write(LCD_COMMAND, 0x04|InputMode); } //初始化LCD************************************************************ void LCD_Initial() { LcdEn=0; LCD_Write(LCD_COMMAND,0x38); //8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38); LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); //开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); //AC递增, 画面不动 } //液晶字符输入的位置************************ void GotoXY(unsigned char x, unsigned char y) { if(y==0) LCD_Write(LCD_COMMAND,0x80|x); if(y==1) LCD_Write(LCD_COMMAND,0x80|(x-0x40)); } //将字符输出到液晶显示 void Print(unsigned char *str) { while(*str!=' |