📄 m169y.c
字号:
#include <iom169v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
#define LCD_ON 0x8060
#define LCD_OFF 0x8000
#define LCD_EN 0x8020
#define BAIS_4 0x8520
#define LCD_CS 0x01
#define LCD_CLK 0x02
#define LCD_DATA 0x04
#define E1set(){PORTD|=0X20;}
#define E2set(){PORTD|=0X40;}
#define E1clr(){PORTD&=0XDF;}
#define E2clr(){PORTD&=0XBF;}
#define A0set(){PORTD|=0X10;}
#define A0clr(){PORTD&=0Xef;}
#define rwset(){PORTD|=0X80;}
#define rwclr(){PORTD&=0X7f;}
const uchar number1[8]={0x00,0x00,0x02,0x7e,0x22,0x00,0x00,0x00};
const uchar ning[]={0x0A,0x32,0x22,0x22,0x22,0x22,0xA2,0x63,
0x22,0x22,0x22,0x22,0x22,0x2A,0x32,0x00,
0x00,0x00,0x00,0x00,0x00,0x02,0x01,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x04,0x42,0x20,0x30,0x01,0x1F,0x11,0x11,
0x11,0xFF,0x11,0x11,0x15,0x18,0x00,0x00,
0x20,0x20,0x7F,0x82,0x0C,0xF1,0x02,0x44,
0x28,0x10,0x28,0x44,0x82,0x03,0x02,0x00,//波 number=48;
0x08,0x30,0x20,0xAA,0xAA,0xAA,0xA0,0xFF,
0xA0,0xAA,0xAA,0xAA,0x21,0x28,0x30,0x00,
0x00,0x00,0x82,0x92,0x92,0x92,0x92,0x92,
0x92,0x92,0x92,0x92,0xFF,0x80,0x00,0x00,
const uchar num_table[]={0x00,0x07,0x08,0x08,0x08,0x07, // -0-
0x00,0xE0,0x10,0x10,0x10,0xE0,
0x00,0x00,0x08,0x0F,0x00,0x00, // -1-
0x00,0x10,0x10,0xF0,0x10,0x10,
0x00,0x04,0x08,0x08,0x09,0x06, // -2-
0x00,0x30,0x50,0x90,0x10,0x30,
0x00,0x04,0x08,0x09,0x09,0x06, // -3-
0x00,0x20,0x10,0x10,0x10,0xE0,
0x00,0x00,0x01,0x06,0x08,0x0F, // -4-
0x00,0xC0,0x40,0x40,0x50,0xF0,
0x00,0x00,0x0F,0x09,0x09,0x08, // -5-
0x00,0x20,0x10,0x10,0x10,0xE0,
0x00,0x03,0x05,0x09,0x09,0x08, // -6-
0x00,0xE0,0x10,0x10,0x10,0xE0,
0x00,0x0C,0x08,0x08,0x09,0x0E, // -7-
0x00,0x00,0x00,0x30,0xC0,0x00,
0x00,0x06,0x09,0x09,0x09,0x06, // -8-
0x00,0xE0,0x10,0x10,0x10,0xE0,
0x00,0x07,0x08,0x08,0x08,0x07, // -9-
0x00,0x10,0x90,0x90,0xA0,0xC0,
0x00,0x00,0x00,0x00,0x00,0x00, // -:-
0x00,0x00,0x00,0x00,0x00,0x00};
const table[11]={0xf7,0xb0,0xeb,0xf9,0xbc,0xdd,0xdf,0xf0,0xff,0xfd,0x00};
const uchar stra[8]={0x00,0x00,0x00,0x7e,0x11,0x11,0x11,0x7e};
uchar dispdata[7]={0,10,10,10,10,10,10};
uchar dianpin; //dianpin=0,
uchar getdata,savedata[6],bdata,common,data_flag,click_flag;
uint subi,cishu;
uchar baojing,maicong,select,adress[4]={23,23,23,23},move,moveback,moveback0,movego,move,data_flag,data_flag1;
uchar getnumber,maicongjishu,clear_flag1,shan_flag,shan_stop;
uchar rusart[12],rusart1[12],rcount,receive_flag,gb_place,clear_flag,writeable_flag,guangbiao;
uchar danma;
void port_init(void)
{
PORTA = 0x00;
DDRA = 0xFF;
PORTB = 0x00;
DDRB = 0x00;
PORTC = 0x00;
DDRC = 0x00;
PORTD = 0x06;
DDRD = 0xF8;
PORTE = 0xff;
DDRE = 0x02;
PORTF = 0x00;
DDRF = 0x00;
PORTG = 0x07;
DDRG = 0x0F;
}
//===
void delay(uchar time)
{
for(time;time--;);
}
//==
void write_cmd(uchar cmd)
{
uchar i;
delay(10);
DDRA=0XFF;
PORTD=0X07;
E1set();
PORTA=cmd;
E1set();
E1clr();
DDRA=0XFF;
PORTD=0X07;
E2set();
PORTA=cmd;
E2set();
E2clr();
}
void write_data(uchar data,uchar bian)
{
uchar i;
delay(10);
DDRA=0XFF;
PORTD=0X17;
if(bian==1){
E1set();
PORTA=data;
E1set();
E1clr();
}
else{
E2set();
PORTA=data;
E2set();
E2clr();
}
}
void display(uchar address,uchar page,uint number,uchar nn)
{
uint i;
write_cmd(0xb8|(page+1));
write_cmd(address);
for(i=number;i>number-16;){
write_data(ning[--i],nn);
}
write_cmd(0xb8|page);
write_cmd(address);
for(i=number+16;i>number;){
write_data(ning[--i],nn);
}
}
void disp_number(uchar address,uchar page,uchar number,uchar nn)
{
uchar i;
write_cmd(0xb8|(page+1));
write_cmd(address);
for(i=number;i>number-6;){
write_data(num_table[--i],nn);
}
write_cmd(0xb8|page);
write_cmd(address);
for(i=number+6;i>number;){
write_data(num_table[--i],nn);
}
}
void disp_shan(uchar address,uchar page,uchar data,uchar nn)
{
uchar dat1,dat2;
if(data==0) dat1=dat2=0;
else{dat1=0x0f;dat2=0xf0;}
write_cmd(0xb8|(page+1));
write_cmd(address);
write_data(dat1,nn);
write_cmd(0xb8|page);
write_cmd(address);
write_data(dat2,nn);
}
//TIMER1 initialize - prescale:64
// WGM: 0) Normal, TOP=0xFFFF
// desired value: 500mSec
// actual value: 500.000mSec (0.0%)
void timer1_init(void)
{
TCCR1B = 0x00; //stop
TCNT1H = 0x9C; //setup
TCNT1L = 0x00;
OCR1AH = 0x64;
OCR1AL = 0x00;
OCR1BH = 0x64;
OCR1BL = 0x00;
ICR1H = 0x64;
ICR1L = 0x00;
TCCR1A = 0x00;
TCCR1C = 0x00;
TCCR1B = 0x03; //start Timer
}
#pragma interrupt_handler timer1_ovf_isr:10
void timer1_ovf_isr(void)
{
//TIMER1 has overflowed
TCNT1H = 0x9C; //reload counter high value
TCNT1L = 0x00; //reload counter low value
if(shan_flag==0){
shan_flag=1;
shan_stop=select;
if(shan_stop==1)disp_shan(guangbiao,2,1,0);
if(shan_stop==2)disp_shan(guangbiao,2,1,1);
if(shan_stop==3)disp_shan(guangbiao,0,1,0);
if(shan_stop==4)disp_shan(guangbiao,0,1,1);
}
else{
shan_flag=0;
if(shan_stop==1)disp_shan(guangbiao,2,0,0);
if(shan_stop==2)disp_shan(guangbiao,2,0,1);
if(shan_stop==3)disp_shan(guangbiao,0,0,0);
if(shan_stop==4)disp_shan(guangbiao,0,0,1);
}
}
void sed1520_initial()
{
write_cmd(0xe2);
write_cmd(0xa4);
write_cmd(0xa9);
write_cmd(0xa0);
write_cmd(0xc0);
write_cmd(0xaf);
}
void watchdog_init(void)
{
WDR(); //this prevents a timout on enabling
WDTCR = 0x0C; //WATCHDOG ENABLED - dont forget to issue WDRs
// MCUSR=0X00;
// WDTCSR|=0X18;
// WDTCSR=0X0F;
}
void screen_clr(void)
{
uchar i,j;
for(j=0;j<4;j++){
write_cmd(0xb8|j);
write_cmd(0x00);
for(i=61;i--;){
write_data(0x00,0);
write_data(0x00,1);
}
}
}
//====
void display_data(uchar dat1,uint dat2,uchar dat3,uchar dat4,uchar sel)
{
uchar dd[4];
if(dat1<10){
disp_number(23,2,6+dat1*12,0);
disp_number(17,2,126,0);
disp_number(11,2,126,0);
if(sel==1) guangbiao=22;
}
else if(dat1<100){dd[0]=dat1%10;dd[1]=dat1/10;
disp_number(23,2,6+dd[1]*12,0);
disp_number(17,2,6+dd[0]*12,0);
disp_number(11,2,126,0);
if(sel==1) guangbiao=16;
}
else{dd[0]=dat1%10;dd[1]=dat1/10%10;dd[2]=dat1/100;
disp_number(23,2,6+dd[2]*12,0);
disp_number(17,2,6+dd[1]*12,0);
disp_number(11,2,6+dd[0]*12,0);
if(sel==1) guangbiao=10;
} //dat1显示
if(dat2<10){
disp_number(23,2,6+dat2*12,1);
disp_number(17,2,126,1);
disp_number(11,2,126,1);
disp_number(5,2,126,1);
if(sel==2) guangbiao=22;
}
else if(dat2<100){dd[0]=dat2%10;dd[1]=dat2/10;
disp_number(23,2,6+dd[1]*12,1);
disp_number(17,2,6+dd[0]*12,1);
disp_number(11,2,126,1);
disp_number(5,2,126,1);
if(sel==2) guangbiao=16;
}
else if(dat2<1000){dd[0]=dat2%10;dd[1]=dat2/10%10;dd[2]=dat2/100;
disp_number(23,2,6+dd[2]*12,1);
disp_number(17,2,6+dd[1]*12,1);
disp_number(11,2,6+dd[0]*12,1);
disp_number(5,2,126,1);
if(sel==2) guangbiao=10;
}
else{dd[0]=dat2%10;dd[1]=dat2/10%10;dd[2]=dat2/100%10;dd[3]=dat2/1000;
disp_number(23,2,6+dd[3]*12,1);
disp_number(17,2,6+dd[2]*12,1);
disp_number(11,2,6+dd[1]*12,1);
disp_number(5,2,6+dd[0]*12,1);
if(sel==2) guangbiao=4;
} //dat2显示;
if(dat3<10){disp_number(23,0,6+dat3*12,0);
disp_number(17,0,126,0);
disp_number(11,0,126,0);
if(sel==3) guangbiao=22;
}
else if(dat3<100){dd[0]=dat3%10;dd[1]=dat3/10;
disp_number(23,0,6+dd[1]*12,0);
disp_number(17,0,6+dd[0]*12,0);
disp_number(11,0,126,0);
if(sel==3) guangbiao=16;
}
else{dd[0]=dat3%10;dd[1]=dat3/10%10;dd[2]=dat3/100;
disp_number(23,0,6+dd[2]*12,0);
disp_number(17,0,6+dd[1]*12,0);
disp_number(11,0,6+dd[0]*12,0);
if(sel==3) guangbiao=10;
} //显示dat3;
if(dat4<10){disp_number(23,0,6+dat4*12,1);
disp_number(17,0,126,1);
disp_number(11,0,126,1);
if(sel==4) guangbiao=22;
}
else if(dat4<100){dd[0]=dat4%10;dd[1]=dat4/10;
disp_number(23,0,6+dd[1]*12,1);
disp_number(17,0,6+dd[0]*12,1);
disp_number(11,0,126,1);
if(sel==4) guangbiao=16;
}
else{dd[0]=dat4%10;dd[1]=dat4/10%10;dd[2]=dat4/100;
disp_number(23,0,6+dd[2]*12,1);
disp_number(17,0,6+dd[1]*12,1);
disp_number(11,0,6+dd[0]*12,1);
if(sel==4) guangbiao=10;
} //显示dat4
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -