本篇文章给大家谈谈c语言delaynms,以及c语言delay函数在哪个头文件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、单片机C语言如何实现数组动态调用?2、求助:单片机C语言中延时程序怎样计算?3、单片机控制数字电位器的c语言程序4、哪位大侠帮忙解释一下这个C语言的每个步骤?5、C语言编程题,请编写设计一个延时子函数delaynms(int n)用来延时0.5秒的功能,机器周
单片机C语言如何实现数组动态调用?
sizeof一般是在编译时计算,不适合用在你这种情况,如下修改已仿真验证可切换传送。
#includereg52.h
#define uchar unsigned char
#define uint unsigned int
/*********端口定义*************/
//SCLK 串行同步时钟
//SID 串行数据输入端
//CS 片选,高#includereg52.h
#define uchar unsigned char
#define uint unsigned int
/*********端口定义*************/
//SCLK 串行同步时钟
//SID 串行数据输入端
//CS 片选,高电平有效
sbit CS =P1^2;
sbit SID =P1^1;
sbit SCLK=P1^0;
/******************************/
/*******字幕显示定义***********/
uchar code Table1[]={“I Love MCU”};
uchar code Table2[]={“我爱单片机!”};
/******************************/
void Delaynms(uchar x)
{
uchar i,j;
for(i=0;ix;i++)
{
for(j=0;j110;j++);
}
}
void DatComOperation(uchar datas,uchar datcom)
{
uchar temp;
uint i;
temp=datas;
CS=1;
SCLK=0;
for(i=0;i8;i++)
{
SID=(bit)(temp0x80);
SCLK=0;
SCLK=1;
temp=1;
}
temp=datcom;
temp=0xf0;
for(i=0;i8;i++)
{
SID=(bit)(temp0x80);
SCLK=0;
SCLK=1;
temp=1;
}
temp=datcom;
temp=4;
for(i=0;i8;i++)
{
SID=(bit)(temp0x80);
SCLK=0;
SCLK=1;
temp=1;
}
CS=0;
Delaynms(10);
}
void SendCommand(uchar comm) //12232发送指令
{
DatComOperation(0xf8,comm);
}
void SendData(uchar datas) //12232发送数据
{
DatComOperation(0xfa,datas);
}
void Lcd12Initial()
{
Delaynms(100);
SendCommand(0x30);
SendCommand(0x02);
SendCommand(0x06);
SendCommand(0x0c);
SendCommand(0x01);
SendCommand(0x80);
}
void DispInfor(uchar x,uchar code *arrays) //???????
{
uchar i,j;
SendCommand(x); //定义字符显示的位置
//for(i=0;isizeof(arrays)/sizeof(arrays[0]);i++)
// SendData(arrays[i]);
i=0;
while(j=arrays[i++]) SendData(j);
}
void main()
{
Lcd12Initial();
DispInfor(0x80,Table1);//DisInfor(0x80,Table1);
DispInfor(0x90,Table2);//DisInfor(0x90,Table2);
while(1); //等待
}
求助:单片机C语言中延时程序怎样计算?
你好:
如果你想直接知道答案,那么我告诉你,12MHz晶振:
void delayms(unsigned int t)
{
unsigned int i,j;
for(i=t;i0;i–)
for(j=123;j0;j–);
}
能精确到1ms。
如果是11.0592MHz晶振,只需把上面的“j=123”改为“j=114”,都是调试过的,没问题。
然后你要想知道是怎么调试的,很简单,打开uv2编程软件,在最上边的工具栏里边有个“Debug”,点击后出现下拉菜单,选择第一个“start/stop Debug Session”,然后在最右边有一个Watch栏,有两个项目,一个是“Register”,一个是“value”,然后在“Register”栏下边的“Sys”里边有个“sec”,你只要单击“Step over”运行程序并观察“sec”的值就能调试出你程序的执行时间了。
注意,一定要先选择晶振频率,不然会默认24MHz。
希望我的回答能帮助到你。
单片机控制数字电位器的c语言程序
数字电位器用的是X9C103
#includereg51.h
#includestdio.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
//设定四个按键
sbit X9C102=P2^0;
sbit X9C202=P2^1;
sbit X9C302=P2^2;
sbit X9C402=P2^3;
sbit X9C103_CS=P1^0;
sbit X9C103_INC=P1^1;
sbit X9C103_UD=P1^2;
void delay_nus(uint i)
{
while(i–);
}
void delay_nms(uchar i)
{
for(i;i0;i++)
{
delay_nus(1000);
}
}
void set_x9c103(uchar num,uchar ud,uchar save)
{
X9C103_CS=0;
delay_nus(1);
if(ud==1)
{
X9C103_UD=1;
}
else
{
X9C103_UD=0;
}
delay_nus(4);
for(num;num0;num–)
{
X9C103_INC=1;
delay_nus(2);
X9C103_INC=0;
delay_nus(2);
}
delay_nus(2);
if(save==1)
{
X9C103_INC=1;
delay_nus(2);
X9C103_CS=1;
delay_nms(22);
}
X9C103_CS=1;
delay_nus(10);
}
void clear_down()
{
set_x9c103(100,0,1);
}
void main_init()
{
X9C103_CS=0;
clear_down();
}
void main()
{
main_init();
set_x9c103(70,1,1);
while(1)//扫描按键,对应不同倍数的输出
{
if (X9C102==0){
clear_down();
set_x9c103(10,1,1);}
if (X9C202==0){
clear_down();
set_x9c103(30,1,1);}
if (X9C302==0){
clear_down();
set_x9c103(60,1,1);}
if (X9C402==0){
clear_down();
set_x9c103(90,1,1);}
}
}
哪位大侠帮忙解释一下这个C语言的每个步骤?
sbit Key_UP=P3^2; //正转按键
sbit Key_DOWN=P3^3; //反转按键
sbit Key_STOP=P3^4; //停止按键
sbit ZZ=P1^0; //控制端,用单片机的P1.0口
sbit FZ=P1^1; //控制端,用单片机的P1.1口
sbit FMQ=P3^6;
//这5行定义了单片机管脚对外连接的功能,p3^2,表p3.2口其他的类似;
void delaynms(uint aa)
//延时函数,单片机执行命令是需要时间的,一条空指令需要一个指令周期
FMQ=1;
//此类语句是对对应的管脚电平设置,1为高电平,0为低电平,对于不同外接设备高低电平使用是不同的
C语言编程题,请编写设计一个延时子函数delaynms(int n)用来延时0.5秒的功能,机器周
声明定义:
void delaynms(int n) //n: millisecond
{
int i,j;
for(i=0;in;i++)
for(int j=0;j500);
}
调用:
delaynms(500); //delay 0.5 second
c语言delaynms的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言delay函数在哪个头文件、c语言delaynms的信息别忘了在本站进行查找喔。