c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc
多功能電腦時(shí)鐘設(shè)計(jì)報(bào)告
一、實(shí)訓(xùn)目的意義及任務(wù)要求
1.1目的意義
單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時(shí)準(zhǔn)確、可以進(jìn)行夜視,并且還可以擴(kuò)展出多種功能。 所以,電子萬年歷無論作為比賽題目還是練習(xí)題目都是很有價(jià)值。
圖3.1 單片機(jī)最小系統(tǒng)圖
3.2 數(shù)碼管、獨(dú)立按鍵及DS1302時(shí)鐘芯片電路的設(shè)計(jì)
系統(tǒng)仿真電路圖
DS1302與單片機(jī)連線圖
3.3 其他附屬電路設(shè)計(jì)
按鍵、電頻轉(zhuǎn)換芯片、RS232串口通信及電源電路等設(shè)計(jì),如圖3.3所示
圖3.3 附屬電路設(shè)計(jì)圖
四、軟件設(shè)計(jì)
4.1主程序設(shè)計(jì)
主程序采用定時(shí)器0對(duì)程序進(jìn)行掃描執(zhí)行。分別執(zhí)行DS1302芯片初始化子程序,寫數(shù)據(jù)子程序,將最初的值寫入芯片中,采用while循環(huán)循環(huán)執(zhí)行鍵盤掃描子程序。
main()
{
TMOD=0x01; //使用模式1,16位定時(shí)器
TH0=(65536-10000)/256; //給定初值
TL0=(65536-10000)%256;
EA=1; //總中斷打開
ET0=1; //定時(shí)器中斷打開
TR0=1; //定時(shí)器開關(guān)打開
Ds1302_Init();
Ds1302_Write_Time();
while(1)
{
keyscan();
if(Btread==0)
{ Btread=1;
Ds1302_Read_Time();
}
display();
}
4.2 DS1302子程序設(shè)計(jì)
此子程序分為初始化程序,讀數(shù)據(jù)程序,寫數(shù)據(jù)程序,一些數(shù)據(jù)程序?yàn)槔?#xff1b;
void Ds1302_Write_Byte(unsigned char addr, unsigned char d)
{
CE=0;_nop_();
SCLK=0; _nop_();
CE=1; _nop_();
Write1302(addr);
Write1302(d);
CE=0; _nop_();
IO=1;
SCLK=1;
}分別寫入地址,再寫入數(shù)據(jù)。
4.3時(shí)間調(diào)整子程序
時(shí)間調(diào)整子程序采用的是對(duì)key1按的次數(shù)不同來進(jìn)行對(duì)年月日時(shí)分及星期的設(shè)置。
void zongshi(void)
{
if(!key)
{
if(btx==0)
{
if(!key)
{
btx=1;k++; } } }else{btx=0;}} k=1時(shí),調(diào)整年份,key1為加,key2為減
void keyscan() k=2時(shí),調(diào)整月份,key1為加,key2為減
{ k=3時(shí),調(diào)整日份,key1為加,key2為減
display(); k=4時(shí),調(diào)整星期,key1為加,key2為減
if(!key)
{
if(btx==0)
{
if(!key)
{
btx=1;
k++;
}
}
五、調(diào)試及性能分析
5.1軟件測試
電子成年歷是多功能的數(shù)字型,可以看當(dāng)前日期(陰、陽歷),時(shí)間,還有溫度的儀器。電子成年歷功能很多,所以對(duì)于它的程序也較為復(fù)雜,所以在編寫程序和調(diào)試時(shí)出現(xiàn)了相對(duì)較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:
1.燒入程序后,LED數(shù)碼管顯示閃動(dòng),而且亮度不均勻。
解決:首先對(duì)調(diào)用的延時(shí)進(jìn)行逐漸修改,可以解決顯示閃動(dòng)問題。其次,由于本作品使作動(dòng)態(tài)掃描方式顯示的數(shù)字,動(dòng)態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時(shí),如果不在反回時(shí)屏蔽掉最后的附值,則會(huì)出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。
2.修改時(shí)間、日期時(shí)沒有農(nóng)歷沒有自動(dòng)對(duì)應(yīng)上。
解決:把不相關(guān)的程序暫時(shí)屏蔽,地農(nóng)歷的子程序獨(dú)立調(diào)試,發(fā)現(xiàn)在調(diào)用農(nóng)歷自動(dòng)更新時(shí),對(duì)十進(jìn)制和十六進(jìn)制處理不好,所以會(huì)造成錯(cuò)亂。最后把相應(yīng)的十進(jìn)制進(jìn)行修改,使得可以與十六進(jìn)制對(duì)應(yīng),最后解決了此問題.
5.2測試結(jié)果分析與結(jié)論
(1).在測試中遇到發(fā)光二極管、LED數(shù)碼管為不顯示時(shí),首先使用試測儀對(duì)電路進(jìn)行測試,觀察是否存在漏焊,虛焊,或者元件損壞.
(2).LED 數(shù)碼管顯示不正常,還有亮度不夠,首先使用試測儀對(duì)電路進(jìn)行測試,觀察電路是否存在短路現(xiàn)象。查看燒寫的程
總結(jié)
以上是生活随笔為你收集整理的c语言万历年系统设计报告,C语言编写单片机万历系统课程设计报告分.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米kali linux蓝牙,小米筆記本
- 下一篇: c语言指针数组 难点总结,C语言之指针与