




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
51单片机LED16*16点阵滚动显示C程序发布时间:2009-11-23 21:07信息来源:实践教学网 发布者:admin 点击: 次 51单片机LED16*16点阵滚动显示C程序(附有电路图)。/*功能:LED16*16点阵滚动显示说明:74LS164用作发送数据,P0,P2口用来列选看本程序最好的工具最好旁边有标号和语法着色,推荐keil或UltraEdit懒人提示:要改成自己所要的显示内容,要怎么改?1.要改显示内容改第2392行代码,还有第119行代码,具体改法见下面注释2.要改滚动速度改第102行代码*/*头文件*/#include#include/*宏定义*/#define uchar unsigned char#define uint unsigned int/*函数声明*/void delay();/*全局变量*/uint lie; /列选标志/* 字模:反显,纵向取模,开头和结尾均加入32个0xFF,用于改善屏滚动显示时循环的连贯性 */* 杭州市公交公司K316路,开往武林广场,发车时间20:30,欢迎大家乘坐! - * 宋体, 12 */* 当前所选字体下一个汉字对应的点阵为: 宽度x高度=496x16, 调整后为: 496x16 */uchar code text1056= /这里的数据为你要显示的内容的数据量+64(前后各32个0xff)0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/改显示内容以上两行别改0xEF,0xDF,0xEF,0x3F,0xE8,0xFF,0x00,0x00,0xED,0xFF,0xFE,0xFD,0xEF,0xF3,0xEC,0x0F,0x6D,0xFF,0x8D,0xFF,0xED,0xFF,0xEC,0x03,0xEF,0xFD,0xEF,0xFD,0xEF,0xE1,0xFF,0xFF,0xFF,0x7F,0xF8,0xFE,0xFF,0xF9,0xFF,0xE7,0x00,0x1F,0xFB,0xFF,0xFC,0xFF,0xFF,0xFF,0x80,0x01,0xF7,0xFF,0xF9,0xFF,0xFE,0x7F,0xFF,0xFF,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xD8,0x03,0xDB,0xFF,0xDB,0xFF,0x5B,0xFF,0x80,0x00,0xDB,0xFF,0xDB,0xFF,0xDB,0xF7,0xDB,0xFB,0xD8,0x07,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFE,0xFB,0xFD,0xF1,0xF3,0xEB,0x8F,0xDB,0xDE,0x3B,0xFF,0x73,0xFF,0xF7,0x8F,0xF7,0xF7,0xD7,0xF9,0xE1,0xFC,0xF3,0xFE,0x7F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFE,0xEE,0xFE,0xED,0xFD,0xE3,0x7D,0xEB,0xBB,0x6F,0xD7,0x8F,0xE7,0xCF,0xCF,0xEF,0x97,0xE6,0x3B,0xEB,0x79,0xE9,0xFC,0xED,0xFD,0xEF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFE,0xFB,0xFD,0xF1,0xF3,0xEB,0x8F,0xDB,0xDE,0x3B,0xFF,0x73,0xFF,0xF7,0x8F,0xF7,0xF7,0xD7,0xF9,0xE1,0xFC,0xF3,0xFE,0x7F,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0xF7,0xFF,0xB6,0x07,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB6,0x0F,0xB7,0xFF,0xBF,0xFB,0xBF,0xFD,0x80,0x03,0xFF,0xFF,0xFF,0xFF,0xEF,0xFB,0xE0,0x03,0xEE,0xFB,0xFC,0x7F,0xEB,0x9B,0xE7,0xE3,0xEF,0xFB,0xFF,0xFF,0xFF,0xFF,0xF3,0xE7,0xEF,0xFB,0xEE,0xFB,0xEE,0xFB,0xED,0x77,0xF3,0x8F,0xFF,0xFF,0xFF,0xFF,0xF7,0xFB,0xF7,0xFB,0xE0,0x03,0xFF,0xFB,0xFF,0xFB,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xF7,0x77,0xEE,0xFB,0xEE,0xFB,0xE7,0x77,0xFF,0x8F,0xFF,0xFF,0xFF,0xFB,0x81,0x03,0xBB,0xFB,0xB8,0x07,0x83,0x77,0xFB,0x77,0xF7,0xBF,0xEF,0x01,0x0F,0x3B,0xD2,0xBB,0xDD,0xBB,0xDA,0xBB,0xC6,0x81,0xDF,0x3F,0xFF,0x7F,0xFF,0xFF,0xFF,0xFE,0xFF,0xF2,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xBD,0xFD,0xBD,0xFB,0xBD,0xF7,0xBD,0xCF,0x80,0x3F,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0x80,0x01,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xBD,0xFF,0xFF,0xFF,0xFB,0xBF,0xF7,0x7F,0xEE,0xFF,0x10,0x00,0xBB,0xFF,0xEF,0xFD,0xEF,0x7D,0xEF,0x7D,0x6F,0x7D,0x80,0x01,0xAF,0x7D,0xEF,0x7D,0xEF,0x7D,0xEF,0x7D,0xEF,0xFD,0xFF,0xFF,0xF7,0xFD,0xF7,0xFD,0xD7,0x01,0xD7,0xFB,0xD7,0xFB,0xD4,0x07,0xD7,0x77,0xD7,0x77,0xF7,0x7F,0x01,0xFF,0xF6,0x1F,0xB7,0xE7,0xD7,0xFB,0xF7,0xFD,0xF7,0xF0,0xFF,0xFF,0xF7,0xEF,0xF7,0x9F,0xF6,0x7F,0x00,0x00,0xF6,0xFF,0xF7,0x37,0xFF,0xEF,0xF7,0xDF,0xF7,0x3F,0xF4,0xFF,0x00,0x00,0xF6,0x7F,0xF7,0x9F,0xF7,0xE7,0xF7,0xEF,0xFF,0xFF,0xFF,0xFD,0xFF,0xF3,0xC0,0x0F,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0x5F,0xFF,0x9F,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xF7,0xEF,0xF7,0xE7,0xF7,0xEF,0x00,0x1F,0xF7,0xDF,0xF7,0xBF,0xBF,0xAD,0xBD,0xDB,0xB9,0xB7,0xB4,0x6F,0xAD,0x9F,0x9C,0x7D,0xBD,0xFE,0xF8,0x01,0xFD,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0xF2,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xF7,0xFB,0x83,0xF7,0xF7,0xEE,0xF7,0x1E,0xF0,0x7D,0x06,0x9D,0xF6,0xEB,0xF6,0xF7,0xB6,0xEB,0xD6,0x1B,0xC7,0xFD,0xF7,0xFC,0xF7,0xFD,0xF7,0xFF,0xFF,0xFF,0xFF,0xDF,0xDF,0xDF,0xDE,0xDF,0xDC,0xDF,0xDA,0xDF,0xC6,0xDF,0x1E,0xDF,0xDE,0xDF,0xD0,0x00,0xDE,0xDF,0xDE,0xDF,0xDE,0xDF,0xDE,0xDF,0xDE,0xDF,0xFF,0xDF,0xFF,0xFF,0xFF,0xFF,0xC0,0x1F,0xDD,0xDF,0xDD,0xDF,0xDD,0xDF,0xC0,0x1F,0xF7,0xFF,0xF6,0xFF,0xF7,0x3F,0xF7,0xFD,0xF7,0xFE,0x00,0x01,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x7F,0xFF,0x9F,0xFF,0xFF,0xFF,0xF0,0x1F,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB6,0xDF,0xB0,0x1F,0xBF,0xFD,0xBF,0xFE,0x80,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF1,0xF3,0xEF,0xEB,0xEF,0xDB,0xEF,0xBB,0xEE,0x7B,0xF1,0xF3,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xF7,0xF7,0xEF,0xFB,0xEF,0xFB,0xF7,0xF7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFC,0xF3,0xFC,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF3,0xE7,0xEF,0xFB,0xEE,0xFB,0xEE,0xFB,0xED,0x77,0xF3,0x8F,0xFF,0xFF,0xFF,0xFF,0xF8,0x0F,0xF7,0xF7,0xEF,0xFB,0xEF,0xFB,0xF7,0xF7,0xF8,0x0F,0xFF,0xFF,0xFF,0xFE,0xFF,0xF2,0xFF,0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xD7,0xFB,0xDB,0xF7,0xDD,0xCD,0xDE,0x3D,0xD9,0x3D,0xC7,0xCB,0xFB,0xFB,0xE7,0xF7,0x0F,0xCF,0xE8,0x3F,0xEF,0x9F,0xEF,0xE7,0xEB,0xF3,0xE7,0xF9,0xEF,0xFB,0xFF,0xFF,0xFD,0xFD,0x7D,0xFB,0x8C,0x07,0xDF,0xFB,0xFF,0xFD,0xC0,0x1D,0xDF,0xBD,0xBF,0x7D,0xBF,0xFD,0xC0,0x05,0xDF,0xFD,0xDF,0xBD,0xDF,0xDD,0xC0,0x3D,0xFF,0xFD,0xFF,0xFF,0xFB,0xFF,0xFB,0xFE,0xFB,0xFD,0xFB,0xFB,0xFB,0xF7,0xFB,0xCF,0xFA,0x3F,0x01,0xFF,0xFA,0x7F,0xFB,0x9F,0xFB,0xEF,0xFB,0xF3,0xFB,0xF9,0xFB,0xFC,0xFB,0xFD,0xFF,0xFF,0xFF,0xFF,0xE7,0x6B,0xDF,0x6B,0xD7,0x57,0xD6,0xD7,0xD6,0xAD,0x54,0x6E,0x92,0xDD,0xD7,0x03,0xD7,0x9F,0xD6,0x6F,0xDF,0x6F,0xD7,0xF7,0xCF,0xF3,0xDF,0xF7,0xFF,0xFF,0xEF,0xBB,0xEB,0xBB,0xAB,0x77,0xAB,0x77,0xA0,0x2F,0xAF,0xCF,0xAF,0x9F,0x80,0x01,0xAF,0xBF,0x6F,0xDF,0x60,0x4F,0x6D,0x67,0x6B,0x73,0xCB,0x77,0xEE,0x7F,0xFF,0xFF,0xFF,0x7D,0xFE,0xFD,0xF9,0xDD,0xC7,0xDD,0xFB,0xDD,0xFC,0xDD,0xFF,0xDD,0x00,0x01,0xFF,0x5D,0xFE,0xDD,0xFD,0xDD,0xC3,0xDD,0xFD,0xDD,0xFE,0xFD,0xFF,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x05,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,/改显示内容以下两行别改0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;/*主函数*/void main()uchar i,j; uint m=0;/m是从字模数组里向后取数据时的计数器,用以改变显示文字的内容,及滚动显示效果 SCON=0; /初始化串口为工作方式0(同步通信方式,TxD输出同步脉冲) lie=0x7fff; /列选标志初始化 while(1) /重复循环显示 for(j=0;j10;j+) /j用来控制屏上1帧显示内容停留的时间,即用来控制滚动速度 for(i=1;i1024)/这个数据为你的字模数组的大小-32,我的是1056-32=1024 m=0; /*延时子程序*/void delay()uint n; for(n=0;n90;n+) ; 51单片机 8255 18b20 数码管显示温度C程序(2010-01-22 09:49:22)转载标签:电子资料电子工程师软件it分类:软件电子IT#include#include#include#define uint unsigned int#define uchar unsigned char#define PA 0x7cff /PA口#define PB 0x7dff /PB口#define con 0x7fff /控制字sbit A8=P20; /地址线A0 sbit A9=P21; /地址线A1sbit cs=P27; /片选sbit wr=P36; /读端口uint temp;uchar tplsb,tpmsb; / 温度值低位、高位字节sbit date=P12; /数据通信线uchar code tableshi=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/数码管段选 十位uchar code tablege=0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef;/数码管段选 个位 带小数点/uchar code tablewei=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/数码管位选void delay(uchar i) uchar j,k; for(j=i;j0;j-) for(k=125;k0;k-);void init() uint i; date=1; delay(1); date = 0; i = 100; /拉低约900us while (i0) i-; date= 1; / 产生上升沿 i = 4; while (i0) i-;void wait() uint i; while(date); while(date); / 检测到应答脉冲 i = 4; while (i0) i-;bit readbit() uint i; bit b; date = 0; i+; date = 1; i+;i+; / 延时15us以上,读时隙下降沿后15us,DS18B20输出数据才有效 b = date; i = 8; while(i0) i-; return (b);uchar readbyte() uchar i,j,b; b = 0; for (i=1;i=8;i+) j = readbit(); b = (j1);/读出的数据最低位在最前面,这样刚好一个字节在DATE里 return(b);void writebyte(uchar b)/ uint i; uchar j; bit btmp; for(j=1;j1; / 取下一位(由低位向高位) if (btmp) / 写1 date = 0; i+;i+; / 延时,使得15us以内拉高 date = 1; i = 8; while(i0) i-; / 整个写1时隙不低于60us else / 写0 date = 0; i = 8; while(i0) i-; / 保持低在60us到120us之间 date = 1; i+; i+; void convert() init(); / 产生复位脉冲,初始化DS18B20 wait(); / 等待DS18B20给出应答脉冲 delay(1); / 延时 writebyte(0xcc); / 跳过rom 命令 writebyte(0x44); / convert T 命令 uint readtemp() float tt; init(); / 产生复位脉冲,初始化DS18B20 wait(); / 等待DS18B20给出应答脉冲 delay(1); / 延时 writebyte(0xcc); / 跳过rom命令 writebyte(0xbe); / read scratchpad 读暂存器命令 tplsb=readbyte(); / 温度值低位字节(其中低4位为二进制的小数部分) tpmsb=readbyte(); / 温度值高位字节(其中高5位为符号位) temp=tpmsb; temp=8; /合成一个字 temp=temp|tplsb; tt=temp*0.0625; temp=tt*10+0.5; return temp; void display(uint temp) uchar A1,A2,A3; A1=temp/100; A2=temp%100/10; A3=temp%10; wr=1; XBYTEPB=0xdf; /选通第一位数码管 wr=0; delay(1); wr=1; XBYTEPA=tableshiA1; /显示百位 wr=0; delay(10); wr=1; XBYTEPA=0x00; /关掉显示百位 wr=0; wr=1; XBYTEPB=0xef; /选通第2位数码管 wr=0; delay(1); wr=1; XBYTEPA=tablegeA2;/显示十位 wr=0; delay(10); wr=1; XBYTEPA=0x00; /关掉显示十位 wr=0; wr=1; XBYTEPB=0xf7; /选通第3位数码管 wr=0; delay(1); wr=1; XBYTEPA=tableshiA3; /显示个位 wr=0; delay(10); wr=1; XBYTEPA=0x00; /关掉显示个位 wr=0;void main() wr=1; XBYTEcon=0x80;/A组输入B组输出方式0 wr=0; delay(1); / 延时1ms convert(); / 启动温度转换,需要750ms delay(1000); / 延时1s while(1) convert(); display(readtemp(); 51单片机数码管电子时钟C程序单片机例子程序 2009-09-01 14:09:59 阅读401 评论1字号:大中小/*P0段选,P2位选*/*2009年9月1号*/#include at89x52.h#define uchar unsigned char#define uint unsigned intuchar code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff;uchar n;uchar hh,mm,ss;uchar nhh,nmm,nss;uint year;uchar day,mon,week;uchar hhs,hhg,mms,mmg,sss,ssg;uchar days,dayg,mons,mong;uchar nhhs,nhhg,nmms,nmmg,nsss,nssg;uchar set1=1,set2=1;sbit fm=P32;sbit k1=P34;sbit k2=P35;sbit k3=P36;sbit k4=P37;uchar table1=31,31,29,31,30,31,30,31,31,30,31,30,31; /闰年uchar table2=31,31,28,31,30,31,30,31,31,30,31,30,31; /非闰年void jishi();void baoshi();void alarm();void set_time();void set_alarm();void set_mdw();void key_change();void key_set(); void delay(int m) /延时程序,延时m*0.5ms uint i; uint j; for (i=0;im;i+) for(j=0;j500;j+) void timer0() interrupt 1TMOD=0x01;TH0=0x3c;TL0=0xb1;n+;jishi();main()TMOD=0x01;TH0=0x3c;TL0=0xb1;TR0=1;EA=1;ET0=1;hh=12;mm=00;ss=00;nhh=7;nmm=30;nss=0;year=2008;mon=12;day=1;week=1;while(1)hhs=hh/10%10;/时分秒hhg=hh%10;mms=mm/10%10;mmg=mm%10;sss=ss/10%10;ssg=ss%10;nhhs=nhh/10%10;/闹钟nhhg=nhh%10;nmms=nmm/10%10;nmmg=nmm%10;nsss=nss/10%10;nssg=nss%10;days=day/10%10;/月日dayg=day%10;mons=mon/10%10;mong=mon%10;key_change(); /k1按键扫描key_set(); /k2按键扫描set_time(); /设置时间set_mdw(); /设置月日星期set_alarm(); /设置闹钟if(set1=1) /正常走时显示P0=tabhhs;P2_7=0;delay(1);P2_7=1;/时十位P0=tabhhg;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabmms;P2_1=0;delay(1);P2_1=1;/分十位P0=tabmmg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab10;P2_4=0;delay(1);P2_4=1;/-P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒个位if(set1=2) /设置时间P0=tabhhs;P2_7=0;delay(1);P2_7=1;/时十位P0=tabhhg;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabmms;P2_1=0;delay(1);P2_1=1;/分十位P0=tabmmg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab10;P2_4=0;delay(1);P2_4=1;/-P0=tabsss;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabssg;P2_0=0;delay(1);P2_0=1;/秒个位if(set1=3) /正常显示月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/时十位P0=tabmong;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab11;P2_4=0;delay(1);P2_4=1;/-P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒个位if(set1=4) /设置月日-星期P0=tabmons;P2_7=0;delay(1);P2_7=1;/时十位P0=tabmong;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabdays;P2_1=0;delay(1);P2_1=1;/分十位P0=tabdayg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab11;P2_4=0;delay(1);P2_4=1;/-P0=tab11;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabweek;P2_0=0;delay(1);P2_0=1;/秒个位if(set1=5) /正常显示定时P0=tabnhhs;P2_7=0;delay(1);P2_7=1;/时十位P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab10;P2_4=0;delay(1);P2_4=1;/-P0=tabnsss;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabnssg;P2_0=0;delay(1);P2_0=1;/秒个位if(set1=6) /设置闹钟定时P0=tabnhhs;P2_7=0;delay(1);P2_7=1;/时十位P0=tabnhhg;P2_5=0;delay(1);P2_5=1;/时个位P0=tab10;P2_3=0;delay(1);P2_3=1;/-P0=tabnmms;P2_1=0;delay(1);P2_1=1;/分十位P0=tabnmmg;P2_6=0;delay(1);P2_6=1;/分个位P0=tab10;P2_4=0;delay(1);P2_4=1;/-P0=tabnsss;P2_2=0;delay(1);P2_2=1;/秒十位P0=tabnssg;P2_0=0;delay(1);P2_0=1;/秒个位baoshi(); /整点报时alarm(); /闹钟void jishi() /计时函数if(n=20)n=0;ss+; if(ss=60) ss=0;mm+; if(mm=60) mm=0;hh+; if(hh=24) hh=0;day+;week+; if(week=8) week=0;if(year%4=0&year%100!=0|year%400=0) /闰年 if(day=table1mon+1) day=0;mon+; if(mon=13) mon=0;year+; else /非闰年 if(day=table2mon+1) day=0;mon+; if(mon=13) mon=0;year+; uchar incone(uchar n) /加1函数if(k3=0)delay(20);if(k3=0)n+;while(!k3);return(n);uchar decone(uchar m) /减1函数if(k4=0)delay(20);if(k4=0)m-;while(!k4);if(m0)m=0;return(m);void key_change() /k1按键扫描if(k1=0)delay(20);if(k1=0)set1+;while(!k1);if(set1=7)set1=1;void key_set() /k2按键扫描if(k2=0)delay(20);if(k2=0)set2+;while(!k2);if(set2=4)set2=1;void baoshi() /整点报时函数if(mm=00&ss=00)fm=0;if(ss=1)fm=1;void alarm() /闹钟函数uchar x;if(nhh=0)goto end;if(hh=nhh&mm=nmm&ss=nss)for(x=0;x6;x+)fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(20);fm=0;delay(30);fm=1;delay(180);end:;void set_time() /设置时间函数if(set1=2)if(set2=1)hh=incone(hh);if(hh=24)hh=0;if(hh=-1)hh=23;hh=decone(hh);if(set2=2)mm=incone(mm);if(mm=60)mm=0;if(mm=-1)mm=59;mm=decone(mm);if(set2=3)ss=incone(ss);if(ss=60)ss=0;if(ss=-1)ss=59;ss=decone(ss);void set_mdw() /设置月日星期函数if(set1=4)if(set2=1)mon=incone(mon);if(mon=13)mon=1;mon=decone(mon);if(mon=0)mon=12;if(set2=2)day=incone(day);if(day=32)day=1;day=decone(day);if(day=0)day=31;if(set2=3)week=incone(week);if(week=8)week=1;week=decone(week);if(week=0)week=7;void set_alarm() /设置闹钟函数if(set1=6)if(set2=1)nhh=incone(nhh);if(nhh=24)nhh=0;if(nhh=-1)nhh=23;nhh=de cone(nhh);if(set2=2)nmm=incone(nmm);if(nmm=60)nmm=0;nmm=decone(nmm);if(nmm=-1)nmm=59;if(set2=3)nss=incone(nss);if(nss=60)nss=0;nss=decone(nss);if(nss=-1)nss=59;51单片机控制ISD1420实现选段播放功能的实现(C程序 电路图)3推荐资料编写与整理:AVR猎手benladn911 出处:AVR猎手的地盘 / 转载请注明出处在2006年时候记得我在做 ISD1420的播放控制,当时在 选段播放上遇到了问题,当时网络上也没有详细描述具体的控制方法,也在咱们坛子里问过。折腾了很久,后来还是实现出来了。但资料后来没有实际应用到产品上,今天翻看资料的时候发现了,拿出来给同样碰到问题的朋友做为参考。以前写的C程序比较菜,注释比较多。(现在写的程序注释也很多 :)电路图简单画了下,大家都看得懂:附上 KEIL完整工程:1420_code.rar 程序原文:/*功能: 使用STC2052单片机控制 ISD1420语音芯片的播放 1、顺序连续分段放音 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人生之舟(第四单元)-2025-2026学年七年级语文上册阅读素养通关训练(原卷版)
- 2025年度高效农业灌溉抽水承包合同模板下载
- 2025便利店便利店管理系统升级改造合同
- 2025年度专业厨房清洁与消毒服务承包合同
- 2025版社交媒体内容版权合作合同
- 2025年度房地产公司应收账款融资借款合同书
- 2025年度太阳能路灯照明工程合同样本
- 2025电影产业年度盛典独家赞助合同
- 2025房地产项目销售代理全权委托合同
- 2025年劳动安全合同5篇
- 生态环境监测机构资质认定补充要求解读
- DB23∕T 2334-2019 装配式混凝土渠道应用技术规范
- 机械装配技术课件
- 班级纪律班会课件
- 防性侵防溺水防校园欺凌主题班会课件
- 粮食商贸公司管理制度
- T/CAPE 12004-2022草酸二甲酯加氢制备乙二醇催化剂
- 水平定向钻进管线铺设工程技术规范
- 水利安全风险防控“六项机制”与安全生产培训
- 跨境电商物流风险管理-全面剖析
- 岩移观测施工方案
评论
0/150
提交评论