欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機+1602顯示字符串問題
[打印本頁]
作者:
LF電子工
時間:
2021-10-17 13:37
標題:
單片機+1602顯示字符串問題
1.png
(257.43 KB, 下載次數: 28)
下載附件
2021-10-17 13:43 上傳
#include <reg51.h>
#include <intrins.h> //包含_nop_()空函數的頭文件
#define uchar unsigned char
#define uint unsigned int
#define out P0
sbit RS=P1^0; //位變量
sbit RW=P1^1; //位變量
sbit E=P1^2; //位變量
sbit DQ=P1^5; //位變量
sbit I2C_SCL=P1^6; //位變量
sbit I2C_SDA=P1^7; //I2C通信的兩個引腳
sbit S3=P3^5; //加//按鍵
sbit S2=P3^6; //減
sbit S1=P3^7; //保存
void delay(uint); //延時函數(1ms)
void delay5(uchar); //延時函數(5us)
void lcd_initial(void); //LCD初始化函數
void init_ds18b20(void); //DS18B20初始化函數
void check_busy(void); //檢查忙標志位函數
void write_command(uchar com); //寫命令函數
void write_data(uchar dat); //寫顯示數據函數
uchar readbyte(void); //讀取1B數據
void writebyte(uchar); //寫入1B函數
uchar retemp(void); //讀溫度函數
void string(uchar ad,uchar *s); //逐個輸出顯示字符串函數
void stringAll(uchar ad,uchar *s);//整屏輸出顯示字符串函數
void getHtemp(uchar str[]); //獲得最高溫度的字符串形式
void getLtemp(uchar str[]); //獲得最低溫度的字符串形式
void getTtemp(uchar str[]); //獲得當前溫度的字符串形式
void delayms(uint t); //延時函數
void keyscan(); //按鍵掃描函數
void save_data(); //保存數據的函數
void load_data(); //讀取數據的函數
uchar code seg[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0xdf,0x43,0x20,0x2d}; //(0-9,'°','C',' '(空格),'-')ASCII碼值
uint flag=0;
uchar maxtemp=40; //初始化最高溫度
uchar mintemp=30; //初始化最低溫度
//主函數
void main()
{
uchar Htempstr[4];
uchar Ltempstr[4];
uchar Ttempstr[4];
uchar i=16;
uchar *gear="0";
uchar tempsign[2];
tempsign[0]=seg[10];
tempsign[1]=seg[11];
lcd_initial();
load_data(); //讀取保存在EEPROM中的數據
string(0x80,"welcome to AAUCS");
string(0xc5,"NO.35");
delay(500);
while(i){
write_command(0x1c); //實際電路板上需設置為0x18
i--;
delay(200);
}
lcd_initial();
while(1){
keyscan();
getHtemp(Htempstr);
getLtemp(Ltempstr);
getTtemp(Ttempstr);
//stringAll(0x80,"H:");
stringAll(0x82,Htempstr);
//stringAll(0x86,tempsign);
//stringAll(0x88,"L:");
//stringAll(0x8a,Ltempstr);
//stringAll(0x8e,tempsign);
//stringAll(0xc0,"T:");
//stringAll(0xc2,Ttempstr);
//stringAll(0xc6,tempsign);
//stringAll(0xca,"FAN:");
//stringAll(0xce,gear);
delay(100);
}
}
//獲得最高溫度的字符串形式
void getHtemp(uchar htempstr[4]){
uchar a,b,c;
if(maxtemp>=0)
{
a=seg[maxtemp/100];
b=seg[(maxtemp/10)%10];
c=seg[maxtemp%10];
htempstr[0]=seg[12];
}
else
{
maxtemp=~maxtemp+1;
a=seg[maxtemp/100];
b=seg[(maxtemp/10)%10];
c=seg[maxtemp%10];
htempstr[0]=seg[13];
}
htempstr[1]=a;
htempstr[2]=b;
htempstr[3]=c;
}
//獲得最低溫度的字符串形式
void getLtemp(uchar ltempstr[4]){
uchar a,b,c;
if(mintemp>=0)
{
a=seg[mintemp/100];
b=seg[(mintemp/10)%10];
c=seg[mintemp%10];
ltempstr[0]=seg[12];
}
else
{
mintemp=~mintemp+1;
a=seg[mintemp/100];
b=seg[(mintemp/10)%10];
c=seg[mintemp%10];
ltempstr[0]=seg[13];
}
ltempstr[1]=a;
ltempstr[2]=b;
ltempstr[3]=c;
}
//獲得當前溫度的字符串形式
void getTtemp(uchar str[4]){
uchar temp,a,b,c;
temp=retemp();
a=seg[temp/100];
b=seg[(temp/10)%10];
c=seg[temp%10];
if(flag==0)
{
str[0]=seg[12];
}
else
{
str[0]=seg[13];
}
str[1]=a;
str[2]=b;
str[3]=c;
}
//整屏輸出顯示字符串函數
void stringAll(uchar ad,uchar *s)
{
write_command(ad);
while(*s>0)
{
write_data(*s++);
}
}
復制代碼
作者:
man1234567
時間:
2021-10-17 21:28
看來問題是語文一直不及格罷
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1