




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
万年历星期的算法(C语言)#include code unsigned char WeekTab = /闰年月星期表(3 5) + 31,/1月(6 5) + 29,/2月(0 5) + 31,/3月(3 5) + 30,/4月(5 5) + 31,/5月(1 5) + 30,/6月(3 5) + 31,/7月(6 5) + 31,/8月(1 5) + 30,/9月(4 5) + 31,/10月(0 5) + 30,/11月(2 5;/月星期数day &= 0x1f;/月天数if (m 2);/年+年/4week = (week + y + d + 2) % 7;/(星期=年+年/4+月表+2日)%7return (week 5) | day;/返回星期和月天数/*-0000年9999年星期算法-*/unsigned char WeekDay(unsigned char c, unsigned char y, unsigned char m, unsigned char d)unsigned char week, day;c &= 0x03;/百年%4c = c | (c 5;/月星期数day &= 0x1f;/月天数if (m 2);/年+年/4week = (week + c + y + d + 2) % 7;/(星期=百年%4*5+年+年/4+月表+日+2)%7return (week 4) * 10 + (val & 0x0f);/将BCD码转换为10进制数return val;/返回10进制数void main(void)unsigned char c, y, m, d;unsigned char cx, yx, mx, dx; unsigned char WDay, Week, Day;/*-0001年1月1日 星期天-*/c = 0x00;y = 0x01;m = 0x01;d = 0x01;cx = BcdToBin(c);/百年yx = BcdToBin(y);/年mx = BcdToBin(m);/月dx = BcdToBin(d);/日WDay = WeekDay(cx, yx, mx, dx);/取星期和月天数Week = WDay 5;/得到星期Day = WDay & 0x1f;/得到最大月天数/*-1918年1月21日 星期一-*/c = 0x19;y = 0x18;m = 0x01;d = 0x21;cx = BcdToBin(c);/百年yx = BcdToBin(y);/年mx = BcdToBin(m);/月dx = BcdToBin(d);/日WDay = WeekDay(cx, yx, mx, dx);/取星期和月天数Week = WDay 5;/得到星期Day = WDay & 0x1f;/得到最大月天数/*-9999年12月31日 星期天-*/c = 0x00;y = 0x01;m = 0x01;d = 0x01;cx = BcdToBin(c);/百年yx = BcdToBin(y);/年mx = BcdToBin(m);/月dx = BcdToBin(d);/日WDay = WeekDay(cx, yx, mx, dx);/取星期和月天数Week = WDay 5;/得到星期Day = WDay & 0x1f;/得到最大月天数/*-2004年6月18日 星期五-*/c = 0x20;y = 0x04;m = 0x06;d = 0x18;cx = BcdToBin(c);/百年yx = BcdToBin(y);/年mx = BcdToBin(m);/月dx = BcdToBin(d);/日WDay = WeekDay20(yx, mx, dx);/取星期和月天数Week = WDay 5;/得到星期Day = WDay & 0x1f;/得到最大月天数/*-2018年3月8日 星期四-*/c = 0x20;y = 0x18;m = 0x03;d = 0x08;cx = BcdToBin(c);/百年yx = BcdToBin(y);/年mx = BcdToBin(m);/月dx = BcdToBin(d);/日WDay = WeekDay20(yx, mx, dx);/取星期和月天数Week = WDay 5;/得到星期Day = WDay & 0x1f;/得到最大月天数while(1);AM12864系列测试程序(C语言)/*/* AM12864系列测试程序 1.0 */* Designed by Andorin LCM R&D Group */*/ #include #include #include #include #include #include /*/* AM12864系列测试程序 1.0 */* Designed by Andorin LCM R&D Group */*/* Define the register command code */#define Disp_On 0x3f#define Disp_Off 0x3e#define Col_Add 0x40#define Page_Add 0xb8#define Start_Line 0xc0#define Lcd_Bus P1 /MCU P1 LCMsbit Mcs=P23; /Master chip enablesbit Scs=P24; /Slave chip enablesbit Enable=P22; /6800 mode Enable singlesbit Di=P20; /Data or Instrument Selectsbit RW=P21; /Write or Readsbit Lcd_Rst=P25; /Lcm resetsbit Test_Key=P31;char code ce=/*- 文字: 测 -*/0x08,0x31,0x86,0x60,0x00,0xFE,0x02,0xF2,0x02,0xFE,0x00,0xF8,0x00,0x00,0xFF,0x00,0x04,0xFC,0x03,0x00,0x80,0x47,0x30,0x0F,0x10,0x67,0x00,0x07,0x40,0x80,0x7F,0x00;char code shi=/*- 文字: 试 -*/0x40,0x42,0xDC,0x08,0x00,0x90,0x90,0x90,0x90,0x90,0xFF,0x10,0x12,0x1C,0x10,0x00,0x00,0x00,0x7F,0x20,0x10,0x20,0x20,0x1F,0x10,0x10,0x01,0x06,0x18,0x20,0x78,0x00;char code kai=/*- 文字: 开 -*/0x40,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0xFE,0x42,0x42,0x42,0x42,0x00,0x00,0x40,0x20,0x10,0x0C,0x03,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00;char code shi2=0x10,0x90,0x70,0x1F,0x12,0xF0,0x00,0x20,0x70,0x28,0x27,0x22,0x28,0x70,0x20,0x00,0x40,0x21,0x12,0x0C,0x06,0x09,0x30,0x00,0x7F,0x21,0x21,0x21,0x21,0x7F,0x00,0x00;/始char code wan=0x00,0x90,0x8C,0xA4,0xA4,0xA4,0xA5,0xA6,0xA4,0xA4,0xA4,0xA4,0x94,0x8C,0x04,0x00,0x00,0x80,0x40,0x20,0x18,0x07,0x00,0x00,0x00,0x3F,0x40,0x40,0x40,0x70,0x00,0x00;/完char code bi=0x00,0x00,0xFF,0x88,0x48,0x28,0x08,0x80,0x7F,0x88,0x88,0x88,0x84,0x84,0xE0,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00;/毕char code yang=0x20,0x10,0x2C,0x23,0x6A,0xAA,0x2A,0xAA,0x6A,0x2A,0x2A,0x2A,0xEA,0x02,0x00,0x00,0x00,0x10,0x11,0x15,0x15,0x15,0xFF,0x15,0x15,0x15,0x11,0x10,0x3F,0x40,0x30,0x00;char code qi=0x40,0x20,0x58,0x47,0x54,0x54,0x54,0x54,0x54,0x54,0xD4,0x14,0x06,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x20,0x40,0x80,0x70,0x00;/气char code nong=0x10 ,0x21 ,0x62 ,0x06 ,0x90 ,0x0C ,0x04 ,0x84,0x64 ,0x9F ,0x04 ,0x04 ,0x94 ,0xCC ,0x00 ,0x00, 0x04 ,0x04 ,0xFE ,0x01 ,0x04 ,0x02 ,0x01 ,0xFF, 0x40 ,0x21 ,0x06 ,0x09 ,0x10 ,0x30 ,0x10 ,0x00 ;/浓 char code du=0x00 ,0x00 ,0x0FC ,0x24 ,0x24 ,0x24 ,0x0FC ,0xA5, 0xA6 ,0xA4 ,0x0FC ,0x24 ,0x34 ,0x26 ,0x04 ,0x00, 0x40 ,0x20 ,0x9F ,0x80 ,0x42 ,0x42 ,0x26 ,0x2A, 0x12 ,0x2A ,0x26 ,0x42 ,0x40 ,0xC0 ,0x40 ,0x00;/度char code bi2=0x00, 0x00, 0xFE, 0x40, 0x40, 0x60, 0x40, 0x00,0xFF, 0x80, 0x40, 0x20, 0x30, 0x00, 0x00, 0x00,0x00, 0x40, 0x7F, 0x20, 0x20, 0x10, 0x10, 0x00,0x3F, 0x40, 0x40, 0x40, 0x40, 0x40, 0x78, 0x00;/比char code fen=0x00 ,0x80 ,0x40 ,0x20 ,0x98 ,0x86 ,0x80 ,0x80,0x83 ,0x8C ,0x90 ,0x20 ,0xC0 ,0x80 ,0x80 ,0x00, 0x01 ,0x00 ,0x80 ,0x40 ,0x20 ,0x1F ,0x00 ,0x40, 0x80 ,0x40 ,0x3F ,0x00 ,0x00 ,0x01 ,0x00 ,0x00 ;/ 分char code bai=0x02 ,0x02 ,0x02 ,0xE2 ,0x22 ,0x32 ,0x2A ,0x26,0x22 ,0x22 ,0x22 ,0xF2 ,0x22 ,0x03 ,0x02 ,0x00, 0x00 ,0x00 ,0x00 ,0xFF ,0x42 ,0x42 ,0x42 ,0x42, 0x42 ,0x42 ,0x42 ,0xFF ,0x00 ,0x00 ,0x00 ,0x00;/ 百char code wei=0x20 ,0x20 ,0x20 ,0x22 ,0x24 ,0x2C ,0x20 , 0xE0, 0x3F ,0x20 ,0x20 ,0x20 ,0x20 ,0xF0 ,0x20 ,0x00, 0x00 ,0x40 ,0x20 ,0x10 ,0x08 ,0x04 ,0x03 ,0x00, 0x02 ,0x04 ,0x4C ,0x80 ,0x40 ,0x3F ,0x00 ,0x00 ;/为/*-延时子程序-*/void delay(unsigned int t)unsigned int i,j;for(i=0;it;i+) ;for(j=0;j10;j+) ;/*-写命令到LCD-*/void write_com(unsigned char cmdcode)dodelay(0);while(P07=1);Di=0;RW=0;Lcd_Bus=cmdcode;delay(0); /原来是delay(0)Enable=1;delay(0);Enable=0;/*-写数据到LCD-*/void write_data(unsigned char Dispdata) dodelay(10);while(P07=1);Di=1;RW=0;Lcd_Bus=Dispdata;delay(0);Enable=1;delay(0);Enable=0;/*-读LCD数据-*/unsigned char read_data() /dodelay(100);while(P07=1);unsigned char tmpin;Di=1;RW=1;delay(0);Enable=1;delay(0);Enable=0;dodelay(100);while(P07=1);tmpin=Lcd_Bus;return tmpin;/*-显示边框-*/void frame()unsigned char i;Mcs=1;Scs=1;write_com(Page_Add+0);write_com(Col_Add+0);for(i=0;i64;i+) write_data(0x01);write_com(Page_Add+7);write_com(Col_Add+0);for(i=0;i64;i+) write_data(0x80);for(i=0;i8;i+)Mcs=0;Scs=1;write_com(Page_Add+i);write_com(Col_Add+63);write_data(0x55);Mcs=1;Scs=0;write_com(Page_Add+i);write_com(Col_Add+0);write_data(0x55);/*-清除内存-*/void Clr_Scr()unsigned char j,k;Mcs=1;Scs=1;write_com(Page_Add+0);write_com(Col_Add+0);for(k=0;k8;k+)write_com(Page_Add+k);for(j=0;j64;j+)write_data(0x00);/*-显示12864图片-*/void Disp_Img(unsigned char code *img)unsigned char j,k;for(k=0;k8;k+)Mcs=1;Scs=0;delay(0);write_com(Page_Add+k);write_com(Col_Add+0);for(j=0;j64;j+) write_data(imgk*128+j);Mcs=0;Scs=1; delay(0);write_com(Page_Add+k);write_com(Col_Add+0);for(j=64;j128;j+) write_data(imgk*128+j);/*-显示横-*/void Disp_H_Line()unsigned char i,j;Mcs=1;Scs=1;write_com(Disp_On);write_com(Page_Add);write_com(Start_Line);write_com(Col_Add);for(j=0;j8;j+)write_com(Page_Add+j);write_com(Col_Add+0);/ write_com(Start_Line+0);for(i=0;i64;i+)write_data(0x00);/*-显示列-*/void Disp_V_Line()unsigned char i,j;write_com(Disp_On);write_com(Page_Add);write_com(Start_Line);write_com(Col_Add);for(j=0;j8;j+)write_com(Page_Add+j);write_com(Col_Add+0);write_com(Start_Line+0);for(i=0;i32;i+)write_data(0x00);write_data(0x55);/*-棋盘-*/void Disp_Cross_Line(unsigned char mode)unsigned char i,j;unsigned char data1,data2;if(mode=0) data1=0xaa;data2=0x55;else if(mode=1) data1=0x55;data2=0xaa;else return;Mcs=1;Scs=1;write_com(Disp_On);write_com(Page_Add);write_com(Start_Line);write_com(Col_Add);for(j=0;j8;j+)write_com(Page_Add+j);write_com(Col_Add+0);write_com(Start_Line+0);for(i=0;i32;i+)write_data(data1);write_data(data2);/*-指定位置显示汉字16*16-*/void hz_disp16(unsigned char pag,unsigned char col, unsigned char code *hzk)unsigned char j=0,i=0;for(j=0;j2;j+)write_com(Page_Add+pag+j);write_com(Col_Add+col);for(i=0;i16;i+) write_data(hzk16*j+i);/*-初始化LCD屏-*/void init_lcd() Lcd_Rst=0;delay(100);Lcd_Rst=1;delay(100);Mcs=1;Scs=1;/delay(100);write_com(Disp_Off); /write_com(Page_Add);write_com(Start_Line);write_com(Col_Add);write_com(Disp_On);/*-信息显示-*/void Msg(int flg)Clr_Scr();frame();if(flg=0) /显示测试开始Mcs=1;Scs=0;hz_disp16(3,32,ce);delay(2000);hz_disp16(3,48,shi);delay(2000);Mcs=0;Scs=1;hz_disp16(3,0,kai);delay(2000);hz_disp16(3,16,shi2);delay(2000);else if(flg=1) /显示测试完毕Mcs=1;Scs=0;hz_disp16(0,32,ce);hz_disp16(0,48,shi);Mcs=0;Scs=1;hz_disp16(0,0,wan);hz_disp16(0,16,bi);Mcs=1;Scs=0;hz_disp16(3,0,yang);hz_disp16(3,16,qi);hz_disp16(3,32,nong);hz_disp16(3,48,du);Mcs=0;Scs=1;hz_disp16(3,0,bai);hz_disp16(3,16,fen);hz_disp16(3,32,bi2);hz_disp16(3,48,wei);/*-键盘扫描-*/void Key_Scan()while(Test_Key);while(Test_Key);/*-主程序-*/main()unsigned char i=0;while(1)/ Key_Scan();init_lcd();/Disp_Img(FirstPage);/delay(10000);/ Key_Scan();Msg(0);delay(10000);Disp_H_Line();delay(10000);Disp_V_Line();delay(10000);Msg(1);delay(10000);Clr_Scr();/while(1);51单片机串口调试程序一列/*定义为中断方式串口处理*/#define INTERSENDSTR/*不为8032系列芯片 */ /#define CHIP_8032 #include #include #include #include err.h#ifdef INTERSENDSTRunsigned char xdata sSendComBuf256,sRecComBuf256;unsigned char data bOut,bIn,bSout,bSin;#else#define DEFSENDCHAR TI=0;SBUF=ACC;while(!TI);TI=0;#endif/bps设置 9600就是 PSetBps(96)(11.0592Mhz) unsigned char PSetBps(unsigned int bps) SMALLunsigned int t1;unsigned char t2;#ifdef INTERSENDSTR/*如果使用中断方式发送数据,必须等待发送数据完毕才能更换波特率 */while(bSin!=bSout);ES=0;#endif #ifdef CHIP_8032if(3456%bps)return ERR_SET_BPS;t1=3456/bps;t1-;t1=t1;RCAP2H=t1/256;RCAP2L=t1;T2MOD=0x00;/*使用定时器2做波特率发生器 */T2CON=0x34;/*TF2=0;EXF2=0;RCLK=1;TCLK=1;EXEN2=0;TR2=1;C/T2=0;CP/RL2=0*/#elset1=576/bps;if(576%bps)|(t1=0)|(t1=2*256) return ERR_SET_BPS;if(t1256)PCON=00;t2=256-(288/bps);elsePCON=0x80;t2=256-t1;TH1=t2;TL1=t2;TR1=1;#endif /*模式3*/SM0=0;RI=0;TI=0;REN=1;SM1=1;SM2=1;#ifdef INTERSENDSTR bOut=bIn;bSout=bSin;ES=1;#endif return OK;void PSendChar(unsigned char ch) SMALL#ifdef INTERSENDSTRunsigned char tch;tch=bSin+1;while(tch=bSout);sSendComBufbSin=ch;ES=0;if(bSout=bSin)SBUF=sSendComBufbSin;bSin+;elsebSin+; ES=1;#else ACC=ch;DEFSENDCHAR;#endif unsigned char PGetChar() SMALLunsigned char ch;#ifdef INTERSENDSTRch=sRecComBufbOut;bOut+;return ch;#elsech=SBUF;RI=0;#endif bit PCharInCom() SMALL#ifdef INTERSENDSTRif(bIn!=bOut)return 1;return 0;#elsereturn RI;#endifvoid PSendString(unsigned char *st) SMALLwhile(*st)PSendChar(*st);st+;void PSendArray(unsigned char *st,unsigned int len) SMALLunsigned int ii;for(ii=0;iilen;ii+)PSendChar(stii);#ifdef INTERSENDSTRvoid PSerialInt() interrupt 4if(RI) sRecComBufbIn=SBUF;bIn+;RI=0;if(TI)TI=0;if(bSout!=bSin)bSout+;if(bSout!=bSin)SBUF=sSendComBufbSout;#endifTLC5618 12位D/A转换器驱动函数(C语言)哈尔滨理工大学测通学院电学实验中心 2005-9-16 void TLC5618(unsigned int vcon) /TLC5618DAC子程序,三线串行方式char i;dac_val=vcon;svcon=vcon|0x8000; /vcon最高位置1,选择TLC5618的A通道CS=0; / 置5618的CS=0,允许片选for(i=0;i16;i+) CLK=1;if (svcon&0x8000)DIN=1;elseDIN=0;svcon=1;CLK=0;CS=1; /禁止片选 ADS7816 12位AD转换器驱动程序函数(C语言)uint ads7816()uint result;uchar i;uchar al=0,ah=0;DOUT=1;DCS=0; while(DOUT=1) DCLK=1;DCLK=0;for(i=0;i4;i+)DCLK=1;DCLK=0;ah=(ah1);if(DOUT)ah=ah|0x01;for(i=0;i8;i+)DCLK=1;DCLK=0;al=(al1);if(DOUT)al=al|0x01;DCS=1;result=ah;result=8;result|=al;/得到AD值return (result);HD7279显示驱动演示(C语言)#include /* 函数定义 *void long_delay(void); / 长延时void short_delay(void); / 短暂延时void delay10ms(unsigned char); / 延时10MSvoid write7279(unsigned char, unsigned char); / 写入到HD7279unsigned char read7279(unsigned char); / 从HD7279读出void send_byte(unsigned char); / 发送一个字节unsigned char receive_byte(void); / 接收一个字节/* 变量及I/O口定义 *unsigned char digit5;unsigned char key_number, j, k,m0,m1,m2,m3;unsigned char n31=4,n01,sure;unsigned int set,tmr;sbit cs=P04; / cs 连接 P1.4sbit clk=P05; / clk 连接于 P1.5sbit dat=P06; / dat 连接于 P1.2sbit key=P07; / key 连接于 P1.3/* HD7279A 指令 *#define CMD_RESET 0xa4 / 复位#define CMD_TEST 0xbf / 测试#define DECODE0 0x80 / 方式0译码#define DECODE1 0xc8 / 方式1译码#define CMD_READ 0x15 / 读键盘指令#define UNDECODE 0x90 / 方式2译码#define RTL_CYCLE 0xa3 / 循环左移#define RTR_CYCLE 0xa2 / 循环右移#define RTL_UNCYL 0xa1 / 左移指令#define RTR_UNCYL 0xa0 / 右移指令#define ACTCTL 0x98 / 消隐指令#define SEGON 0xe0 / 段亮指令#define SEGOFF 0xc0 / 段关闭指令#define BLINKCTL 0x88 / 闪烁指令void write7279(unsigned char cmd, unsigned char dta) /写入7279send_byte (cmd);send_byte (dta); unsigned char read7279(unsigned char command) /读7279send_byte(command);return(receive_byte();void send_byte( unsigned char out_byte) /发送字节unsigned char i;cs=0;long_delay();for (i=0;i8;i+)if (out_byte&0x80)dat=1;elsedat=0;clk=1;short_delay();clk=0;short_delay();out_byte=out_byte*2;dat=0;unsigned char receive_byte(void) /接收字节unsigned char i, in_byte;dat=1;long_delay();for (i=0;i8;i+)clk=1;short_delay();in_byte=in_byte*2;if (dat)in_byte=in_byte|0x01;clk=0;short_delay();dat=0;return (in_byte);void long_delay(void) /长延时unsigned char i;for (i=0;i0x30;i+);void short_delay(void)unsigned char i;for (i=0;i8;i+);/ * 延时 n*10ms *void delay10ms(unsigned char time)unsigned char i;unsigned int j;for (i=0;itime;i+) for(j=0;j0x390;j+);/* if (!key)key_int(); */7279显示4位数/void disp4(unsigned int dcode)unsigned char sl;sl=dcode/1000;write7279(0x80,0x00+sl);sl=dcode/100%10;write7279(0x81,0x00+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 云南省昆明市黄冈实验学校高二数学:必修五 2.1数列的概念与简单表示法教学设计
- 化肥厂财务报表审核规定
- 第五章 问题研究 如何让城市不再“看海”-教学设计 2024-2025学年高一上学期 地理 人教版(2019)必修一
- (2024年秋季版)七年级道德与法治下册 第一单元 人与人之间 3.1.礼貌的力量说课稿 教科版
- Unit 6 Lesson 36 Classroom Olympics说课稿 2025-2026学年冀教版八年级英语下册
- 农村土地征用协议3篇
- 2025年度财税代理服务合同-外资企业税务服务
- 高新技术企业垫资借款合同协议书
- 体育产业个人赞助及借款合同
- 存货质押融资合同范本:银行与企业合作模板
- 除颤护理课件
- 【化学 云南卷】2025年云南省高考招生统一考试真题化学试卷(含答案)
- 创伤性硬膜下出血查房
- 2025年廉政法规知识试题及答案
- 拔罐适应症研究-洞察及研究
- 2025《政务数据共享条例》法律法规课件
- Q-SY 02045-2024 柔性压裂管汇使用技术规范
- T/CACEM 31.5-2023高速公路经营管理第5部分:服务区服务要求
- 劳动技术-七年级上册-全册教案-湖南教育出版社
- 外贸矿产代理协议书
- 品质协议书范本
评论
0/150
提交评论