标题:
我想用stc15单片机在1602上显示占空比,程序烧到板子上,1602上没数据,串口没错,...
[打印本页]
作者:
周涛1331
时间:
2019-7-23 09:55
标题:
我想用stc15单片机在1602上显示占空比,程序烧到板子上,1602上没数据,串口没错,...
#include"15.h"
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P2^7; //1602引脚
sbit lcdrw=P2^6;
sbit lcdrs=P2^5;
sbit s1=P2^0; //按键
sbit s2=P2^1;
sbit s3=P2^2;
uchar zhankongbi=0x80;
uchar code table1[]="zhankongbi";
void delay(uint z);
void pwminit() //占空比初始化
{
CMOD=0x02;
CL=0x00;
CH=0x00;
PCA_PWM0=0x00;
CCAPM0=0x42;
CCAP0H=0xff;
CCAP0L=0xff;
CR=1;
}
void pwmshe(uchar t)//这是占空比调节函数
{
CCAP0H=t;
CCAP0L=t;
}
void write_com(uchar com)
{
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar dota)
{
lcdrs=1;
P0=dota;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void initlcd()
{
lcden=0;
write_com(0x38);
delay(5);
write_com(0x0c); delay(5);
write_com(0x06);delay(5);
write_com(0x01);delay(5);
}
void display()
{
uchar num=0;
initlcd();
write_com(0x80);
for(num=0;num<11;num++)
{
write_data(table1[num]);
delay(5);
}
}
void display1()
{
uint a=0,b=0,c=0;
initlcd();
zhankongbi=zhankongbi/256*100;
a=zhankongbi/100;
b=zhankongbi%100/10;
c=zhankongbi%10;
write_com(0x80+0x40); delay(5);
write_data('a');
write_com(0x80+0x41);delay(5);
write_data('b');
write_com(0x80+0x42);delay(5);
write_data('c');
}
void keyscan()
{
if(s1==0)
{ delay(5);
if(s1==0)
{
while(!s1);
zhankongbi=zhankongbi-0x0a;
if(zhankongbi<10)
zhankongbi=0x0a;
pwmshe(zhankongbi);
}
}
if(s2==0)
{ delay(5);
if(s2==0)
{
while(!s2);
zhankongbi=zhankongbi=0x0a;
if(zhankongbi>256)
zhankongbi=0x80;
pwmshe(zhankongbi);
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
if(zhankongbi<20)
zhankongbi++;
zhankongbi--;
pwmshe(zhankongbi);
}
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P6M0 = 0x00;
P6M1 = 0x00;
P7M0 = 0x00;
P7M1 = 0x00;
initlcd();
pwminit();
display();
display1();
while(1)
{
keyscan();
}
}
void delay(uint z)
{
uint i,j;
for(i=z;i>=0;i--)
for(j=110;j>=0;j--);
}
作者:
zhongya917
时间:
2019-7-23 10:43
建议先复位,另外检查下硬件电路确保硬件工作正常
作者:
zhongya917
时间:
2019-7-23 10:51
板子是不是ok的?建议先写一些简单的底层驱动测试下硬件
作者:
小黑屋525
时间:
2019-7-23 12:47
哇哦,头文件就一个"15.h"这么简单?求教这块单片机
作者:
蓝天有梦
时间:
2019-7-23 19:45
建议先复位,另外检查下硬件电路确保硬件工作正常
作者:
周涛1331
时间:
2019-7-25 09:05
自己已解决;软件可能有点问题;
以下是程序:
#include"12.h"
#define uint unsigned int
#define uchar unsigned char
sbit lcden=P3^5;
sbit lcdrs=P3^7;
sbit lcdrw=P3^6;
sbit s1=P2^0;
sbit s2=P2^1;
float zhankongbi=256;
uchar code table1[]="zkb";
void display1();
void pwminit();
void keyscan();
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void pwminit()
{
CMOD=0x04;
CCON=0X00;
CL=0x00;
CH=0x00;
// PCA_PWM0=0x00;
CCAPM0=0x42;
CCAP0H=0xff;
CCAP0L=0xff;
CR=1;
}
void pwmshe(uchar t)//这是占空比调节函数
{
CCAP0H=t;
CCAP0L=t;
}
void write_com(uchar com)// 液晶写命令函数
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_date(uchar date)//液晶写数据函数
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void init() //初始化函数
{
uchar num;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);//设置显示初始坐标
for(num=0;num<3;num++)//显示年月日
{
write_date(table1[num]);
delay(5);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
init();
pwminit();
display1();
while(1) //进入主程序大循环
{
keyscan();
display1();
pwmshe(zhankongbi);
}
}
void keyscan()
{
if(s1==0)
{
delay(60);
if(s1==0)
{
while(!s1);
zhankongbi--;
}
}
if(s2==0)
{
delay(60);
if(s2==0)
{
while(!s2);
zhankongbi++;
if(zhankongbi>256)
zhankongbi=0x80;
}
}
}
void display1(float m)
{
float a=0,c=0;
uchar b=0;
m=zhankongbi;
m=(float)m*100/256;
a=m/100;
b=(uchar)m%100/10;
c=(uchar)m%10;
write_com(0x84);
write_date(a+0x30);
write_com(0x85);
write_date(b+0x30);
write_com(0x86);
write_date(c+0x30);
write_com(0x87);
write_date('%');
write_com(0x83);
write_date(':');
}
作者:
周涛1331
时间:
2019-7-25 09:07
引脚同的原因是我拿12芯片做测试的;12和15芯片1602的读写,使能引脚不同
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1