#include "reg52.h" #include "LCD1602.h" #include "LCD1602.c" #include "ADC0832.h" #define uchar unsigned char #define uint unsigned int sbit relay=P1^6; sbit keyAdd=P3^2; sbit keyDec=P3^3; uchar str[]="Curret:00%"; uchar strV[]=" Set:50%"; void delay_ms(uint xms); void main() { uchar i; uchar mCurrent; uchar mSet=50; LcdInt(); Write_com(0x01); //ÇåÆÁ delay_1602(5); WriteAddress(0x03); delay_1602(5); for(i=0;i<11;i++) { WriteData(str[i]); delay_1602(5); } WriteAddress(0x40); delay_1602(5); for(i=0;i<11;i++) { WriteData(strV[i]); delay_1602(5); } while(1) { if(keyAdd==0) { mSet++; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); while(!keyAdd); } if(keyDec==0) { mSet--; WriteAddress(0x48); delay_1602(5); WriteData(mSet/10+0x30); delay_1602(5); WriteData(mSet%10+0x30); delay_1602(5); while(!keyDec); } mCurrent=ADC0832()*99/255; WriteAddress(0x08); WriteData(mCurrent/10+0x30); WriteData(mCurrent%10+0x30); if(mCurrent<mSet) relay=0; else relay=1; delay_ms(200); } } void delay_ms(uint xms) { uint i,j; for(i=0;i<xms;i++) for(j=0;j<121;j++); }怎么改写显示屏上的数字
时间: 2023-11-27 20:49:48 浏览: 44
要改写显示屏上的数字,需要先确定要改写的数字所在的位置。这个代码中,当前电流值和设定电流值分别在第一行第四个字符和第二行第七个字符的位置。我们可以通过修改这些位置来改写数字。
比如,如果要改写第一行的电流值为“99”,可以将下面这行代码:
```
WriteAddress(0x08);
```
改为:
```
WriteAddress(0x09); // 第一行第五个字符
```
然后在接下来的两行代码中添加:
```
WriteData('9');
WriteData('9');
```
这样就可以将电流值改为“99”了。其他数字同理,只需要修改对应的位置和数字即可。
相关问题
请为下面这段c语言代码每行写下注释,已经有的可以不用写:#include <REG52.H> #include <intrins.h> #define uchar unsigned char //宏定义方便以后用 #define uint unsigned int #define ulong unsigned long //定义ADC0832的借接口 sbit ADC_CS = P2^4; sbit ADC_Clk = P2^5; sbit ADC_DATI = P2^6; sbit ADC
#include <REG52.H> // 头文件,引入51单片机的寄存器定义
#include <intrins.h> // 头文件,引入51单片机的内置函数
#define uchar unsigned char // 宏定义,将 unsigned char 定义为 uchar ,方便代码中使用
#define uint unsigned int // 宏定义,将 unsigned int 定义为 uint ,方便代码中使用
#define ulong unsigned long // 宏定义,将 unsigned long 定义为 ulong ,方便代码中使用
sbit ADC_CS = P2^4; // 定义ADC0832芯片的借接口
sbit ADC_Clk = P2^5; // 定义ADC0832芯片的时钟接口
sbit ADC_DATI = P2^6; // 定义ADC0832芯片的数据输入接口
sbit ADC_DATO = P2^7; // 定义ADC0832芯片的数据输出接口
改进代码:#include <reg52.h> #include <absacc.h> #define uchar unsigned char #define uint unsigned int uchar data ADCDat[8] _at_ 0x30; uchar i = 6; uint ADC = 0x7ffe; //??ADC0808???? sbit EOC = P3^3; //??ADC?? void ADC_Read() { ADCDat[i] = XBYTE[ADC] ;//??ADC0808???? ADC--; i--; XBYTE[ADC] = i; if(i==0) { i = 6; ADC = 0x7ffe; XBYTE[ADC] = i; //??ADC0808 ?6?? } } //??? main() { XBYTE[ADC] = 0xfe; //??ADC?6?? while(1) { if(EOC==1) //??EOC???? ??ADC { ADC_Read(); } P1 = ADCDat[6]; //6?????? } }
这段代码有一些问题:
1. 使用了绝对地址访问内存,容易造成程序的移植性差,建议使用指针或全局变量来代替。
2. 没有在主函数中初始化 i 和 ADC,可能会导致程序出错。
3. 没有使用延时函数等待 ADC 转换结果完成,可能导致读取到错误的数据。
4. 每次读取 ADC 数据时都需要重新配置 ADC 0808 的控制信号,建议在初始化时只配置一次。
下面是对代码的改进:
```
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar ADCDat[8];
uchar *pADCDat = ADCDat + 6; // 使用指针代替绝对地址
sbit EOC = P3^3;
void delay(uint t) // 延时函数
{
uint i, j;
for(i=0; i<t; i++)
{
for(j=0; j<125; j++);
}
}
void ADC_Init() // 初始化 ADC0808
{
XBYTE[0x7fff] = 0x80; // 控制字节1,选择单端模式,参考电压为 +5V
XBYTE[0x7ffe] = 0x07; // 控制字节2,选择通道0
}
void ADC_Read() // 读取 ADC 数据
{
*pADCDat = XBYTE[0x7fff]; // 读取 ADC 数据
pADCDat--; // 指针前移
if(pADCDat < ADCDat) // 判断是否到达数组末尾
{
pADCDat = ADCDat + 6;
}
XBYTE[0x7ffe] = ((pADCDat - ADCDat) & 0x07) | 0x08; // 选择下一个通道,并触发 ADC 转换
}
void main()
{
ADC_Init();
while(1)
{
if(EOC == 1)
{
delay(1); // 等待 ADC 转换完成
ADC_Read();
}
P1 = ADCDat[6];
}
}
```
改进后的代码使用指针代替绝对地址,增加了延时函数等待 ADC 转换结果完成,只在初始化时配置 ADC 0808 的控制信号,提高了程序的可移植性和可读性。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)