用51单片机编写个小程序

用51单片机编写个小程序,第1张

#include <reg52.h>

#include "delay.h"

#include "lcd1602.h"

sbit SCK = P2^0//sbit定义单片机的特殊功能寄存器变量

sbit SDA = P2^1

bit ack = 0//bit定义变量

void iic_start()

{

SDA = 1

SCK = 1

delay_us(1)

SDA = 0

delay_us(1)

SCK = 0//钳住总线,等待下次使用

}

void icc_stop()

{

SDA = 0

SCK = 1

delay_us(1)

SDA = 1

delay_us(1)

SCK = 0//钳住总线,等待下次使用

}

void iic_send_byte(unsigned char byte)

{

unsigned char i

for(i = 0i<8i++)

{

SDA = byte &0x80//非0为1

SCK = 1

delay_us(1)

SCK = 0

byte <<=1//左移一位

}

SDA = 1

SCK = 1

delay_us(1)

if(0 == SDA)//有应答

ack = 0

else //无应答

ack =1

SCK = 0//钳住总线,等待下次使用

}

unsigned char iic_rcv_byte()

{

unsigned char i,temp

SDA = 1

for(i = 0i <8i ++)

{

SCK = 0

delay_us(1)

SCK = 1

delay_us(1)

temp <<= 1

if(SDA)

temp = temp+ 1

}

SCK = 0

return temp

}

void iic_ack()

{

SDA = 0

SCK = 1

delay_us(1)

SCK = 0

}

void iic_noack()

{

SDA = 1

SCK = 1

delay_us(1)

SCK = 0

}

void AT_send_str(unsigned char deviceaddr,unsigned char romaddr,unsigned char *s,unsigned char num)

{

unsigned char i

iic_start()

iic_send_byte(deviceaddr)

if(ack == 1)

return

iic_send_byte(romaddr)

if(ack == 1)

return

for(i = 0i <numi ++)

{

iic_send_byte(*s)

if(ack == 1)

return

s++

}

icc_stop()

}

void AT_rcv_str(unsigned char deviceaddr,unsigned char romaddr,unsigned char *s,unsigned char num )

{

unsigned char i

//SDA = 1

iic_start()

iic_send_byte(deviceaddr)

if(ack == 1)

return

iic_send_byte(romaddr)

if(ack == 1)

return

iic_start()

iic_send_byte(deviceaddr + 1)

if(ack == 1)

return

for(i = 0i <num - 1i++)

{

*s = iic_rcv_byte()

iic_ack()//

s++

}

*s = iic_rcv_byte()

iic_noack()

icc_stop()

}

void main()

{

unsigned char i

unsigned char testbuf[20] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,16,17,18,19}

unsigned char rcvbuf[20]

lcd_init()

AT_send_str(0xae,0,testbuf,10)

delay_ms(200)

AT_rcv_str(0xae,0,rcvbuf,10)

for(i = 0i <10i++)

{

display_lcd_char(i,0,rcvbuf[i]+0x30)

}

while(1)

}

目前市面上有一些针对单片机的微信小程序,通过这些小程序,用户可以利用微信进行单片机相关的学习、编程和实践。例如,一些小程序提供了丰富的单片机编程题、设计案例和教学视频,用户可以通过这些内容强化自己的单片机编程和应用能力。同时,一些小程序还提供了在线互动问答、实时教学辅导等服务,方便用户实时获得帮助与指导。总之,这些单片机题的微信小程序为用户提供了更为便捷、高效的学习体验,有助于提升用户的单片机编程技能与实践能力。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11356729.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存