中北大学2014届毕业设计说明书
JD_k=0; }
/*------------------------------------------------ 外部中断1程序
------------------------------------------------*/ void INT1_isr(void) interrupt 2 using 1 { g2++; }
/*----------------------------------------------- 名称:LCD1602
------------------------------------------------*/ #include \#include \#define CHECK_BUSY
sbit RS = P2^5; //定义端口 sbit RW = P2^6; sbit EN = P2^7; #define RS_CLR RS=0 #define RS_SET RS=1 #define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0 #define EN_SET EN=1 #define DataPort P0
/*------------------------------------------------ 判忙函数
------------------------------------------------*/ bit LCD_Check_Busy(void) {
#ifdef CHECK_BUSY DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_();
}
中北大学2014届毕业设计说明书
EN_SET;
return (bit)(DataPort & 0x80); #else return 0; #endif }
/*------------------------------------------------ 写入命令函数
------------------------------------------------*/ void LCD_Write_Com(unsigned char com) {
// while(LCD_Check_Busy()); //忙则等待 DelayMs(15); RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; }
/*------------------------------------------------ 写入数据函数
------------------------------------------------*/ void LCD_Write_Data(unsigned char Data) {
//while(LCD_Check_Busy()); //忙则等待 DelayMs(15); RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; }
/*------------------------------------------------ 清屏函数
中北大学2014届毕业设计说明书
------------------------------------------------*/ void LCD_Clear(void) {
LCD_Write_Com(0x01); DelayMs(15); }
/*------------------------------------------------ 写入字符串函数
------------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) { while (*s) {
LCD_Write_Char(x,y,*s); s ++; x++; } }
/*------------------------------------------------ 写入字符函数
------------------------------------------------*/
void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) { if (y == 0) {
LCD_Write_Com(0x80 + x); } else {
LCD_Write_Com(0xC0 + x); } LCD_Write_Data( Data); }
/*------------------------------------------------ 初始化函数
------------------------------------------------*/ void LCD_Init(void) {
LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(15);
中北大学2014届毕业设计说明书
LCD_Write_Com(0x38); DelayMs(15);
LCD_Write_Com(0x38); DelayMs(15);
LCD_Write_Com(0x38);
LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/
LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(15);
LCD_Write_Com(0x0C); /*显示开及光标设置*/ }
#include
/*------------------------------------------------ 定时器0初始化子程序 ------------------------------------------------*/ void Init_Timer0(void) {
TMOD |= 0x01;
TH0=(65536-10)/256;
TL0=(65536-10)%6;//定时10m ET0=1; //定时器中断打开 TR0=1; //定时器开关打开 }
void Init_Timer1(void) {
TMOD |= 0x50; TH1=65535;
TL1=65535;//定时10mS ET1=1; //计数器中断打开 TR1=1; //计数器开关打开 }
void Init_Timer2(void) {
中北大学2014届毕业设计说明书
C_T2=1; TH2=0;
TL2=0;//定时10mS
TR2=1; //计数器开关打开 }
void Init_INT0(void) {
EX0=1; //外部中断0开 IT0=1; //边沿触发 }
void Init_INT1(void) {
EX1=1; //外部中断0开 IT1=1; //边沿触发 }#include
sbit clk0=P2^1; //TLC549管脚定义 sbit sc0 =P2^2;
uchar TLC549_0() //TLC549 AD转换函数 {
uchar temp=0; uchar i;
sc0=1; //CS置高,片选无效 clk0=0; sdo0=1; sc0=0; _nop_();
_nop_(); //延迟1.4us
for(i=0;i<8;i++) //串行数据移位输入 { temp=(temp<<1)|sdo0;
clk0= 1; //0.4us _nop_(); //0.1us
中北大学2014届毕业设计说明书
clk0= 0; //0.4us }
sc0=1; //CS置高,片选无效 i=5;
while(i--); //需要延迟时间17us以上
return (temp);
}