第一篇:實驗二 定時器程序設計121
一、實驗目的學會使用單片機定時器產生定時中斷,并利用定時中斷產生更長時間延時。
二、實驗設備及器件
IBM PC機
一臺
DP-51PRO.NET單片機仿真器、編程器、實驗儀三合一綜合開發平臺
三、實驗內容
1.實驗二 定時器程序設計
2.編寫程序,使P10端口來控制LED閃爍 3.C語言程序
//1ms定時中斷實現100ms發光管閃爍 #include“REG51.h” sbit LED=P1^0;void main(void){ TMOD = 0x01;//設置定時器模式 16位定時器
TL0 = 0x18;//設置定時初值
TH0 = 0xFC;//設置定時初值
TR0 = 1;//定時器T0開始計時
ET0=1;//開定時器中斷
EA=1;
//開總中斷
while(1);}
//******************** //1ms void pit0(void)interrupt 1(中斷程序){ static unsigned char ms_cnt=0;//16 ffff TL0 = 0x18;//設置定時初值
TH0 = 0xFC;//設置定時初值
if(++ms_cnt==100){
ms_cnt=0;
LED=!LED;} } 定時器的由程序
直接匯編語言 ORG 0 AJMP MAIN ORG 0BH AJMP PIT0 MAIN: MOV TMOD,#01H MOV TH0,#18H MOV TL0,#0FCH SETB TR0 SETB ET0 SETB EA SJMP $
生成;********************************** PIT0: MOV TH0,#18H MOV TL0,#0FCH INC R7 CJNE R7,#100,PIT0_R MOV R7,#0 CPL P1.0 PIT0_R: RETI END
四 實驗要求
學會使用并掌握單片機定時器中斷來實現LED100ms閃爍。
五 實驗步驟
1.調試運行本節實驗程序。若程序無錯誤,編譯并進行二進制轉換,下載程序。
2.連接線路,將A2區的P10端口連接到D1區的任意LED接口。3.觀察LED燈閃爍情況
第二篇:實驗二 單片機定時器和計數器編程
仲愷農業工程學院實驗報告紙
信息學院(院、系)專業班組單片機原理及接口技術課實驗二單片機定時器/計數器編程
一、實驗目的1、掌握單片機定時器/計數器的工作方式;
2、掌握單片機定時器/計數器的編程方法。
二、實驗內容
1、學習單片機定時器/計數器的工作方式、初始化以及應用等;
2、利用單片機定時器/計數器編寫程序驅動開發板上的led和蜂鳴器按一定規律工作。
三、實驗設備
1、STC單片機開發板;
2、PC機以及串口線。
四、實驗步驟
參考實驗指導書。
五、實驗總結
第三篇:C語言程序設計實驗二
C語言程序設計實驗
(二)[實驗1]
1.實驗題目
下列各題的算法用傳統流程圖及N-S流程圖兩種方式表示:
(1)輸出圖形(順序結構)
★★★★★★★★
★★★★★★★★
★★★★★★★★
★★★★★★★★
(2)判斷用戶輸入的字符是數字字符、字母字符還是其它字符。(選擇結構)
(3)運用循環結構打印如下圖形(for循環結構)。
◆
◆◆◆
◆◆◆◆◆
◆◆◆◆◆◆◆
◆◆◆◆◆◆◆◆◆
(4)輸入任意數N,求P的值(P=N!)(當型循環結構)
(5)輸出1~N間20個不能被3整除的數列(直到型循環結構)
(6)計算并打印九九表。(直到型循環結構)
2.實驗目標
(1)熟練掌握流程圖表示算法的方法。
(2)熟練掌握結構化程序設計的三種基本結構。
[實驗2] 變量的變化情況。
1.實驗題目
有以下程序
#include
#definea 3*2+1
#defineA a*a+a
#defineb(3*2+1)
#defineB(b)*(b)+(b)
main()
{
int x1,x2;
int y1,y2;
x1=a*a;
y1=A*A;
x2=b*b;
y2=B*B;//換為y2=(A)*(A)結果是否相同
printf(“x=%d tty=%dn”,x1,y1);
printf(“x=%dtty=%dn”,x2,y2);
}用逐行斷點測試方法,體會程序運行時各變量值的變化情況。
2.實驗要求
(1)在上機實驗之前先將每執行一條語句后變量x1、x2和y1、y2的預期結果寫在相應語句旁。
(2)設置4個監視項x1、x2和y1、y2,斷點逐行測試執行程序。
(3)每執行一條語句后,對比Watch窗口中變量x1、x2和y1、y2的值與預期的值是否一致,若不一致,請解釋原因。
(4)將語句“y2=B*B;”換為“y2=(A)*(A)”,測試結果是否相同,為什么?
(5)運行結束后查看輸出結果,確認該結果是否與預期的值一致。
3.實驗目標
(1)宏定義的正確定義。
(2)宏定義的正確使用。
第四篇:實驗二 簡單的C程序設計
實驗二
簡單的C程序設計
實驗目的:
1.掌握C語言的運算符和表達式的正確使用以及C語言的幾種基本數據類型和基本輸入輸出函數的使用方法。
2.通過編程進一步理解和掌握運算符的確切含義和功能。
3.理解和掌握運算符與運算對象的關系,優先級和結合方向。
1.通過編程,掌握C語言的幾種基本數據類型,int、char、flloat、double,以及由這些基本數據類型構成的常量和變量的使用方法。
2.掌握基本輸入/輸出函數的使用方法,包括printf()、scanf()、getchar()、putchar()。3.掌握簡單的C程序的查錯方法。實驗內容:
一、輸入程序,觀察輸出結果,并對輸出結果作出合理的解釋。1./* e1.cpp */ #include
{
float x;double y;x=213.82631;y=213.82631;printf(“%-4.2f,-6.2en”,x,y);}
輸出結果: 解釋:
2./* e2.cpp */ #include
char ch;
int k;
ch=’a’;k=10;
printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k);
printf(“k=%%dn”,k);
} 輸出結果:
解釋:
3./* e3.cpp */
#include
double b1,b2;
a1=3141.59;a2=0.000001;
b1=3141.59;b2=0.000001;
printf(“%f,%lfn”,a1+a2,b1+b2);
} 輸出結果:
解釋:
4. /* e4.cpp */ #include
float x=5/2,y=5.0/2;
printf(“x=%f,y=%fn”,x,y);} 輸出結果:
解釋:
二、編寫程序。
1. 編程(c1.cpp)定義3個整型變量x,y,z和一個實型變量averge,計算并輸出3個整數的平均值averge,其中x=y=1,z=0。觀察運行結果。再將x,y,z和averge改為實型變量,再觀察運行結果。理解整除和不同類型數據進行混合運算的轉化規律,對結果進行合理的解釋。源程序:
輸出結果: 解釋:
2. 改寫程序(c2.cpp),針對上一題要求,采用從鍵盤用scanf()函數輸入x,y,z的值。要求輸出結果的形式為averge=…。
源程序:
輸出結果: 解釋:
3. 輸入3個整數給a,b,c,然后交換它們中的數,把a中原來的值給b,把b原來的值給c,把c中原來的值給a。源程序:
輸出結果:
三、調示示例。1. 求華氏溫度100。F對應的攝氏溫度。計算公式:C=(5/9)(F-32),其中C表示攝氏溫度,F表示華氏溫度。源程序(有錯誤)#include
int celsius;fahr;fahr=100;celsius=5*(fahr-32)/9;printf(“fahr=d,celsius=%dn”,fahr,celsius);} 1)輸入源程序。
2)實驗一中用菜單完成編譯、連接和運行,現在介紹工具欄的使用方法。在工具欄
或菜單欄上單擊鼠標右鍵,出現如圖所示的整個工具箱,在“編譯”或“編譯微型條”項前打上“√”。
圖中第1個按鈕為“Compile”(編譯,Ctrl+F7),第2個按鈕為“Build”(構件,F7),第4個按鈕為“Build Execute”(執行,Ctrl+F5)。3)單擊“編譯”工具條中的第1個按鈕,出現第一個錯誤信息:
Cannot open include file: 'stdoi.h': No such file or directory(不能打開stdoi.h)
改正(應該是stdio.h)后,重新編譯,新產生的第一個錯誤信息是:
'fahr' : undeclared identifier(“fahr”變量沒有定義)改正:將fahr前的分號改為逗號,重新編譯,編譯正確。
4)單擊“編譯”工具條中的第2個按鈕,連接正確。
5)單擊“編譯”工具條中的第4個按鈕,運行結果為 :
fahr=d,Celsius=100
不符合題目的要求,仔細檢查源程序,發現函數printf()中的d應為%d,改正的,重新連接和運行,運行結果與題目要求的結果一致,程序調試結束。
2. 改錯,計算某個數x的平方y,并以算術公式的形式輸出x和y的值.請不要刪除源程序中的任何注釋。輸入輸出示例(假設x的值為3): 9=3*3 3*3=9 #include
int y;
y=x*x;
printf(“%d=%d*%d”,x);
/* 輸出
printf(“d*%d=%d”,y);
}
改正后的源程序:
實驗報告要求
將以上各題的源程序、運行結果,以及實驗中遇到的問題和解決問題的方法,以及實驗過程中的心得體會,寫在實驗報告上。
第五篇:課程設計論文--基于labview的定時器程序設計
基于labview的定時器程序設計
目錄
1.程序設計背景??????????????????????????3
1.1.labview定時器的介紹?????????????????????3
2.程序介紹????????????????????????????3
a、主要用途和功能???????????????????????4
b、前面板圖和主要部件的功能???????????????????5
c、程序框圖???????????????????????????6
3.程序改進????????????????????????????8
4.程序界面及層次關系??????????????????????9
5.存在的一些問題????????????????????????10
6.程序來源說明??????????????????????? 10
1.程序設計背景
定時器在家用電器中經常用于延時自動關機、定時。延時自動關機用于:收音機、電視機、錄音機、催眠器、門燈、路燈、汽車頭燈、轉彎燈以及其他電器的延時斷電及延時自停電源等。定時可用于:照相機曝光、定時閃光、定時放大、定時調速、定時烘箱、冰箱門開定時報警、水位定時報警、延時催眠器、延時電鈴、延時電子鎖、觸摸定時開關等。例如空調中的定時器,在工作一段時間后便能自動切斷電源停止工作。夏季夜間使用,入睡前先設好預定時間,等睡熟后到了預定時間,空調自動關機。方便節能。定時器除了應用于家電之外 還廣泛應用于工農業生產和服務設施,軍事等。發展前景
傳統的定時器大多數是發條驅動式、電機傳動式或電鐘式等機械定時器,部分電子器械中也有試用時間繼電器的。相對于傳統的定時器,電子定時器的體積小,重量輕。造價低。精度高、壽命長,而且安全可靠,調整方便,適于頻繁的使用。同時隨著現代電子技術的不斷發展,定時器也在不斷更新,朝著更多用途,更高精度,更小體積發展著。
Labview的定時器:
1.為什么要使用定時: 一般來說在循環中,我們都會添加一個定時器。他們的作用主要有2 個:
1.控制代碼執行的速率:簡單的來說,如果在循環中添加了定時,就可以控制循環以一定間隔重復執行;或者在串口通信中,在發送指令后等待指定的時間再讀返回值。
2.降低CPU 占用率:如果沒有設置定時,CPU 的大部分資源會一直被該線程占用,而無法執行其他線程。2.定時VI 用法:
在LabVIEW 中的常用定時有等待(ms)倍毫秒
1. 等待(ms)
該VI 的輸入端為整型,單位是ms。指定代碼執行的時間間隔。舉例來說,連入VI 的輸入為10ms,如果循環中代碼的運行時間是3ms,那么每次循環的時間是10ms;如果循環中代碼的運行時間是14 毫秒(大于10ms),那么每次的循環的時間是14ms。
(Windows 下軟件定時的精度在1 個ms 左右,所以實際的情況會有1ms 左右的誤差)
2. 等待到下一個整數倍毫秒
該VI 輸入為整型,單位是ms。該VI 將定時和系統的時鐘對應起來,使用該定時VI 后,代碼將在系統時鐘為定時時間的整數倍執行。使用該定時VI 的第一次運行時間間隔是不確定的。比如設定定時為1000ms,對于第一次運行,無論當前時間是50ms 還是850ms,都將在下一次1000ms 的整數倍時間第二次運行該代碼,那么實際的間隔分別是950ms 和150ms。
3.定時的精度: 對于上面提到的定時VI,輸入的單位都是ms,但是實際運行的最小間隔在2ms 以上。這是因為Windows 操作系統中,對線程的操作最小的間隔是2ms。
4.使用定時的注意事項:
在使用等待到下一個整數倍毫秒時需要注意,當該VI 處于等待狀態時,整個線程都將處于等待狀態。在對時間要求較高的實時系統中,往往不可以簡單的將該定時VI 和代碼并行的放置。
,和等待到下一個整數程序介紹
a、主要用途和功能 在測量過程中,有時需要測量、記錄數據在2小時內的分布情況(穩定性、波動性);有時需要每10分鐘測量一次數據并保存結果。這就需要有一個定時器或倒計時器來控制測量的過程,利用“已用時間”快速vi做了一個既有“定時”功能又有“倒計時”功能的vi,基本上滿足應用程序的設計要求。
該vi的定時精度不是很高,大概在正、負1s左右,基本上可以滿足工程上的使用要求。
b、前面板圖和主要部件的功能
定時時間選擇——這是一個枚舉控件,用來選擇定時或倒計時的時間間隔。設計時定義了一些常用時間的數據列表。
定時器(倒計時器)——這是一個開關控件,用來選擇是定時功能還是倒計時功能。開始計時后將被灰化(運行時不可再操作)。
停止(開始)——這是一個開關控件,用來控制是否開始計時。開始計時后將被灰化(運行時不可再操作)。
定時持續時間——這是一個字符顯示控件,用來實時顯示定時或倒計時的時間間隔數值。
強行停止計時——這是一個開關控件,用來強行停止計時過程(退出計時)。
c、程序框圖
整個程序框圖
程序在執行時,首先通過選擇按鈕,選擇是定時器模式還是倒計時模式,然后經過每局按鈕確定定時時間,再按下開始,若在定時器模式下,則定時顯示時間從0遞增到枚舉選擇的時間,此過程中按鈕變灰,不可用,到點時,由開始轉為停止,所有鍵可用。倒計時器模式與此過程大致相同,唯一不同便是計數從預設值遞減為0。程序在執行過程中可用確定強制退出鍵退出。
計時的功能由“已用時間”實現,枚舉的數值為其上限,在定時器模式,已用時間直接輸出到格式化日期,再到時間顯示控件。在倒計數器模式,已用時間輸出數據先與枚舉數做減法運算,在輸入到格式化日期。
中斷循環由已用時間的結束輸出、強行停止鍵、過程錯誤輸出三者通過邏輯與接到中止鍵。
程序改進
上述程序過于簡單,現做改進如下:
1.將枚舉控件用一個數值輸入控件代替,這樣就可以自行確定定時或倒計時的時間,從而擴大了程序適用的范圍。(注意輸入的數值以分鐘記)
2.為了更好的達到倒計時預警的效果,現加入LED燈進行倒計時小于10時的顯示,從而更加直觀,鮮明,同時為了不影響程序的觀看效果,LED燈只在倒計時的最后10秒出現,其余情況皆為不可見。3.在程序設計中使用屬性節點,比如本例中:利用屬性節點將程序運行過程中的操作限定在唯一性上,可以降低操作者的誤操作可能性。本程序運行時,要么等待定時結束,要么由操作者強行停止計時。
4.新增一個圖片下拉表,它的可視性與LED燈的情況相同。
5當定時時間到時,發出聲音報警。整體程序圖
程序界面
存在的一些問題
本程序的定時顯示精確性不高,例如LED燈的數字無法做到同步顯示等等。程序來源說明
本文原程序來源于http://tieba.baidu.com/p/1585935847 9