基于51单片机的“扫地机器人”设计报告内容摘要:
m,s2num。 uchar code table[]= ON: 00:00:00。 uchar code table1[]=扫地机器人。 23 uchar code table2[]= OFF: 00:00:00。 uchar code table3[]= TIME: 00:00:00。 void InitUart()。 void InitADC()。 void SendData(uchar dat)。 int GetADCResult(uchar ch)。 void Delay(uint n)。 void ShowResult(uchar ch)。 float Ad_AV(uchar channel)。 //计算 AD 转换电压值 void delayus(uint z)。 void delayms(uint z)。 void Q0(void)。 void cc(uint addr)。 void xcx(uint addr,uchar dat)。 uchar dcx(uint addr)。 void write_(uchar mand)。 void write_date(uchar date)。 void ds1302writebyte(uchar dat)。 uchar ds1302readbyte()。 uchar ds1302read(uchar cmd)。 void ds1302write(uchar cmd, uchar dat)。 24 // 初次初始化 ds1302 使用 //void init_ds1302(void)。 void init()。 void keyscan()。 //设置时钟 , 开启时间 , 结束时间 //void di()。 //蜂鸣器报警 void clock()。 void pare()。 void powershow()。 void show(int x,int y)。 void show1(int x)。 void pwm(uchar x)。 void beiguang()。 void main() { init()。 while(1) { keyscan()。 clock()。 pare()。 25 powershow()。 beiguang()。 } } void beiguang() { if(s1num==0) { if(s2==0) { pwm(255)。 } if(s3==0) { pwm(128)。 } if(s4==0) { pwm(256)。 } } } void pwm(uchar x) { CCON = 0。 CL = 0。 CH = 0。 CMOD = 0x02。 26 CCAP0H = CCAP0L = x。 CCAPM0 = 0x42。 CR = 1。 } float Ad_AV(uchar channel) //计算 AD 转换电压值 { float VAL_AV=0。 uchar num。 for(num=100。 num0。 num) { VAL_AV+=GetADCResult(channel)。 } VAL_AV/=。 VAL_AV*=。 VAL_AV=VAL_AV*。 return VAL_AV。 } void powershow() //显示电量 { float dianya。 dianya=Ad_AV(1)。 if(dianya=) 27 { show1(0)。 } else if(dianya=) { show1(1)。 } else if(dianya=) { show1(3)。 } else if(dianya=) { show1(5)。 } else if(dianya=) { show1(8)。 } else if(dianya=) { show(1,0)。 } else if(dianya=) { show(1,2)。 } else if(dianya=) { show(1,5)。 } else if(dianya=) { show(1,8)。 } else if(dianya=) { show(2,0)。 } else if(dianya=) { show(2,5)。 } else if(dianya=) 28 { show(2,8)。 } else if(dianya=) { show(3,0)。 } else if(dianya=) { show(3,3)。 } else if(dianya=) { show(3,5)。 } else if(dianya=) { show(3,8)。 } else if(dianya=) { show(4,0)。 } else if(dianya=) { show(4,2)。 } else if(dianya=) { show(4,5)。 } else if(dianya=) { show(5,0)。 } else if(dianya=) { show(5,5)。 } else if(dianya=) { show(5,8)。 } else if(dianya=) 29 { show(6,0)。 } else if(dianya=) { show(6,3)。 } else if(dianya=) { show(6,5)。 } else if(dianya=) { show(6,7)。 } else if(dianya=) { show(7,0)。 } else if(dianya=) { show(7,3)。 } else if(dianya=) { show(7,5)。 } else if(dianya=) { show(7,7)。 } else if(dianya=) { show(8,0)。 } else if(dianya=) { show(8,2)。 } else if(dianya=) { show(8,5)。 } else if(dianya=) 30 { show(8,7)。 } else if(dianya=) { show(9,0)。 } else if(dianya=) { show(9,2)。 } else if(dianya=) { show(9,5)。 } else if(dianya=) { show(9,7)。 } else if(dianya=) { show(9,9)。 } else if(dianya) { write_(0x80+6)。 write_date(0x30+1)。 write_date(0x30+0)。 write_date(0x30+0)。 write_date(39。 %39。 )。 } } void show(int x,int y) 31 { write_(0x80+6)。 write_date(39。 39。 )。 write_date(0x30+x)。 write_date(0x30+y)。 write_date(39。 %39。 )。 } void show1(int x) { write_(0x80+6)。 write_date(39。 39。 )。 write_date(39。 39。 )。 write_date(0x30+x)。 write_date(39。 %39。 )。 } void delayus(uint z) { uint x,y。 for(x=z。 x0。 x) for(y=10。 y0。 y)。 } void delayms(uint z) //延时 32 { uint x,y。 for(x=z。 x0。 x) for(y=110*3。 y0。 y)。 } void Q0(void) { ISP_CONTR=0。 ISP_CMD=0。 ISP_TRIG=0。 ISP_ADDRH=0X80。 ISP_ADDRL=0。 } void cc(uint addr) { ISP_CONTR=0X82。 ISP_CMD=0X03。 //eeprom 擦除使能 ISP_ADDRL=addr。 ISP_ADDRH=addr8。 EA=0。 ISP_TRIG=0X5A。 ISP_TRIG=0XA5。 33 delayus(1)。 Q0()。 //关闭 ISP,IAP } void xcx(uint addr,uchar dat) { ISP_CONTR=0X82。 ISP_CMD=0X02。 ISP_ADDRL=addr。 ISP_ADDRH=addr8。 ISP_DATA=dat。 EA=0。 ISP_TRIG=0X5A。 ISP_TRIG=0XA5。 delayus(1)。 Q0()。 //关闭 ISP,IAP } uchar dcx(uint addr) { uchar dat。 ISP_CONTR=0X82。 ISP_CMD=0X01。 ISP_ADDRL=addr。 34 ISP_ADDRH=addr8。 EA=0。 ISP_TRIG=0X5A。 ISP_TRIG=0XA5。 delayus(1)。 dat=ISP_DATA。 Q0()。 return dat。 } void write_(uchar mand) //写指令到 12864 { LCD_RS=0。 LCD_WR=0。 LCD_EN=0。 P0=mand。 delayms(5)。 LCD_EN=1。 delayms(5)。 LCD_EN=0。 } 35 void write_date(uchar date) //写显示数据到 12864 { LCD_RS=1。 LCD_WR=0。 LCD_EN=0。 P0=date。 delayms(5)。 LCD_EN=1。 delayms(5)。 LCD_EN=0。 } void ds1302writebyte(uchar dat) { uchar i。 SCLK=0。 delayms(1)。 for(i=0。 i8。 i++) { SDA=datamp。 0x01。 //取最低位 , ds1302 从最低位开始传输 delayus(2)。 SCLK=1。 36 delayus(2)。 SCLK=0。 dat=1。 //数据右移一位 } } uchar ds1302readbyte() { uchar i,dat。 delayms(1)。 for(i=0。 i8。 i++) { dat=1。 //要返回的数据左移一位 if(SDA==1) dat|=0x80。 //要传输数据的当前值置为 1,若不是则为 0 SCLK=1。 delayus(2)。 SCLK=0。 delayus(2)。 } return dat。 } 37 uchar ds1302read(uchar cmd) { uchar dat。 RST=0。 //初始 CE 先置 0 SCLK=0。 //初始时钟线置 0 RST=1。 //CE 置 1, 传输开始 ds1302writebyte(cmd)。 // 传输命令字 , 要读取的时间 dat=ds1302readbyte()。 // 读取要得到的时间 SCLK=1。 //时钟线拉高 RST=0。 return dat。 } void ds1302write(uchar cmd, uchar dat) { RST=0。 SCLK=0。 RST=1。 ds1302writebyte(cmd)。 ds1302writebyte(dat)。 S。基于51单片机的“扫地机器人”设计报告
相关推荐
31P 0 732P 0 633P 0 534P 0 435P 0 336P 0 237P 0 138P 0 039V C C40P 1 01P 1 12P 1 23P 1 34P 1 45P 1 56P 1 67P 1 78U4 8 9 C 5 1 图 32 STC89C51 单片机引脚图 单片机是美国 STC 公司最新推出的一种新型 51 内核的单片机。 片内含有 Flash 程序存储器、
函数连接。 这种方法是 PHP 连接 MySQL 最常用的方法,无论从易用性和效率上都比用 ODBC 接口连接好。 PHP 存取 mysql 数据库的四个步骤是: 建立连接: mysql_connect()。 操纵数据库: mysql_select_db()。 返回布尔型数据值 操纵数据库中的数据: mysql_query()。 关闭连接: mysql_close()。 (2) 通过 ODBC
9 101 23 45 67 89 101 23 45 67 8SQ3SQ4KP3SQ5SQ6KP4KP1KP2SQ1SQ2SQ7SQ8模拟有料预开启动预停急停急退/回 原点点动/启 动单机点动、半自动已卸料已装料已夹紧已夹紧已松开已定位已定位已拔销原位原位已向前已向前输送带步进装置、定位机构夹紧机构S A 1 3S B 1S B 2S B 3S B 4S B 5S B 6S B 7S B 8S
活密切的部门和行业。 „对政府部门的评议内容主要是依法履行职责、公众执法、政务 公开、办事效率、服务态度、清正廉洁等情况;公共服务行业的评议主要是依法经营、诚信服务、事务公开、办事效率、服务态度、清正廉洁等情况。 旨在促进依法行政。 考核方式: 查阅资料。 未建立城镇供水服务与投诉监管制度的,扣3 分;根据最近一期政风行风评议结果,排名均靠后的(后 3 名)扣 3分。 (有一项靠后的扣 2 分)
................................................223城市道路监控系统施工组织设计方案 091115城市道路监控系统 施工组织方案施工组织方案江西三采均安智能科技有限公司二 00 九年十一月一十五日目 录 1. 工程概况蚁鼓驳沽喀惮赢谓们穿牵减潜沃镭稠呈楔寒呢芦疡伊播寞靴盔筐独畜逻针掷笔结猜友韧诽狈淬惫危涟柄曾桔奠筏佑价田赐厄鉴抒徽午冗冰则滥维昂
...................32 ................................................................................................................................33 市 地下管线探测监理项目 招标文件 编制 III .....................