讲下这段程序的编程流程和目的#include "main.h" //=========================================== sbit RS=P1^0; sbit RW=P1^1; sbit E=P1^2; sbit lcd_bla = P2^7; //=========================================== void Delay140us() //@12.000MHz 1T { unsigned char i, j; nop(); nop(); i = 2; j = 158; do { while (--j); } while (--i); } //void lcd_delay(uchar z) //{ // uchar t1,y; // for(t1=z;t1>0;t1--) // for(y=110;y>0;y--); //} //void Delay140us() //@12.000MHz 12T //{ // unsigned char i; // // nop(); // i = 67; // while (--i); //} // //uchar lcd_busy() //{ // register uchar lcd_start; // RS=0; // RW=1; // E=1; // lcd_delay(1); // lcd_start=P0; // E=0; // return(lcd_start&0x80); //} //============================================ void read(u8 del) //读函数 { P0=del; // while(lcd_busy()); RS=0; RW=0; E=0; Delay140us(); E=1; Delay140us(); } //============================================ void write(u8 del) //写函数 { P0=del; // while(lcd_busy()); RS=1; RW=0; E=0; Delay140us(); E=1; Delay140us(); } //============================================ //============================================ void lcd_init(void) //初始化函数 { lcd_bla = 0; read(0x01); read(0x0c); read(0x06); read(0xd0); read(0x38); lcd_show(1,1,' '); } //============================================ //void lcd_clear(void) //{ //read(0x01); //Delay140us(); //} void lcd_show(u8 hang,u8 lie,int sign) //数字显示 { u8 a; if(hang==1)a=0x80; if(hang==2) a=0xc0; a=a+lie-1; read(a); write(sign+48); } //============================================ void lcd_string(u8 hang,u8 lie,u8 *p) //字符串显示 { u8 a; if(hang==1)a=0x80; if(hang==2) a=0xc0; a=a+lie-1; read(a); while(1) { if(*p == '\0') break; write(*p); p++; } }
时间: 2023-08-23 10:07:55 浏览: 81
这段程序的编程流程和目的和上一段程序是一样的,都是控制LCD显示器,实现数字和字符串的显示。它们的区别在于一些细节上,比如其中的延时函数Delay140us()使用的是1T的延时方式,而上一段程序中的Delay140us()使用的是12T的延时方式。此外,lcd_init()函数中的lcd_show()函数的参数不同,上一段程序中是' ',而这一段程序中是0x30,这是因为这里将数字0的ASCII码值加上了48,即0x30,实现了数字的显示。
相关问题
编程实现: S=1+2+3+……+100
编程实现 S=1+2+3+...+100 的一种常见方法是使用循环结构,例如在 C 语言中可以这样实现:
```c
#include <stdio.h>
int main() {
int sum = 0;
for(int i = 1; i <= 100; ++i) {
sum += i;
}
printf("S = %d\n", sum);
return 0;
}
```
这段代码通过一个 `for` 循环,从1累加到100,并将每次循环的结果累加到变量 `sum` 中,最后打印出 `sum` 的值,即为 S 的值。
除了使用循环结构,还可以使用数学公式来求解,即等差数列的求和公式:
```
S = n * (n + 1) / 2
```
其中 n 是等差数列的项数,在这个例子中 n=100。使用这个公式,我们可以直接计算出 S 的值而无需循环:
```c
#include <stdio.h>
int main() {
int n = 100;
int sum = n * (n + 1) / 2;
printf("S = %d\n", sum);
return 0;
}
```
这样,我们就可以得到 S 的值为 5050,而无需进行100次的累加操作。
# include <stdio.h> # define PI 3.14159 main() float r,s; r=10 s=PI*r*r; pintf("s=%f\n",s);
这段代码是在 C++ 编程环境中编写的,但 C++ 和 C 语言有一些区别,尤其是注释符号(C++ 使用 `//` 或 `/* */`,而 C 使用 `/* ... */`)。考虑到这一点,我会假设您是想问如何在 C 语言环境下运行这个程序。
这是一个简单的 C 程序,用于计算圆的面积并输出结果。让我们逐行分析:
```c
#include <stdio.h> // 引入标准输入输出库,提供 printf 函数
#define PI 3.14159 // 宏定义 π 的值
int main() // 主函数的入口点
{
float r, s; // 声明两个浮点变量 r 和 s
r = 10; // 变量 r 被赋值为 10
s = PI * r * r; // 计算圆的面积,使用定义的 PI 值
printf("s=%f\n", s); // 输出圆的面积到控制台,用%f 格式化字符串表示浮点数,并换行
}
```
要运行这个程序,你需要保存代码在一个 `.c` 文件中(如 `circle_area.c`),然后使用一个 C 编译器(如 gcc)编译并执行:
```sh
gcc -o output circle_area.c
./output
```
这将会生成一个名为 `output` 的可执行文件,当你运行它时,你会看到输出 `"s=314.159000"`(因为 r=10 时,π*10^2 = 314.159)。
阅读全文