A. 有哪些好用的醫療軟體
普惠超級醫生的也可以。
B. 求超聲波發生器的單片機源代碼
//設計:ch314156
//模塊使用方法:一個控制口發一個10US以上的高電平,就可以在接收口等待高電平輸出.
//一有輸出就可以開定時器計時,當此口變為低電平時就可以讀定時器的值,此時就為此次測
//距的時間,方可算出距離.如此不斷的周期測,就可以達到你移動測量的值了
//波特率9600(晶振12M)
#include <reg52.h>
#include <intrins.h> //調用 _nop_(); 延時函數
#define uchar unsigned char
#define uint unsigned int
sbit trigger=P2^0; //觸發引腳
sbit rx=P2^1; //接收引腳
sbit key=P3^6; //按鍵
unsigned char key_scan(void);
uchar chaoshengbo(void);
void uart_init(void);
void uart(uchar distance);
void chaoshengbo_init(void);
uchar distance; //距離
void main()
{
uart_init(); //串口初始化
chaoshengbo_init(); //超聲波初始化
uart('A') ; //串口發送'A'
while(1)
{
if (key_scan() == 1) //按鍵按下
{
distance = chaoshengbo(); //超聲波測距
uart(distance); //串口發送距離 單位厘米
}
}
}
unsigned char key_scan(void) //按鍵查詢
{
unsigned char on = 0,i;
while(1)
{
if(key==0) //判斷是否按下
{
for(i=0;i<100;i++); //軟體延時
if(key==0) //再次判斷是否按下
{
on = 1;
break; //跳出循環
}
}
}
while(key==0);
return 1;
}
void uart_init(void) //串口初始化,用的是T1
{
TMOD=TMOD & 0x0f | 0x20;
TH1=0Xfd; //波特率9600(晶振12M)
TL1=0Xfd;
TR1=1;
REN=1;
SM0=0;
SM1=1;
}
void uart(uchar distance) //發送一個位元組
{
SBUF = distance;
while(!TI);
TI = 0;
}
void chaoshengbo_init(void) //超聲波初始化
{
trigger = 0;
}
uchar chaoshengbo(void) //超聲波測距,返回厘米值
{
trigger=1; //給至少10us的高電平信號
_nop_();
_nop_();
_nop_(); //延時
_nop_();
_nop_();
_nop_();
TMOD=TMOD & 0xf0 |0x01; //T0初始化
TH0=0X0;
TL0=0X0;
trigger=0;
while(!rx); //等待上升沿
EA = 0; //關中斷
TR0=1; //開啟T0定時器
while(rx); //等待下降沿
TR0=0; //關閉T0定時器
EA = 1; //開中斷
return (TH0*256+TL0)*0.034/2; //計算距離 單位厘米
}