{ }
while(n) {
_nop_(); n--; }
/*------------------------------------------- 函数名:ad_conv_tlc549( )
功 能:AD转换芯片TLC549的实现程序 --------------------------------------------*/ unsigned char ad_conv_tlc549() {
unsigned char i;
unsigned char tmp_data = 0; TLC549_CS = 1; //此时DATA OUT 接口处于高阻态,此时I/O CLK不起作用 _nop_();
TLC549_CLK = 0;
_nop_();
TLC549_CS = 0; //等待两个内部时钟上升沿和一个下降沿,单片机确认这一变化,
然后自动将前一次转换结果
_nop_(); //的最高位(D7)位输出到DATAOUT
}
_nop_();
for (i = 0;i < 8;i++) {
}
TLC549_CLK = 1;
tmp_data = (tmp_data << 1) | TLC549_DATAOUT; TLC549_CLK = 0;
TLC549_CS = 1; delay_us(17); return tmp_data;
/*------------------------------------------ 主函数
--------------------------------------------*/ float main_1() { float v; while(1) {
11
v=ad_conv_tlc549()*1.0/256.0*5.0;
v=30*log10(v+1)+0.4; delay_us(200); return v; } }
/*========================================================= 1602液晶显示的实验例子
------------------------------------------------- | DB4-----P0.4 | RW-------P2.1 | DB5-----P0.5 | RS-------P2.2 | DB6-----P0.6 | E--------P2.0 | DB7-----P0.7 |
--------------------------------------------------- =========================================================*/ #include
P2_2 P2_0
#define LCM_Data P0 #define Busy 0x80 //用于检测LCM状态字中的Busy标识 code uint8 a[]={\无法忍受 b[]={\感到疼痛; c[]={\很吵; d[]={\较静 e[]={\安静
f[]={\极静 g[]={\无声
h[]={\无法检测
/*------------------------------------------ 子函数声明
------------------------------------------*/ void Write_Data_LCM(unsigned char WDLCM);
void Write_Command_LCM(unsigned char WCLCM,BuysC); void Read_Status_LCM(void); void LCM_Init(void);
void Set_xy_LCM(unsigned char x, unsigned char y);
void Display_List_Char(unsigned char x, unsigned char y, unsigned char *s);
12
/*===================================== 函数名:Read_Status_LCM() 功 能: 忙检测函数
======================================*/ void Read_Status_LCM(void) {
unsigned char read=0; LCM_RW = 1; LCM_RS = 0; LCM_E = 1; LCM_Data = 0xff; do {
read = LCM_Data;
}
while(read & Busy);
LCM_E = 0;
}
/*------------------------------------------- 函数名:Write_Data_LCM ( ) 功 能: 对LCD 1602写数据
--------------------------------------------*/ void Write_Data_LCM(unsigned char WDLCM) {
Read_Status_LCM(); //检测忙
LCM_RS = 1; LCM_RW = 0;
LCM_Data &= 0x0f;
LCM_Data |= WDLCM&0xf0;
LCM_E = 1; //若晶振速度太高可以在这后加小的延时 LCM_E = 1; //延时 LCM_E = 0;
WDLCM = WDLCM<<4; LCM_Data &= 0x0f; LCM_Data |= WDLCM&0xf0; LCM_E = 1; LCM_E = 1; //延时 LCM_E = 0; }
13
/*-------------------------------------------
函数名:Write_Command_ LCM ( ) 功 能: 对LCD 1602写指令
--------------------------------------------*/
void Write_Command_LCM(unsigned char WCLCM,BuysC) //BuysC为0时忽略忙检测 {
if (BuysC)
Read_Status_LCM(); //根据需要检测忙
LCM_RS = 0; LCM_RW = 0;
LCM_Data &= 0x0f;
LCM_Data |= WCLCM&0xf0;//传输高四位 LCM_E = 1; LCM_E = 1;
LCM_E = 0;
WCLCM = WCLCM<<4; //传输低四位 LCM_Data &= 0x0f;
LCM_Data |= WCLCM&0xf0; LCM_E = 1; LCM_E = 1; LCM_E = 0; }
/*------------------------------------------- 函数名:LCM_Init()
功 能: 对LCD 1602初始化
--------------------------------------------*/ void LCM_Init(void) //LCM初始化 {
LCM_Data = 0;
Write_Command_LCM(0x28,0); //三次显示模式设置,不检测忙信号 delay_nms(15);
Write_Command_LCM(0x28,0); delay_nms(15);
Write_Command_LCM(0x28,0);
delay_nms(15); Write_Command_LCM(0x28,1); //显示模式设置,开始要求每次检测忙信号 Write_Command_LCM(0x08,1); //关闭显示 Write_Command_LCM(0x01,1); //显示清屏
Write_Command_LCM(0x06,1); //显示光标移动设置 Write_Command_LCM(0x0C,1); //显示开及光标设置 }
14
/*------------------------------------------- 函数名:Set_xy_LCM () 功 能:设定显示坐标位置
--------------------------------------------*/ void Set_xy_LCM(unsigned char x, unsigned char y) {
unsigned char address; if( x == 0 )
address = 0x80+y; else
address = 0xc0+y;
Write_Command_LCM(address,1);
}
/*------------------------------------------- 函数名:Display_List_Char()
功 能:按指定位置显示一串字符
--------------------------------------------*/
void Display_List_Char(unsigned char x, unsigned char y, unsigned char *s) {
Set_xy_LCM(x,y); while(*s)
{
LCM_Data = *s;
Write_Data_LCM(*s); s++; } }
/*------------------------------------------- 函数名:dB()
功 能:显示dB程序
--------------------------------------------*/ void dB() { }
Write_Command_LCM(0x06,1); Write_Command_LCM(0xCe,1); Write_Data_LCM('d'); Write_Data_LCM('B');
/*------------------------------------------- 函数名:wrrite()
功 能:清空显示程序
--------------------------------------------*/ void wrrite()
15
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库传感器与检测技术课程设计报告 - 图文(3)在线全文阅读。
相关推荐: