📄 zuopin2.c
字号:
#include<spce061a_chf.h>
#define Uint unsigned int
typedef struct
{
Uint bit0 : 1;
Uint bit1 : 1;
Uint bit2 : 1;
Uint bit3 : 1;
Uint bit4 : 1;
Uint bit5 : 1;
Uint bit6 : 1;
Uint bit7 : 1;
Uint bit8 : 1;
Uint bit9 : 1;
Uint bit10 : 1;
Uint bit11 : 1;
Uint bit12 : 1;
Uint bit13 : 1;
Uint bit14 : 1;
Uint bit15 : 1;
}Bit;
typedef struct
{
Uint bytel : 8;
Uint byteh : 8;
}Byte;
typedef union
{
Bit bit;
Byte byte;
Uint port;
}UNport;
#define PA ((volatile UNport *)(0x7000))
#define PA_Buffer ((volatile UNport *)(0x7001))
#define PA_Dir ((volatile UNport *)(0x7002))
#define PA_Attrib ((volatile UNport *)(0x7003))
#define PA_Latch ((volatile UNport *)(0x7004))
#define PB ((volatile UNport *)(0x7005))
#define PB_Buffer ((volatile UNport *)(0x7006))
#define PB_Dir ((volatile UNport *)(0x7007))
#define PB_Attrib ((volatile UNport *)(0x7008))
#define P0_0 PA->bit.bit0
#define P0_1 PA->bit.bit1
#define P0_2 PA->bit.bit2
#define P0_3 PA->bit.bit3
#define P0_4 PA->bit.bit4
#define P0_5 PA->bit.bit5
#define P0_6 PA->bit.bit6
#define P0_7 PA->bit.bit7
#define P0_8 PA->bit.bit8
#define P0_9 PA->bit.bit9
#define P0_10 PA->bit.bit10
#define P0_11 PA->bit.bit11
#define P0_12 PA->bit.bit12
#define P0_13 PA->bit.bit13
#define P0_14 PA->bit.bit14
#define P0_15 PA->bit.bit15
#define P1_0 PB->bit.bit0
#define P1_1 PB->bit.bit1
#define P1_2 PB->bit.bit2
#define P1_3 PB->bit.bit3
#define P1_4 PB->bit.bit4
#define P1_5 PB->bit.bit5
#define P1_6 PB->bit.bit6
#define P1_7 PB->bit.bit7
#define P1_8 PB->bit.bit8
#define P1_9 PB->bit.bit9
#define P1_10 PB->bit.bit10
#define P1_11 PB->bit.bit11
#define P1_12 PB->bit.bit12
#define P1_13 PB->bit.bit13
#define P1_14 PB->bit.bit14
#define P1_15 PB->bit.bit15
void lcd_init(void);//包括初始化和设置
void write_command(unsigned int);//写命令函数
void write_data(unsigned int);//写数据函数
void check_busy(void);//检测busy信号的函数
void delay15(void);
void delay5(void);
unsigned int a[5]="K=150";
main()
{
unsigned int data=150;
unsigned int l,k=5;
Set_IOA_Dir(0xf0);
Set_IOA_Attrib(0xf0);
Set_IOA_Data(0x00);
lab:lcd_init();
for(l=0;l<k;l++)
{
write_data(a[l]);
}
while(1)
{
Watchdog_Clear();
if(P0_0==1)//"+10'
{
do
{
Watchdog_Clear();
}while(P0_0==1);//等待按键释放
if(data!=150)
{
data+=10;
if(data<100)
{
a[2]=data/10+48;
k=4;
}
else
{
a[2]='1';
a[3]=(data-100)/10+48;
k=5;
}
}
Set_IOA_Data((data/10)<<4);//设置A.B.C.D
goto lab;//有改变的时候才从新显示
}
if(P0_1==1)//'-10'
{
do
{
Watchdog_Clear();
}while(P0_1==1);//等待按键释放
if(data!=0)
{
data-=10;
if(data>=100)
{
a[3]=(data-100)/10+48;
k=5;
}
else
{
a[2]=data/10+48;
k=4;
}
}
Set_IOA_Data((data/10)<<4);//设置A.B.C.D
goto lab;//有改变的时候才从新显示
}
}
}
void lcd_init(void)
{
delay15();
write_command(0x38);
delay5();
write_command(0x38);
delay5();
write_command(0x38);
write_command(0x38);//显示模式的设置
write_command(0x08);//显示关闭*/
write_command(0x01); //显示清屏
write_command(0x06);//显示光标移动设置
write_command(0x0c);//显示开及光标设置
}
void write_command(unsigned int command)
{
Set_IOB_Dir(0xff07);
Set_IOB_Attrib(0xff07);
PB->byte.byteh=command;//操作高8位
P1_0=0;//rs=0
P1_1=0;//rw=0
P1_2=0;//E=0
check_busy();
P1_2=1;//E=1;
asm("nop");
asm("nop");
}
void write_data(unsigned int data2)
{
Set_IOB_Dir(0xff07);
Set_IOB_Attrib(0xff07);
PB->byte.byteh=data2;//操作高8位
P1_0=1;//rs=1
P1_1=0;//rw=0
P1_2=0;//E=0
check_busy();
P1_2=1;//E=1;
asm("nop");
asm("nop");
}
void check_busy()
{
unsigned int c;
Set_IOB_Dir(0x0007);
Set_IOB_Attrib(0xff07);
Set_IOB_Data(0xff00);//下拉式输入
do
{
Watchdog_Clear();
P1_0=0;//rs=0
P1_1=1;//rw=1
P1_2=0;//E=0
P1_2=1;//E=1;
c=PB->byte.byteh;
c&=0x80;
}while(c==0x80);
}
void delay15()
{
unsigned int i,j;
i=2;
while(i--)
{
j=0x2fff;
while(j--)
{
Watchdog_Clear();
}
}
}
void delay5()
{
unsigned int i,j;
i=0;
while(i--)
{
j=0x2fff;
while(j--)
{
Watchdog_Clear();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -