导航:首页 > 操作系统 > 用一用单片机程序

用一用单片机程序

发布时间:2022-08-07 11:24:36

A. 用51单片机写一个程序

几个数码管?学号怎么定义?对串口发送数据按照什么格式?不说详细了这个没法做啊

B. 用51单片机编写个小程序

#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 = 0;i<8;i++)
{
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 = 0;i < 8;i ++)
{
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 = 0;i < num; i ++)
{
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 = 0;i < num - 1; i++)
{
*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 = 0;i < 10; i++)
{
display_lcd_char(i,0,rcvbuf[i]+0x30);
}
while(1);
}

C. 用C语言编写单片机程序

#include
sbit
csb_SAT=
P1^0;
//定义超声波发生脚
void
delay(void)
//延时25微秒,12T芯片用12M误差
0us
{
unsigned
char
a;
for(a=11;a>0;a--);
}
void
csb_fs(int
dat)
{while(dat--){csb_SAT=1;delay();csb_SAT=0;delay();}}
//发射
void
main()
{
EA=1;
while(1)
{
csb_fs(10);
delay();delay();delay();delay();delay();delay();delay();delay();delay();
IE=0x83;
//INT0允许中断
while(IE);
P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();P1_1=1;delay();P1_1=0;delay();
}
}
void
int0_chuankou(void)
interrupt
0
using
1
//外部INT0中断子程序
{
IE=0;//禁止INT0中断
}

D. 用51单片机写一个程序,求大神

1、使用定时器0方式二,结合软件计数器来实现秒信号的产生;
2、定时器必须使用中断的方式来实现;
3、使用单片机开发板上的左边四位来扫描显示时间,显示格式为“MM.SS”;
4、开机时显示00.00,最大值显示到59.59(59分59秒);
5、第一次按电路板上K1(P3.2)键启动走时,K1必须使用中断方式实现;
6、第二次按K1暂停走时,数码管显示按键时刻的当前值;
7、第三次按K1时,在上一次停止的时刻继续走时;第四次按时暂停,如此反复;
8、任何时候按电路板上K2(P3.3)时,显示内容清零,重新显示“00.00”,时间停止。K2键必须使用中断方式实现。
大神加油啊!!

E. 求一个单片机程序用C++写

单片机程序C两个+写这不懂啊,是属于外行。

阅读全文

与用一用单片机程序相关的资料

热点内容
android检查是否安装 浏览:371
苹果手机编辑pdf文件 浏览:454
android系统名字 浏览:963
安卓手机如何进去有求必应屋 浏览:432
指数除法运算法则底数不同 浏览:894
90压缩干粮09压缩干粮 浏览:516
android线程池框架 浏览:481
手机自带解压能解压哪些文件 浏览:804
linux安装hba驱动 浏览:119
java构造函数new 浏览:668
怎么查家里电器耗电量app 浏览:506
原神一直显示重新连接服务器怎么办 浏览:826
一般用途轴流式压缩机 浏览:926
没学历的怎么学编程 浏览:901
华为的隐藏相册无法加密 浏览:782
联通套餐app怎么设置 浏览:752
关于删除链表的算法描述 浏览:894
标准盘和压缩盘的区别 浏览:47
银行存款验证码JAVA编程 浏览:111
word转pdf软件免费版 浏览:139