仿真原版本:proteus 7.8
程序編譯器:keil 4/keil 5
編程語言:C語言
設(shè)計(jì)編號(hào):S0017
講解視頻
仿真講解+代碼講解
基于51單片機(jī)的反向計(jì)時(shí)倒計(jì)時(shí)秒表protues仿真設(shè)計(jì)
功能說明:
該設(shè)計(jì)為99-0秒反向計(jì)時(shí)的秒表,能夠通過數(shù)碼管或液晶顯示讀秒,該系統(tǒng)主要包括單片機(jī)最小系統(tǒng)、顯示單元、定時(shí)計(jì)數(shù)器設(shè)計(jì)。
系統(tǒng)要求啟動(dòng)秒表后,從99開始計(jì)時(shí),計(jì)到0秒停止,中途可以通過按鍵控制暫停/繼續(xù)讀秒,復(fù)位后能夠重新從99開始讀秒。
仿真電路
倒計(jì)時(shí)開始
倒計(jì)時(shí)到62秒
程序
主函數(shù)
主要完成定時(shí)器,外部中斷的初始化和循環(huán)顯示倒計(jì)時(shí)數(shù)值。
void main()
{
EA=1; //開總中斷
EX0=1;//外部中斷0
EX1=1;//外部中斷1
IT0=1;//設(shè)置下降沿觸發(fā)中斷0
IT1=1;//設(shè)置下降沿觸發(fā)中斷1
TMOD=0X01;//T0的工作模式為模式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;//12M晶振 定時(shí)器1定時(shí)50毫秒溢出初值
ET0=1; //允許定時(shí)器1中斷
TR0=1;//啟動(dòng)定時(shí)器0
sec_cnt =0;
while(1)
{
led_sacn(); //數(shù)碼管顯示,時(shí)刻刷新
if(flag1s&&state) //一秒執(zhí)行一次
{
flag1s=0;
if(sec_cnt<99){
sec_cnt++; //秒數(shù)遞增
}
}
}
}
數(shù)碼管顯示
void led_sacn()
{
seg_disp(sec_cnt/10,0);//顯示W(wǎng)0控制的數(shù)碼管 時(shí)刻刷新
seg_disp(sec_cnt%10,1);//顯示W(wǎng)1控制的數(shù)碼管
}
void seg_disp(uchar number,uchar wei)//數(shù)碼管動(dòng)態(tài)顯示程序 wei代表數(shù)碼管W0 W1 W2 W3的位選
{
P0=0XFF;//清零,防止重影
if(wei == 0){//顯示第一位
W0=0;
W1=1;
P0=seg_du[number];
delay_ms(2);
W0=1;
}
if(wei == 1){//顯示第二位
W0=1;
W1=0;
P0=seg_du[number];
delay_ms(2);
W1=1;
}
}
void delay_ms(ms) //延時(shí) 大概精度
{
uchar value=ms,i;
while(value--)
for(i=0;i<110;i++);
}
百度云下載鏈接
- 常見使用問題及解決方法–必讀!?。?!
- 源程序
- proteus仿真
- 功能說明
- 講解視頻
- 開題報(bào)告
Altium Designer 安裝破解
KEIL+proteus 單片機(jī)仿真設(shè)計(jì)教程
KEIL安裝破解
Proteus元器件查找
Proteus安裝
Proteus簡(jiǎn)易使用教程
單片機(jī)學(xué)習(xí)資料
相關(guān)數(shù)據(jù)手冊(cè)
答辯技巧
設(shè)計(jì)報(bào)告常用描述
鼠標(biāo)雙擊打開嘉盛單片機(jī)51 STM32單片機(jī)課程畢業(yè)設(shè)計(jì).url
----下載----