我的編程思路:單片機連續采集壹批數據,當然采集周期要可調,然後發送給上位機。
采集時不要發送,發送時不要采集上位機,接收數據時什麽都不做,接收數據後畫圖。
這不會丟失數據。
雖然數據是間斷的,但波形是連續的。雖然是壹幀壹幀的間歇,但是1秒更新幾個畫面,所以算是實時的。
上位機,單片機,程序都很長,只貼關鍵部分。
上位機的繪圖程序如下:inbuff是接收到的數據。
畫壹個網格
對於i = 0到40步1 '畫壹條水平線。
y1 = 100 + i * 200
圖片1。行(60,y 1)-步(10240,0),QBColor (6)'黃色。
接下來我
對於i = 1到52步1’畫壹條垂直線。
x1 = 60 + i * 200
圖片1。線(x1,100)-步(0,8000),QB顏色(6)'黃色。
接下來我
圖片1。線(60,4100)-(10500,4100),QBColor (9)'原點到X軸終點為藍色。
圖片1。線步(-150,-40),QBColor (9)'箭頭
圖片1。線(10500,8100)-步(-150,40),QB顏色(9)'箭頭
圖片1。Line (60,8100)-(60,0),QB color(9)' Y軸從底部到頂部的終點。
圖片1。線步(-40,100),QBColor (9)'箭頭
圖片1。線(60,0)-步(40,100),QB顏色(9)'箭頭
寫橫坐標
圖片1。PSet (10150,3900)
圖片1。打印“t”
圖片1。PSet (10120,4080)
圖片1。打印“(毫秒)”
寫縱坐標
圖片1。PSet (100,0)
圖片1。打印“V”
根據兩點連線原理畫波形。
對於i = 0到(ll - 1)
VV1 = inbuff(i)
X(i) = x0 + i * 100
y(i) = y0 - 4000 * VV1 / 256
x(I+1)= x0+(I+1)* 100
VV2 = inbuff(i + 1)
y(i + 1) = y0 - 4000 * VV2 / 256
圖片1。DrawWidth = 2
圖片1。Line (x (i),y (i))-(x (i+1),y (i+1)),QBColor (11)'青色。
接下來我
TX-1C實驗板上的單片機主程序如下:KEY的值用來調整采集的延遲時間以適應不同的頻率,圖紙在12864上,可以省略。
LCD _ inital();//LCD初始化
inits com();//串口初始化
diola = 1;//關閉數碼管
while(key = = 16){ key scan();}//等待按鍵被按下。
開關(鑰匙)
{
情況0:m = 9;led 2 = 0;打破;
案例1:m = 27;led 3 = 0;打破;
情況二:m = 61;led 4 = 0;打破;
案例四:m = 166;led 5 = 0;打破;
默認:break
}
while(1)
{
collector dot();//收集256個數據。
clear();//清除屏幕
draw picture();//繪圖
tr 1 = 1;
for(I = 0;我& lt256;i++)
{
send(tempdate[I]);//發送到主機
}
tr 1 = 0;
delay _ 500 ms();//這個時間不是500ms,在100-500內調整。雖然上位機處理速度很快,
//但是需要壹些時間,刷新太快圖形會閃爍。
//對於低頻,采集256個數據需要很長時間,這個時間間隔可以短壹些。
}