文档详情

单片机子程序集.doc

发布:2017-01-02约5.62千字共13页下载文档
文本预览下载声明
单片机子程序集锦 按ctrl+home回到首页 按ctrl并点击目录中的内容即可转到相应的页数 整理:李辉 寇巍巍 姜欣 目录 各种头文件级定义……………………………………1 数码管及中断…………………………………………2 键盘……………………………………………………3 A/D与D/A转换………………………………………7 串口通信………………………………………………8 1602液晶………………………………………………9 IIC总线………………………………………………10 一、各种头文件级定义 #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; //数码管显示0~F uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6, 0xed,0xfd,0x87,0xff,0xef}; //数码管加点显示0.~9. uchar code table2[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf}; //控制数码管位选从做到右 void delay() {; ;} //短暂延时函数 void delay(uint z) //延时MS函数,Z为延时的MS数 { uint x,y; for(x=z;x0;x--) for(y=110;y0;y--); } sbit write=0; //各种常见变量名对应的端口号 sbit sda=P2^0; sbit scl=P2^1; sbit beep=P2^3; sbit wela=P2^7; sbit dula=P2^6; sbit dacs=P3^2; sbit lcden=P3^4; sbit lcdrs=P3^5; sbit adwr=P3^6; sbit adrd=P3^7; 二、数码管及中断 void display(uchar) { wela=1; P0=0xfe; wela=0; dula=1; P0=table[]; dula=0; delay(1); } //数码管显示函数 void init() { EA=1; EX0=1; IT0=0; } //外部中断0初始化函数 void init() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } //定时器0的初始化 void T0_() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; tt++; if(tt==20) { tt=0; num++; if(num==60); num=0; } } //晶振频率为12MHZ时计时器0中断,间隔1S 三、键盘 void keyscan() { P3=0xfe; temp=P3; temp=temp0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee: key=0; break; case 0xde: key=1; break; case 0xbe: key=2; break; case 0x7e: key=3; break; } while(temp!=0xf0) { temp=P3; temp=temp0xf0; } display(key)
显示全部
相似文档